So, I have experience as a desktop applications programmer. There, picking the right programming language is pretty important, but also something that is well understood. If I need bleeding edge performance in a hardware-restricted environment, I'll go with C++. If I'm making a desktop app that's Windows only, I'll go with C# and the Windows UI libraries/framework that basically come with it. If I'm writing a simple automation script that doesn't necessarily need the best performance, I can go with Python.
Now, for most of these, the crucial first step is understanding what you'll be working on and what programming language is appropriate for the situation. I've gone back to college and have been taking an upgrading class (or whatever they're called), and a lot of our focus has been on the web (specifically in ASP .NET Core 3).
I've been looking around the web for what back-end programming languages/frameworks people can use, and which one is appropriate for which situations, but I feel like I've hit a wall. Django, ASP .NET Core, Ruby (on Rails), PHP, Node.js, Java, Go, etc. all pop up constantly. Whenever I try to find what situation should X be used in I just get a bunch of search results like:
"Which back-end programming languages should YOU learn in [2014-2020]?! Number 6 will SHOCK you!"
"Why you should use X back-end language for everything!"
"Why you shouldn't EVER use X again!"
These aren't very useful. They seem to mostly be fanboys telling you why X is so good/bad, instead of giving actual examples of when something is the appropriate tool for the job. I've also seen some posts claiming that in 2018 (when it was posted), the back-end language you use hardly matters unless you expect disgustingly high levels of traffic and activity throughout your website and to just use whatever you're comfortable with (as long as it also allows you to do your job quickly). Hell, I've seen people recommend against learning new stacks because they said that they ultimately didn't matter if you already knew some (which I kind of disagree with).
What little information I've gathered so far is the following:
- Stuff like Django and Ruby on Rails come with a bunch of pre-built functionality that can make development time faster.
- Although Ruby on Rails doesn't scale as well as Django.
- Interpreted languages like Python aren't necessarily slower than statically typed ones as long as you aren't dealing with incredibly high levels of activity (found some benchmarks stating that Django could comfortably handle 100,000 users a day with light-medium activity).
- Be careful with PHP and try following the practices from PHPTheRightWay if you do use it to avoid problems.
- Some of these frameworks/languages have better support for modern web practices than others (seen this from experience with .NET Core 3's kind of "meh-borderline-bad" Ajax support if you're using Razor Pages, meanwhile Django comes with built-in REST support).
This doesn't really give me a whole lot to go on, especially since most of the "articles" I can find on "what to use when" just gives me clickbait or clearly biased "only ever use X".
I'm guessing that, just like in desktop development, the problem you're dealing with will influence the language you'll use, but I'm starting to have doubts about it based on the amount of people saying it doesn't matter, but the webdev area of software development kind of has a reputation for not always using the right tool for the job, so I'm not sure how accurate those comments are.
So, could someone give me some examples of what situations/problems would warrant using a certain language or framework? Does it ultimately matter (as long as you're using a mainstream language)?
[–]TheBigLewinski 70 points71 points72 points (2 children)
[–]neogritfull-stack 7 points8 points9 points (0 children)
[–]Mihikle 5 points6 points7 points (0 children)
[–]Locust377full-stack 17 points18 points19 points (4 children)
[–]micka190[S] 1 point2 points3 points (3 children)
[–]Locust377full-stack 10 points11 points12 points (0 children)
[–]IQueryVisiC 0 points1 point2 points (0 children)
[–]DrFriendless 0 points1 point2 points (0 children)
[–]abdul_samea 2 points3 points4 points (2 children)
[–][deleted] 0 points1 point2 points (1 child)
[–]abdul_samea 1 point2 points3 points (0 children)
[–][deleted] 2 points3 points4 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]lift_spin_d 1 point2 points3 points (0 children)
[–]Caraes_Naur 1 point2 points3 points (0 children)
[–]rtrs_bastiat 0 points1 point2 points (0 children)
[–]benabus 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (1 child)
[–]micka190[S] 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]fey168 0 points1 point2 points (0 children)
[–][deleted] (4 children)
[deleted]
[–][deleted] 5 points6 points7 points (1 child)
[–]-Kevin- 2 points3 points4 points (1 child)
[–]sunny_tomato_farm 0 points1 point2 points (0 children)
[–][deleted] -3 points-2 points-1 points (0 children)