The right programming language to teach...
-
Since she has no coding knowledge at all, stay away from C++. Doing even simple I/O in C++ requires either learning OO principles (objects, namespaces, overloaded operators) or just parroting out the same "
cout << stuff;
" code without actually knowing what it does. Same reasoning for avoiding C#. I'd say start with BASIC. Not Visual Basic, BASIC, where your I/O is as simple as PRINT and INPUT. It has the basic logic (if/then/else) and flow control (for loops, and depending on the dialect, do/while), and that knowledge can be transferred to more complex languages later. --Mike-- Just released - RightClick-Encrypt v1.4 - Adds fast & easy file encryption to Explorer My really out-of-date homepage Sonork-100.19012 Acid_HelmMichael Dunn wrote: Not Visual Basic, BASIC, where your I/O is as simple as PRINT and INPUT. You still have PRINT and INPUT at Visual Basic 6... "In an organization, each person rises to the level of his own incompetence." Peter's Principle
-
Yes, this is a programming question, technically. But I think it falls within the bounds of "lounge-acceptable programming questions," so don't hang me from the ceiling by my fingernails or anything like that, please :). Anyways, someone at my school is interested in computer science, and would be interested in learning from me. Normally, I'd be annoyed and brush people like this off because, frankly, most people in real life annoy me, but in this case it's an extremely intelligent and fun-to-be-with female, so... :-D The reason I'm asking is because I'm not sure what language to teach her. Normally, I'd work people up through XHTML, JavaScript, and CSS before letting them touch C++ or C#, but in this case I think she may be able to handle the jump straight to something more exciting. She's computer-literate, and knows how to use all normal apps (Word, IE, computer games, etc.) to their full extent, but doesn't know anything about programming at all. So what I'm really asking is, do you think a highly intelligent and computer-literate person can make the jump straight to C++ or C#, or is it too much of a stretch to introduce high-level programming concepts without some basic introduction to the idea of code, input, output, etc.? Yet, most of web technologies and concepts are inapplicable to programming (i.e. the lenience of browsers, the lack of compilers, the lack of source and executable files, etc.). I dunno, really, that's why I want your opinions. Secondly, if C++/C# is a good idea, then which one? I was leaning towards C#, mainly because it's easier to use (no pointers, better intuitive syntax (IMO), etc.), you can create GUIs easily (I was always extremely dissapointed at how GUIs were never part of C++ per se, simply part of supplied libraries), and it's not VB.NET (;P). However, C++ also has good points, because it's more complex—if you can handle all of C++, you can handle everything—and it's the industry standard that's also tought in our school's CompSci class. I'm not really considering any other languages, mainly because both of these suit me just fine. So which would be better to teach, assuming she could handle either one? In either case, VS.NET will be the development environment, FYI. And remember, I'm not trying to start a holy war over language preference (again). I'm trying to get a measured and useful opinion on these questions, because all I know is that in fifth grade I learned how to make a website and moved on to C++ that same year, and all I used were
Python. Just visit http://www.python.org/doc/Newbies.html It's a usefull experience for you too.
-
Yes, this is a programming question, technically. But I think it falls within the bounds of "lounge-acceptable programming questions," so don't hang me from the ceiling by my fingernails or anything like that, please :). Anyways, someone at my school is interested in computer science, and would be interested in learning from me. Normally, I'd be annoyed and brush people like this off because, frankly, most people in real life annoy me, but in this case it's an extremely intelligent and fun-to-be-with female, so... :-D The reason I'm asking is because I'm not sure what language to teach her. Normally, I'd work people up through XHTML, JavaScript, and CSS before letting them touch C++ or C#, but in this case I think she may be able to handle the jump straight to something more exciting. She's computer-literate, and knows how to use all normal apps (Word, IE, computer games, etc.) to their full extent, but doesn't know anything about programming at all. So what I'm really asking is, do you think a highly intelligent and computer-literate person can make the jump straight to C++ or C#, or is it too much of a stretch to introduce high-level programming concepts without some basic introduction to the idea of code, input, output, etc.? Yet, most of web technologies and concepts are inapplicable to programming (i.e. the lenience of browsers, the lack of compilers, the lack of source and executable files, etc.). I dunno, really, that's why I want your opinions. Secondly, if C++/C# is a good idea, then which one? I was leaning towards C#, mainly because it's easier to use (no pointers, better intuitive syntax (IMO), etc.), you can create GUIs easily (I was always extremely dissapointed at how GUIs were never part of C++ per se, simply part of supplied libraries), and it's not VB.NET (;P). However, C++ also has good points, because it's more complex—if you can handle all of C++, you can handle everything—and it's the industry standard that's also tought in our school's CompSci class. I'm not really considering any other languages, mainly because both of these suit me just fine. So which would be better to teach, assuming she could handle either one? In either case, VS.NET will be the development environment, FYI. And remember, I'm not trying to start a holy war over language preference (again). I'm trying to get a measured and useful opinion on these questions, because all I know is that in fifth grade I learned how to make a website and moved on to C++ that same year, and all I used were
Hi Domenic What everyone forgets to mentions is that learning any .NET language is a 2 part effort. Namely , C# and .NET Framework. This confused the hell out of me. But after realising I only had to get the syntax of C# right, it was a matter of a month or 2 to perfect the syntax. Then the next logical step is to start exploring the rich .NET framework, whick in any language can be quite scary doin it the 1st time. Now imagine this in a motor car race scenario. Learn to drive iow idling up and down the pits is like learning C#. Now once you can do that, you mite feel you are ready to go onto the race track, iow .NET framework. Now you could have chosen a different car (different .NET language), but u will still need to do the race track. If you have done C# and a bit of "racing the track", the track will be more fimiliar trying to drive it in another car, but remmeber the track stays the same, no matter what car. Now C/C++ and other non .NET languages, each has a different racetrack. It would make sense to chose a .NET language, as you have many different cars to race the track with, even race the track with 2 cars at the same time! I recommend go .NET and chose a language you are comfortable with. I also recommend downloading the "Thinking in (insert language here)" series. I've you (well she) have time, you could finish reading in a week each, with a basic concept of each language. This would be beneficial as each of them has the same style of introducing the language. My 2 cents :) Give them a chance! Do it for the kittens, dear God, the kittens!
-
Yes, this is a programming question, technically. But I think it falls within the bounds of "lounge-acceptable programming questions," so don't hang me from the ceiling by my fingernails or anything like that, please :). Anyways, someone at my school is interested in computer science, and would be interested in learning from me. Normally, I'd be annoyed and brush people like this off because, frankly, most people in real life annoy me, but in this case it's an extremely intelligent and fun-to-be-with female, so... :-D The reason I'm asking is because I'm not sure what language to teach her. Normally, I'd work people up through XHTML, JavaScript, and CSS before letting them touch C++ or C#, but in this case I think she may be able to handle the jump straight to something more exciting. She's computer-literate, and knows how to use all normal apps (Word, IE, computer games, etc.) to their full extent, but doesn't know anything about programming at all. So what I'm really asking is, do you think a highly intelligent and computer-literate person can make the jump straight to C++ or C#, or is it too much of a stretch to introduce high-level programming concepts without some basic introduction to the idea of code, input, output, etc.? Yet, most of web technologies and concepts are inapplicable to programming (i.e. the lenience of browsers, the lack of compilers, the lack of source and executable files, etc.). I dunno, really, that's why I want your opinions. Secondly, if C++/C# is a good idea, then which one? I was leaning towards C#, mainly because it's easier to use (no pointers, better intuitive syntax (IMO), etc.), you can create GUIs easily (I was always extremely dissapointed at how GUIs were never part of C++ per se, simply part of supplied libraries), and it's not VB.NET (;P). However, C++ also has good points, because it's more complex—if you can handle all of C++, you can handle everything—and it's the industry standard that's also tought in our school's CompSci class. I'm not really considering any other languages, mainly because both of these suit me just fine. So which would be better to teach, assuming she could handle either one? In either case, VS.NET will be the development environment, FYI. And remember, I'm not trying to start a holy war over language preference (again). I'm trying to get a measured and useful opinion on these questions, because all I know is that in fifth grade I learned how to make a website and moved on to C++ that same year, and all I used were
I think the first thing you should consider is what she is hoping to achive by learning a programming language - web development, windows apps, embedded software etc? Phil
-
Michael Dunn wrote: Since she has no coding knowledge at all, stay away from C++. This is true. Michael Dunn wrote: Same reasoning for avoiding C#. I don't really agree there. Java is being used as a teaching language at some universities. C# is similar so it may not be a bad choice. Michael Dunn wrote: I'd say start with BASIC. Eeewww! BASIC is a poor choice to teach someone to program in. There is a lot in it that can breed really bad habits. In fact it's hard to write good wholesome code in it. I think a better choice than BASIC, if you want a good structured non-OO language is Pascal. It was designed specifically as a teaching language. I still wouldn't write off C# or Java though. Why not learn OO from the start?
Most Pascal compilers you can get today is/uses OO. - Anders Money talks, but all mine ever says is "Goodbye!"
-
Hi Domenic What everyone forgets to mentions is that learning any .NET language is a 2 part effort. Namely , C# and .NET Framework. This confused the hell out of me. But after realising I only had to get the syntax of C# right, it was a matter of a month or 2 to perfect the syntax. Then the next logical step is to start exploring the rich .NET framework, whick in any language can be quite scary doin it the 1st time. Now imagine this in a motor car race scenario. Learn to drive iow idling up and down the pits is like learning C#. Now once you can do that, you mite feel you are ready to go onto the race track, iow .NET framework. Now you could have chosen a different car (different .NET language), but u will still need to do the race track. If you have done C# and a bit of "racing the track", the track will be more fimiliar trying to drive it in another car, but remmeber the track stays the same, no matter what car. Now C/C++ and other non .NET languages, each has a different racetrack. It would make sense to chose a .NET language, as you have many different cars to race the track with, even race the track with 2 cars at the same time! I recommend go .NET and chose a language you are comfortable with. I also recommend downloading the "Thinking in (insert language here)" series. I've you (well she) have time, you could finish reading in a week each, with a basic concept of each language. This would be beneficial as each of them has the same style of introducing the language. My 2 cents :) Give them a chance! Do it for the kittens, dear God, the kittens!
I would teach languages with the strict point of view to solve real world customer problems, regardless of the underlying plumbering. So to provide long term skills. Many classes in the .NET framework are reached thanks to their names, and when you know their names are usually rooted because they help solving several-year-old issues, you come with the conclusion that only people who succeed (with tremendous power) are people with knowledge of what Windows programming was before .NET, and what it has become. (for instance, now that COM and visible interfaces are buried, how can a newbie get a marshaling issue to work?). So if we wanted a better platform : - the current MSDN search engine should be thrown to the trashcan, and replaced with a google-enabled one. - hierarchical trees should be well designed ("knowledge facets"), so that depending on your background (you need not have an IT diploma), you get your hands quick on the right stuff. - Java/C#/Eiffel or other clean procedural languages are here to stay. They don't obfuscate the logic, unlike what bloody MS introduced lately with the Attribute-programming style. - functional programming can be of help, but it somewhat requires people to mentally recurse, which itself is often perceived as the technical way of doing it, which is wrong. My -0.5 cent.
MS quote (http://www.microsoft.com/ddk) : As of September 30, 2002, the Microsoft® Windows® 2000 DDK, the Microsoft Windows 98 DDK, and the Microsoft Windows NT® 4.0 DDK will no longer be available for purchase or download on this site.
-
In my engineering years, I and my pals were taught computing science with descriptive languages first, then academic languages (Pascal, Eiffel, Gamma), because the teachers knew very well at that time already that being proficient in specialized languages would do pain anytime the environment requires self-adapting. After one whole year of that, along with an understanding of main algorithms and data structures, we were given a staging week to learn C. Then language specialization began depending on your specialty : distributed computing, imaging, artifical intelligence, systems programming, ... From what good I remember, only the first year was worth it. This year contributed most to my ability to adapt a moving world. All what I did later made me a "university-level" specialist of several languages and technologies, but again none of these were actually used in the real world...:((
MS quote (http://www.microsoft.com/ddk) : As of September 30, 2002, the Microsoft® Windows® 2000 DDK, the Microsoft Windows 98 DDK, and the Microsoft Windows NT® 4.0 DDK will no longer be available for purchase or download on this site.
I know what you mean. The year after I took the computer graphics classes in college, the Computer Science department switched from using PL/I (this was a long time ago), a procedural language, to Forth. What the hell were they thinking? All of the algorithms were procedural, yet they switch the programming for the class to a non-procedural language. For people that are supposedly the brightest around, they sure were stupid. Gary R. Wheeler
-
Domenic [Geekn] wrote: Does that change your opinion? Not really. I still think that the Javascript/Java/C++ scenario makes a logical progression for learning. I don't know enough about C# to have a valid opinion, so I'll venture none. I do know that C++ (especially as implemented in Windows/VS) is utterly baffling and difficult to comprehend compared to the dozen or so other languages I've mastered easily. I even like assembly and RTL - compared to VC++ they're easy, and I'd hate to see you scare off someone that has promise with unnecessary irrelevant confusion. Word of the day: Rotundacrat
Extra Credit will be awarded for: Quasimobo...Roger Wright wrote: I even like assembly and RTL - compared to VC++ they're easy I'd actually have to agree. When I was first starting to learn VC++ it took me an eternity, mainly because I had no concept of object-oriented design. I just couldn't figure out what a class was, or why it would be done that way. I use C# quite a lot now (primarily for web stuff) but I'd have to say its pretty easy to pick up. However, I'd agree with what Michael Dunn wrote earlier in the topic, that you're probably better off starting with BASIC. Something that starts with simple flow control that kind of thing. I've had to help out a few buddies at University with their programming coursework, and even using VB they found it tough going because the lecturer (who was appalling IMO) hadn't started with the basics. He then took it a step further by getting databases and COM automation involved without explaining any of the underlying principles. Nobody that hadn't done programming before learnt anything from that module -- except to despise programming. -- Paul "I need the secure packaging of Jockeys. My boys need a house!" - Kramer, in "The Chinese Woman" episode of Seinfeld MS Messenger: paul@oobaloo.co.uk Sonork: 100.22446
-
Roger Wright wrote: I even like assembly and RTL - compared to VC++ they're easy I'd actually have to agree. When I was first starting to learn VC++ it took me an eternity, mainly because I had no concept of object-oriented design. I just couldn't figure out what a class was, or why it would be done that way. I use C# quite a lot now (primarily for web stuff) but I'd have to say its pretty easy to pick up. However, I'd agree with what Michael Dunn wrote earlier in the topic, that you're probably better off starting with BASIC. Something that starts with simple flow control that kind of thing. I've had to help out a few buddies at University with their programming coursework, and even using VB they found it tough going because the lecturer (who was appalling IMO) hadn't started with the basics. He then took it a step further by getting databases and COM automation involved without explaining any of the underlying principles. Nobody that hadn't done programming before learnt anything from that module -- except to despise programming. -- Paul "I need the secure packaging of Jockeys. My boys need a house!" - Kramer, in "The Chinese Woman" episode of Seinfeld MS Messenger: paul@oobaloo.co.uk Sonork: 100.22446
Paul Ingles wrote: the lecturer (who was appalling IMO) hadn't started with the basics. He then took it a step further by getting databases and COM automation involved without explaining any of the underlying principles. What an incredibly inept boob! That reminds me of a lot of the books I've read to try to learn new languages. The author provides a brief introduction to the fundamentals of the language, then launches into chapters of database applications or graphics exercises. I interpret that to mean that the author really loves databases or graphics, but the only way he could get published was to claim to be teaching the language. I suspect this instructor falls in the same category - he really wants to teach COM and databases, but the curriculum only has a slot for a VB class. Criminal! Word of the day: Rotundacrat
Extra Credit will be awarded for: Quasimobo... -
Yeah, QBasic is available for download, even from programmersheaven.com The following statement about your geekness is true. The previous statement about your geekness is false. GCS/IT/P d- s: a- C++++$ UL+>++++ P+ L++$ E- W+++$ N !o K+ w++$ O---- M-- PS- PE Y+ PGP--- t !5 X- tv b+++ DI++ D+ G++ e++ h--- r+++
Cool! I know a 6-year old who has her own computer and is just about ready to learn how to program:-) Thanks for the tip! Word of the day: Rotundacrat
Extra Credit will be awarded for: Quasimobo... -
Yes, this is a programming question, technically. But I think it falls within the bounds of "lounge-acceptable programming questions," so don't hang me from the ceiling by my fingernails or anything like that, please :). Anyways, someone at my school is interested in computer science, and would be interested in learning from me. Normally, I'd be annoyed and brush people like this off because, frankly, most people in real life annoy me, but in this case it's an extremely intelligent and fun-to-be-with female, so... :-D The reason I'm asking is because I'm not sure what language to teach her. Normally, I'd work people up through XHTML, JavaScript, and CSS before letting them touch C++ or C#, but in this case I think she may be able to handle the jump straight to something more exciting. She's computer-literate, and knows how to use all normal apps (Word, IE, computer games, etc.) to their full extent, but doesn't know anything about programming at all. So what I'm really asking is, do you think a highly intelligent and computer-literate person can make the jump straight to C++ or C#, or is it too much of a stretch to introduce high-level programming concepts without some basic introduction to the idea of code, input, output, etc.? Yet, most of web technologies and concepts are inapplicable to programming (i.e. the lenience of browsers, the lack of compilers, the lack of source and executable files, etc.). I dunno, really, that's why I want your opinions. Secondly, if C++/C# is a good idea, then which one? I was leaning towards C#, mainly because it's easier to use (no pointers, better intuitive syntax (IMO), etc.), you can create GUIs easily (I was always extremely dissapointed at how GUIs were never part of C++ per se, simply part of supplied libraries), and it's not VB.NET (;P). However, C++ also has good points, because it's more complex—if you can handle all of C++, you can handle everything—and it's the industry standard that's also tought in our school's CompSci class. I'm not really considering any other languages, mainly because both of these suit me just fine. So which would be better to teach, assuming she could handle either one? In either case, VS.NET will be the development environment, FYI. And remember, I'm not trying to start a holy war over language preference (again). I'm trying to get a measured and useful opinion on these questions, because all I know is that in fifth grade I learned how to make a website and moved on to C++ that same year, and all I used were
To put it another way, teaching programming is not about syntax; it's about thinking. If a person can't understand what keywords are or what calling a function is, it doesn't matter what language you use. However, since you have to pick one, I'd go with C++ since it allows you to start very easy and get progressively harder without having to switch languages. Moreover, they will be learning a marketable skill. You don't have to get into OOP right away. You can start with jut main, extend that to functions, etc. I wouldn't even introduce "cout <<" for a while. All programmers should know how to use puts and printf. (And some of us never use cout.) (If you teach C++ correctly, I believe you will find students beginning to ask questions for which OOP will be the answer. Of course, there will still be those students who can't get over why they can't call "main" "MyProgram". Frankly, they should be encouraged to do something else.) As for nuance, programming is first, and foremost, a discipline. To be a good programming in any language requires you understand the nuances and deal with them in a disciplined thoughtful manner.
-
Yes, this is a programming question, technically. But I think it falls within the bounds of "lounge-acceptable programming questions," so don't hang me from the ceiling by my fingernails or anything like that, please :). Anyways, someone at my school is interested in computer science, and would be interested in learning from me. Normally, I'd be annoyed and brush people like this off because, frankly, most people in real life annoy me, but in this case it's an extremely intelligent and fun-to-be-with female, so... :-D The reason I'm asking is because I'm not sure what language to teach her. Normally, I'd work people up through XHTML, JavaScript, and CSS before letting them touch C++ or C#, but in this case I think she may be able to handle the jump straight to something more exciting. She's computer-literate, and knows how to use all normal apps (Word, IE, computer games, etc.) to their full extent, but doesn't know anything about programming at all. So what I'm really asking is, do you think a highly intelligent and computer-literate person can make the jump straight to C++ or C#, or is it too much of a stretch to introduce high-level programming concepts without some basic introduction to the idea of code, input, output, etc.? Yet, most of web technologies and concepts are inapplicable to programming (i.e. the lenience of browsers, the lack of compilers, the lack of source and executable files, etc.). I dunno, really, that's why I want your opinions. Secondly, if C++/C# is a good idea, then which one? I was leaning towards C#, mainly because it's easier to use (no pointers, better intuitive syntax (IMO), etc.), you can create GUIs easily (I was always extremely dissapointed at how GUIs were never part of C++ per se, simply part of supplied libraries), and it's not VB.NET (;P). However, C++ also has good points, because it's more complex—if you can handle all of C++, you can handle everything—and it's the industry standard that's also tought in our school's CompSci class. I'm not really considering any other languages, mainly because both of these suit me just fine. So which would be better to teach, assuming she could handle either one? In either case, VS.NET will be the development environment, FYI. And remember, I'm not trying to start a holy war over language preference (again). I'm trying to get a measured and useful opinion on these questions, because all I know is that in fifth grade I learned how to make a website and moved on to C++ that same year, and all I used were
For many, I would suggest english ;P Elainie (fluffy tigress emoticon) Would you like to meet my teddy bear ?