• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

Programming languages for total newbs.

Page 2 - Seeking answers? Join the AnandTech community: where nearly half-a-million members share solutions and discuss the latest tech.
C++ does all of those things, if you use the STL.

Perhaps. But I've never found any really good documentation for the STL online. This is the best I've ever found, but it doesn't hold a candle to JavaDocs, IMHO.
 
I'll probably start with Python... Any suggestions on resources to learn Python? Hopefully a website with a lot of very well explained examples as well as good info... like the yourhtmlsource.com website... I'd love it if there was just a yourpythonsource.com or something. 😛
 
So much hate for C++. 🙁

Yeah, pointers and memory management can be a bitch to begin with, but I think that it's an important skill that you need to master.

Well, this is an interesting topic of debate. I'll go with: no it's not, and no you don't.

As someone who started with BASIC in 1975, graduated to assembler in the early 80's, and taught C++ to corporate students in the early 90's, I have a healthy respect for that language and all the now-arcane skills that went with it. But over the same period I have watched the level of abstraction that the average developer deals with increase steadily, and for very good reasons. Unless someone tells me they specifically want to do device drivers or kernel software of some kind, or high performance engineering/scientific applications I would not recommend they start with C++, or learn about heap management. They're just not going to need it, ever again.
 
Java or .Net (C# or VB, take your pick).

Both of them are real, fully functional, professionally valuable, programming languages that make a good platform to learn the fundamentals of programming in general and object oriented programming in particular, without the complexities of C++.
 
Well, this is an interesting topic of debate. I'll go with: no it's not, and no you don't.

As someone who started with BASIC in 1975, graduated to assembler in the early 80's, and taught C++ to corporate students in the early 90's, I have a healthy respect for that language and all the now-arcane skills that went with it. But over the same period I have watched the level of abstraction that the average developer deals with increase steadily, and for very good reasons. Unless someone tells me they specifically want to do device drivers or kernel software of some kind, or high performance engineering/scientific applications I would not recommend they start with C++, or learn about heap management. They're just not going to need it, ever again.

Well, I write low-level hardware simulators so I may be a bit biased. 😛

I really like my job, and I think that if I had started out learning a higher-level language I wouldn't have some of the foundations/skill sets that I'd need. I would *think* that it would be easier going from a lower-level language to a higher one, but that's just my personal experience. I learned C++ first, and learning ASM was harder than going to Java or C#. And it's not like a RISC architecture syntax is hard, just the transferring of what's in your head to code is just different conceptually.

But now that I think about it, you're right. Most people aren't going to be doing this kind of stuff. I enjoy getting my hands dirty with the innards of programming, and hopefully that will make me more marketable as everyone shifts towards the newer stuff.
 
i say start with a scripting language. can get introduced to basic data structures and implement novice algorithms without a huge syntax or IDE learning curve.

no doubt C++ exemplifies the concept of a programming language and has a bevy of resources, but it really would be suicidal to start from scratch with that.
 
Well, I write low-level hardware simulators so I may be a bit biased. 😛

I really like my job, and I think that if I had started out learning a higher-level language I wouldn't have some of the foundations/skill sets that I'd need. I would *think* that it would be easier going from a lower-level language to a higher one, but that's just my personal experience. I learned C++ first, and learning ASM was harder than going to Java or C#. And it's not like a RISC architecture syntax is hard, just the transferring of what's in your head to code is just different conceptually.

But now that I think about it, you're right. Most people aren't going to be doing this kind of stuff. I enjoy getting my hands dirty with the innards of programming, and hopefully that will make me more marketable as everyone shifts towards the newer stuff.

I disagree. Although that may just be because I did it the other way and thought it worked well.
I think the complexities and details of lower level languages get in the way of learning good fundamental programming practices and concepts. I started with Java and when I later did ASM and C, I could focus on the details since I already understood the big picture. It was kind of like learning to drive first, then peeking under the hood to see how everything worked.
 
I agree with the Higher -> Lower direction. For someone starting programming, debugging C++ or worse assembler is extremely frustrating and difficult, and likely to put one off. We dont all need to be masochists.

When you understand at a higher level what it is that you are actually doing, you can start to think a bit more about how and why.

I'm not saying its bad or unnecessary to learn C++/ASM, it depends on what you use it for. If he never needs to write a device driver, so be it, he hasnt lost anything. If he does, it will be simple for him to adapt what he knows to C++.
 
Java and C# are both easy. The code is managed and you have access to good libraries.

I would stay away from C++. I don't why people are recommending it.
 
I disagree. Although that may just be because I did it the other way and thought it worked well.
I think the complexities and details of lower level languages get in the way of learning good fundamental programming practices and concepts. I started with Java and when I later did ASM and C, I could focus on the details since I already understood the big picture. It was kind of like learning to drive first, then peeking under the hood to see how everything worked.

You can do a lot of neat tricks in assembly to get faster, smaller code. People who start out with a higher level language often try to replicate those patterns into the assembly and end up writing larger, slow assembly than necessary.
 
You can do a lot of neat tricks in assembly to get faster, smaller code. People who start out with a higher level language often try to replicate those patterns into the assembly and end up writing larger, slow assembly than necessary.
__________________
99% of code is performance insensitive. This is not a good reason IMO.
 
99% of code is performance insensitive. This is not a good reason IMO.

Then you should probably be writing in C. The only application I can think of where I have needed to use assembly (for reasons other than performance) is for writing portions of an operating system or embedded system where you need access to certain special registers which are not exposed in C.
 
Last edited:
So much hate for C++. 🙁

Yeah, pointers and memory management can be a bitch to begin with, but I think that it's an important skill that you need to master. And do you guys really think that the syntax is that hard? :\

You can start with C to learn the basics, including pointers and memory management. Then you can move to C++ or Java or C# for objects.

It doesn't really matter what language you use to learn the absolute basics like control flow, loops, arrays, etc. Its going to be nearly identical for Java, C#, C, or C++. All four of those are C style languages with very similar syntax.
 
Last edited:
starting out, take a look at java. languages like c, c++, etc... will be better when you become more advanced and are ready to deal with memory management issues.
 
I'll probably start with Python... Any suggestions on resources to learn Python? Hopefully a website with a lot of very well explained examples as well as good info... like the yourhtmlsource.com website... I'd love it if there was just a yourpythonsource.com or something. 😛

Since nobody seems to be helping you anymore, I'll point you in the right direction:

http://docs.python.org/tutorial/

Start there. If that's not enough, just Google "python tutorial" and you'll find tons of resources.

Oh, and just to add my opinion to the debate, everyone recommending C/C++ thinking it's important to learn memory management, you are kind of missing the point of learning how to program. You want to learn how to think about algorithms and problem solving, not about whether you forgot to free some malloc'd memory and are causing a memory leak. And this is coming from someone who writes a ton of VHDL and C/C++ every day specifically with high performance in mind.
 
Since nobody seems to be helping you anymore, I'll point you in the right direction:

http://docs.python.org/tutorial/

Start there. If that's not enough, just Google "python tutorial" and you'll find tons of resources.

Oh, and just to add my opinion to the debate, everyone recommending C/C++ thinking it's important to learn memory management, you are kind of missing the point of learning how to program. You want to learn how to think about algorithms and problem solving, not about whether you forgot to free some malloc'd memory and are causing a memory leak. And this is coming from someone who writes a ton of VHDL and C/C++ every day specifically with high performance in mind.

Personally I like:

http://diveintopython.org/

while using:

http://www.pythonchallenge.com/

to gauge progress/good exercises.
 
Something to note: "Dive Into Python is a Python book for experienced programmers"

That means it may not be the best choice for someone learning a language for the first time.
 
I forget how many times we've had this discussion.

Start with [C/C++/ASM/Java/Python/PHP/Ruby/TCSH/Bash/BASIC/VB/HTML/Verilog/Prolog/OCAML/LambdaCalculus/COBOL/FORTRAN/Perl/Forth]. There, I think I covered everything.

But I'll bring a new perspective to this old tired horse about learning to code. Start with what makes sense at the time, and be ready willing and able to learn other languages without bias or prejudgement.
 
Oh, and just to add my opinion to the debate, everyone recommending C/C++ thinking it's important to learn memory management, you are kind of missing the point of learning how to program. You want to learn how to think about algorithms and problem solving, not about whether you forgot to free some malloc'd memory and are causing a memory leak. And this is coming from someone who writes a ton of VHDL and C/C++ every day specifically with high performance in mind.

I don't think anyone was arguing that C++ was a good choice because it's important to learn memory management. I certainly wasn't.

Actually, no reasonably well-done software project using C++ should be using manual memory management at all (anymore). Smart Pointers are pretty much ubiquitous now.

As far as Python goes, if you're going to start with a scripting language, Python is as good a choice as any. I would like to get some more experience with it myself.
 
I don't think anyone was arguing that C++ was a good choice because it's important to learn memory management. I certainly wasn't.

That's nice that you weren't, but at least one other definitely was:

Yeah, pointers and memory management can be a bitch to begin with, but I think that it's an important skill that you need to master.

And while I also would advocate smart pointers and avoidance of manual memory management for most cases, there are areas (embedded systems and certain libraries, e.g., Intel IPP) for which it is required.

The idea behind what I'm saying applies in general, though. When learning programming you want to avoid as much as possible having the language and/or tools get in your way. C/C++ is not the language where that is true.
 
Back
Top