To introduce students on programming? Which language is more appropriate now?
-
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
-
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
fat_boy wrote:
But for sure C is a good starting point because it is close enough to the machine to get to know about memory
As I said, every terrible C++ programmer I've worked with, never was good at C++, precisely because they learned C first.
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.
-
fat_boy wrote:
But for sure C is a good starting point because it is close enough to the machine to get to know about memory
As I said, every terrible C++ programmer I've worked with, never was good at C++, precisely because they learned C first.
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.
So hang on, lets work out whats going on here, you are actually crap at C yes? Pointers actually scare the shit out of you, and thats why you are so anti 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 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
Well, you see, you may be sufficiently insecure to talk crap like this, but I am not. I know more than my share about that stuff, I learned C++, proper C++ on the command line, then I learned MFC, then I went back to learn C and Win32, so that I could understand what MFC was hiding from me. I have not used C++ for some time because, in the windows world, it's a stupid choice, most of the time. As I said, the people who learned C first, didn't know it better than me, they just sucked at C++. Naturally, some people will learn 'how to write applications' and never learn how to 'make them fly'. So what ? The ones who learn in the ways I am suggesting, are in a better place to learn as much as they choose to, instead of being taught things that are over complicated, teach bad habits, and slow down the learning process.
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.
-
Well, you see, you may be sufficiently insecure to talk crap like this, but I am not. I know more than my share about that stuff, I learned C++, proper C++ on the command line, then I learned MFC, then I went back to learn C and Win32, so that I could understand what MFC was hiding from me. I have not used C++ for some time because, in the windows world, it's a stupid choice, most of the time. As I said, the people who learned C first, didn't know it better than me, they just sucked at C++. Naturally, some people will learn 'how to write applications' and never learn how to 'make them fly'. So what ? The ones who learn in the ways I am suggesting, are in a better place to learn as much as they choose to, instead of being taught things that are over complicated, teach bad habits, and slow down the learning process.
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:
Naturally, some people will learn 'how to write applications' and never learn how to 'make them fly'
I said computers fly, not applications. Clearly with out a good understanding of C you will never work in the kernel, and thats where the machine is, thats where the peripherals are. Thats where its engineered. Processes are just small VMs, you cant do much in the way of making a computer fly from a VM.
"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
-
So hang on, lets work out whats going on here, you are actually crap at C yes? Pointers actually scare the shit out of you, and thats why you are so anti 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
You are an ignorant fool. I had about 7 articles published by Windows Developers Journal, all in C. I wrote a ton of code at work, in C, as well as C++, over many years, for windows and also the Palm platform ( I wrote a database platform for Palm as it did not come with one, for example, all in C ). Microsoft gave me an MVP award for my answering questions on forums when all I knew was C and C++. So, yes, I guess I suck at C, and that's why I want to stop other people from learning it, because of my insecurities. Are you actually illiterate, or are you just projecting your insecurities on to me and not reading anything I said ?
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.