Welcome to the Language Zoo
Why the Language Zoo?
When you first start programming, you typically begin with a specific language—whether it’s JavaScript for building websites, Python for an introductory programming course, or R for statistical analysis- we all start somewhere. As you broaden your programming repertoire, you'll likely notice both minor and major differences between the languages you know. You'll likely notice syntax differences right away, but perhaps you also notice that while C has fixed types, Python is a lot more flexible in how it deals with types. That is, once you get past the syntactic differences, you might begin to notice some of the more fundamental design choices that make languages different.
In the field of programming language theory, you take a deeper look at those design choices. You'll study the differences, and relative advantages and disadvantages between compiled versus interpreted, statically typed versus dynamically typed, functional versus imperative, and more. However, sometimes in theoretical discussions of programming language theory, it can be difficult to get a sense of how these concepts work in practice. In our first example, if you know Python and C, you'll likely have an immediate understanding of the difference between a fixed type and a dynamic type. If you only exposure to programming languages is through statically typed languages, you might not have a good sense of how dynamic typing works in practice. The same applies to other characteristics of programming languages.
Language Zoo is a simple yet powerful supplement to your programming education. Here, you can learn the basics of multiple languages simultaneously, side by side. This comparative approach allows us to highlight various design features in practical contexts, making complex concepts easier to grasp and helping you build a more versatile and informed programming toolkit. We include a whole host of languages, with goal of providing coverage of of the most important design features of programming languages. While you won't become an expert in any of these languages, that's not our goal, you will gain familiarity with a wide range of programming paradigms and design choices.
How to Use Language Zoo
The language zoo is a step-by-step guide to learning the basics of numerous languages side by side. View it as a step by step tutorial "in parallel". It is recommended to follow through the entire guide from start to finish, following along with the examples and exercises starting from "Installation" to "Conclusion". The various concepts introduced are introduced in the course of the guide as they become relevant, and not as standalone sections. While you can search the site for specific concepts, and most everything is hyperlinked, the best way to learn is to follow the guide from start to finish.
At each step along the way we use tabbed sections to contain the code for each language. The tabs are labeled with the language name, and the code is formatted using Pygments. By default, you can learn a maximum of 20 languages at one time. Learning too many languages at once can be overwhelming, so we recommend starting with a small number of languages. If you go to the settings page, you can choose what languages you want to learn. Note that there is a set of core languages that must be selected as they form the core set of languages that we use to demonstrate the various concepts. For example, to see the difference between a fixed type and a dynamic type, we need to have both a language with a fixed type (e.g. C) and a language with a dynamic type (e.g. Python).