First programming language for high school students?
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
I'll tell you my experience as a self-taught teenager programmer (I'm 18 now). Maybe that'll be good input... Maybe. I started at his age with VB 4 (!! because I had it...), then quickly switched to VB.NET when I saw an ad about the free editions of Visual Studio (http://www.microsoft.com/express). Some time before I had my try with C++ and Java and didn't really pick it up. I did some mIRC scripting too (interesting to try, too). So yes, I picked VB up and liked it for its english-like syntax and visual designer. I started making a calculator program (good startup project if you ask me). So I drew its interface in Paint and recopied it in Visual Studio. Then I started double-clicking the UI elements (mainly buttons!) and wrote code... outputBox.Text &= "5" for example. I knew how to do basic coding elements (conditions, selects, functions, subs) from my little mIRC/BASIC/C++ experience, and I've read about (built-in) types in my C++ book. If I didn't know how to do something (for example converting from String to Integer (or Double)), I'd hit F1 and search. That worked well. One tip I can give you at this time... it doesn't matter if your son writes shitty code or even hacks when he's beginning. I wouldn't recommend starting directly with OOP. Since I saw some assembler, I thought it would be interesting to try to dis-ASM my own program. I knew what .NET meant, and I knew it ran its own bytecode, like Java. So I Googled for .NET disassembler and downloaded Reflector. That program was a kind of revelation. I didn't look at the disASMs for long, I was more interested by how it showed the elements of my program in a tree. Yes, that was how I was introduced to OOP. Interesting, huh? Yes, I've read some disassembly. Hovering my mouse over an instruction made a tooltip appear, explaining what it meant. Disassembling simple structures like
my_var = 5 * other_var
would be interesting. Reflector also acted as a really good .NET API reference and also showed me how that thing worked. Priceless. It also made me find out about C#, and I liked its syntax better. Reminded me of C++, JavaScript and mIRC. So I downloaded it, and made the switch. As simple as that. After that, well, some practicing. I eventually started writing more complex programs, learned more about OOP, threads and the like. I wrote a IRC client stub using smartirc4net. I never finished my calculator :-D . Then, I switched to C++. Why? Because it resembled C# and it was multiplatform, and everyone used it, etc. etc. For -
I actually say C using C++. A good programmer needs to learn the basic procedural aspects of programming which lie at the heart of everything. Until those basic leaps of logic are made, everything else doesn't matter. Another advantage of C/C++ is how much it reflects how a computer fundamentally works. I've been increasingly disappointed with new developers who've only worked with highly abstract languages. Among other things, they don't seem to understand how computers even work and that's reflected in their code. (My greatest leap forward in programming was when I suddenly "got" assembly language. I'd just taken an Z-80 assembly class and was writing some 6502 code when all the confusing stuff ceased to be confusing. I taught myself C in three days because it was simply a great macro-assembler [C pointers didn't confuse me because I understood how assembly worked.])
Anyone who thinks he has a better idea of what's good for people than people do is a swine. - P.J. O'Rourke
modified on Tuesday, July 1, 2008 11:26 PM
Joe Woodbury wrote:
A good programmer needs to learn the basic procedural aspects of programming which lie at the heart of everything.
True that :) . Studies have shown that the first programming language learned shapes the way a programmer approaches design & code for the rest of their life. VB might well be easy to learn but for a first language something a bit more challenging - that will provide a better understanding across a wider range of s/w development concepts - is probably the go (and there's no concept you can't model in C/C++). Rather than starting off with graphical apps though, I'd suggest the instant gratification of ye olde "Hello World!" type command line apps & moving into ascii graphics for "Life" before venturing into GUI based apps. Event-driven programming is a whole 'nother world of hurt. If C/C++ is a bit too heavy, try Java or C#. Of course, if you want to future-proof your kid with parallel programming concepts, it's gotta be Erlang.
T-Mac-Oz
-
Objective C really sucks ( addressing the OSX angle ). VB.NET is very English like, which may help. C# is also a good first language IMO, and bleeds to c++ more easily.
Christian Graus Please read this if you don't understand the answer I've given you. If you're still stuck, ask me for more information.
It's tricky. VB vs C#, I am a Basic refugee myself and I must say after learning C# I found it much easier to learn other languages.
He who asks a question is a fool for five minutes. He who does not ask a question remains a fool forever. [Chineese Proverb] Jonathan C Dickinson (C# Software Engineer)
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
Lolcode claims on their website that it is good for teaching basic concepts. Go on: teach him code like:
ON CATURDAY
IM IN YR BED
I IZ SLEEPIN!!10
VISIBLE "Z!"
KTHX
KTHXBYEYou will be infinitely popular with the English department!!!
He who asks a question is a fool for five minutes. He who does not ask a question remains a fool forever. [Chineese Proverb] Jonathan C Dickinson (C# Software Engineer)
-
EHaskins wrote:
so I think I know what I'm talking about
Really? Your profile says you started programming in 2003.
"The clue train passed his station without stopping." - John Simmons / outlaw programmer "Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon
I meant on this particular topic. I'm only 16, and I've had to teach other people programming. Sorry for the confusion. EDIT: I did also say my age at the end of the post, but I should have clarified.
Total geek! :)
modified on Wednesday, July 2, 2008 2:25 AM
-
maxxx# wrote:
Also, instant gratification is good at that age (!) so something GUI has the appeal of getting something visual up and running quickly.
I couldn't agree more. The language selected should be concise and RAD-enabled. C# is that kind of language.
History repeats itself.
C# should be perfect.. its simple.. easy to understand.. and pretty robust(considering your son uses it in future too)
Que saraa saraa.. Whaever will be will be..
-
Objective C really sucks ( addressing the OSX angle ). VB.NET is very English like, which may help. C# is also a good first language IMO, and bleeds to c++ more easily.
Christian Graus Please read this if you don't understand the answer I've given you. If you're still stuck, ask me for more information.
-
I can't do that Dave. wrote:
My 15 year old son (ninth grade) wants me to teach him programming.
If you are doing the teaching, I would choose a language that you know back-to-front - nothing worse at that sort of age than a teacher learning along with the student. Also, instant gratification is good at that age (!) so something GUI has the appeal of getting something visual up and running quickly. I taught basic VB .Net to students of this age at school - and those with at least 1/2 a logical brain picked it up pretty well - but they really needed to see something happening quickly. If I were you, I'd write a simple game of Life in whatever lanbguage first, so you have something to show - then you can take him through the development step by step. I personally think that this is not too young an age to introduce OO concepts too - so teaching OO development can make more sense if it is introduced early. If you produce the basic model, with appropriate classes - then when he gives it a go, there's always something to compare his results to, and to help out if he's stuck.
Take a chill pill, Daddy-o .\\axxx (That's an 'M')
maxxx# wrote:
Also, instant gratification is good at that age (!) so something GUI has the appeal of getting something visual up and running quickly.
I think this is correct, considering the age of your son. Have you considered using [Flash] ActionScript? The current AS 3.0 programming model is quite nice IMHO and lots of documentation and visual appealing examples are now available. I think AS is now mature enough to teach the basics of programming and architectural principles yet maintaining the connection with the 15 year old world. As a development environment you could use the Flash authoring tool, or something like Flex Builder. Good luck, Peter.
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
Why don't you try simple games with GDI+? Snake, sokoban, ... stuff like that. I always love the fact you can draw items and make them move. I would recommend a C type language though, VB is really nasty ;)
V.
Stop smoking so you can: Enjoy longer the money you save. Moviereview Archive -
I'll tell you my experience as a self-taught teenager programmer (I'm 18 now). Maybe that'll be good input... Maybe. I started at his age with VB 4 (!! because I had it...), then quickly switched to VB.NET when I saw an ad about the free editions of Visual Studio (http://www.microsoft.com/express). Some time before I had my try with C++ and Java and didn't really pick it up. I did some mIRC scripting too (interesting to try, too). So yes, I picked VB up and liked it for its english-like syntax and visual designer. I started making a calculator program (good startup project if you ask me). So I drew its interface in Paint and recopied it in Visual Studio. Then I started double-clicking the UI elements (mainly buttons!) and wrote code... outputBox.Text &= "5" for example. I knew how to do basic coding elements (conditions, selects, functions, subs) from my little mIRC/BASIC/C++ experience, and I've read about (built-in) types in my C++ book. If I didn't know how to do something (for example converting from String to Integer (or Double)), I'd hit F1 and search. That worked well. One tip I can give you at this time... it doesn't matter if your son writes shitty code or even hacks when he's beginning. I wouldn't recommend starting directly with OOP. Since I saw some assembler, I thought it would be interesting to try to dis-ASM my own program. I knew what .NET meant, and I knew it ran its own bytecode, like Java. So I Googled for .NET disassembler and downloaded Reflector. That program was a kind of revelation. I didn't look at the disASMs for long, I was more interested by how it showed the elements of my program in a tree. Yes, that was how I was introduced to OOP. Interesting, huh? Yes, I've read some disassembly. Hovering my mouse over an instruction made a tooltip appear, explaining what it meant. Disassembling simple structures like
my_var = 5 * other_var
would be interesting. Reflector also acted as a really good .NET API reference and also showed me how that thing worked. Priceless. It also made me find out about C#, and I liked its syntax better. Reminded me of C++, JavaScript and mIRC. So I downloaded it, and made the switch. As simple as that. After that, well, some practicing. I eventually started writing more complex programs, learned more about OOP, threads and the like. I wrote a IRC client stub using smartirc4net. I never finished my calculator :-D . Then, I switched to C++. Why? Because it resembled C# and it was multiplatform, and everyone used it, etc. etc. ForDrFrankenstein90 wrote:
And next year we're starting COBOL
:confused: X| I never touched COBOL anymore outside college. (5 years ago) They still teach that? Never take a job to do COBOL, that's for the 'old' guys. I don't mean this negative, but those who are using COBOL are gradually switching. What do they teach these kids these days. :-\
V.
Stop smoking so you can: Enjoy longer the money you save. Moviereview Archive -
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
I saw a lot of people asked about which language is better for us or which lanuage is better for money here and other places but I think it depends to you and your work and your country and your clinets we cant say that c++ is better or C# or vb and etc whats your favorite and your occupation? VB is easy C# is powerful and c++ is very powerful and hard (because I know it :-D ).
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
-
I'm personally not so sure about c# - if only because of : a) the CaSe SensitiVity It isn't intuituitive that Fred != fred b) the curly bracket syndrome It is scary for kids to be confronted with something full of symbols they don't understand. (unless it's graffitti in which case they seem to revel in symbols I don't understand!) While not a great fan, I have found that VB .Net is 'less confronting' to kids than c#
Take a chill pill, Daddy-o .\\axxx (That's an 'M')
These are the reason I liked teaching people Delphi back in the mid-late 90s. Verbosity helps people get both what is happening and strictness keeps them honest for future languages.
-
i would vote VB or Object Pascal for a first syntax to learn, i learnt to code with Delphi a long time ago was a useful begining.
Amen! Finally someone suggested the original alter of Anders. I learned to program first with basic on a trash 80 in jr high, but didn't get hooked until learning Turbo Pascal in high school.
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
Considering that I myself have programmed in virtually every language that any poster has mentioned, I would personally also recommend C# I have personally watched many a potentially brilliant programmer become useless because they were taught with VB. Not saying there is anything wrong with VB. I think it's a great language actually, but not for learning... Let me explain 1) Case insensitivity - This is the biggest problem with this language. It makes programmers lazy. Period. :( Once they have gotten use to not having to type in the correct case, any chances of them ever moving on to another language is lost. 2) Not having to declare variables - I have this same gripe with Java. Once you get into the habit of not declaring your variables, you get into the habit of forgetting that your data is actually represented in a certain way on the PC, and then you learn even less of how your computer actually works. 3) Syntax lessness - I know that's not a word, but you know what I mean. The semi-colon in coding is a big thing. And if it wasn't, the most used languages in the world would have gotten rid of it already a long time ago. I have had many a VB programmer give up on learning other languages because they had to put a semi-colon at the end of statements. In short, I recommend C#(or a C based language) simply because it teaches good programming practices. After that, any programming language is good, because you understand whats going on. I myself do programming in PHP, Java, and VB on a regular basis for work projects, and they are perfect for some of the projects, so nobody has to jump down my throat that I am bad mouthing VB,(insert other language of choice...) Just my 0.02c ;P
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
Ruby (www.ruby-lang.org)? It's immensely powerful, lots of libraries that are easy to install with a single command, and it (the language and it's community to be precise) focuses on readability and good practices. A friend of mine has a nice experience of using it to automate tests of a large (10M members) social network site. She was assigned with a test of testing things manually; fortunatelly, her boyfriend is a software developer. It took just a few quick lessons and she's now writing her own tests (no programming background whatsoever). Just my $0.02 MB
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
-
COnsidering I'm 20 and learned my first computer language in high school by taking a community college class. I think VB.NET is the way to go. I eventually took courses in C, C++, and C# and think VB.NET is the best. I've worked (and still work) in research and corporate and realized that knwoing the .NET framework is very very important. Your son will enjoy the idea of easily building a user interface and the intelliSense will help him in learning. Plus, chicks dig guys who know .NET. -Max
I don't know if people understand what technology is all about:mad:. Surely assembler, C or any other low level language is not the way to understand the computer - is just that people often refuse the change and get stuck deep inside the computer chips. I can see a lot of purist :suss: trying to lure a 15 years old kid into joining their outdated and self proclaimed groups:mad:. To teach a kid any language developed in the 80's is like denying him an ipod and give him a cd player. Let the kid have fun :) with programming he still have homeworks to do. Give him the simplest of any language. i will suggest anything that has nothing to do with low level maching code:mad:. Almost all new languages addresses the concepts of datatypes, functions and objects :-D . Thats all he need to know in order to be able to tackle pointers, binary, octal & hexadecimal numbers later in life. Don't impose things on this kid:mad:. Only a teacher can device a simpler way of explaining something as huge as computer programming.
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
Dear Mr: PASCAL language is the best language for teaching programming. the PASCAL was design for teaching purpose. Regards Computer Teacher.
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
6 years ago at my high school they were teaching C++ as the first language, and I very liked it. However, I became sick the day that my teacher taught OOP, and was somewhat lost for a while when I came back to school. I think my university had it right--which taught Java. It is more straight forward and less ambiguous than how C++ can be, and it (painlessly?) instills the following good programming practices that are seen in many languages: -straight forward OOP (no extra .h header files reqired, like in C++, etc) -reference vs. value -case sensitivity awareness (i.e. VB can sometimes mislead the beginner in when this matters) -great FREE IDEs out there (netbeans, eclipse) ...many more