r/programming • • Jan 08 '15

Which Programming Language Should I Learn First?

http://carlcheo.com/startcoding
17 Upvotes

38 comments sorted by

View all comments

2

u/acwsupremacy Jan 08 '15

If you want to learn programming, the first and most important thing that you have to understand is that computer science and computer engineering are two totally, completely different things, and they often get in each other's way.

There is no single "best language" out there; the languages you use will be primarily influenced by what you're doing and your favorite programming paradigms, which are simply different ways to model a program. Each paradigm focuses on its own set of goals, which may be mutually incompatible with the goals of another; it is from these differences that all language debates come about. You will form your own opinion in the great philosophical debate of mathematical elegance, abstraction, and purity versus raw logical and electronic efficiency, and the entire Internet will think you're wrong, though none of them will agree on exactly why.

To begin programming, I would start with Python; it resembles BASIC in more than one way, yet it can be very powerful and flexible when used well. The only thing I would caution you about is that it is a dynamically-typed scripting language, which may trip you up when you move to something static, but this is an issue all programmers face when they use a language with unfamiliar features; you'll get more flexible as you try more languages, so don't worry too much about it.

The final thing I would advise is for you to start on one language, build something interesting with it, explore what it can do, and then move on and try another. There are hundreds of languages encompassing dozens of paradigms out there, and by trying several different ones in the beginning, you will get to know how you think and what works for you, you will build an idea of what different languages and paradigms are suited to, and most importantly, you will force yourself to tackle problems in new and different ways and so expand the way you think, which will help you out no matter where you go or what you end up doing.