2020 — Guide to Programming Languages and Frameworks
Recently I’ve decided to pursue a career in development and began a deep dive into not only learning programming and relevant technologies but also the history and theoretical concepts that surround it. It’s hard to master something if you don’t appreciate its evolution to know why you are where you are today.
If you are interested in a career in development I made this website as a free resource to either teach yourself or get you primed for a Bootcamp (I attended General Assembly Sept 2019-Jan 2020 and thought it was great) or other forms of education.
Below is a list of Programming Languages and frameworks that are still being used or growing in today's landscape to help you decide which languages you want to learn. Many languages can be used in every situation but I will categorize them in the best way I can to make this informative and practical.
These are languages and frameworks that are primarily focused on the web. General Purpose languages that have web frameworks will be listed as those languages come up later on.
CSS — For creating and detailing the visual style of your website. Technologies like SASS allow you to take programming elements into your styling, and CSS frameworks like Bootstrap 4, Foundation, Tailwind and more allow you to style a website rapidly.
PHP — A very popular server-side web language. Especially popular due to the popularity of WordPress which is powered by PHP. The most popular PHP frameworks for web development are Laravel, Symphony and Codeigniter.
RUBY — Ruby became a popular language due to the innovative Ruby on Rails web framework which is still used to this day for many large web applications. Ruby has many web frameworks with many of the new ones boasting better speed. Sinatra, Padrino, Hanami, Grape, Cuba, Roda, Ramaze and NYNY are among other modern Ruby based web frameworks.
PERL — Before Ruby and PHP, Perl was the main game in town for sever-side web development. Still being developed and used today, Perl is a key web technology.
Webassembly — Webassembly recent became a new specification on web browsers to give them a low level (faster) compilation target. This means in the future any language can compile to webassembly to render content into the browser. Rust and the .Net Framework with Blazor are currently the furthest along with implementing webassembly.
FUNCTIONAL WEB DESIGN
Functional programming focuses on immutability and pure functions. Several languages for web development have been gaining popularity bringing the functional paradigm to the webspace.
Elixer — A web focused version of the Erlang programming language.
Clojure — A web focused version of the LISP programming language.
Elm — A functional web development language that has been growing in popularity.
The .NET framework from Microsoft is quite popular at the enterprise level for developing software of desktop and the web. This framework works around 3 languages, C#, F# and VB.Net. With Xamarin you can use .Net to make mobile applications and with Blazor you can use .Net on the front end using Webassembly. These languages are also use in game development with the Unity game engine.
C# — A higher level version of the C family of languages for the .Net framework (C, C++, C#)
F# — A functional language for the .net framework
VB.NET — A modern version of the Visual Basic Language for the .net framework
General Purpose Languages
Rust — Developed by Mozilla Rust was designed to have speed of languages like C but have the memory safety of higher-level languages. Known to have a steep learning curve, Rust is a growing language especially for building tools to make use of webassembly.
GO — Go was made by developers at Google to address many of issues they had with existing languages. GO has been rapidly growing in popularity and can be used for web development using the Buffalo framework.
Python — A rapidly growing general-purpose language. Popular for its readability, ease of use and versatility. If you are using Python for web development the most popular frameworks are Django and Flask. Python can even be used for mobile development using the Kivy framework.
Julia — Julia is a growing open-source language built for speed and ease of use. It is general-purpose and can be used in many different use cases.
Crystal — A very new general-purpose language, can be used for web development using the Amber, Lucky and Kemal frameworks.
Nim — a Compiled language for developing systems.
In the world of developing native iOS and Android applications, there are several options that can also be used for web development.
Swift — The successor to Objective-C, Swift has become the main language for developing native iOS apps. Swift can be used for server-side web development with Vapor and Kitura.
Kotlin — The successor to Java, swift has become the main language for developing native Android apps. Kotlin can also be used to develop apps in the JVM and web applications using ktor, spark and javalin.
Dart — Dart is a new programming language created for compiling iPhone and android apps using the flutter compiler. Quickly growing in popularity as a way to program for both phone OSs.
The Java Virtual Machine (JVM)
The Purpose of the JVM was to be a portable container for running Java code. Java is famous for the phrase, “Write Once, Run Everywhere”. Since the release of the JVM many languages have adapted to run on the JVM and new languages were created for the JVM. All the below languages can be used in the JVM but can also be used in other use cases like the web.
Scala — A language that combines functional and object-oriented concepts. Can be used for backend web dev using the Play framework.
Xtend — A dialect of Java that adds functionality while giving you access to all existing Java libraries. Because it extends Java it can be used in mobile and web development like java.
Groovy — A language by Apache that aims to make the JVM accessible to more developers. Can be used for Web Development with the Grails framework.
Frege — Is a version of the Haskell programming language for the JVM.
Flix — A JVM based functional programming language.
Bosque — A Programming language from Microsoft aiming to radically simplify programming… can imagine programming without loops?
Ballerina — A Programming language aimed at expanding what can be done with network and cloud development.
Will add more, feel free to email me suggestions at firstname.lastname@example.org