Hey friends! Nice to meet you :)
I primarily work as a frontend developer, but have already gained some experience in backend development with JavaScript - mostly in side-projects.
Recently, I'm feeling kinda interested in learning another server-side language for web development. Plus, I want to increase my backend skills in general.
Apart from JavaScript, what is your server-side language of choice? Or what language would you recommend me?
Oldest comments (46)
Presume you already know PHP? There will be nore and more money in legacy languages.
Ruby is the language of GitHub, it is beautiful(imo) and intuitive.
Then there is python, or java if you want to follow the traditional path of growth, or go/rust if you want something more modern. Remember the more languages you know the quicker you pick them up because of pattern recognition eventually it is all down to syntax.
Dart and flutter are a strong choice if you are looking to be an app dev.
See all these languages have their uses. Python ai and data science, go ai, flutter apps. I am about to learn rust, my understanding is it is an unforgiving multitool.
Only as long those languages reside within the same neighbourhood (paradigm).
e.g. Python would do little to prepare you for Haskell (
do
notation notwithstanding).Enough people seem to find the transition from an imperative language to SQL difficult enough.
Can't say I know PHP, just worked on a PHP project's frontend - i.e. with HTML, CSS and JS.. Just occasially read some PHP, never wrote it myself yet.
Have fun learning Rust, gonna check it out, too :)
Learn PHP. He who can maintain legacy projects - and 40% of the internet has a promissing future. You should pick it up fairly rapidly. I would say that is very important. Also check this free resource. It's examples are java and C, however in teaching you how interpreters are built it will make you a real full stack dev. It is the best computer science tutorial I have found, and because of that the language isn't important.
I don't know what level you are but rust is a low level language meaning you need some experience in recognizing what it is actually doing. You will know very quickly if you are ready and if you are then crack on my friend but it is similar to going from JS to C but without 40 years of tutorials behind you - a different beast.
craftinginterpreters.com/introduct...
Thank you so much for your solid advice! I'll check out the book about building interpreters!
When I hear JavaScript my brain instantly jumps to TypeScript :D
Personally, I write my "centralized" backends mainly in C# (ASP.NET) and the "decentralized" ones in Solidity and Vyper (on an Ethereum-based Blockchain as a Smart Contract for Web3 Applications ;))
Wow, Solidity and Vyper :)
Definitely go for C or C++. Both languages can be used to make native Node addons that can give you a lot more power when working with node. You could even use it to make steam games with electron because the steameorks API is in C. Also, sounds relatively high profile jobs require a language such as python or C++, but I personally think that C++would be best.
Is C++ like C regarding the need to handle memory usage?
Yes. C++ is quite literally the same as C, but tweaked for OOP rather than function-based programming.
Python, Go, Ruby or Elixir would be great for learning new backend frameworks! Python is really broadly use, hardly a bad bet (but less risk, less reward… 😇)
From a pragmatic perspective Golang would be the contemporary choice. It seems to have the mass appeal of Python with a C-style syntax capable of producing binary executables.
"It must be familiar, roughly C-like. Programmers working at Google are early in their careers and are most familiar with procedural languages, particularly from the C family. The need to get programmers productive quickly in a new language means that the language cannot be too radical."
Go at Google: Language Design in the Service of Software Engineering
While language-level concurrency primitives are nice they somehow seem to have missed including the complementary error handling primitives (Erlang).
However if you are looking to improve as a programmer it's probably necessary to look in a completely different direction. Pick a LISP or Scheme (Racket) and go with it.
Systematic Program Design
Given that
"I was recruited to Netscape with the promise of “doing Scheme” in the browser" [ref]
the experience will feed back into your JavaScript style.
I like your pragmatic perspective and already have a small tendency towards Go :)
I would think the same for Golang and Rust.
For server side performance and general community support.
Even though both languages are relatively young they are definitely proven technologies that are extremely performant as well.
Developer and business perspective both are wins.
As a second language, besides JS, I often use Python for prototyping.
Nice post about advantages of Python -> Pitch me on Python
Is it off topic to answer SQL ?
I'm got nearly zero experience about Javascript backend (i'm a PHP guy) but i think knowing how to buiold good query should always be usefull
SQL might be a little off-topic, but I am glad you mention it!
Since I've only used an ORM to talk to databases yet, I'd absolutely want to extend my knowledge of SQL.. Like writing queries with JOIN. Much to learn in this area ^^
Bash bro!
gnu.org/software/bash/
Love it! ❤️
Personally, I would recommend Go!
Python or Ruby. Before Node.js, they were the dynamic language programmer's friend for doing back-end things.
If you're interested in front-end, definitely recommend Elm and/or ReScript. While Elm is front-end only, ReScript can be used for both UI and API.
Lua if you're super bored.
Thanks for your great advice. I'm never bored! :D
I've already heard good things about Elm, so I'll add that to my list, too!
I'd say go for your work projects' main backend language as you have a chance to learn in a context.
Otherwise I'd say Golang (more used for big scaled, projects that need speed or optimizing) or Python (more related to projects with ML or data processing).
I talked to other very senior devs, one likes Clojure, another likes Rust.. but they both know various other languages already.
Many backends at work are written in Roby on Rails, so that is close. One project written in Elixir, some PHP Symfony ^^ I believe there are even some teams that use Go
Could you briefly explain what's meta programming, please?
Alright, thanks! So basically it is a concept agnostic to any particular language(?)
Bro server side language I would definitely recommend node JS. An additional language that you can learn would be C# because it’s similar to JS and has similar workflow.
After Java try python, vice versa, and if you want to do something more advanced in the game section, c++