Coding, or programming is, ultimately, giving instructions to a computer to get a task done. Those instructions (or programs) can be written in any of a huge number of languages, and depending on the task, sometimes more than one language is used to solve the problem.

There’s no one “best” language: just like tools in a toolbox or knives in the kitchen, different ones are good for different problems. Also, most coding is a process of using building blocks (usually called libraries) that other people have written, so that you can focus on just the parts that are unique to your situation. Sometimes the best language for a problem is the one which has the right libraries available.

When you’re starting, it’s a good idea to choose a language that people around you use, to increase the odds that you can get some help when you need it. After you’ve done some programming, it’s a lot easier to learn another language.

Around Knight Lab, we mostly use two programming languages: Python and JavaScript. Another language, R, is primarily used for data analysis: see Learn how to analyze data for more about learning R.

Python

Python is a general purpose language with a huge number of libraries available. At Knight Lab, we use it to analyze data and to serve websites, among other things. It has great libraries for machine learning/artificial intelligence.

Here are some resources we’ve found that might help you get started with Python.

Python Books (online)

JavaScript

When the web was new, pages just showed text and images: not really that different from a book. Before long, people wanted to do more, and JavaScript was created as a simple language meant for making the web more dynamic and interactive. It has become extremely popular, and now is widely used for a range of tasks, including things that have nothing to do with a web browser. At Knight Lab, we mostly use JavaScript in browsers to improve user experience.

If you’re interested in JavaScript, you may also want to check out the Learn about building websites page. Resources added to this page will be for digging deeper.