To introduce students on programming? Which language is more appropriate now?
-
Actually, children have more malleable brains and learn more easily than adults. However, one assumes that he's talking about teaching children and not adults. At the core, you're saying that people should start with the most complicated task, and then work backwards. I say they should develop a framework of understanding and go deeper with time.
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, he is tlaking about 15 to 16 year olds, certainly old enough to take it on the chin. Heck, we did at that age. All kinds of complex stuff, advanced maths, organic chemistry, if someone had thrown in stacks and assembler it wouldnt have been any harder.
"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, he is tlaking about 15 to 16 year olds, certainly old enough to take it on the chin. Heck, we did at that age. All kinds of complex stuff, advanced maths, organic chemistry, if someone had thrown in stacks and assembler it wouldnt have been any harder.
"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
Perhaps, but I don't think they approach any other subject by seeking to make it as complicated early on as possible, to make it as hard to learn as possible.
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.
-
Perhaps, but I don't think they approach any other subject by seeking to make it as complicated early on as possible, to make it as hard to learn as possible.
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 (and I did learn about computers form the inside out, bottom up, not at 16, because we didnt have them then, but at 18) actually when learnt at a fundamental level like this it is actually easier to understand the machine then via a high level language like C# (if thats what you were proposing). The first language I learnt was actually BASIC, on a Spectrum. But then I just got hold of one and taught myself. And, depending on what you are programming different languages have different uses. So if I was throwing together a database app talking to a Jet engine I would probably use VB or some such. (Never got involved with the Microsoft javaesque languages and VM so I cant really comment on .Net suitability). Of course if you are anywhere near HW then C and assembler are crucial. And a lot of coding is. Not just in kernels but FW for a lot of devices, plus handhelds.
"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
-
:laugh: :laugh: Just testing a hypothesis Christian.
"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
To put all this another way. If we each had a class, same age, same background. You taught assembler, I taught C#. In 6 months, our classes enter a programming contest. Each student needs to write the Windows calculator. As well as the functionality found in the windows calculator ( including scientific mode, hex, octal, etc ), the students would be free to add other features as they saw fit. They would be marked on functionality, appearance and robustness. All the things that matter in the real world. Which class do you think would win ?
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 (and I did learn about computers form the inside out, bottom up, not at 16, because we didnt have them then, but at 18) actually when learnt at a fundamental level like this it is actually easier to understand the machine then via a high level language like C# (if thats what you were proposing). The first language I learnt was actually BASIC, on a Spectrum. But then I just got hold of one and taught myself. And, depending on what you are programming different languages have different uses. So if I was throwing together a database app talking to a Jet engine I would probably use VB or some such. (Never got involved with the Microsoft javaesque languages and VM so I cant really comment on .Net suitability). Of course if you are anywhere near HW then C and assembler are crucial. And a lot of coding is. Not just in kernels but FW for a lot of devices, plus handhelds.
"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:
Of course if you are anywhere near HW then C and assembler are crucial. And a lot of coding is. Not just in kernels but FW for a lot of devices, plus handhelds.
Sure, there's a tiny number of applications still where C and assembler are needed. And for someone who is going to have to take those jobs, it's perhaps arguable that knowing high level languages is of no value. But, why would you assume that a class for beginning programmers should aim for 2% of the possible jobs, and close to zero possibility of the path a hobbyist would take ?
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.
-
To put all this another way. If we each had a class, same age, same background. You taught assembler, I taught C#. In 6 months, our classes enter a programming contest. Each student needs to write the Windows calculator. As well as the functionality found in the windows calculator ( including scientific mode, hex, octal, etc ), the students would be free to add other features as they saw fit. They would be marked on functionality, appearance and robustness. All the things that matter in the real world. Which class do you think would win ?
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.
If you choose the examination to suit your chosen language then there is no competition Christian. And if you try to implement something on an Arm processor?
"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
-
If you choose the examination to suit your chosen language then there is no competition Christian. And if you try to implement something on an Arm processor?
"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 you choose the examination to suit your chosen language then there is no competition Christian.
I chose something that is applicable to the real world, and the sort of task that would demonstrate an ability to program, at a level that would count as some sort of accomplishment. What would your class be able to do, in six months ? A console calculator that does addition and subtraction perhaps ? I'd be able to double back and teach some C++ ( and even C if you like ) to teach them about memory management before your class could write a remotely useful program.
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.
-
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.
-
fat_boy wrote:
Of course if you are anywhere near HW then C and assembler are crucial. And a lot of coding is. Not just in kernels but FW for a lot of devices, plus handhelds.
Sure, there's a tiny number of applications still where C and assembler are needed. And for someone who is going to have to take those jobs, it's perhaps arguable that knowing high level languages is of no value. But, why would you assume that a class for beginning programmers should aim for 2% of the possible jobs, and close to zero possibility of the path a hobbyist would take ?
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.
Its not so tiny as you think. Look at the number of PDAs around.
"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 you choose the examination to suit your chosen language then there is no competition Christian.
I chose something that is applicable to the real world, and the sort of task that would demonstrate an ability to program, at a level that would count as some sort of accomplishment. What would your class be able to do, in six months ? A console calculator that does addition and subtraction perhaps ? I'd be able to double back and teach some C++ ( and even C if you like ) to teach them about memory management before your class could write a remotely useful program.
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.
Mind you you could do a calculator in C just as quickly. Even faster in MFC.
"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
-
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...
I'd pick C#, because you have a comfortable free dev env, it's state of the art, it's used in the industry, and you can explore different paradigms.
FILETIME to time_t
| FoldWithUs! | sighist | WhoIncludes - Analyzing C++ include file hierarchy -
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...
My first programming class was IBM 360/370 Assembly Language.
".45 ACP - because shooting twice is just silly" - JSOP, 2010
-----
You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010
-----
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass." - Dale Earnhardt, 1997 -
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
Sorry to but in - hope this isn't the full 1/2 hour argument...
fat_boy wrote:
Those who really know how computers work and can make them fly, and those who can only write applications to process some data.
You seem to be implying (and I haven't read every word of this whole thread so I may have missed something) that there is just one, supreme, type of software developer. I've worked with many very clever technical people, who could (and did!) knock out a device driver in their lunch hour to support some new peripheral for a business application. sit them down to write a WPF business application and they'd struggle. And I've worked with some really smart business solution programmers who do have an understanding of the nuts and bolts, but really wouldn't know where to start when it came to a device driver, for example. it's a big field, with room for a lot of disparate skills.
___________________________________________ .\\axxx (That's an 'M')
-
Sorry to but in - hope this isn't the full 1/2 hour argument...
fat_boy wrote:
Those who really know how computers work and can make them fly, and those who can only write applications to process some data.
You seem to be implying (and I haven't read every word of this whole thread so I may have missed something) that there is just one, supreme, type of software developer. I've worked with many very clever technical people, who could (and did!) knock out a device driver in their lunch hour to support some new peripheral for a business application. sit them down to write a WPF business application and they'd struggle. And I've worked with some really smart business solution programmers who do have an understanding of the nuts and bolts, but really wouldn't know where to start when it came to a device driver, for example. it's a big field, with room for a lot of disparate skills.
___________________________________________ .\\axxx (That's an 'M')
Of course many skills are needed, but, and I am very sure, that a solid grounding in the basics makes a better engineer.
"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
-
My first programming class was IBM 360/370 Assembly Language.
".45 ACP - because shooting twice is just silly" - JSOP, 2010
-----
You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010
-----
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass." - Dale Earnhardt, 1997Were there any other choices ?
Watched code never compiles.
-
Were there any other choices ?
Watched code never compiles.
RPG, Cobol, PL/1
".45 ACP - because shooting twice is just silly" - JSOP, 2010
-----
You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010
-----
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass." - Dale Earnhardt, 1997 -
CDP1802 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.
The problem is, that what constitutes good design and what not is not set in stone. As you may or may not know, I once started with a self-built computer with a hex keypad and huge 4k RAM. With such limited resources, a good design was anything that made efficient enough use of them to squeeze yet some more features into your program. Design as we understand it today and maintainability were secondary issues. There are C compilers for old computers, like the C64. Get yourself one and write a well designed application. You will see how far you get. But times have changed. We have powerful multicore CPUs and endless RAM, and some garbage collection takes away all remaining concerns, right? Sorry, but I have met enough cargo cult programmers who have been taught such things and had plenty to do with the junk they created. Oh, yes, they can often religiously preach about what you are supposed to do and what not. But if you ask them some questions, you will qickly discover that they are just repeating what they were told. They don't understand what they are preaching about and have little to no idea what happens in the machine's memory or in the CPU. Using the analogy of a driver, they have just blown up their transmission or engine and have no clue why, since they have done what they were told. Our intern, who is just starting as well, learned all about recursion today. By calculating the Fibonacci numbers. He used C# and was amazed that the little program ran minutes for deeper recursion levels. Then we took a look at what optimizing the algorithm can accomplish. After that we went to C++ and last I gave him an estimate what a lean and mean assembly program could gain on that. The little guy is still trying to figure out where the performance gains came from. To him it all looks the same. But now he knows that there is more to it than writing some beautiful code. Yes, you have to get started somewhere, but please not the dogmatic way.
"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 -
To put all this another way. If we each had a class, same age, same background. You taught assembler, I taught C#. In 6 months, our classes enter a programming contest. Each student needs to write the Windows calculator. As well as the functionality found in the windows calculator ( including scientific mode, hex, octal, etc ), the students would be free to add other features as they saw fit. They would be marked on functionality, appearance and robustness. All the things that matter in the real world. Which class do you think would win ?
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.
More than 10 years ago I already used MASM with a full Win32 library. Having to use that instead of C/C++ would not slow me down very much. As to the students - with a little luck there are some who are inspired by getting maximum control over the CPU.
"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