Which Language?
There are certain snippets of memory from my childhood that have persisted when all others have faded and they have defined how I think about things today. One of those snippets is staying up late and watching Star Trek: The Next Generation with my parents. I was around 10. I don’t remember anything about the episode except for a part where a parent from the show chastises a child about my age for not finishing their calculus. The implication was that it was normal for 10 year olds to be doing calculus in this future. This snippet has stayed with me and helps to define how I think about the future. Knowledge builds upon itself. As we invent more and more advanced mathematics, calculus will continue to become more and more foundational until 10 year olds are learning it. In the same sense programming has become foundational. As we rely on our computers more and more it becomes important to be able to speak the language of computers even just a little bit.
There are hundreds of programming languages that range from high-level languages that are closer to English like JavaScript to low-level languages that are closer to binary like C. Choosing from this vast list can be daunting but it all depends on what you want to do. The power of programming is that you can do almost anything with it as long as a computer is involved. Broadly, there are four different kinds of programmers. Applications Programmers, System Programmers, Game Programmers and Web Programmers.
Application Programmers
Application programmers code applications for the end-user. They make things like word processors, accounting software, presentation software and the like. Application programmers tend to use high-level languages to build apps for mobile, desktop, Mac, Windows, Android and more. If this sounds like the ideal route here are a few languages to look into. There are many more but these four allow for development on nearly any platform.
Swift — Apple’s development language.
C# — Developed and used by Microsoft. Windows apps are often built with C#.
JavaScript — A light weight language used to develop a variety of applications on and off the web.
Java — Despite the name, Java is not related to JavaScript in any way. Java is Androids primary development language.
System Programmers
System programmers code operating systems and system utilities like the Bootcamp assistant on Mac. This type of programming requires a lot of technical knowledge and uses low-level languages that are closer to the commuter’s native language. As a result, learning to be a system programmer has a steeper learning curve. A couple of the more well known languages for developing system software are:
C — One of the first low-level languages developed in 1972. C is still used by system programmers for Windows and Unix.
C++— Based on C, the ++ is syntax shorthand for add one to the original value so C++ is C plus one. It is considered a high-level language and is used frequently for system development.
Game Programmers
Game programmers usually use assembly languages which are low-level languages. This is because assembly languages run faster and more efficiently. Gaming programmers also need a pretty high level of technical skill as well as having some design abilities since what they are making is very visual. There are a variety of languages used but some of the more common are:
C, C++ — These were mentioned before being used by system programmers but they are also used to create games.
C#, Visual Basic — These languages are used to create applications on Microsoft operating systems.
Swift, Objective-C — Swift is a modified version of Objective-C that Apple created. Prior to that Objective-C was the main Apple dev language. Both are still accepted.
Lua, Python, JavaScript — These languages are usually used for scripting and are embedded in one of the above languages providing additional functionality. They are cross-platform and are high-level languages.
Web Programmers
Web programmers or developers design and build websites and the applications that live on them. They are generally divided into two categories. Front-End developers which focus on everything the user interacts with and Back-End developers which focus on everything that lives on the server such as databases. If one can do both, they are known as a Full-Stack developer. There are three main languages to Front End web development. Generally they are high-level languages with a smaller learning curve. There are also a few Back-End languages which are a bit harder to pick up.
Front-End
HTML — Stands for Hypertext Markup Language and defines the content and structure of the webpage. It is relatively easy to pick up.
CSS — Stands for Cascading Style Sheets. CSS is only for the design of the webpage. The color, font, floats, and any other styles. CSS can also create limited interactivity.
JavaScript — JavaScript was originally created to be used with the Mozilla browser but is now ubiquitous among all browsers and provides interactivity to websites.
Back-End
Ruby — Ruby has a simple syntax meant to be written and read easily by people and is used to build web applications.
Python — Python is similar to Ruby in its wide range of uses and a code syntax that is very easy for humans to read and write. However, that also means it runs slower as the computer has more work converting it to machine code.
Java — Like Ruby and Python, Java is a versatile language that can be used to build web applications on the back-end. Unlike Ruby and Python, Java does not focus on being easy to read and write by humans and has a more complex syntax.
JavaScript (node.js) — In recent years JavaScript has become more and more powerful as tools like node.js have come into play. Using tools like node.js JavaScript can be used to build back-end web applications as well as front end.
Even the few languages I mentioned can seem daunting. It is best to choose a language and learn it. Learning one makes it easier to learn others. That said, JavaScript is probably one of the more powerful languages to learn and is becoming more widely used across all programming areas maybe with the exception of System Programming. Learning at least one language, even just a little, opens an entirely new world of possibilities.