this post was submitted on 26 Oct 2023
79 points (90.7% liked)
Programming
17494 readers
50 users here now
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities [email protected]
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
It depends what you want to do.
Do you want to make cool desktop apps? Probably something like Rust or C#.
Do you want to do machine learning or scientific research applications? Definitely Python.
Do you want to make websites and web apps? Definitely HTML, CSS, and JavaScript (look up both Node.js and DOM API). You could also learn other server side languages like Ruby, Java, or PHP, but knowing browser side JS gets you half way to knowing server side JS, so Node would be easiest. If you want strict typing, you can learn TypeScript, which adds a strong typing system to JavaScript.
Do you want to make mobile apps? Probably Dart and Flutter. Also could learn Kotlin or Java for Android, or Swift or Objective-C for iOS.
Do you want to get into the nitty gritty of kernel level programming or embedded programming? Probably C and Rust.
Do you want to work on old software that runs mostly banking/enterprise/medical applications, but can land you a pretty lucrative job? Maybe COBOL, Fortran, or Ada.
Do you want to accomplish nothing of value? Visual Basic. (Just kidding.)
The most important thing you can do is to just jump into things and try them out. In my career, I've switched languages several times. If you've got the fundamentals down, learning a new language isn't that hard, so just pick any language you want and learn the fundamentals with it. I'd recommend a strictly typed language at first, because it's easier to wrap your head around what's going on, but if that doesn't feel right, don't hesitate to switch to something else. Have fun with whatever you're learning. :)
C# is also very nice for server side and mobile apps as well as desktop. And game development too. To be honest, I would suggest learning C# to new programmers.
I would disadvise Rust for (most) desktop apps. There aren't any GUI libraries yet, and the Qt bindings aren't beginner-friendly yet.
Unless you just meant headless desktop apps, in which case Rust is my goto
There’s Tauri. Basically Electron with Rust instead of Node.
You can make an app with Tauri without writing a single line of Rust though. Tauri lets you trigger most native functionality you might need from the JavaScript side. If that's enough for what you are building then you don't need to write any Rust. You could use a Rust web framework that compiles to WebAssembly, but you could also just use React or Svelte or whatever else.
...and now your newbie has to onboard onto not only Rust (?!) but also HTML, CSS, and JavaScript to render "Hello World".
There are GUI libraries. I personally use iced a lot. Even if it's not v1.0 yet, it has many features. There are also bindings for other more common libraries such as GTK, QT and imgui. There's also egui as a native rust alternative to imgui.
Learning Java for android is still useful as a lot of legacy stuff is Java, but given Google has gone Kotlin first, and Kotlin is IMO easier and less error prone, dipping their toes in that first would probably be the better move.
You can always circle back to Java, you will need to understand it if you get serious about Android development.
Thanks for the correction, I added it to my post.
I'm no Kotlin expert, but I think Kotlin has a far more extensive core language and requires a heavier cognitive load to get up and running than Java.
It might have better developer experience and be less error-prone, but that comes at a price of admission that newbies have to pay.
First time I see "cool" and "c#" on the same sentence. I've always thought stereotype of c# is that it is the language for corporate, extremely uncool projects.
Just a comment. Cobol nowadays is heavily outsourced. There are jobs but not so lucrative as in the past. Fortran is still strong in scientific computing, but nowadays it is wrapped in python. All people I know who were strong in fortran (me included) are nowadays mostly working with python or scala, most of us on ML/AI related stuff.
I believe Fortran is still heavily used in weather forecasting.
All scientific computing is built on top of fortran. Even cutting edge AI runs on top of high performance libraries written in fortran and c. Simply there is less need for fortran developers because high performance subroutines are wrapped to be called by higher level languages, such as python