New to programming, where to start?

Page 5 - Seeking answers? Join the AnandTech community: where nearly half-a-million members share solutions and discuss the latest tech.

Obsoleet

Platinum Member
Oct 2, 2007
2,181
1
0
Not to gang up here but I'd agree with Mark's assessment above. I think it's probably a correlation but not a causation that better programmers are C++ pros rather than Python pros.

That said, and this is the important part- most C pros that I know personally know at least 1 scripting language, and they know it well. They love it, and they don't view development as a zero-sum game. Becuase Ruby and Python work so well with C(++). I'm not sure the two have to be opposed like so many in our field want it to be? Ruby vs Python makes more sense in my mind. Little more overlap there.

In the end though, Mark has the mature, grizzled veteran's point of view that I've seen reiterated around the web by my personal cadre of coders that I respect most.

It's not the language that matters, it's what you do with it. Language cults are a fools errand. The biggest cults out there today are Go (likely spurned by Google fanboys but it's not all hype either) and Node.js (not a language, a webserver, but definitely its own thing, I've used it and it's also overrated if you ask me). There's quite a Haskell cult as well but smaller.

Two excellent opeds from two coders that I respect-
Zed Shaw http://learnpythonthehardway.org/book/advice.html
Damien Katz http://damienkatz.net/2013/01/the_unreasonable_effectiveness_of_c.html

From what it appears once the gray hair arrives, and the neckbeard is full you will pretty much have learned your lessons.
 

beginner99

Diamond Member
Jun 2, 2009
5,318
1,763
136
In short, I'd say someone who's only fluent in c++ will generally be a more highly skilled programmer than someone who's only fluent in python.

And what will memory management, compiler knowledge etc. help in creating a dynamic web site like one based on python?

Does knowing more actually make someone more skilled? Does it help an athlete if he knows how his muscles work at the molecular level?
 

Jaydip

Diamond Member
Mar 29, 2010
3,691
21
81
And what will memory management, compiler knowledge etc. help in creating a dynamic web site like one based on python?

Does knowing more actually make someone more skilled? Does it help an athlete if he knows how his muscles work at the molecular level?

From a monetary perspective system programmers are typically paid more.
 

Pia

Golden Member
Feb 28, 2008
1,563
0
0
Or it's good for beginners because they learn what they're up against early on, and those who are really determined will figure it out. But then again I've always been a proponent of teaching to the top of the class.
You are a proponent of bad pedagogy. Sinking a beginner in a soup of irrelevant detail makes them learn slower, regardless of whether they are "top of the class" or not.
Dealing with dumb shit is as vital a technique as string manipulation. In dealing with it you learn the structure of the development tools and how everything fits together, as opposed to a black box that does the hard work for you. If you don't like nitty-gritty, or can't stand it, then what are you doing in a programming class?
Solving hard problems is hard and meaningful work. Learning tools and tricks to cope with bullshit that could have been avoided with a better language choice is just hard work.

I'm involved with teaching programming at a university CS department. Back when our intro to programming was in Scheme, at the end of the semester some exercises were about modifying the Scheme interpreter to change the language itself (to do stuff like lazy evaluation). That is hard. That is what "teaching to the top of the class" actually looks like. If the class was taught in C, people would have been mired in bullshit that is not actually hard and has little value unless you plan to work specifically in C. The class could have covered only a tiny part of what it did, and everyone would have been a far worse programmer as a result.

We offer C and C++ courses because sometimes people do need these languages specifically. These courses focus on the nitty-gritty you need to use these languages well. They aren't general programming courses or part of the core curriculum. You are expected to already understand programming when you show up. We would never, ever do an intro course using them; that is just stupid.
I agree that Python is a better place to start because you can focus more in-depth on the logic and algorithms, and explain the technical theory before transitioning to a lower level language and implementing it;
Bad implicit assumption. Most people never need to transition to a language as low as C or C++.
but I disagree that c++ is bad for beginners. It may not be attractive to beginners, but the difference between starting with Python and starting with c++ is like the difference between the State Police Academy and Marine Corps Training.
If Marine Corps Training results in you having way lower capability while also being more unpleasant and less motivating than spending the same time at State Police Academy. Otherwise, bad analogy.
 

ianmorris

Junior Member
Aug 26, 2013
6
0
0
My first programming book is "kernighan and ritchie : The C Programming Language " , it's a really nice book and I strongly recommend it as place to start.
 

Jaydip

Diamond Member
Mar 29, 2010
3,691
21
81
My first programming book is "kernighan and ritchie : The C Programming Language " , it's a really nice book and I strongly recommend it as place to start.

It's about "C" so of course it is nice :biggrin:
 

irishScott

Lifer
Oct 10, 2006
21,562
3
0
You are a proponent of bad pedagogy. Sinking a beginner in a soup of irrelevant detail makes them learn slower, regardless of whether they are "top of the class" or not.

Solving hard problems is hard and meaningful work. Learning tools and tricks to cope with bullshit that could have been avoided with a better language choice is just hard work.

I'm involved with teaching programming at a university CS department. Back when our intro to programming was in Scheme, at the end of the semester some exercises were about modifying the Scheme interpreter to change the language itself (to do stuff like lazy evaluation). That is hard. That is what "teaching to the top of the class" actually looks like. If the class was taught in C, people would have been mired in bullshit that is not actually hard and has little value unless you plan to work specifically in C. The class could have covered only a tiny part of what it did, and everyone would have been a far worse programmer as a result.

I've yet to encounter a language that hasn't had it's own specific bullshit to work around. Sure some have more than others, but at the introductory level they're roughly equivalent IMO. To try and deny a new student the experience of dealing with technical bullshit is to do nothing more than sugar-coat the experience IMO.

You're also grossly exaggerating the effect of C/C++'s bullshit on the learning experience. If converting an introductory course to C/C++ reduces it to a "tiny part" of the original curriculum, then either it isn't an intro course, the curriculum sucks, or the instructor doesn't know c/c++.

The most basic gcc/g++ commands should be able to handle any introductory course with ease.

We offer C and C++ courses because sometimes people do need these languages specifically. These courses focus on the nitty-gritty you need to use these languages well. They aren't general programming courses or part of the core curriculum. You are expected to already understand programming when you show up. We would never, ever do an intro course using them; that is just stupid.

Bad implicit assumption. Most people never need to transition to a language as low as C or C++.

An entire generation of excellent programmers have come from "stupid", as you call it. Hell the AP Computer Science Test used to be c++ based.

As for transitioning, I suppose it depends on what blend of code monkey/software engineer/computer scientist you want to produce. The lower you go, the more you will learn. Granted there's a point of limiting returns for an introductory course, but c/c++ is a good balance IMO. If you want to teach someone pure algorithms and are perfectly happy with the python VM being a black box for all the mechanics, then go for it. Sure you can explain things like garbage collection conceptually, but unless the student has some exposure to even basic manual memory management the concept isn't going to stick.

If Marine Corps Training results in you having way lower capability while also being more unpleasant and less motivating than spending the same time at State Police Academy. Otherwise, bad analogy.

Yes, because learning the language that Python, Java, and many others are coded in, and runs the Mars Rovers for that matter is learning a "way less capable" language. :rolleyes: Sure it's going to be a bitch to do a lot of things manually in c/c++ that Python libraries (libraries written in that oh-so-less-capable language by programmers who likely came up through "stupid" educational programs :p) can do automagically, but in an intro course those libraries are just glitter, likely utilized through stock code provided by the instructor.

Learning fundamentals is supposed to be less pleasant and more conceptual. That's why they're called fundamentals. As for motivation, I've had plenty of bad experiences with lazy programmers; so anyone who doesn't have the motivation to get through Computer Science 101 in c/c++ is welcome to switch majors IMO. Because in my experience those are the people who don't write detailed comments (if any), don't use white-space, don't know how to or care to code efficiently, and cost their classmates and co-workers many hours of time correcting their mistakes/rough edges when things are on the line.
 

irishScott

Lifer
Oct 10, 2006
21,562
3
0
I've been thinking about this off and on for the last day or so, and ultimately I think it's wrong. In the end, the things that matter are the definition of what you want the system to do, and the system's actual behavior. All the stuff in between, languages, compilers, etc., are just tools used in moving from where you are to where you have to be. If you could set up a complex system tomorrow by accumulating knowledge and then letting the computer scan your brain then that's what you would do.

I don't think we'll ever get past the fundamental workflow of intent=>symbols=>translation=>behavior because I think it's a basic property of how our brains work and how computers work. I don't think we could structure a complex system by talking the machine through it, for example (although I recognize that I probably just don't have the mental paradigms available to me to see how it could work). But within the existing paradigm, and given the incredibly rapid development in our business, it seems a little silly to take a snapshot at any one point in time and enshrine it as dogma.

The historical fact is that C++ improved on the languages that came before it, and the languages that have come after C++ have likewise improved on what it offered. There is no more reason for most modern developers to be fluent in pointer arithmetic than there is for most modern drivers to understand how to dry a damp distributor.

The fundamental disagreement here seems to be about the concept of "need". How much knowledge or what kind of experience someone "needs" to get the job done effectively. For my money I'll take someone who knows their piece of the system inside and out over someone who's reliant on black boxes; because even if 95% of that knowledge isn't required for a specific project, the 5% may very well make the difference between "satisfactory" code and "exemplary" code.

I also wouldn't say that modern languages have "improved" on much from c/c++ aside from syntax improvements, we've simply developed some areas where the advantages of interpreted languages offset the advantages of compiled languages. Which is fine, but even in those ecosystems c/c++ often serves as the autonomic nervous system while the language in question provides the consciousness.

I'm simply advocating that one start one level lower. Someone at the top of a skyscraper can't see the bottom, those at the bottom can't see the top, those in between can see both.
 
Last edited:

Obsoleet

Platinum Member
Oct 2, 2007
2,181
1
0
Speaking of black boxes, I'd have to agree with Scott on that one. Damien Katz of CouchDB mentions the 'black box' VM of Erlang here- http://damienkatz.net/2013/01/follow_up_to_the_unreasonable.html and the troubles it caused him.
That said, a compiler is a bit of a black box. Less so though.
Programming is so complex, and in the multicore era is going to get MORE complex. I think we're going to be forced onto more and more 'black boxes'.

Adding additional abstraction layers always complicates matters. I'm not sure how pertinent that is for learning an Intro level CS course though?
It's certainly pertinent for hardcore systems programming. But who uses an interpreted or non-JVM platform for software that requires the utmost reliability and performance?
But using something like C and/or Python and the free lunch that singlecore improvements have given is now over. Black boxes will be here for most of us and are already, but for other reasons. Python's black box enables rapid development and ease of use. There's too many problems to be solved in 2013 for everyone to use C to resolve them.

Most programming these days actually involves Javascript of all things, and it's getting bigger.. I call it the new C. In 1985 you needed C or you found a new profession. Today, putting on the blinders and avoiding the web stuff is increasingly just as detrimental. Thankfully many get away with working on the serverside only still.
But unfortunately, webapps are coming for almost all of us. :)

It's becoming less about the language, and more about the techniques and libraries when it comes to the emerging market of coding.
I know more 'computer scientists' that are great at Programming. But they aren't keeping up on the cutting edge of web development, which is probably a character trait that is more important than being 'top of the class' brilliant. It's true, and yes, I said that! As an aside, I work with many 'top of the class' brilliant types and they are annoyingly arrogant, and don't even treat other people well. I'm not sure I'd want more than 1 of those guys in a business that I owned. Not really worth it, the arrogance kills the advantages of their minds.

Like I said though, there are yet still escapes and bubbles to hide in to avoid this reality. I am also avoiding it, just telling the truth.
Javascript isn't going away nor will it be replaced, only evolved. Its status is the revenge of interpreted languages. And V8/SpiderMonkey are massive 'black boxes' that we're depending on right now.

Pia said:
Solving hard problems is hard and meaningful work. Learning tools and tricks to cope with bullshit that could have been avoided with a better language choice is just hard work.

I'd agree with this too. Managing pointers (and the other inconveniences of working within C such as no containers) is just another layer to manage. I wouldn't say it makes anyone superior just because they want that additional work. For most it's not even necessary anymore.
There is a certain elitism around C and C++ programmers, but honestly solving problems and getting things done is more important than being someone else's definition of 'elite'.

The most basic gcc/g++ commands should be able to handle any introductory course with ease.

^ This kind of says it all. You can basically teach an intro class using anything. Mine was in VB6, due to my age.

Many top, reputable schools such as MIT are moving to Python though for the intro course. Add or remove the grains of salt this means to you.
 
Last edited:

Pia

Golden Member
Feb 28, 2008
1,563
0
0
I've yet to encounter a language that hasn't had it's own specific bullshit to work around. Sure some have more than others, but at the introductory level they're roughly equivalent IMO.
...
You're also grossly exaggerating the effect of C/C++'s bullshit on the learning experience.
I have spent hundreds of hours in one-on-one coaching with hundreds of students learning C. My current day job is partly about teaching C++. I have a pretty good idea what effect the bullshit in these languages has on students. You obviously don't.
If converting an introductory course to C/C++ reduces it to a "tiny part" of the original curriculum, then either it isn't an intro course, the curriculum sucks, or the instructor doesn't know c/c++.
Like I said: in our old one-semester intro course (which was pretty close to the MIT course of that time, same textbook and all) we went from zero to building and modifying interpreters for the language we were using. And an interpreter for a simple logic programming language, and a register/stack machine simulator. If you were to teach programming starting from C, one semester would barely be enough to get people to do some string twiddling, error handling and some simple data structure without too many memory leaks. The results possible are so different it's not even funny.
The most basic gcc/g++ commands should be able to handle any introductory course with ease.
Of course. I only mentioned this because it's one of the things that can stop a beginner from even getting a "Hello World" going; the bullshit with these languages starts immediately and never stops.
An entire generation of excellent programmers have come from "stupid", as you call it. Hell the AP Computer Science Test used to be c++ based.
You are being completely illogical here. That someone has gotten started in language X and eventually become a decent programmer does not in any way imply that language X is an efficient or good way to get started. I got started with C++ myself. Knowing what I know now, it was a terrible waste of time.
Yes, because learning the language that Python, Java, and many others are coded in, and runs the Mars Rovers for that matter is learning a "way less capable" language. :rolleyes: Sure it's going to be a bitch to do a lot of things manually in c/c++ that Python libraries (libraries written in that oh-so-less-capable language by programmers who likely came up through "stupid" educational programs :p) can do automagically, but in an intro course those libraries are just glitter, likely utilized through stock code provided by the instructor.
Reading comprehension plz. I did not call C and C++ "less capable". I said the student taught with them is far less capable than a student taught with Scheme or another good teaching language over the same timeframe and with competent instruction on both.
 
Last edited:

irishScott

Lifer
Oct 10, 2006
21,562
3
0
I have spent hundreds of hours in one-on-one coaching with hundreds of students learning C. My current day job is partly about teaching C++. I have a pretty good idea what effect the bullshit in these languages has on students. You obviously don't.

Yes, because having recently been a student and having taken several c/c++ courses in that time, I obviously have no idea how myself or my classmates were affected. :rolleyes:

As an instructor you likely get every single problem case. Be sure you're not judging the entire class by that metric.

Like I said: in our old one-semester intro course (which was pretty close to the MIT course of that time, same textbook and all) we went from zero to building and modifying interpreters for the language we were using. And an interpreter for a simple logic programming language, and a register/stack machine simulator. If you were to teach programming starting from C, one semester would barely be enough to get people to do some string twiddling, error handling and some simple data structure without too many memory leaks. The results possible are so different it's not even funny.

Sorry, I left out another possibility: "the course is designed for a purely functional language." I thought we were talking c++ vs python. If you're going to start comparing apples to eggplants...



Of course. I only mentioned this because it's one of the things that can stop a beginner from even getting a "Hello World" going; the bullshit with these languages starts immediately and never stops.

Never stops? In an intro course? How? I recall in my intro class most people had "Hello World" working within 10 minutes with some slight help from the TA, and the only reason it took that long was due to unfamiliar syntax, not confusion over basic compiler commands.


You are being completely illogical here. That someone has gotten started in language X and eventually become a decent programmer does not in any way imply that language X is an efficient or good way to get started. I got started with C++ myself. Knowing what I know now, it was a terrible waste of time.

And just because it was a waste for you doesn't mean it has been or will be so for everyone. Having been brought up in a c/c++ intensive curriculum I can say from experience I am a far better coder than those undergrads who came after me and were taught Python and Java before transitioning to c++. I directly worked with more than a few of them.

Reading comprehension plz. I did not call C and C++ "less capable". I said the student taught with them is far less capable than a student taught with Scheme or another good teaching language over the same timeframe and with competent instruction on both.

Well if raw capability is the deciding factor then teaching shell scripting is a better option than teaching c/c++. :rolleyes:

Reminds me of my Operating Systems class. We had to make our own shell that implemented about 30 standard unix commands. So we had to dive into the POSIX library and everything. By your logic it would have been better from an educational standpoint to simply use system("relevant command") for everything. After all, it would have produced more "capable" code in less time.

Capability is defined by knowledge. If someone knows how to use a black box, but not how the black box works, then when the black box ceases to work they'll be completely lost. In the context of an introductory course you can probably get away with it as the available black boxes are reliable for the basics, but it's delaying the development of a much needed foundation IMO.




Interestingly enough, this debate mirrors a similar one that was going on (and TMK still is) at my University between the Engineering and Computer Science departments. I majored in Computer Engineering. The Engineering department outsourced it's relevant CS curriculum to the CS department for many years, and then a few years back the CS department decided that instead of teaching Matlab/C++, it would be better to teach Python and Java first (keep in mind most of these are engineering specific classes but run by the CS department). Suffice it to say it's been a bone of inter-departmental tension ever since, to the point where there are rumors that some of the Engineering department faculty are muttering about starting their own mini-CS department.
 
Last edited:

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
14
81
www.markbetz.net
The fundamental disagreement here seems to be about the concept of "need". How much knowledge or what kind of experience someone "needs" to get the job done effectively. For my money I'll take someone who knows their piece of the system inside and out over someone who's reliant on black boxes; because even if 95% of that knowledge isn't required for a specific project, the 5% may very well make the difference between "satisfactory" code and "exemplary" code.

I also wouldn't say that modern languages have "improved" on much from c/c++ aside from syntax improvements, we've simply developed some areas where the advantages of interpreted languages offset the advantages of compiled languages. Which is fine, but even in those ecosystems c/c++ often serves as the autonomic nervous system while the language in question provides the consciousness.

I'm simply advocating that one start one level lower. Someone at the top of a skyscraper can't see the bottom, those at the bottom can't see the top, those in between can see both.

I actually have the same preferences that you do in that regard, but I think they are essentially biases. I'm biased towards people who know computers and languages down to a fine level. But the truth is, most of the young developers I meet these days do not, and many of them are very successful. So ultimately it is the definition of "need" that comes into play. When I started you absolutely needed a very low level knowledge of the system. It was not at all unusual to program a UART directly, or set up interrupt chains, or handle port I/O from the 8253 or 8042 chips, or set up graphics modes by poking VGA registers. When I started we organized application memory manually, and calculated addresses in application code.

None of that is necessary any more, even for most device driver developers. Nor is it ever likely to be necessary again. I value people who know that kind of stuff more highly. But I really don't think that bias translates very effectively to the bottom line, when the goal is to get a web application out the door.

On the improvements in languages we'll just have to agree to disagree. I've written large amounts of code to the Win16 and Win32 APIs using C++, long before MFC made it a little easier (and tons more confusing). I would much, much rather write Windows apps in C#. The distance between nothing and my vision is _so_ much shorter it's not even worth debating.
 

irishScott

Lifer
Oct 10, 2006
21,562
3
0
I actually have the same preferences that you do in that regard, but I think they are essentially biases. I'm biased towards people who know computers and languages down to a fine level. But the truth is, most of the young developers I meet these days do not, and many of them are very successful. So ultimately it is the definition of "need" that comes into play. When I started you absolutely needed a very low level knowledge of the system. It was not at all unusual to program a UART directly, or set up interrupt chains, or handle port I/O from the 8253 or 8042 chips, or set up graphics modes by poking VGA registers. When I started we organized application memory manually, and calculated addresses in application code.

None of that is necessary any more, even for most device driver developers. Nor is it ever likely to be necessary again. I value people who know that kind of stuff more highly. But I really don't think that bias translates very effectively to the bottom line, when the goal is to get a web application out the door.

On the improvements in languages we'll just have to agree to disagree. I've written large amounts of code to the Win16 and Win32 APIs using C++, long before MFC made it a little easier (and tons more confusing). I would much, much rather write Windows apps in C#. The distance between nothing and my vision is _so_ much shorter it's not even worth debating.

Granted. I never claimed that c/c++ is the best solution for everything, just that it would be a good starting point to help instill technical fundamentals. I can certainly appreciate the advantages of modern interpreted languages; and having some moderate Python knowledge I certainly know the thrill of the comparatively effortless development it permits; but I'm immensely glad I first came to Python after having a solid base in c/c++, otherwise I wouldn't merely lack appreciation but also knowledge of the capabilities of the PythonVM and the discipline that comes from attaining proficiency in c/c++.

I kind of equate it to that saying "Learn Lisp, because even if you never use it you will become a better programmer." Starting with a solid foundation in c/c++ has similar benefits IMO. Not to mention c/c++ is still used infinitely more than Lisp.
 
Last edited:

irishScott

Lifer
Oct 10, 2006
21,562
3
0
Speaking of black boxes, I'd have to agree with Scott on that one. Damien Katz of CouchDB mentions the 'black box' VM of Erlang here- http://damienkatz.net/2013/01/follow_up_to_the_unreasonable.html and the troubles it caused him.
That said, a compiler is a bit of a black box. Less so though.
Programming is so complex, and in the multicore era is going to get MORE complex. I think we're going to be forced onto more and more 'black boxes'.

Adding additional abstraction layers always complicates matters. I'm not sure how pertinent that is for learning an Intro level CS course though?
It's certainly pertinent for hardcore systems programming. But who uses an interpreted or non-JVM platform for software that requires the utmost reliability and performance?
But using something like C and/or Python and the free lunch that singlecore improvements have given is now over. Black boxes will be here for most of us and are already, but for other reasons. Python's black box enables rapid development and ease of use. There's too many problems to be solved in 2013 for everyone to use C to resolve them.

Most programming these days actually involves Javascript of all things, and it's getting bigger.. I call it the new C. In 1985 you needed C or you found a new profession. Today, putting on the blinders and avoiding the web stuff is increasingly just as detrimental. Thankfully many get away with working on the serverside only still.
But unfortunately, webapps are coming for almost all of us. :)

It's becoming less about the language, and more about the techniques and libraries when it comes to the emerging market of coding. I know more 'computer scientists' that are great at Programming. But they aren't keeping up on the cutting edge of web development, which is probably a character trait that is more important than being 'top of the class' brilliant. It's true, and yes, I said that! As an aside, I work with many 'top of the class' brilliant types and they are annoyingly arrogant, and don't even treat other people well. I'm not sure I'd want more than 1 of those guys in a business that I owned. Not really worth it, the arrogance kills the advantages of their minds.

Like I said though, there are yet still escapes and bubbles to hide in to avoid this reality. I am also avoiding it, just telling the truth.
Javascript isn't going away nor will it be replaced, only evolved. Its status is the revenge of interpreted languages. And V8/SpiderMonkey are massive 'black boxes' that we're depending on right now.

I'm not entirely sure I agree. Yes web programming is the next/current big thing, but there are plenty of areas (particularly embedded) where performance is still king and internet access is a non-factor. I sincerely doubt you'll ever see an operating system programmed in javascript (would be very interesting to see someone try though, embedded V8 chip?), although I suppose it could be tightly integrated ala Android and Java.

There will also always be people to create and maintain the black boxes, especially in open source implementations, and these areas will never go away. For one of my internships I had to make some minor alterations to the Java source code and recompile the whole thing, was a bit of an eye-opener.

I'm also not entirely sure abstraction will continue all that much. It's notable that Python, Java and other languages are written in c/c++, but you never hear about a new language being written in Python or Java, because such a language would be laughably inefficient. We're not likely to see more than 1 layer of compiler abstraction IMO. Even if we developed fully optical computers that made such processing time negligible it would build up in a complex program.

But I'll agree that if your goal is to create end-user software for the masses, then yes knowing web-programming is vital for future viability.
 
Last edited:

beginner99

Diamond Member
Jun 2, 2009
5,318
1,763
136
I'm not entirely sure I agree. Yes web programming is the next/current big thing, but there are plenty of areas (particularly embedded) where performance is still king and internet access is a non-factor. I sincerely doubt you'll ever see an operating system programmed in javascript (would be very interesting to see someone try though, embedded V8 chip?), although I suppose it could be tightly integrated ala Android and Java.

I don't think anybody doubts that people with low-level knowledge are need and always will be and probably have a higher salary. But that does not mean a complete beginner needs to learn this stuff. it will only be distracting.

What would be good would be a basic course in how OS work, especially Virtual memory, scheduling and so and also hint that in earlier times programmers had to do that themselves. That would make sense, should interest most people wanting to learn programming and it does not distract when actually programming.
 

Obsoleet

Platinum Member
Oct 2, 2007
2,181
1
0
And just because it was a waste for you doesn't mean it has been or will be so for everyone. Having been brought up in a c/c++ intensive curriculum I can say from experience I am a far better coder than those undergrads who came after me and were taught Python and Java before transitioning to c++. I directly worked with more than a few of them.

Correlation, not causation comes to mind here

Capability is defined by knowledge. If someone knows how to use a black box, but not how the black box works, then when the black box ceases to work they'll be completely lost.

Are you really going to troubleshoot the JVM? I think everyone here would be lost. If you do, well shit, I'd have to respect that. I can't and I don't think I want to.

I'm not entirely sure I agree. Yes web programming is the next/current big thing, but there are plenty of areas (particularly embedded) where performance is still king and internet access is a non-factor. I sincerely doubt you'll ever see an operating system programmed in javascript (would be very interesting to see someone try though, embedded V8 chip?), although I suppose it could be tightly integrated ala Android and Java.

But I'll agree that if your goal is to create end-user software for the masses, then yes knowing web-programming is vital for future viability.

The market and amount of problems that need to be solved with embedded solutions are smaller than the number of things built on top of that. For most programmers, looking into an embedded programming career is going to be the minority of people out there because it's the minority of work out there.

The masses today means not just the consumer but every business and then every problem that arises that needs to be met with programming. Webapps, local apps, enterprise software (SAP ect) and tying all that together massively outweighs the job market for embedded programming.

It's notable that Python, Java and other languages are written in c/c++, but you never hear about a new language being written in Python or Java, because such a language would be laughably inefficient.

C/C++ are high level languages, and an argument against the need for the use of low level languages. They've just been so successful they've just moved the bar as to what we expect.

That said, languages aren't just programmed in C/C++, many new languages are written in Ruby quite often. Thanks to faster hardware it doesn't usually matter if it's laughably inefficient, it just needs to solve the problem. I haven't really needed to write my own language, but it makes a lot of sense if you're presenting an interface to non-programmers.
I should put a disclaimer that I am NOT the 'benchmark' type. I think looking at performance from the perspective of what you need makes more sense, rather than some arbitrary standard. There's plenty of software to jump into and optimize, but few do because it's a waste of time if it meets requirements.
 
Last edited:

h4ever

Member
Aug 30, 2013
163
0
0
Hi, I am starting to learn C++ and would like to ask you where to download the C++ for Windows XP, 32bit system. Also do you use some program which enables you to test syntax correctness or preview program before it is compiled? I would like to have such program where I can set syntax highlighting and black background of the program. Also if the program can change size of the font or font size (font which displays the source code). These are 3 basics I need to programme. Tips welcome.
 
Last edited:

Jaydip

Diamond Member
Mar 29, 2010
3,691
21
81
Hi, I am starting to learn C++ and would like to ask you where to download the C++ for Windows XP, 32bit system. Also do you use some program which enables you to test syntax correctness or preview program before it is compiled? I would like to have such program where I can set syntax highlighting and black background of the program. Also if the program can change size of the font or font size (font which displays the source code). These are 3 basics I need to programme. Tips welcome.

Visual C++ express, Dev C/C++.
 

h4ever

Member
Aug 30, 2013
163
0
0
Visual C++ express, Dev C/C++.
Are these programs free? I mean if it is not only trial version. I better ask because I know I can often find programs stated as "free" but they are very often mean to be "trial for free".
 

Jaydip

Diamond Member
Mar 29, 2010
3,691
21
81
Are these programs free? I mean if it is not only trial version. I better ask because I know I can often find programs stated as "free" but they are very often mean to be "trial for free".

They are free forever ():)
 

h4ever

Member
Aug 30, 2013
163
0
0
They are free forever ():)
I have just downloaded the installer:
http://visual_c_express.en.softonic.com/download#downloading
(Softonic instalator)

However there are two agreements. After accepting first, there is next with licence of Microsoft. They written in point 1.b that is it trial edition for 30 days only!


Trial Edition. The initial installation of the software is a trial edition. You may convert your trial rights at any time by obtaining a product key from Microsoft. The trial software will present conversion options to you thirty (30) days after you install the trial software. After the expiration of the 30-day trial period, without conversion, the trial software will stop running.

Cisual C++2010

So I can install and then request product key for free and then it will stop to be trial?

Also after submiting licence, the is dialog window with two opinions:
select MS SilverRight
and SQL Server 2000 Expres.

I am not going to use server or web, may I disable both options?
 
Last edited:

h4ever

Member
Aug 30, 2013
163
0
0
Yes, why don't you try it and find out!. Jesus, do you really need to be spoon fed like this?
Simply I don't want to mess my register with shambes. That's why I ask and also want to save time with installing somthing what i don't need. There is a lot of crapped software which is advertised as free but it is just trial which I have to uninstall immediately or after 14-30 days. My computer is not garbage bin to install every program I just have heard about!
 
Last edited: