To introduce students on programming? Which language is more appropriate now?
-
If you were to teach some school students say aged 15-16 (who have no programming experience) the basics of software programming, which language would you begin with? I was taught C->C++->Win32->MFC but i am wondering nowadays if there is still a need to start from C. Perhaps children are now more intelligent and would not have much problem starting from C++ or C#?
Weiye Chen A hermit trying to learn hibernation...
Weiye Chen wrote:
Perhaps children are now more intelligent
Not in my experience. They are more stupid if you ask me. (Since the exams are so banaal lthese days anyone can egt to university). So, what do you want to teach? Computer programming as engineering or how to make money as a programmer? If its 1 then its Assembler, stacks, heaps, registers leading on to C, then C++ (as part of OO) and then the managed/easy languages, Java, C#, VB. If its 2 then C#.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
-
Ok, sir, please explain where you got the code from my first program which I wrote when I stumbled over a TRS-80 (model I) back in 1978?
"I have what could be described as the most wide-open sense of humor on the site, and if I don't think something is funny, then it really isn't." - JSOC, 2011 -----
"Friar Modest never was a prior" - Italian proverb:~
My Blog What you do, when you don't know what to do is what you do when you don't want to do what you do.
-
Starting from C has been stupid for at least 10 years. Starting from C++ has been stupid for at least 4.
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
Of course you do realise that all your high level languages use compilers written in C and run on platforms written in C and talk to devices programmed in C?
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
-
Of course you do realise that all your high level languages use compilers written in C and run on platforms written in C and talk to devices programmed in C?
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
Yes. I also know that it takes people with a whole lot of resources and skills to build my car. That doesn't mean I need to know how to build one, in order to drive it. It certainly doesn't mean that I need to know how to build one BEFORE I learn to drive it, any more than I needed to know how to make Bearnaise sauce before I learned to boil a kettle.
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
-
Weiye Chen wrote:
Perhaps children are now more intelligent
Not in my experience. They are more stupid if you ask me. (Since the exams are so banaal lthese days anyone can egt to university). So, what do you want to teach? Computer programming as engineering or how to make money as a programmer? If its 1 then its Assembler, stacks, heaps, registers leading on to C, then C++ (as part of OO) and then the managed/easy languages, Java, C#, VB. If its 2 then C#.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
fat_boy wrote:
If its 1 then its Assembler, stacks, heaps, registers leading on to C, then C++ (as part of OO) and then the managed/easy languages, Java, C#, VB.
Learning assembler first is a great idea, if your goal is for most of your class to fail and never consider learning to program again.
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
-
Yes. I also know that it takes people with a whole lot of resources and skills to build my car. That doesn't mean I need to know how to build one, in order to drive it. It certainly doesn't mean that I need to know how to build one BEFORE I learn to drive it, any more than I needed to know how to make Bearnaise sauce before I learned to boil a kettle.
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
You are comparing apples and oranges. Using a computer is entirely different to programming one.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
-
fat_boy wrote:
If its 1 then its Assembler, stacks, heaps, registers leading on to C, then C++ (as part of OO) and then the managed/easy languages, Java, C#, VB.
Learning assembler first is a great idea, if your goal is for most of your class to fail and never consider learning to program again.
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
What a stupid comment.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
-
You are comparing apples and oranges. Using a computer is entirely different to programming one.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
No, I'm really not. Learning assembler, or even C, is a retarded place to start because any widely used language today is built on a platform of OO. If that is a false god or not is irrelevant. Learning something that's super complicated and goes against the most basic principles of the widely used languages is like teaching someone all the bad habits possible, and then later trying to break them of them. When I was using C++ every day, my world was surrounded by people who wrote the most awful, awful code. Why ? Because they learned C first, and never bothered to learn to use C++ where there was a C construct that still worked. For example, file handles instead of iostreams. Microsoft CArray instead of std::vector. You name it, and people didn't bother to learn C++ because they knew C, and it worked in C++. Yes, I know CArray is not C. But it was used for roughly the same reasons. It's also not a bad comparison because the only sane reason to teach someone assembler, or even C, is the idea that people need to know exactly how a computer works, to program it. Beyond that, they are hardly highly productive languages, nor do they come with the sort of frameworks that .NET does ( which makes it even more productive ), so what's the use of knowing it ?
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
-
What a stupid comment.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
you somewhere on this thread said students are stupider, not smarter. Yet, you think assembler is a good place to start. THAT is the height of arrogant stupidity. I thought teachers were supposed to teach and help, not to confuse and dismay. Show me a class of 16 or even 18 year olds who would all benefit from starting programming with assembler. If they exist, it's because you're teaching at MENSA.
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
-
No, I'm really not. Learning assembler, or even C, is a retarded place to start because any widely used language today is built on a platform of OO. If that is a false god or not is irrelevant. Learning something that's super complicated and goes against the most basic principles of the widely used languages is like teaching someone all the bad habits possible, and then later trying to break them of them. When I was using C++ every day, my world was surrounded by people who wrote the most awful, awful code. Why ? Because they learned C first, and never bothered to learn to use C++ where there was a C construct that still worked. For example, file handles instead of iostreams. Microsoft CArray instead of std::vector. You name it, and people didn't bother to learn C++ because they knew C, and it worked in C++. Yes, I know CArray is not C. But it was used for roughly the same reasons. It's also not a bad comparison because the only sane reason to teach someone assembler, or even C, is the idea that people need to know exactly how a computer works, to program it. Beyond that, they are hardly highly productive languages, nor do they come with the sort of frameworks that .NET does ( which makes it even more productive ), so what's the use of knowing it ?
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
There will always be people who write bad code, and anyone who has truly learnt C++ (and it would appear all those people you worked with were liars) would use iostreams and STL. However, to learn programming as an engineering discipline requires at least some understanding of the nuts and bolts. Even if it is only to recognise how complicated it is and what benefits OO languages can bring. And as for your analogy it is false. A car user is like a computer user. They need to know how to use it, not how it works. An engineer needs to know how it works. Period.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
-
There will always be people who write bad code, and anyone who has truly learnt C++ (and it would appear all those people you worked with were liars) would use iostreams and STL. However, to learn programming as an engineering discipline requires at least some understanding of the nuts and bolts. Even if it is only to recognise how complicated it is and what benefits OO languages can bring. And as for your analogy it is false. A car user is like a computer user. They need to know how to use it, not how it works. An engineer needs to know how it works. Period.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
fat_boy wrote:
There will always be people who write bad code, and anyone who has truly learnt C++ (and it would appear all those people you worked with were liars) would use iostreams and STL.
But this is the issue. MOST programmers are like that. They mostly stick to what they learned first, and don't move past it. So do you just teach them badly and blame them for not getting over it, or do you teach them well ?
fat_boy wrote:
However, to learn programming as an engineering discipline requires at least some understanding of the nuts and bolts. Even if it is only to recognise how complicated it is and what benefits OO languages can bring.
Wrong. Lots of people write useful code every day with no idea of the 'nuts and bolts'. I agree that once you have some good principles in place with a useful language, it's a good thing to go back and learn stuff like Win32, so you understand what C# ( for example ) is doing for you, but learning it first does not aid in moving on to a higher level language, it creates confusion and makes the whole thing harder to learn than it needs to be.
fat_boy wrote:
And as for your analogy it is false. A car user is like a computer user. They need to know how to use it, not how it works. An engineer needs to know how it works. Period.
OK, so perhaps it would be fair to say that the guy who builds the car in the factory, does not need to know how to build the parts that he has delivered to him premade. The point I am trying to make is obvious, any analogy is likely to fall down if you nit pick and ignore the point being made.
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
-
you somewhere on this thread said students are stupider, not smarter. Yet, you think assembler is a good place to start. THAT is the height of arrogant stupidity. I thought teachers were supposed to teach and help, not to confuse and dismay. Show me a class of 16 or even 18 year olds who would all benefit from starting programming with assembler. If they exist, it's because you're teaching at MENSA.
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
Why dont you reread what I wrote and particularly the part where I described two ways of looking at the wuesiton depending on the desired outcome.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
-
Why dont you reread what I wrote and particularly the part where I described two ways of looking at the wuesiton depending on the desired outcome.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
I read it. I found it very arrogant, as well as wrong. No matter what, I'd start with something that teaches good OO concepts and allows students to see results. I'd say if I was teaching someone to make money, I'd start with ASP.NET. If it was an engineer I was supposed to create, they'd be writing C# console programs for some time and using C# as a bed for learning programming concepts. Then I'd teach some C++ to teach them how C++ manages memory. Then I'd move on to winforms, or WPF. Somewhere along the line, towards the end of a long course, I may teach some assembler, but I'd not be so arrogant as to assume it would be remotely useful to most people, and certainly it would not be required. That's just dumb.
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
-
No, I'm really not. Learning assembler, or even C, is a retarded place to start because any widely used language today is built on a platform of OO. If that is a false god or not is irrelevant. Learning something that's super complicated and goes against the most basic principles of the widely used languages is like teaching someone all the bad habits possible, and then later trying to break them of them. When I was using C++ every day, my world was surrounded by people who wrote the most awful, awful code. Why ? Because they learned C first, and never bothered to learn to use C++ where there was a C construct that still worked. For example, file handles instead of iostreams. Microsoft CArray instead of std::vector. You name it, and people didn't bother to learn C++ because they knew C, and it worked in C++. Yes, I know CArray is not C. But it was used for roughly the same reasons. It's also not a bad comparison because the only sane reason to teach someone assembler, or even C, is the idea that people need to know exactly how a computer works, to program it. Beyond that, they are hardly highly productive languages, nor do they come with the sort of frameworks that .NET does ( which makes it even more productive ), so what's the use of knowing it ?
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
Hmm, did I not read recently that good old C still is the most widely used language? And using object oriented languages does not automatically enable to write good code. If you want to see some evidence for that, I have here the sources for an ASP .Net website where all the code was put into static methods. That is the same website that regularily fell flat on its face because it used outrageous amounts of memory. To make it short: What's worse? A programmer who does not know how to efficiently use the two most imortant resources of the machine, CPU and memory? Or a programmer who still has to learn more about a good design (which I see as a never ending quest)?
"I have what could be described as the most wide-open sense of humor on the site, and if I don't think something is funny, then it really isn't." - JSOC, 2011 -----
"Friar Modest never was a prior" - Italian proverb -
I read it. I found it very arrogant, as well as wrong. No matter what, I'd start with something that teaches good OO concepts and allows students to see results. I'd say if I was teaching someone to make money, I'd start with ASP.NET. If it was an engineer I was supposed to create, they'd be writing C# console programs for some time and using C# as a bed for learning programming concepts. Then I'd teach some C++ to teach them how C++ manages memory. Then I'd move on to winforms, or WPF. Somewhere along the line, towards the end of a long course, I may teach some assembler, but I'd not be so arrogant as to assume it would be remotely useful to most people, and certainly it would not be required. That's just dumb.
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
Of course this is where the men and the boys get seperated: Those who really know how computers work and can make them fly, and those who can only write applications to process some data.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
-
No, I'm really not. Learning assembler, or even C, is a retarded place to start because any widely used language today is built on a platform of OO. If that is a false god or not is irrelevant. Learning something that's super complicated and goes against the most basic principles of the widely used languages is like teaching someone all the bad habits possible, and then later trying to break them of them. When I was using C++ every day, my world was surrounded by people who wrote the most awful, awful code. Why ? Because they learned C first, and never bothered to learn to use C++ where there was a C construct that still worked. For example, file handles instead of iostreams. Microsoft CArray instead of std::vector. You name it, and people didn't bother to learn C++ because they knew C, and it worked in C++. Yes, I know CArray is not C. But it was used for roughly the same reasons. It's also not a bad comparison because the only sane reason to teach someone assembler, or even C, is the idea that people need to know exactly how a computer works, to program it. Beyond that, they are hardly highly productive languages, nor do they come with the sort of frameworks that .NET does ( which makes it even more productive ), so what's the use of knowing it ?
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
Christian Graus wrote:
so what's the use of knowing it ?
Christian Graus wrote:
people need to know exactly how a computer works, to program it.
You said it yourself.
-
Hmm, did I not read recently that good old C still is the most widely used language? And using object oriented languages does not automatically enable to write good code. If you want to see some evidence for that, I have here the sources for an ASP .Net website where all the code was put into static methods. That is the same website that regularily fell flat on its face because it used outrageous amounts of memory. To make it short: What's worse? A programmer who does not know how to efficiently use the two most imortant resources of the machine, CPU and memory? Or a programmer who still has to learn more about a good design (which I see as a never ending quest)?
"I have what could be described as the most wide-open sense of humor on the site, and if I don't think something is funny, then it really isn't." - JSOC, 2011 -----
"Friar Modest never was a prior" - Italian proverbQuite.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
-
Hmm, did I not read recently that good old C still is the most widely used language? And using object oriented languages does not automatically enable to write good code. If you want to see some evidence for that, I have here the sources for an ASP .Net website where all the code was put into static methods. That is the same website that regularily fell flat on its face because it used outrageous amounts of memory. To make it short: What's worse? A programmer who does not know how to efficiently use the two most imortant resources of the machine, CPU and memory? Or a programmer who still has to learn more about a good design (which I see as a never ending quest)?
"I have what could be described as the most wide-open sense of humor on the site, and if I don't think something is funny, then it really isn't." - JSOC, 2011 -----
"Friar Modest never was a prior" - Italian proverbCDP1802 wrote:
Hmm, did I not read recently that good old C still is the most widely used language?
If that's the case, i assume that's counting people programming old mainframe code that needs maintenance programmers. Or it could just be the most widely used in terms of users, much of most OSes and also Office being written in C. So what ?
CDP1802 wrote:
And using object oriented languages does not automatically enable to write good code
Doh. Look at the quick questions for all the evidence you need of that. So what ? Does not knowing OO make you a better programmer ?
CDP1802 wrote:
To make it short: What's worse? A programmer who does not know how to efficiently use the two most imortant resources of the machine, CPU and memory? Or a programmer who still has to learn more about a good design (which I see as a never ending quest)?
They are both useless. However, in this day and age, it's usually the case that a computer can handle the former, better than the latter. I never said it was not a good idea to teach either of those things ( how to use resources, and good design ). I said that you learn good design by learning OO from the start, and going back to learn the things that were at first hidden from you. Who do you think feels the greater level of achievement ? The guy who spends a week getting assembler to say 'hello world', or the guy who spends a week getting C# to play a basic game, or run a calculator, or replace notepad ?
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
-
Christian Graus wrote:
so what's the use of knowing it ?
Christian Graus wrote:
people need to know exactly how a computer works, to program it.
You said it yourself.
Wow - way to totally misquote me. That's not worth responding to. The idea that someone needs to know exactly, in fine detail, how a computer works, to start learning to program it, is insanely retarded.
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
-
Christian Graus wrote:
so what's the use of knowing it ?
Christian Graus wrote:
people need to know exactly how a computer works, to program it.
You said it yourself.
I recognise that even my knowledge isnt as good as it should be. I never learnt assemebler to use but I have had to debug into it a lot, and I wish I knew it better. But for sure C is a good starting point because it is close enough to the machine to get to know about memory. (It also makes quite tidy assembler. If you ever have to debug into assembly that came form C++ then you have my condolences!)
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville