I would recommend C++ over C. Not that I want to teach them OOP, templates, etc., but:
C subset of C++ seems to be cleaner than C with a stronger type system which lets the compiler be better at catching programmer's faults and producing wiser warnings.
Probably a kid is more comfortable with string, cin, cout,... than char*, scanf, printf,... (assuming he/she is not going to do advanced I/O for now). At least he doesn't have to ask "So what is that asterisk after char?!" and you start trying to explain pointers to him/her. (Even if later you find him/her happier with C alternatives, you may switch easily without any overhead in contrast to teaching C from beginning. Now he'll have the choice.)
I think for taking decision on paradigm, language, etc., we should first ask we're going to teach programming to whom?
A computer engineering student? Imperative paradigm and Assembly + C should be a good start.
A computer science student? Maybe they should better be introduced to all of them and then go deeper in imperative. (One reason for imperative is: because algorithms are usually described in an imperative style.) I don't see much benefit in getting them involved in pointers and such; the language can be something simpler such as Python (which looks much like pseudocode!).
Math students? Maybe functional is better than imperative to start with.
You say for others.
Why do people usually underestimate shell scripting? Shell scripting is a real scripting language by which you can even create GUI apps for a modern desktop environment like KDE.*
Surely, but what to do with those web developers who happen to be Microsoft slaves? For sure Microsoft will push its technology. I'm not a fan of Mono and Moonlight, but guess we have to support those MS technologies.
We still have are in trouble of sites designed to work with IE:(
'Why is Windows still relevant and why is it worth spending money on OS kernels when there are open source ones available that can respond to changes in computer world faster?,' asked a young developer to Microsoft CEO Steve Ballmer in Tehran yesterday. 'That's cheeky, but a good question, but cheeky,' Ballmer said. Then came the startling revelation that Microsoft may also adopt an open source OS kernel. 'Open source is interesting,' he said. 'Novell has embraced Linux and we may look at that, but we will continue to build extensions for Windows 7.'
You can open a new tab with:tabnew and move between tabs using:tabn and:tabp.
I use ':map <A-Right>:tabn<Enter>' and ':map <A-Left>:tabp<Enter>' for easier move between tabs.
A very useful trick I learned recently is Ctrl+r in normal mode which lets me paste a register (which is already yanked or deleted).
When I open a file which Vim doesn't detect its format, I use ':set ft=cpp' to let it know!
He talks about keeping many 4G Flash disks. Why not use few big SSDs instead? I think they should be as durable as Flash disks. Am I wrong?
What? You mean you haven't kept any power supply suitable for each generation?!
See also http://acm.uva.es/ and http://spoj.pl/
I think for taking decision on paradigm, language, etc., we should first ask we're going to teach programming to whom?
A computer engineering student? Imperative paradigm and Assembly + C should be a good start.
A computer science student? Maybe they should better be introduced to all of them and then go deeper in imperative. (One reason for imperative is: because algorithms are usually described in an imperative style.) I don't see much benefit in getting them involved in pointers and such; the language can be something simpler such as Python (which looks much like pseudocode!).
Math students? Maybe functional is better than imperative to start with.
You say for others.
This seems better:
Stroustrup on Java is like RMS on Windows.
Why do people usually underestimate shell scripting? Shell scripting is a real scripting language by which you can even create GUI apps for a modern desktop environment like KDE.*
* for example using kdialog
Why are you assuming he's going to write desktop GUI apps? ... (or am I wrong?)
Best wishes ... I mean -funroll-loops
1 #include <set>
2 #include <cstring>
3 #include <iostream>
4 #include <cassert>
5 #define valid(x,y) ((x>=0) && (x<N) && (y>=0) && (y<N) && (D[x][y]==-1 ) )
6 using namespace std; int dx[8]={1,1,-1,-1,2,2,-2,-2}, dy[8]={2,-2,2,-2,1,-1,1,-1}; int D[50][50]; int N,C; bool show() { for (int i=N;i--;) { for (int j=N;j--;) cout<<"\t"<<D[i][j]; cout<<"\n"; } return true; } bool rec(int x, int y) { D[x][y]=C++; if(C==N*N) return show(); set< pair<int, pair<int,int> > > poss; for (int r=8;r--;) if(valid(x+dx[r], y+dy[r])) { int neighb=0; for (int t=8;t--;) neighb+= valid(x+dx[r]+dx[t],y+dy[r]+dy[t] ); poss.insert( make_pair(neighb, make_pair(x+dx[r],y+dy[r] ) )); } for (typeof(poss.begin()) q=poss.begin(); q!=poss.end(); q++) if (rec(q->second.first, q->second.second)) return true; D[x][y]=-1; C--; return false; } void solve(int n) { N=n, C=0; memset(D,-1,sizeof(D)); assert(rec(0,0)) ; } int main() { int n; while((cin>>n) && (n>0)) solve(n); return 0; }
Hence KLoC sucks!
Buzzwords talk
We still have are in trouble of sites designed to work with IE :(
so has been IP, SMTP, etc.
Zero infections over the last couple of years.
How do you know?!
Because you must be not-so-new here?
Good, but why so late?
AFAIK PureVideo is a very old feature of nVidia graphic chips.
4G should be enough for everybody!
s/\(Useful\) Stupid (.*) Tricks(\??)/Slashdot is getting Stupid$1Tricksdot$2/
But are Regexes supposed to be human-readable?
For 1000th time: It is not QT, it is Qt. QT is QuickTime.
But be careful about Ballmer Peak.
You must have forgotten order of ln parameters. It is just like cp: ln -s /usr/bin/vim /usr/bin/emacs
'Why is Windows still relevant and why is it worth spending money on OS kernels when there are open source ones available that can respond to changes in computer world faster?,' asked a young developer to Microsoft CEO Steve Ballmer in Tehran yesterday. 'That's cheeky, but a good question, but cheeky,' Ballmer said. Then came the startling revelation that Microsoft may also adopt an open source OS kernel. 'Open source is interesting,' he said. 'Novell has embraced Linux and we may look at that, but we will continue to build extensions for Windows 7.'
You can open a new tab with :tabnew and move between tabs using :tabn and :tabp.
:tabn<Enter>' and ':map <A-Left> :tabp<Enter>' for easier move between tabs.
I use ':map <A-Right>
A very useful trick I learned recently is Ctrl+r in normal mode which lets me paste a register (which is already yanked or deleted).
When I open a file which Vim doesn't detect its format, I use ':set ft=cpp' to let it know!