views:

750

answers:

14

Possible Duplicate:
Language for non-programmers to start learning programming

Hi, I'm 12 years old, I live in Poland, and I would like to start programming. What programming language (object oriented) would you suggest for the beginning, I'm not interested in visual basic.

+3  A: 

Visual C# Express 2010 is freely available for download, but I'm not sure why you want to avoid Visual Basic. You might want to avoid C# for the same reason since it too is based on the .NET framework. http://www.microsoft.com/express/Downloads/#2010-Visual-CS

BlueMonkMN
+1 Good (freely available) toolset, well constructed modern language. (@smallk12 can learn about pointers, etc. when they're a bit older.) :-)
middaparka
A: 
Matthew Whited
Why is Java out of the question?
John
It's not. I am a Windows developer so I defaulted to Windows native stuff first. I'll add java if it makes you feel better.
Matthew Whited
And thanks for the down votes people. Sorry if I didn't pick your favorite languages I picked the ones I felt were the easiest.
Matthew Whited
+21  A: 

Ruby or Python. Both are free, work on all platforms and will give you more direct feedback and less grammatical nonsense than languages like C# and Java.

Jakob
+1 for Python. It's an excellent first language as long as you steer clear of all that lambda sort of stuff. Ruby I don't know enough about.
paxdiablo
I believe the choice between them is a taste-thing. For a person that have never programmed before it shouldn't really matter at all.
Jakob
i would have explicitly advised against these two languages BECAUSE of the less grammatical "nonsense". start in an environment that forces consistent good habits, might as well have told him perl and ruined his life.
@evilclown: Haha, that's a valid point. It takes skill to avoid misuse of untyped languages. Yet, a beginner does not need help from typing systems. A beginner needs something fun, easy and powerful to play with. Learning the details and best practices can come later. The guy is 12!
Jakob
I would recommend Python over Ruby because of Pythons philosophy that this is _one_ best way of doing things. In Ruby there are tons of ways to do the same thing, so it's much harder to read others' code.
John Berryman
+1 John, good point.
Jakob
+3  A: 

Java is a good start as it is cross-platform and therefore can run on any of the platforms mentioned by Matthew above.

Eclipse http://www.eclipse.org/ is a fantastic IDE that can cater for all the different flavours of java

Kingo
+1 for java and eclipse
Infinite
+3  A: 

Java can be a right choice.

A: 

OO is a methodology utilized in programming and not necessarily hand in hand learning a programming language (at least not right off the bat, depending on your experience level). For example, when someone says learn a programming language, I think of learning the syntax and quirks. Programming is more about learning how to problem solve with code, and learning how to be good OO will make it more efficient.

I would start with the basics like PHP and go from there.

Kevin
+2  A: 

Python, for its clean and simple syntax and the interpreter.

William
+2  A: 

My first programming language was 8086's assembler. Not the easiest choice, but I turned out to be a person who like to know how stuff really works and it was perfect fit.

For contemporary assembler resources, you might check the Linux Assembly HOWTO.

Dummy00001
+7  A: 

It's not the best idea to learn object-oriented language as your first programming language. Starting programming with some enterprise language (like C# or Java) is even worse idea. These languages mix different concepts (especially C#) and you won't pick them up all together.

I'd recommend you Pascal just to kick off and then Scheme to learn algorithms. After that you'll be ready for any other language.

Roman
@Roman Cannot agree with you. If he'll start with OO the better. There is no point in learning something just for the sake of learning and then learning something entirely different with different ideas. OO is a future and he should start from OO, probably C#.
There is nothing we can do
@A-ha: it was to thick.. won't feed you further
Roman
@Roman what do you mean by your last comment?
There is nothing we can do
@Roman I'm waiting for answer.
There is nothing we can do
@Roman I'm still waiting for an answer from you. What did you mean by your last comment?
There is nothing we can do
@A-ha: http://en.wikipedia.org/wiki/Troll_(Internet)
Roman
i am with you Roman, recommending a new engineer learn the industry standard OOP is a bad idea, clearly trolling. scheme and TCL are where it's at
@A-ha: "OO is a future", "probably C#": some people actually don't program just for money, they want to learn something interesting. If you forget Microsoft's marketing for a moment, it becomes obvious that there's no reason to start with OO and C# in particular. (For example, MIT used Scheme and now Python for introducing people to programming. You think that's dumb?) Indeed, you didn't give one single reason, you just asserted what all mediocre mainstream programmers think (that is, what big corporations like Sun/Oracle and Microsoft want them to thin).
Bastien Léonard
@Bastien and I'm sorry but when someone asks for programming language and indicates that is interested in OO so I (and probably many users on this forum) do feel that the most sensible way to do it is to suggest something which is popular. I'm not familiar with neither Python nor Scheme that's why I didn't suggest it, how could I? I know that C# is new kid on the block and from what I've see on the SO and web it has great future. For that reason I would suggest C#. It is much better to learn something and if you decide that you like it being able to make living out of it instead of...
There is nothing we can do
continue learning something that you will have to leave behind you and start learning something new in order to be reasonably employable. And just because MIT uses Scheme or Python it doesn't mean that those languages should be used as only languages for beginners. I hope you agree on that.
There is nothing we can do
@Bastien I've just checked Pythons syntax here http://en.wikipedia.org/wiki/Python_(programming_language) and if you are going to tell me that this is more readable and written in more clearly manner than equivalent code in C# or C++ then we just have to agree to disagree on that one.
There is nothing we can do
+9  A: 

I would recommend Java or C#. These are both powerful object oriented languages that hide the low level details (memory management, etc) and algorithms you don't need to know yet.

Both languages have a huge standard library to prevent you from reinventing the wheel inefficiently. Other languages have this also, such as PHP, but make it easy for new learners to form bad habits.

These are both good languages for developing stand alone apps, or web apps.

Both of these languages are highly marketable, I realize you are just learning now, but might as well make it an investment.

Brandon Horsley
@Brandon +1 I would also suggest C#, in my opinion it is a language with future even though I was very sorry to discover that.
There is nothing we can do
This is crazy talk. You're tossing development platforms at a 12 year old. Who cares if the language has a future? The kid needs something fun - like any language that offers an interactive mode. Developers need libraries and development experience - not kids.
Brandon
@Brandon (the commenter): Couldn't agree more
Jakob
I don't understand what's crazy about recommending C# (or Java). It's an easy to use language, designing a GUI is literally drag and drop in Visual Studio Express. Is it "not fun" because it also happens to be a language used in production versus an informal language like Ruby or Python?
I've used C# for most of my development and I would say that I know it better than any other language. That being said, "using System; namespace X { public class Y { public static void Main(string[] args) { Console.WriteLine("hello world"); }}}" is not a good way to get started. For GUI's I hear you, C# kicks ass in that sense. For learning how to program, probably not so much.
Jakob
But make sure it's C#! :) I would highly recommend the book `Apress Pro C# for the .Net 3.5 platform` once you get some basic idea about programming, it is a great book for a beginner. Your local library may have it.
Callum Rogers
+2  A: 

C is an excellent starting point and the most popular choice for beginners.

There are a wide range of IDEs and compilers that support the C standard.

It will also provide the fundamentals that will allow you to move on to object orientated programming such as C++, C# , Java and PHP. All of which are in essence very similar.

Hades
@Hades "C is an excellent starting point and the most popular choice for beginners". Unless you explain yourself -1.
There is nothing we can do
Well it opens many avenues:You can experiment with low level machine code.Make use of the available operating system libraries. Work with dynamic memory allocation, learning how data is stored in memory.I feel the versatility of the C Language gives the developer a wider view of the art of programming.
Hades
@Hades for someone who is a beginner and is 12 years old? I'm sorry but that's just madness.
There is nothing we can do
Well I started in working on C as a beginner. It doesn't get much simpler than this: #include<stdio.h>main(){ printf("Hello World");}Age is irrelevant.
Hades
@Hades I'm sorry but you've started in the age where C was reasonable choice. Now are better choices and I repeat myself but C# seems to be very good one. You don't wanna tell anyone that C is an easy to learn language or do you?
There is nothing we can do
It can be easy or hard to learn, it all depends on how much you want to learn. If it's writing a program to calculate values then you can't go wrong with C. I started learning C with no previous experience of programming at all and found it very easy to get off the ground with.
Hades
@Hades It's simple to learn simple things like Hello, World, but much more difficult to accomplish anything significant. And very easy to make a big mess of it. In C, for example, if you try printf("value: %s", 5) thinking that it will convert 5 to a string for you, you're in for some serious confusion and significant problems that other languages would protect you against.
BlueMonkMN
A: 

As an aerospace engineer, I can really recommend nothing other that FORTRAN. It's simple. You don't have to worry about annoying things like classes which really only make the code slower. There's never a problem with long annoying variable names. And it's ubiquitous in industry. Oh, almost forgot... in FORTRAN you still have the GOTO statement. I don't understand how anyone can program anything worthwhile without a GOTO statement.

John Berryman
'And it's ubiquitous in industry' - 15 years and I have never come across it in industry, must be hanging out with the wrong crowd ...
James Westgate
You must be hanging out with the young folks that design websites! Ah, the young folks are forgetting the true art of programming.
John Berryman
@John Berryman from http://www.cwjobs.co.uk/JobSearch/Results.aspx?Keywords=fortran fortran jobs 4 are you kidding?
There is nothing we can do
@A-ha FORTRAN is just going through a lul right now. It will be back soon once people again take computational speed seriously. Have you seen how slow Javascript is? It in no way compares with the power of FORTRAN.
John Berryman
I upvoted, thinking it's a good joke. Well I'm not sure now.
Bastien Léonard
@Bastien +1 for being the only person with a sense of humor. Have you ever looked at FORTRAN code?
John Berryman
Golden Hammer!, funny
Hernán Eche
@Hernán: exactly - in aerospace engineering, FORTRAN does actually still show up quite a bit. We call it "dusty deck fortran" (For bonus points... does anyone know what the word deck implies here? Please tell me I'm not so old that I'm the only one that knows that!) Basically, it's a piece of code that no one knows how it works... but by-golly it works and it's certified! So just don't touch it! It's funny, all the comments above are *true* but they are from a really bad perspective.
John Berryman
A: 

Start with javascript. You can get going straight away with any browser and notepad. You'll learn about variables and functions and can see results on the screen straight away. You can also pick up some html, css etc and decide which you like best. Its really easy to publish your work for other people to see!

Through trial and error you'll learn about type systems, objects, namespacing, closures, scope etc which are things you may naturally come across on your 'adventures in programming'.

There are plenty of free tools such as Eclipse + Aptana once you move past 'Hello world' and lots of free online guides.

James Westgate
I quite like JavaScript, and your arguments make sense, but it's really a badly designed language on many points and you need to know a lot of stuff before writing decent, reliable and portable code, so I wouldn't recommend it to a beginner. (I'm not the one who downvoted though.)
Bastien Léonard
For example, the simple fact that no error is raised when you access an undefined variable makes it probably more confusing than many other languages.
Bastien Léonard
I think as a beginner you will never write decent or reliable code! And its the html implementations across browsers that make javascript portability a problem - javascript itself is highly portable running on just about any pc with a browser.
James Westgate
I agree that you are not going to be forced into learning good programming habitats by the language itself, but that can be said of many languages in this list - rather the teacher / reference material should emphasise this imho.
James Westgate
+1  A: 

You can also start with C++. You can use Qt with C++ GUI programming. It's easy to learn. Qt is a cross-platform C++ GUI toolkit.

Using Qt you can build industrial-strength C++ applications that run natively on Windows, Linux/Unix, Mac OS X, and embedded Linux without source code changes. That's why I'd recommended you C++.

sheman