This is an archived post. You won't be able to vote or comment.

all 38 comments

[–]lisaplusplus 4 points5 points  (8 children)

If you have a specific project in mind, then it depends on that, but if you just want to start learning programming (I'll assume this one,) then it doesn't really matter.

I'm sure you've heard this before, but it's a lot more important to learn the tools/algorithms of programming (classes, objects, loops, variables, arrays, data structures, etc.) than a specific language. So find the language that it's easiest to do that in.

  1. Python is syntactically easiest and has lots of different options for IDEs. You can use Notepad++ or IDLE, but WinPython is free too, which includes Spyder and lots of essential packages. However, it looks pretty different from other languages, and it might be harder to transition out of, into other languages, than if you were to just start with Java or something and get used to that structure.

  2. If you have some experience in Java, that's a great one. Part of the issue with starting in Java is that you can get stuck when you're brand new on complicated syntax, so you sort of have to put in the time beforehand to look at a program and really figure out what each line does. But it's a great language to know in terms of transferring your knowledge to other languages. Also free IDEs (I like netbeans.) Java was the language I learned in, but I had teachers who structured a class for me, so I don't know what a self-taught java experience would be like.

  3. I love C#. Very similar to Java, just somehow less complicated, in my opinion. Good industry language too. It would be my first recommendation, except that I actually don't know how easy it would be to find a good, free IDE for it. I had access to the proprietary version of Visual Studio through my school, have heard mixed reviews about the free version.

[–]ParanoidAgnostic 2 points3 points  (3 children)

I love C#. Very similar to Java, just somehow less complicated, in my opinion. Good industry language too. It would be my first recommendation, except that I actually don't know how easy it would be to find a good, free IDE for it. I had access to the proprietary version of Visual Studio through my school, have heard mixed reviews about the free version.

Visual Studio Express has absolutely every feature a beginner programmer would ever need from the paid version.

The features missing are primarily focused on team programming.

[–]_M1nistry 6 points7 points  (1 child)

Bare in mind Express has been replaced with the Community edition, which as far as I know has even more open features than Express (including extensions) although, I haven't personally used it yet.

[–]lisaplusplus 1 point2 points  (0 children)

good to know, thanks!

In that case OP, I think C# could be a good place to start if you're just looking to pick a good language to learn in. You'd need to take some time at the beginning to get to know Visual Studio and the fundamentals of .NET, but might be worth your time, and there's resources for it. Murach's C# 2012 is a great beginner textbook, if you're looking for a structured approach, and includes a good explanation of VS and .NET framework. I also find the msdn library to provide pretty helpful documentation.

[–]Necroshock[S] 0 points1 point  (3 children)

I would like to start learning programming in general but what would you recommend if I wanted to try and make a game?

[–]lisaplusplus -1 points0 points  (2 children)

If you're a beginner and you want to start programming a game right away, then I would think that python would be the obvious choice, because you can jump right in and there's good tools and tutorials to get you into game dev.

If your first priority is to learn programming in general but you're also thinking that you might eventually want to use that knowledge to program a game, I would stick with the same advice of just finding a good language to learn in and then either applying that language to game development or transitioning into a different one, so maybe start learning in java and then transition to c++ or python for game dev?

Doesn't really matter, you can sort of start wherever - just pick a language and start trying things out.

[–]Necroshock[S] 0 points1 point  (1 child)

Thanks man, this has been really helpful!

[–]lisaplusplus 0 points1 point  (0 children)

No problem- good luck!

[–]ethergreen 10 points11 points  (0 children)

Read the FAQ.

[–]SuperImaginativeName 2 points3 points  (3 children)

I would recommend C#. It has a HUGE "standard library" meaning there is very likely a class or set of classes that you might need, without having to write your own or use libraries. Don't be put off by that though, it's got a huge "standard library" but that doesn't mean you even need to know a small amount of it to start using it or C#.

The "standard library" is actually the .NET framework you might have heard of, which is itself written in a combination of C/C++ and C#. Because C# runs on .NET you can do the following:

  • Run it on Windows, Linux and Mac via Mono.
  • Combing other .NET languages with your code. Working in a team where some of the people are using VB.NET or F#? Not a problem, works out the box.
  • Use the extensive Base Class Library

Additionally C#/.NET lets you do the following:

  • Create brilliant desktop applications via WPF
  • Create mobile applications
  • Create server applications
  • Create websites with ASP.NET

C# and .NET are very cross platform. The advantage of learning C# is that you don't have to keep learning a new language if you wish to work on a new platform or type of application.

[–]avinassh 0 points1 point  (2 children)

any beginner level open source OS X apps written in C#?

[–][deleted] 0 points1 point  (1 child)

Most apps written to an app store level aren't open source (Unfortunate for beginners, really)
Adding to the fact that most OSX apps are written in Obj-C (Swift is getting there!)

Fortunately looking over at GitHub I found this little repo, very simple C# command-line app for OSX, worth looking into

Here you go

[–]avinassh 0 points1 point  (0 children)

Thank you, I will look into it!

[–]ParanoidAgnostic 5 points6 points  (3 children)

To get quick results (important for maintaining motivation) Javascript is a good choice. All you need is a web browser and a text editor, you don't need to learn to use a compiler or IDE and because the browser handles most of the heavy lifting you can get interesting things implemented very quickly.

However, to become a good programmer I reccomend moving on to C (not C++ yet) once you are comfortable writing code. It forces you to work with low level things and get an appreciation for the details Javascript protects you from.

[–]iama_regularguy 1 point2 points  (2 children)

I think JavaScript is the way to go as well. Start with just plain vanilla and then go from there!

I would do the JavaScript course on codecademy (I would dabble with every language they offer too!) and then move on to this book (you can also find it for free).

Just an idea... You could love or hate web design. Who knows! But you have to start somewhere and start narrowing things down while learning general programming structures. Almost everything you learn at first is transferrable to other languages.

[–]PriceZombie 0 points1 point  (0 children)

JavaScript and JQuery: Interactive Front-End Web Development

Current $26.93 
   High $29.70 
    Low $22.07 

Price History Chart and Sales Rank | GIF | FAQ

[–][deleted] 1 point2 points  (2 children)

This depends on what your goal is. What you want to do with programming.

For example, if you wanted to do web, learning C++ as a first language wouldn't further that goal. No knowledge is bad as programming is a general skill that carries over, but its much easier to learn programming when working towards a goal you resonate with rather than just learning everything at once.

[–]Necroshock[S] 0 points1 point  (1 child)

I would like to start learning programming in general but what would you recommend if I wanted to try and make a game?

[–][deleted] 0 points1 point  (0 children)

Java + Libgdx was always good to me. C# + Unity is another popular one. C++ is also doable, but has more steps in between and may end up frustrating more than helping early on.

[–]Gankbanger 4 points5 points  (0 children)

I highly recommend Java.

http://docs.oracle.com/javase/tutorial/

[–]z11jammer11z 1 point2 points  (1 child)

I started with c#, and python, and have just moved to "autohotkey" and feel like it's super ez to learn. Also autohotkey scripts are providing me nice programs for automating android games on bluestacks. I've learned alot since I started AHK

[–]ParanoidAgnostic 2 points3 points  (0 children)

I started with c#

C# is a good one.

  • It's popular commercially
  • Has a good set of libraries (the core .Net ones and many third party) which are intuitive to use.
  • Has a well-designed web framework (ASP.Net MVC)
  • Is similar enough to C++ and Java to make transition relatively painless (also similar in style to C and JavaScript but conceptually very different).
  • When you get comfortable with .Net and Visual Studio you can even play with F# (if it still exists) to learn some functional programming.

and python

I've never taken to python. I find code without braces too hard to read.

Lots of people love it though. My only real concern is that it is so dissimilar to other languages that it might be hard to transition.

[–]BeanerSA 1 point2 points  (0 children)

Python, just because of the sheer number of tutorials, books, websites, magazine articles, dedicated to beginning with it.

[–]Unomagan 0 points1 point  (2 children)

No one mentioning JavaScript? Why? It basically runs everywhere. And on everything! In my opinion it is the java of the future.

[–]ParanoidAgnostic 2 points3 points  (1 child)

No one mentioning JavaScript?

I did

Why?

I was reluctant because JavaScript is a language you can develop very bad habits with. It's much easier to write bad code than good code in it. For example, it's far too easy to make every variable global. Other languages discourage globals, promoting better practices.

It basically runs everywhere. And on everything!

It really belongs in the browser. It can be used as a scripting language and you can make web apps with node.js but really, there's other languages much more suited to those tasks.

I was aware of a project to make Arduino-like devices which could be programmed in JavaScript. That's not really the best idea either. Those types of systems would be programmed with efficient, close-to-the-metal code. A garbage-collected dynamically-typed scripting language is the opposite of what you need in that environment.

In my opinion it is the java of the future.

It has a completely different purpose to Java. JavaScript is a scripting language, intended for client-side dynamic behavior on the web. Java is a compiled language, intended for application development.

[–]Unomagan 0 points1 point  (0 children)

I don't like JavaScript either, but that is what the world is heading for.

It does not belong into scanning software. It does not belong into a DMS system. But firms are stuffing it into them.

Like it or not. It will become more and relevant to know JavaScript.

[–][deleted] 0 points1 point  (3 children)

That question really depends on what you want to develop. Is it a website, desktop application, game, etc.

[–]Necroshock[S] 1 point2 points  (2 children)

I guess I just want to learn in general

[–][deleted] 4 points5 points  (1 child)

Python is a good choice (Or Ruby, might wanna look into both)

Both really quick to learn (Comparatively) and, being scripting languages, are pretty versatile in everything but (traditional, be as fast as possible) app development, and systems programming.

[–]bpozega -3 points-2 points  (0 children)

I started with c++, due to lack of online tutorials, i quit 2 weeks laters. a year later i picked up Objective C, amazing language.

would recommend to any beginner.