Best language to start programming in?

Started by
42 comments, last by Luau Design DF 11 years, 4 months ago
This is bad question to be asking (no offence), since everyonce will tell you one of their prefered choices. I personally started with BASIC the very old one from begginning of the early '90. Then i started learning C, and after very long time i started learning C++. There is popular opinion that beginners should start with Java, since it is simple. I would recommend you to learn C and over time adapt to C++. Since there is not much difference between C, C# and C++. C# has slightly different syntax but they all do the same thing same way. There are many many lessons with C and C++ that you can find on the internet at any subject of programming.
Advertisement

This is bad question to be asking (no offence), since everyonce will tell you one of their prefered choices. I personally started with BASIC the very old one from begginning of the early '90. Then i started learning C, and after very long time i started learning C++. There is popular opinion that beginners should start with Java, since it is simple. I would recommend you to learn C and over time adapt to C++. Since there is not much difference between C, C# and C++. C# has slightly different syntax but they all do the same thing same way. There are many many lessons with C and C++ that you can find on the internet at any subject of programming.


Actually, among the more experienced members on the site, the advice is pretty consistent and not just a matter of exposing their favourite programming language.

General consensus is, start with a more programmer friendly language with a good ecosystem ( books, tutorials, etc ), with Java, C# and Python often being recommended, but higher level language like [Java/ECMA/Action]Script and Lua are equally valid. The particular language you choose from that collection isn't really all that important, the skills you learn will be transferable. The vast majority of experienced devs recommend against C++ as a first language, in fact, I can only think of one or two of the more experienced people here that recommend C++ to start.

This is bad question to be asking (no offence), since everyonce will tell you one of their prefered choices. I personally started with BASIC the very old one from begginning of the early '90. Then i started learning C, and after very long time i started learning C++. There is popular opinion that beginners should start with Java, since it is simple. I would recommend you to learn C and over time adapt to C++. Since there is not much difference between C, C# and C++. C# has slightly different syntax but they all do the same thing same way. There are many many lessons with C and C++ that you can find on the internet at any subject of programming.


In this day and age, learning C to transition to C++ is an absolutely gonzo choice. They are completely different languages at this point, and for the most part, its the C parts of C++ that make it the ticking timebomb it is today. If you are going to learn C++, learn idiomatic C++ from day one. If you find yourself using a char* or calling new/malloc ( especially malloc! ) in the first month of programming, you are doing it wrong.
I recommend Unity! You can get a lot done without any programming at all, but once you learn some programming, it won't hold you back. It's very powerful. It also supports several different languages, so if you don't like one, you can easily switch.
I suggest you start with Python, C#, or Java.

Python - Great language. You can get so much done so fast. Pygame isn't as good as many other counterparts with other languages, however it's great for beginners. Most people who stick with programming (Especially as a career choice) learn Python eventually, because there's so many things that it can do extremely quickly. However, every language has applications, and none are catch-all, especially Python.

C# - Amazing Standard Libraries. I recommend it, and many engines use it (Unity3D, as an example). Although people are saying XNA is dead, there are many alternatives, and some are better (Monogame, SharpDX, etc.).

Java - I tend to sway towards Java for smaller applications. I don't believe it's that good for learning programming, because after you've learned another language you tend to program better in Java than if you'd learned Java first.

It's not the language that defines you, or that's hard. It's how you learned to program that's important.

I'm a game programmer and computer science ninja !

Here's my 2D RPG-Ish Platformer Programmed in Python + Pygame, with a Custom Level Editor and Rendering System!

Here's my Custom IDE / Debugger Programmed in Pure Python and Designed from the Ground Up for Programming Education!

Want to ask about Python, Flask, wxPython, Pygame, C++, HTML5, CSS3, Javascript, jQuery, C++, Vimscript, SFML 1.6 / 2.0, or anything else? Recruiting for a game development team and need a passionate programmer? Just want to talk about programming? Email me here:

hobohm.business@gmail.com

or Personal-Message me on here !

Something with light manual memory management. It makes easier later switch to managed languages.

So, get a hold of lower level concepts with some language like C++ (pointers, references, pass-by-value, pass-by-reference, procedures, functions, data structures, primitive types, control structures, etc) and then switch to another language that has "automatic" memory management to learn higher level concepts (classes, inheritance, polymorphism, methods, visibility, encapsulation, design patterns, etc). That way you will have all the basics very well covered when you reach higher level concepts.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator


Probably either C# or Python. C# is better than Python tho... Python is limited more than C#


Sorry but I felt compelled to respond to this. Do you have sources to back up this claim? I see no reason that Python is more "limited" than C#. What metric are you using to establish which is "better"?

To the OP:

The main advice is to pick a language you are most comfortable with and just start writing programs. Like so many have said there are numerous languages and no language is "better" than any other (especially at a beginning level).

I am personally a huge fan of Python. I use it all of the time both at work and in personal projects.

So anyway try them and see which you like best, and don't give up!


Something with light manual memory management. It makes easier later switch to managed languages.

So, get a hold of lower level concepts with some language like C++ (pointers, references, pass-by-value, pass-by-reference, procedures, functions, data structures, primitive types, control structures, etc) and then switch to another language that has "automatic" memory management to learn higher level concepts (classes, inheritance, polymorphism, methods, visibility, encapsulation, design patterns, etc). That way you will have all the basics very well covered when you reach higher level concepts.


I have to say you have that backwards.

Something without *HEAVY* ( if you consider C/C++ LIGHT memory management, what the hell is heavy? Assembly? ) memory management, will make it easier right away, and you possibly wont bother switching later.

For the record, memory management is not what makes C++ hard, it's what makes C++ fragile. It should take an intelligent person about an afternoon to grasp the basics of managing memory in C++. Hell, C# has manual memory management ( in the form of IDisposable or native code ) and it doesn't particularly make the language any harder. The difference is, the language is less convoluted. That is the problem with C++, it's complex, incredibly complex, often on things that should be extremely simple.
In reality it really does not matter what you choose as long as you stick to it. Every language out there has pro's and con's to it no matter what. They are all really great in their own way. For instance I love Python for it simple syntax and elegant readability. There are cases tho where it's whitespaced based syntax can become rather bad and make things harder to read. I love C for it's simplicity. The language itself is really tiney and easy to get grips with but because of this there is so much more you need to do on your own which will really teach you a lot of useful core algorithms. Ruby is awesome because of the strong meta programming facilites that let you pretty much turn any API into it's only little programming language but when abused like it has been there is really no reason to learn Ruby because every API creates it's own little world now adays.

The overall point is to not fret over the choice just pick something and learn core programming concepts. After that is done you can pick up any other language you want and become fluent enough to use it for a project in very little time. Mastering is another story but you will be able to use it.

As for my recommendations I would say either C or Python but that is because they are my favorite programming languages out of the dozens I have used.

I have to say you have that backwards.

Something without *HEAVY* ( if you consider C/C++ LIGHT memory management, what the hell is heavy? Assembly? )
lol no no, what I'm saying is that just practice basic things about memory management, Its hard to see what is a reference, pointer or what is a value when the language actively tries to abstract you from those things. For example, its easy to do silly things in Java if you dont know well enough when you're using a reference and when you're using a value. Like writing Object tmpObjectCopy = tmpObject; thinking that you just made a copy of your object.

On un-managed languages, the distinction between all those things is more clear. &tmpObject is a reference to tmpObject. End of story.

If you know about manual memory management, I can tell you "In java, objects are passed by reference, primitive types by value" and you'd get it perfectly. Now, if I tell a guy who just started in Java "In c++, you can pass parameters by value or reference, you can pass pointers too if you want" I dont think they'd get it just as easy.

As you said, basic memory management is not hard to understand. My point is that practicing it a little on an unmanaged language can be very benefical once you start with managed languages. It can make a lot of stuff you might encounter a lot clearer from the get go, regardless of their apparent abstraction.

Now, I consider learning both "worlds" important. If someone doesn't want to know about un-managed code, then learning about it probably wont be a pleasant experience for them.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

This topic is closed to new replies.

Advertisement