[ $davids.sh ] β€” david shekunts blog

πŸ₯‹ The Samurai's Path to Programming Languages πŸ₯‹

# [ $davids.sh ] Β· message #196

πŸ₯‹ The Samurai's Path to Programming Languages πŸ₯‹

I'll tell you about the division of programming languages based on a person's experience

(continuation in comments)

#top #go #nodejs #ts #rust #zig #c

  • @ [ $davids.sh ] Β· # 713

    This isn't about "choosing your first backend language," it's about reaching a Senior level in a language and wanting to move forward:

    πŸ‘ΆπŸΎ The "Discovery" Category – Python / PHP / Java / C# / Ruby / Node.js / Scala / Elixir

    These are the languages most people start with. They'll teach you development standards (some better than others, like Node.js), allow you to build your first small and medium-plus applications, but sooner or later you'll get tired of their clumsiness and outdatedness:

    – Heavy runtime – Either no multithreading or cumbersome multithreading management – Lack of memory control – Long build times (statistically, 90% of people switching from Java discovered their second language while waiting for their Java application to build) – Lack of built-in tools

    πŸ‘¨πŸΎ The "Speed" Category – Golang / Haskell

    This is the stack for speed, with a lean runtime and mandatory typing.

    Here you can comfortably and easily write everything from mini-applications to distributed Highload systems and even databases.

    πŸ‘¨πŸΎβ€πŸ¦³ The "Optimization" Category – Rust / Zig

    When you're ready to sacrifice simplicity for speed (thanks to memory management).

    πŸ’€ The "Death" Category – C / C++

    When you're ready to sacrifice your soul for maximum optimization.

    🀑 The "Are You Fing Kidding Me?" Category* – Python / PHP / Java / C# / Ruby / Node.js

    If you've gone through this whole journey and come back, you're either a genius or completely screwed.

  • @ user303817238 Β· # 718

    It's not about "choosing your first backend language"

    But what if it is about that?

  • @ [ $davids.sh ] Β· # 719

    Here here

  • @ Leijona Β· # 729

    I recommend C# even though I don't use it myself. I recommend it because all the material on architecture usually comes with examples in C# or Java (but C# more often). And from what I've observed, those who started with Node.js/TypeScript and somehow grew beyond the mid-level have a rough time with it.

  • @ [ $davids.sh ] Β· # 730

    Yes, people who start with Node.js have a chance to be decent developers, but only if they fall into the hands of professionals (but this is true for any stack), which is why in 90% of cases the developer level is extremely low.

    Java – I just have a personal hatred for it, C# – I even wrote in it once, overall, a very good language.

  • @ Leijona Β· # 731

    Yes, on any stack it's important to find a source of correct experience, BUT on C# and Java it's much easier, even unconsciously, to get on the right path. You pick up a book on ASP.net and as a rule, they'll at least touch upon Clean Architecture, DDD, explain why a certain practice is good, and why another will lead to overposting, etc. In general, everything there is really aimed at enterprise. A lot of people from serious fields are willing to share their experience. Courses and books about Node.js are about micro-sites or how to make something work. Just technical details. I believe Java has had a too complicated fate: first it lagged behind, then they started to rush it, constantly passing it from hand to hand. Five years ago, it was unclear where to get this Java from (now it's simpler - temurin). That's why I say simply, in 2023, start with C#.

  • @ Leijona Β· # 732

    (if you are self-studying from books, articles, and courses)

  • @ Leijona Β· # 733

    ... and to look at the source code of interesting, high-quality projects, it's also C#

  • @ Leijona Β· # 734

    After adopting good practices, you will move on to other programming languages and platforms.