What programming language to learn first?

BlueAcolyte

Platinum Member
Nov 19, 2007
2,793
2
0
I'm getting shipped off to LA to be with my cousin for a month, so I will be bored out of my skull (getting a giant mid-tower across a continent is rather difficult) and I want to learn a programming language.

My friends suggested C and Python, moving on to C++/C#.
What do you guys think? I'm 14 so I can't take something really hard...
 

esun

Platinum Member
Nov 12, 2001
2,214
0
0
Python. You don't want to start with C, since you'll spend more time worrying about low-level issues (i.e., memory management) rather than the art of coding itself. And just because you're 14 doesn't mean you can't take something hard.
 

Hyperblaze

Lifer
May 31, 2001
10,027
1
81
One month in LA and you want to spend your time learning how to code?

I could definitely find better uses of my time
 

troytime

Golden Member
Jan 3, 2006
1,996
1
0
python is a good language to learn. C++ is good too though

nothing is too difficult. I learned basic when i was 8 and pascal when i was 11
 

Lord Banshee

Golden Member
Sep 8, 2004
1,495
0
0
i remember learning Qbasic->visual basic->C++->Java and the only one that i enjoyed was C++. But that was from high school classes 6-8years ago lol... wow seems like yesterday. Personally, i would say learn some basic if you don't understand the idea of programming, but if your not totally out the loop, then i would just go for something nice like C++. Python, I here is very good too, i've never used it though.
 

trexpesto

Golden Member
Jun 3, 2004
1,237
0
0
Python - it's fun!

It's easy to set up

and

get started fast.


The language is simple, pretty natural language, with less clutter like { ( / * * / ; ) }
The tutorial and documentation are awesome, tons of open source too.
Great for games - check out pygame tutorial as part 2!

Only problem is it might spoil you for learning something "harder" like C++ or Java, which are more industry standards.
 

themisfit610

Golden Member
Apr 16, 2006
1,352
2
81
Yeah. Learn Python!!!

No joke. It's surprisingly simple, but can do amazing things. Worry about low level stuff later.

Also, if you're into video at all - check out AviSynth. You can do some really cool stuff with it, and it's very simple...

AviSource("c:\movie.avi") #this loads an AVI
crop(4,4,4,4) #this crops 4 pixels off each side
bicubicresize(1280,720) #this resizes to 720p.
fft3dfilter(sigma=3, plane=4) #this runs a filter that reduces the noise in the video. sigma controls the strength, and plane=4 means it operates on both the brightness and color

Thats it :) You can do lots of things with it. It's object oriented, and has C style syntax. It also lends itself to automation via Python.

~MiSfit
 

Schadenfroh

Elite Member
Mar 8, 2003
38,416
4
0
QBASIC (middle school class)-> VB (self taught during high school)-> C++ & VB.NET & Java & Intel 386 Assembly (at the same time in college classes, still there)

I have forgotten most of my QBASIC, VB6, and VB.NET knowledge (could probably bounce back rather quickly if needed). I never want to see Intel 386 Assembly again. The only language that I really "know" now is C++, but I can "get by" in Java (currently learning the JSP / Servlet side of things). I am still in college, but I foresee C++ being my "specialty" as far as languages go.

If you want to go through "programmers hazing", read this free PDF book and create applications using Intel 386 assembly, then make applications with similar functionality in Java and you will love programming in Java more than anything else in the world.
 

degibson

Golden Member
Mar 21, 2008
1,389
0
0
Originally posted by: Schadenfroh
If you want to go through "programmers hazing", read this free PDF book and create applications using Intel 386 assembly, then make applications with similar functionality in Java and you will love programming in Java more than anything else in the world.

Or, if you want to remain sane, make some toy applications in BASIC (which is an old, simple language) to learn a little bit about the process, the nuts and bolts, then move on to Python, Java, C++, and C, in that order.

Avoid ASM like the plague. I strongly recommend learning ASM only after C and C++.
 

Xavier434

Lifer
Oct 14, 2002
10,373
1
0
I started with Pascal myself. I have heard good things about Basic and Python too though. Once you get past that barrier then move on to C or C++. After that you can start tackling some of the more modern languages that are easy like VB.net or something along those lines.
 

Modelworks

Lifer
Feb 22, 2007
16,240
7
76
Assembly.
Yeah people will groan when they read that.
But if you learn assembly first, you understand exactly how and why things work the way they do.

A simple way to start and free is here:
http://www.emu8086.com/

It comes with tutorials and runs in a virtual cpu, so no need to worry about compiler versions or changes between revisions of a language.
http://www.emu8086.com/assembl...l_assembler_reference/

The great thing about assembly is it can't be beat for speed or size of code, and it gives you total control of the hardware.

 

Modelworks

Lifer
Feb 22, 2007
16,240
7
76
Originally posted by: degibson
Originally posted by: Schadenfroh
If you want to go through "programmers hazing", read this free PDF book and create applications using Intel 386 assembly, then make applications with similar functionality in Java and you will love programming in Java more than anything else in the world.

Or, if you want to remain sane, make some toy applications in BASIC (which is an old, simple language) to learn a little bit about the process, the nuts and bolts, then move on to Python, Java, C++, and C, in that order.

Avoid ASM like the plague. I strongly recommend learning ASM only after C and C++.

Unfortunately ASM has gotten a bad wrap as being hard to understand and hard to use.
Its really a problem with how it is being taught.
If teachers would break it down to the basics and not overload students with tons of information they do not need to grasp the language, it wouldn't be a problem for most.

Instead teachers now like to teach the higher level languages and so only give the highlights of ASM. When I went to school you learned ASM before anything else.

I often see people asking questions about different languages that had they learned ASM first , they would have understood the reason why.
 

wwswimming

Banned
Jan 21, 2006
3,695
1
0
ActionScript 3.0, for Flash CS3.

the download has a 30 day shelf life, which should be enough time to
check out the Flash tutorials at
http://www.lynda.com/
http://www.adobe.com/

the tutorials at Adobe are in the section, "Video Workshop".

it's not as rigorous, in a programming sense, as learning C or machine
language.

but it's easy, fun, and - you might be really good at it !
 

degibson

Golden Member
Mar 21, 2008
1,389
0
0
Originally posted by: Modelworks
Originally posted by: degibson
Originally posted by: Schadenfroh
If you want to go through "programmers hazing", read this free PDF book and create applications using Intel 386 assembly, then make applications with similar functionality in Java and you will love programming in Java more than anything else in the world.

Or, if you want to remain sane, make some toy applications in BASIC (which is an old, simple language) to learn a little bit about the process, the nuts and bolts, then move on to Python, Java, C++, and C, in that order.

Avoid ASM like the plague. I strongly recommend learning ASM only after C and C++.

Unfortunately ASM has gotten a bad wrap as being hard to understand and hard to use.
Its really a problem with how it is being taught.
If teachers would break it down to the basics and not overload students with tons of information they do not need to grasp the language, it wouldn't be a problem for most.

Instead teachers now like to teach the higher level languages and so only give the highlights of ASM. When I went to school you learned ASM before anything else.

I often see people asking questions about different languages that had they learned ASM first , they would have understood the reason why.

I have the joy of knowing three different ISAs worth of ASMs (I don't know any ASM-level ABIs, however), and I can say with confidence, having myself taught advanced programming courses that I firmly believe assembly-level programming should be avoided like the plague, even by experts. Here's why:

1) Its extremely low productivity. People complain the C/C++ are low-productivity languages compare to, say, Python. ASM is nearly the lowest level of productivity.

2) It gives very bad feedback, especially for the solo learner. Code broken = segfault. And thats in the good case.

3) It completely elides a lot of good language-level abstractions and concepts -- memory managment, for instance. Library calls. All possible, but arcane and without decent abstraction in ASM.

4) The only reason to use ASM in general-purpose (read: non-embedded, non-OS) programming is for performance optimization. Even then, only the most criticial loops will require hand-ASM optimization -- a great deal of ASM's performance gains can be obtained via optimizing compilers, #pragmas, etc at the high-level-language level.

5) I'm on 'vacation' at the moment, otherwise I'd finish this rant with 5-6 at least. :)

That said, I feel it is critically important to learn ASM before 'completing' your training as a programmer (training is, of course, never really complete). The insight of what is going on under the hood is essential. But before you dive into ASM, learn C -- C is basically a nice language abstraction around raw assembly, with lot of gruntwork done for you already (like output formatting). But before you learn C, learn a high-productivity language like Python or even Java, so you don't get discouraged by early failure and trivial applications.
 

Eeezee

Diamond Member
Jul 23, 2005
9,922
0
76
I started with C and had a lot of fun with it! Someone above said that you're not really coding, but I disagree; it's a great place to get started and gives you a better idea of what you're actually doing when you program. Learning some memory management won't be useful in the long run, but it won't hurt you either.

Once you've learned C even decently well, any other language will be easy to pick up. Very elementary C is the easiest to learn (Hello World, bubble sorting, maybe some physical computational things). Don't screw around too much with strings, just learn the basics of C before moving on to something more useful.

I think all programmers should learn some memory management, even if everyone else here is saying that Python is the only way to go. There's no reason to turn down skills that are interesting and may be helpful later (no one has a working crystal ball)
 

tigris649

Member
Feb 21, 2008
84
0
0
I just started learning python and it is pretty easy and straight forward I'd probably go with that
 

Modelworks

Lifer
Feb 22, 2007
16,240
7
76
Originally posted by: degibson

I have the joy of knowing three different ISAs worth of ASMs (I don't know any ASM-level ABIs, however), and I can say with confidence, having myself taught advanced programming courses that I firmly believe assembly-level programming should be avoided like the plague, even by experts. Here's why:

1) Its extremely low productivity. People complain the C/C++ are low-productivity languages compare to, say, Python. ASM is nearly the lowest level of productivity.

It may take more work to get things done, but it can do things that are much harder to do in other languages.
Try to create a boot disk that will boot with any x86 pc with C,C++.

2) It gives very bad feedback, especially for the solo learner. Code broken = segfault. And thats in the good case.

That is why you run it in a debugger that shows exactly what is going on.



3) It completely elides a lot of good language-level abstractions and concepts -- memory managment, for instance. Library calls. All possible, but arcane and without decent abstraction in ASM.

In ASM you are often working directly with memory.
What ASM does is require you to do the memory management, not allow the language to do it for you.

4) The only reason to use ASM in general-purpose (read: non-embedded, non-OS) programming is for performance optimization. Even then, only the most criticial loops will require hand-ASM optimization -- a great deal of ASM's performance gains can be obtained via optimizing compilers, #pragmas, etc at the high-level-language level.

I agree.
I would not use ASM to write a windows application.

5) I'm on 'vacation' at the moment, otherwise I'd finish this rant with 5-6 at least. :)

That said, I feel it is critically important to learn ASM before 'completing' your training as a programmer (training is, of course, never really complete). The insight of what is going on under the hood is essential. But before you dive into ASM, learn C -- C is basically a nice language abstraction around raw assembly, with lot of gruntwork done for you already (like output formatting). But before you learn C, learn a high-productivity language like Python or even Java, so you don't get discouraged by early failure and trivial applications.
[/quote]

Did you try the application I linked to ?
http://www.emu8086.com/

It comes with some easy examples that give direct results.
Like controlling a traffic light, a robot.

Have fun on the vacation !

 

degibson

Golden Member
Mar 21, 2008
1,389
0
0
Originally posted by: Modelworks

It may take more work to get things done, but it can do things that are much harder to do in other languages.
Try to create a boot disk that will boot with any x86 pc with C,C++.
True. However, pigs will fly before the day ever comes that beginning programmers want to learn how to make boot disks first.

That is why you run it in a debugger that shows exactly what is going on.
Well it is useful to see your registers, yes, though simply observing your register values doesn't grant a lot of insight into, say, off-by-one errors and how to avoid them. Or why address 0x42523fcc is bad but 0x42523f00 is good.

In ASM you are often working directly with memory.
What ASM does is require you to do the memory management, not allow the language to do it for you.

Memory management isn't about working directly with memory -- it is about managing which portions of your virtual address space are 1) accessible 2) form a stack and/or 3) are random-access (this is how C breaks it down, anyway).

Aside from this, using langages allows the learner to use data structures, which are of key importance. It is far less important to know how to implement, say, a linked-list at the assembly level than it is to know when to use, say, a hash table in favor of a linked list.

I agree.
I would not use ASM to write a windows application.

Staggering agree :)

Did you try the application I linked to ?
http://www.emu8086.com/

It comes with some easy examples that give direct results.
Like controlling a traffic light, a robot.
I didn't on 'vacation' but I did just now. It looks like a great (and fun) way to learn x86 (well, 8086 anyway). I fondly remember using some of those gadgets (especially the stepper-motor) on real hardware (an 80C188EB) in college. I still wouldn't advocate the language for a coding beginner, however, as you can get a lot more bells and whistles with a lot fewer lines of python. These days, sadly, its all about reward.

I do feel that an understanding of ASM is critical, of course. When I code, I automatically approximate the ASM in my head, and I think thats a good sanity check. But I've been doing this for years, and I do it for a living. ASM -- Its just not for newbies.
Have fun on the vacation !
It was just a weekend trip to the inlaws. I survived, and thats what counts.

 

Modelworks

Lifer
Feb 22, 2007
16,240
7
76
Originally posted by: degibson



It was just a weekend trip to the inlaws. I survived, and thats what counts.

You have my sympathy.
I avoid those situations at all cost.

 

Kyteland

Diamond Member
Dec 30, 2002
5,747
1
81
Since you're 14 and just starting out I'd pick something you can just mess around in. I learned QBasic at that age, and now work mostly in C++.

I'd suggest finding a game you like that's moddable and learning whatever language it uses to make a mod. For instance you could take up Civ4 and learn Python. You'll get a lot more out of it by working on a project than by reading a book. As a plus you get to play the game as well.
 

serox

Senior member
Jul 11, 2004
280
0
0
I learned a little C++ first but the first true lanaguage I picked up was Java. It seems to be that any of the more modern languages can be a good fit since they have heavy object-oriented guidelines which is very important to learn sooner rather than later.
 

gsellis

Diamond Member
Dec 4, 2003
6,061
0
0
You guys are crazy. For a newbie, go with something less syntax sensitive than C or C++. Basic, Rexx, Pascal, Fortran, Python are good. Rexx is the easiest becase it is so english lang oriented and no need for decls. But getting Rexx is hard. It is getting the concepts of initialization, looping, nesting, and validation first. Then worry about syntax issues.

BTW, LA is boring. I would want to learn a programming language if I was stuck in Lower Alabama too. ;)