Best language to start programming in?

Started by
42 comments, last by Luau Design DF 11 years, 4 months ago
Check this out http://www.gamefromscratch.com/post/2011/08/04/I-want-to-be-a-game-developer.aspx

I like Python personally. http://inventwithpython.com/ is a good place for beginners. Udacity has some good python courses as well.
Advertisement
I recommend c/c++ if your question aims at performance. At the same time c/c++ is a better language for solving general purpose programming problems.

I recommend c/c++ if your question aims at performance.
[/quote]
The kind of "performance" difference one can potentially get by changing languages is not relevant for a beginner. Beginners will be limited algorithmically, rather than by the potential low level speed-ups a master can obtain.

By the time this is your bottleneck, you should be capable of picking the tools that will deliver the performance you need.


At the same time c/c++ is a better language for solving general purpose programming problems.
[/quote]
No, it isn't.

This is like saying that French/English is better for general communication, or that Screw/Hammer is better for solving general DIY problems. It is plain nonsense.
I would recommend C++ (specifically, the C++11 standard) as a good place to start off. It's not a hard language to learn. What makes it hard are features that beginners just don't need to worry about. The standard library contains many gems, and there are a plethora of GUI, physics, graphics, etc. libraries available to you as well.

Another benefit with C++ is that, later on, you can expose your library via .dll/.so and interface every language that can load them (Java, Python, Lua, C, D, whatever). That said, why not start with Java and target Android. If you download the package that Google offer, you are good to go. Eclipse makes learning Java exceptionally easy and what you learn from Java, you can take with you to C++, for example.

Point is, make a decision that suits your needs. We will pretty much just tell you what we like based on our experiences - that is, after all, what a general consensus is ;)
Cows would last a lot longer if they weren't made of steak and leather.

Check out my site: bigdavedev.com

I would recommend C++ (specifically, the C++11 standard) as a good place to start off. It's not a hard language to learn. What makes it hard are features that beginners just don't need to worry about. The standard library contains many gems, and there are a plethora of GUI, physics, graphics, etc. libraries available to you as well.

Another benefit with C++ is that, later on, you can expose your library via .dll/.so and interface every language that can load them (Java, Python, Lua, C, D, whatever). That said, why not start with Java and target Android. If you download the package that Google offer, you are good to go. Eclipse makes learning Java exceptionally easy and what you learn from Java, you can take with you to C++, for example.

Point is, make a decision that suits your needs. We will pretty much just tell you what we like based on our experiences - that is, after all, what a general consensus is ;)


Rarely do I disagree with a post more than I do this one.

What makes C++ difficult is its complexity. Period. You can't simply avoid it either, a new developer gets punched in the face by stuff they just shouldn't have to handle when starting out, such as the pre-processor and the horrifically outdated build/link system. To move past the most trivial of hello world applications, you need to conquer these beasts, and that's just the beginning.

To use a direct example, lets say a user wants to use a 2D library, such as SFML... great!

Now what?

Let's see, now they need to know how to add the library header files to the include path, the library lib files to their library path.. oh wait... which ones? Debug or Release? Multithreaded sor single threaded runtime? Why am I getting these LIBCRT errors all of a sudden??? WHAT THE HELL! Oh crap, SFML isn't compiled for Visual Studio and the shipped binaries are for 2008 and not compatible... ok, now I need to build the library myself. Oh crap, it depends on these other libraries and... oh crap, why is this one library statically linked? What the hell is static linking anyways...? Off to Google!

This might seem like an out there example, but it is EXACTLY what you will encounter if you want to work with SFML with C++.

Now, some might say you shouldn't be working in 2D graphics at this point and with C++ I suppose that is true. However, if you went with say... Python and PyGame, JavaScript or even C#, you will be able to be drawing graphics on screen day 1 and you wont be getting ahead of yourself.



Next up, Eclipse is the devil and beginners should stay the hell away from it. Over engineered, fragile with one of the worst UIs ever made. If you are going to go the Java route and dont want to repeatedly smash your head against a wall, do yourself a favor and use IntelliJ or NetBeans. Only use Eclipse once you are forced to ( and eventually you will be unfortunately. )
Although I agree with the spirit of Seraph's post, I recently installed SFML with C++ on Linux and I didn't have any of those problems. The simplest Ubuntu install puts the header files and library files in the standard places, and I just need to add some -lsfml-blah options to my compile command, but I just got them from the tutorial on the SFML website and it worked fine on the first attempt.

Although I agree with the spirit of Seraph's post, I recently installed SFML with C++ on Linux and I didn't have any of those problems. The simplest Ubuntu install puts the header files and library files in the standard places, and I just need to add some -lsfml-blah options to my compile command, but I just got them from the tutorial on the SFML website and it worked fine on the first attempt.


The problem I described is what happens when you work with Visual Studio 2010. SFML is shipped in binary form for 2008 only, and the two binary formats are not compatible, so you need to recompile SFML if you want to using VS2010. If you use Visual Studio 2008, the experience is flawless. That said, it's when things dont go perfectly smooth, or when the tutorial misses a step, that the newbie is now starting their descent down a deep dark bottomless pit of hell.

I didn't mean it as a shot at SFML, it's just a real world example that comes to mind. Linux often actually makes the build process a much easier prospect in many cases, until it breaks or you end up in dependency hell that is. There are different problems too on different platforms. XCode, well, its just awful... but even trying to figure out how to create a C++ application is a bit of a nightmare ( command line utility anyone? ) and Apple has this nasty habit of moving frameworks and library files around, or just getting rid of them completely between OS versions and patches. Another issue that comes to mind is CodeBlocks ships with SFML templates, that simply dont work. Plus it ships (on Windows ) with a version of GCC that simply isn't compatible with SFML at all, requiring you to replace your compilier completely if you go that route.

In a nutshell, the overly complicated build process is going to bite you, in some way, shape or form, regardless to what platform you call home.
Some C++ fan is burning a lot of karma on this thread...

FYI, you aren't supposed to up or down vote because you disagree or agree with an opinion. In that regard, you should post a comment with your discourse.

I personally recommend C# with SFML


When did they release a C# binding? I missed that one.


Clinton

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software. The better the workflow pipeline, then the greater the potential output for a quality game. Completing projects is the last but finest order.

by Clinton, 3Ddreamer


[quote name='Khaiy' timestamp='1354422000' post='5006204']
I personally recommend C# with SFML


When did they release a C# binding? I missed that one.


Clinton
[/quote]

As far back as 1.6 at least.

This topic is closed to new replies.

Advertisement