|
So c++ is defined as a intermediate language. It contains features of both low- level and high- level languages. Technically speaking it sits just after c and just before java on the Language Spectrum of Science scale you can see if you follow the link below. I do feel that the fact that it is a OO language, that it should lean more towards Java when it comes to the learning of a language.
http://www.codecommit.com/blog/java/defining-high-mid-and-low-level-languages[^]
"Program testing can be used to show the presence of bugs, but never to show their absence."
<< please vote!! >>
|
|
|
|
|
In addition, it is very valuable to learn functional languages like scala or prolog. If exposed only to procedural languages your thinking gets scewed to one direction. One of my favourite books at uni was a book on scala.
Cheers,
Daniel
|
|
|
|
|
I had to learn it many many years ago and why should new COMP SCI be excluded from the joy of sleepless pleasures of dealing pointers.
but then again maybe not... leave all those C++ jobs to me!!
as if the facebook, twitter and message boards weren't enough - blogged
|
|
|
|
|
Yes Its Necessary
Be Simple
|
|
|
|
|
|
Without an understanding of what's really happening underneath it all, programming is just playing with blocks. I'd actually go further and suggest that students learn C and something about compiler technology. That'll help them appreciate all the amazing frameworks out there and what they provide. It also may prevent them from standing around like deer in the headlights wondering what's going wrong when something unexpected happens in a framework.
|
|
|
|
|
It is always nice to know the internals first and C++ provides a nice chance to do this as the memory management and many more things are at the hands of the developer.
Quote: pointers, memory management, linked lists and to-the-metal programming
This is the cream/core and if you want to enjoy truly, of couse C++ is the one to start with
|
|
|
|
|
This is my first language before going to vb.6,vb.net and C#
Programmer's C# { Do it Better;}
|
|
|
|
|
That is one language which can give a strong standards-compliant foundation to object oriented programming and hone our sharp inquisitive problem-solving skills.
Vasudevan Deepak Kumar
Personal Homepage Tech Gossips
The woods are lovely, dark and deep,
But I have promises to keep,
And miles to go before I sleep,
And miles to go before I sleep!
|
|
|
|
|
I didn't study anything computer related myself, but I know several people that did and they all come with the same story: "We had to tell our professors what was going on...". Or professors that still used some prehistoric software because it was all they knew etc. I studied media and my professor didn't know the difference between a Flash application and a YouTube vid (wildly clicking on YouTube vid: "Why doesn't it respond!?")... Perhaps you could get away with teaching the same stuff every year in math or English class, but NOT in programming class.
How can we be educated if the educators don't know?
Anyway, I think every programmer should know a thing or two about memory management, pointers, that kind of stuff.
It's an OO world.
public class Naerling : Lazy<Person>{
public void DoWork(){ throw new NotImplementedException(); }
}
|
|
|
|
|
Most of programming teachers even don't know C#, and only the basics of C++. At school we only learn Pascal. There is no question about learning memory management, pointers, or even OOP. If somebody wants to be a real programmer he/she have to learn the most alone. One of my friends is at university, and they've learnt assembly, only 16 bit assembly...
In my school we are still using Office 2003, because the teacher says that we won't be able to use 2010. There still Windows XP on every computer. And if a programming teacher learn only in this level, will he teach the same after he finished school?
|
|
|
|
|
Dávid Kocsis wrote: If somebody wants to be a real programmer he/she have to learn the most alone. An intern who is still at school told me the same
Dávid Kocsis wrote: In my school we are still using Office 2003, because the teacher says that we won't be able to use 2010. There still Windows XP on every computer. Heard that before too.
I know some people fresh out of programming school who don't know OOP. I even read a master thesis that started like "for our final project we are using the Microsoft method, which is object oriented." (yes, you didn't know Microsoft invented OOP!)... The application that went with it did not use inheritance, interfaces, design patterns... It's a joke!
And I get looked down on because I don't have a formal education
It's an OO world.
public class Naerling : Lazy<Person>{
public void DoWork(){ throw new NotImplementedException(); }
}
|
|
|
|
|
Yes, to get a grasp on the concept of "Object Lifecycle".
Then, they will enjoy the wonders of Garbage Collectors, but with the habit of thinking a bit more (hopefuly).
|
|
|
|
|
I originally started with FORTRAN, essentially self taught, and seriously mastered VAX FORTRAN. SOmehow I got involved in learning to use the VAX MACRO-ASSEMBLER, primarily making functions that didn't currently exist as the learning tool.
But what an eye opener!
FORTRAN promotes numerical values (at least at that time) without a wince. Little did I know the damage I was doing to my calculations (padding, truncation) until I saw what was happening. Similarly, just seeing the consequences of arguments (pushing/popping stack) taught me when to use global declarations by knowing why.
Perhaps there's no need to go all the way to an assembly language, especially since they're so processor specific, but by going to C or C++, you still get the connection to reality that what you do and how you do it has consequences not only in performance but in the actual final calculation.
If one does plan on doing this stuff for a living, they probably should know that stuff.
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein | "As far as we know, our computer has never had an undetected error." - Weisert | "If you are searching for perfection in others, then you seek disappointment. If you are seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010 |
|
|
|
|
|
At first I thought "yes" they should absolutely be coming out of a CS programming with an understanding of some lower level languages.
Then I thought, "no, not c++", they should be even lower.
Now I think they should learn a lower level language (something I haven't done and am unlikely to do) as part of their CS program, but it doesn't have to be C++. That's like saying they should definitely learn C# as the higher level language. They should learn a higher level language, but it doesn't matter if it's C# or Java or something else (just not VB for the sake of all things holy).
So, yes to low level programming, yes, to high level programming, but the language doesn't really matter, so I ended up voting no.
|
|
|
|
|
I think it is very good that new developers learn lower level languages at the outset so that they can have a deeper appreciation for the tools they use. Knowledge of lower level languages benefited me greatly as I learned the newer higher level ones along the way because I had at least some understanding as to how things work "under the hood".
Using the driving analogy, a developer can be thought of like a mechanic. I want my mechanic to know more about how my car works than that is needs oil and fuel to run. I want them to know what a carburetor does. I want them to know why things are put where they are are, etc. That doesn't mean I want the mechanic to be able to rebuild these individual components, but they should have a basic knowledge of how they work.
With development, I found it incredibly beneficial that my first courses were in Assembly and C. After that, things in C++ were easy to understand and newer languages just build on top.
I wasn't, now I am, then I won't be anymore.
|
|
|
|
|
Marcus Kramer wrote: I found it incredibly beneficial that my first courses were in Assembly and C.
After that, things in C++ were easy to understand and newer languages just build
on top.
Yes, very good points! I think most of us do agree that knowing the fundamentals are beneficial.
I find it interesting that some of the posts here agree wth the car and driver analogy, but are debating the implementation of the concept, I guess that's what makes us programmers.
It was broke, so I fixed it.
|
|
|
|
|
For pointers, memory management, to the metal programming, etc., I think they should learn assembly.
For object oriented programming, design patterns, I would recommend Smalltalk.
m.bergman
For Bruce Schneier, quanta only have one state : afraid.
To succeed in the world it is not enough to be stupid, you must also be well-mannered. -- Voltaire
Honesty is the best policy, but insanity is a better defense. -- Steve Landesberg
|
|
|
|
|
Leave this job for me and learn .NET and JavaScript.
|
|
|
|
|
If you can drive a manual you can drive anything if not your limited to
automatic.
|
|
|
|
|
That reminded me of an american friend that came over to my place in Brazil so she would spend the carnival here.
Most brazilian cars, specially the cheap rentals, are manual transmission. She never learned how to use manual transmission back in US, so she couldn't drive the cheaper rentals here, or my car (I don't do automatic).
Lesson learned: You never know when you going to need certain skills.
So yes, learn C/C++
"To alcohol! The cause of, and solution to, all of life's problems" - Homer Simpson
|
|
|
|
|
Exactly my point.
Fabio Franco wrote: (I don't do automatic) Me too, in the 50 years I've been driving I'm owned a couple of automatics
but prefer manual.
|
|
|
|
|
I've never owned or ever will own an automatic car. It takes the joy out of driving.
The day I will own an automatic is the same day I will stop loving to drive.
The automatized may have a chance with me though, but they need to be dual clutch and at least 6 gears .
"To alcohol! The cause of, and solution to, all of life's problems" - Homer Simpson
|
|
|
|
|
You can't zoom zoom with an auto.
|
|
|
|
|
It isn't necessary I mean, but it is useful. Computer Science student should learn c++ or a similar low level language. It brings them closer to the metal that is normally the case, and that is surely a good thing given they are learning Comp Sci rather than "IT" / programming. I'm also against the idea that courses should be solely tailored to the market: some things are worth learning for their own sake and can lead to ideas in other (more practical) fields so necessity has little to do with it.
When I was studying we used c++ as the main language and it not only introduced oo-concepts, but made the courses teaching Assembly much easier. It is also easier to make the transition from c++ to Java or .net than the other way on.
I tried to explain how information is stored in a machine to my students and was shocked at the response, it hadn't even occurred to some that the information was codified as numbers, let alone binary. The memory addressing part and arrays must have been like science fiction. I wondered how they got through the DataStructures course.
|
|
|
|