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.

Ken g6

Programming Moderator, Elite Member
Moderator
Dec 11, 1999
16,360
4,066
75
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.
 

TridenT

Lifer
Sep 4, 2006
16,800
45
91
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.
 

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
14
81
www.markbetz.net
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.
 

DT4K

Diamond Member
Jan 21, 2002
6,944
3
81
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++.
 

Kirby

Lifer
Apr 10, 2006
12,028
2
0
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.
 
Nov 7, 2000
16,403
3
81
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.
 

DT4K

Diamond Member
Jan 21, 2002
6,944
3
81
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.
 

Ancalagon44

Diamond Member
Feb 17, 2010
3,274
202
106
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++.
 

Leros

Lifer
Jul 11, 2004
21,867
7
81
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.
 

Leros

Lifer
Jul 11, 2004
21,867
7
81
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.
 
Oct 27, 2007
17,009
1
0
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&#37; of code is performance insensitive. This is not a good reason IMO.
 

Leros

Lifer
Jul 11, 2004
21,867
7
81
99&#37; 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:

Leros

Lifer
Jul 11, 2004
21,867
7
81
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:

Net

Golden Member
Aug 30, 2003
1,592
2
81
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.
 

esun

Platinum Member
Nov 12, 2001
2,214
0
0
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.
 

tatteredpotato

Diamond Member
Jul 23, 2006
3,934
0
76
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.
 

esun

Platinum Member
Nov 12, 2001
2,214
0
0
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.
 

degibson

Golden Member
Mar 21, 2008
1,389
0
0
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.
 

pdusen

Member
May 8, 2008
39
0
0
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.
 

esun

Platinum Member
Nov 12, 2001
2,214
0
0
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.
 
sale-70-410-exam    | Exam-200-125-pdf    | we-sale-70-410-exam    | hot-sale-70-410-exam    | Latest-exam-700-603-Dumps    | Dumps-98-363-exams-date    | Certs-200-125-date    | Dumps-300-075-exams-date    | hot-sale-book-C8010-726-book    | Hot-Sale-200-310-Exam    | Exam-Description-200-310-dumps?    | hot-sale-book-200-125-book    | Latest-Updated-300-209-Exam    | Dumps-210-260-exams-date    | Download-200-125-Exam-PDF    | Exam-Description-300-101-dumps    | Certs-300-101-date    | Hot-Sale-300-075-Exam    | Latest-exam-200-125-Dumps    | Exam-Description-200-125-dumps    | Latest-Updated-300-075-Exam    | hot-sale-book-210-260-book    | Dumps-200-901-exams-date    | Certs-200-901-date    | Latest-exam-1Z0-062-Dumps    | Hot-Sale-1Z0-062-Exam    | Certs-CSSLP-date    | 100%-Pass-70-383-Exams    | Latest-JN0-360-real-exam-questions    | 100%-Pass-4A0-100-Real-Exam-Questions    | Dumps-300-135-exams-date    | Passed-200-105-Tech-Exams    | Latest-Updated-200-310-Exam    | Download-300-070-Exam-PDF    | Hot-Sale-JN0-360-Exam    | 100%-Pass-JN0-360-Exams    | 100%-Pass-JN0-360-Real-Exam-Questions    | Dumps-JN0-360-exams-date    | Exam-Description-1Z0-876-dumps    | Latest-exam-1Z0-876-Dumps    | Dumps-HPE0-Y53-exams-date    | 2017-Latest-HPE0-Y53-Exam    | 100%-Pass-HPE0-Y53-Real-Exam-Questions    | Pass-4A0-100-Exam    | Latest-4A0-100-Questions    | Dumps-98-365-exams-date    | 2017-Latest-98-365-Exam    | 100%-Pass-VCS-254-Exams    | 2017-Latest-VCS-273-Exam    | Dumps-200-355-exams-date    | 2017-Latest-300-320-Exam    | Pass-300-101-Exam    | 100%-Pass-300-115-Exams    |
http://www.portvapes.co.uk/    | http://www.portvapes.co.uk/    |