Whether you're completely new to programming or looking to jump into a new kind of programming you've never touched, one of the most important questions to ask is: "Which programming language is right for me?"

These days, you have so many languages to choose from, it can be quite overwhelming to pick one when you don't have much experience. In this article, we'll cover the best modern programming languages for web, mobile, desktop, game, embedded, and utility development. Treat this as an overview and a jumping-off point.

For Web Development

Web development is unique in the programming realm, which presents its own unique challenges -- but also some unique benefits. Web development is arguably the easiest kind of programming to pick up when you have no experience, and the web development community is huge, so we consider it a good choice for beginners.

  • HTML and CSS: Though these aren't true programming languages, both HTML and CSS are necessary to create web pages. HTML provides the structure of the page while CSS determines the styling and aesthetics of the page. To get started, check out these step-by-step HTML and CSS tutorials.
  • JavaScript: JavaScript is the only way to add browser-side logic and real-time changes (a good place to start is learning JQuery basics). Nowadays you can use JavaScript for both browser-side and server-side logic, which is really easy to do using a framework like Meteor or React.
  • Python: Python is used for server-side logic, which means you'll need HTML, CSS, and JavaScript for the browser-side portion of whatever web app you create. But Python is an amazing language, which is why it remains a strong alternative to JavaScript. Learn more about Python for web development.
  • PHP: You don't hear much about PHP anymore because it isn't as hip as some of the newer web languages, but it's still used all over the place (including in WordPress, which powers approximately 27 percent of all websites). PHP can be messy, but it works. See our crash course on building sites with PHP.

To learn more about why and how web development differs from other kinds of coding, see our article on web development vs. programming.

For Mobile Development

Mobile development has been the next big programming frontier for quite some time, and there are no signs of it slowing down anytime soon. People love their phones, and people need apps for their phones. It's a cramped and competitive space, but breakout apps still show up every single day.

  • Java: Java is the native language for Android app development, which is great because Java is also used in a hundred other ways. While you can technically make Android apps using non-Java languages, Java is your best bet for maximum performance and flexibility. Get started with these Android app tutorials.
  • Swift: iOS apps used to be coded in Objective C, but these days you'll have a much better time using Apple's new language Swift. It's easy to learn and easy to use, making it great for newbies and veterans alike. Get started with these Swift tutorials and test what you learn with these Swift coding challenges.
  • JavaScript: Several frameworks exist that let you code Android and/or iOS apps using JavaScript. Some frameworks convert your code into native code, while others run the resulting app like a web app wrapped in a faux browser. To learn more about pros and cons and getting started, see our article on JavaScript mobile frameworks.

For Desktop Development

Desktop apps aren't so hot these days since the world moved on to web apps and mobile apps, but that doesn't mean they're obsolete. Many people, like myself, prefer offline desktop apps whenever possible. And the good news? Whereas desktop apps were once complicated to make, it's become much easier lately.

  • Java: Long ago, Java apps were made using Swing. Don't do that. Prefer to use JavaFX instead, which provides a richer, sleeker, and more modern way to design and build apps thanks to the Scene Builder. And since Java runs on the Java Virtual Machine, you can write one app that runs on many platforms.
  • JavaScript: Using the Electron framework, you can write apps in JavaScript and package them for desktop platforms. Some notable examples include Visual Studio Code, Atom Editor, Discord, Slack, and WhatsApp. This is a great option because you can make desktop versions of web apps with the same language.
  • C#: Using Visual Studio, you can create desktop apps with C# in conjunction with GUI libraries like Win32, Windows Forms, WPF (Windows Presentation Foundation), and the .NET Framework. Using Xamarin Studio, you can also create Mac/Linux apps with the Mono Framework.
  • Swift: Apple's new language can be used for Mac apps in addition to iOS apps. If you're embedded in the Apple ecosystem and intend to only create apps for these two platforms, you'll be better off learning Swift than a more cross-platform alternative like Java or JavaScript because of native performance.

For Game Development

Game development has never been easier. With the abundance of free (and open source) game engines out there, you can pretty much pick any mainstream language and be able to create games with it. But some languages are obviously superior, and those are the ones we recommend if you're new.

  • C#: Unity is the most newbie-friendly game engine out there and its primary language is C#. The engine supports both 2D and 3D game development, and it can export builds to dozens of platforms including Windows, Mac, Linux, Android, iOS, and HTML5. Start with our beginner's guide to Unity.
  • Java: Java programmers can use the open source LibGDX framework to quickly create games from scratch. The framework can export to any desktop platform that supports Java, plus Android and iOS. It's a simple and straightforward framework that's conducive to rapid development. Highly recommended.
  • Haxe: Haxe is a newer, modern language that can transpile to many other languages, including Java, C++, C#, and Python. Using a game engine like HaxeFlixel or Luxe, you can develop cross-platform 2D games much faster than in other languages. Unfortunately, no 3D Haxe engine exists as of this writing.
  • JavaScript: JavaScript has taken over Flash as the best and fastest way to develop web games. I highly recommend the Phaser engine. Even better, you can use a tool like NW.js to package web games for desktops and mobiles, allowing you to do desktop and mobile game development with JavaScript.

For Data, Scripts, and Utilities

A lot of times, programming isn't even done to create software per se. Maybe you just need to crunch some data and model trends, or maybe you just need a utility script that automates otherwise tedious tasks. In those cases, there are two superbly useful languages that'll come to the rescue.

  • R: R is a programming language designed primarily for data mining, data computing, and data analysis. If you've ever used MATLAB, then you can think of R as a free and open source alternative. While MATLAB is easier to use and has a better environment, it's expensive ($2,150 for a standard license). If you don't mind R's learning curve, it's a strong alternative.
  • Python: Python is regularly used in data science because it's an intuitive and non-verbose language, making it easy to learn and enjoyable to use. You can do all kinds of things with Python, including shell scripts, but you should definitely be aware of two libraries: NumPy (data computing) and Pandas (data analysis). Get started with these basic Python examples.

Which Languages Do You Like?

First decide what kind of programming you want to do, then find out which languages are best suited that area. Once you have an overview, just pick whichever language you feel most comfortable with. You'll be more productive and actually enjoy programming this way. Don't go with the "best" language if you hate it!

What kind of programming are you interested in? Which languages do you like best? Did we miss any important ones? Let us know in the comments!

Image Credit: Makaule/Depositphotos