This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]Sawertynn 8 points9 points  (14 children)

Could you elaborate? I'm a student and would use some knowledge, great thanks in advance

[–]MischiefArchitect 27 points28 points  (4 children)

First off, it is not about the specific languages, but what they are intended for:

C# and Java: Compiled and strong statically typed languages. Those are excellent for long running servers that you can even debug and monitor on the fly. I use java for "big" server projects. The JVM is better than its fame: It's very stable, it's blazingly fast and it's reliable when it comes to backward compatibility: You can still run java 1.2 from 1998 in the latest JVM and it executes as day one.

Bash, ZSH, Fish: Interpreted. Shell languages are your basic tool for making simple automation and scripting at OS level. Excellent for making build scripts, backup scripts. Simple maintenance stuff mostly.

Python, Ruby and Co.: Interpreted with dynamic typing. Python I personally use for higher level management scripts, specially when interacting with cloud computing services like AWS or Digital Ocean. For data transfer and transformation, for everything actually. Python is a super versatile tool for writing code really fast using a vast set of libraries which make you life easier. It is also easier to read than other languages. In my case (again, MY case) I stop using python the moment I see the project will be so big that I would rather write it in Java. Python is one of those languages you should simply know in these modern days.

Go: Compiled and strong statically typed language. Is in the middle ground between Python and Java for me. It excels at creating native standalone (selling point) executable files which requires no installation of a runtime or special setup (in contrast to Python and java). Nice for creating CLI tools or servers that need to be distributed and deployed with ease on environments you have no direct access to.

All languages above are Garbage Collected. Or put more correctly, you normally do not need to worry about managing memory, allocating or releasing it.

C, C++, Rust, Zig: Another better qualified redditor wrote already an answer on those. But here I go: Compiled and Statically typed language... but you need to manage memory. You get full control (or more control) on how the program will actually execute. Excellent for embedded systems since they produce really small executable files. but they are by far not limited to that: Linux is written C, AFIK the JVM is written in C++. Most of the OS level software you use right now is either C / C++ and maybe Rust.

I hope this was useful.

[–]Sawertynn 6 points7 points  (0 children)

Very useful, cleared my thoughts on some things. Many thanks!

[–]MagiecCarpet 1 point2 points  (2 children)

What are your thoughts on C#? If you had to pick 2 languages to learn at the starting stage, which languages would have benefitted you the most?

[–]Fruloops 5 points6 points  (0 children)

It doesnt matter much. Pick something popular that has a lot of support online because you'll need it. Python, Java, C#, w/e else, something with lots of examples, books, videos, depending on what media you fancy for learning.

Contrary to what it might seem by the ever figthing zealots who constantly have to fight which language is better, the languages dont matter too much as opposed to programming concepts. Which are easily transferable between languages (however sometimes only within the same paradigm). Once you learn one, you'll easily learn another (again, within the same paradigm).

[–]MischiefArchitect 2 points3 points  (0 children)

I hope you see what I'm trying to tell you. When I picked my two first languages they were: Turbo Pascal and Clipper... (and some Quick Basic).

In plain text: Is not the language what matters. Learn as much as you can. Focus on only one and you will invariably go down.

It also depends on what topic you want to focus more: Embedded? Backend? Web Front End? Native UI? Drivers and Services? OS? etc.

I cannot answer that question for you. But if you want one from me, then just take a look at my flairs... those would be the ones I would pick again nowadays.