this post was submitted on 26 Oct 2023
79 points (91.6% liked)

Programming

17672 readers
109 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 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] hperrin 19 points 1 year ago* (last edited 1 year ago) (4 children)

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. :)

[–] [email protected] 9 points 1 year ago* (last edited 1 year ago)

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.

[–] [email protected] 9 points 1 year ago (2 children)

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

[–] hperrin 3 points 1 year ago (2 children)

There’s Tauri. Basically Electron with Rust instead of Node.

[–] [email protected] 3 points 1 year ago

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.

[–] [email protected] 1 points 1 year ago

There’s Tauri.

...and now your newbie has to onboard onto not only Rust (?!) but also HTML, CSS, and JavaScript to render "Hello World".

[–] calcopiritus 2 points 1 year ago

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.

[–] NotMyOldRedditName 7 points 1 year ago* (last edited 1 year ago) (2 children)

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.

[–] hperrin 2 points 1 year ago

Thanks for the correction, I added it to my post.

[–] [email protected] 1 points 1 year ago

Kotlin is IMO easier and less error prone

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.

[–] Zeth0s 4 points 1 year ago* (last edited 1 year ago) (1 children)

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.

[–] [email protected] 1 points 1 year ago (1 children)

I believe Fortran is still heavily used in weather forecasting.

[–] Zeth0s 2 points 1 year ago* (last edited 1 year ago)

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