Choosing our next language.

Posted by Anthony Tilelli on November 11, 2020

Once Flatiron is completed, we can now choose new technology options. I am not the biggest fan of ruby, and I will be looking into other language options and technologies. To make our choice more manageable, we can look at several factors to narrow down your selection.

The pros and Cons of language you already know.

While at Flatiron, we worked with both ruby and javascript. Both languages are dynamically typed and multi-paradigm. In javascript, all variables are hash-like objects, and in ruby, they are classes.
These languages’ constructions allow for significant flexibility and speed, but care is needed to prevent runtime errors. Many programmers are comfortable with these conditions and will use strategies to manage their risks, such as linters and proper testing. However, others, such as myself, would prefer something more deterministic that will catch more error before runtime and give up some flexibility. Different languages will offer different levels of strictness. Python with type hints adds optional type checking without changing the dynamic run time. On the more extreme side, Rust has safety and correctness built into its very core.

Ruby and javascript are interpreted and garbage collected, which is slower but easier to work with than unmanaged compiled languages. If you need execution speed above all else, C is one of the fastest languages around; however, you will need to manage the system memory yourself and deal with the language’s unsafeness carefully.

Languages that specialize in the fields you are looking it enter.

While many languages are “general purpose,” they all have target strengths and weaknesses. For instance, Javascript is mostly a client-side web-based language, with attention on the backend as well. We can see this in the primary frameworks and packages available, language developer’s use cases, and the user population’s knowledge base. Rust and C, on the other hand, are system-level languages that focus on the operating system and system-level applications. It was not even possible till recently (web assembly) to use in front end web clients. Elm is an extreme example; it’s exclusively focused on the front-end web client.

Popularity and support

Ultimately, we are programming to get employment, so the language we choose will need to be one with some popularity and recognition. If you have a background in Shakespearean, it will be much less valuable the Go. However, most companies recognize that programming skills are transferable between languages. It is much more essential to have example projects in your chosen language than pure knowledge.
More popular languages will have more support and options available than niche ones. As newer programmers, larger communities are more likely to answer our questions and have examples/ training materials. To get a good idea of what’s popular, try taking a look at what people are using on Github.

Languages that may be interesting for Flatiron students

Ruby:

  • Crystal - general-purpose compile language with Ruby-like syntax, still in development (niche).
  • Elixir and Phoenix - Functional programming language that’s marketed as friendly to ruby users.

JavaScript:

  • TypeScript - Superset of javascript with type safety that compiles to javascript.