What is the best programming language to learn

I just want to know what programming languages are most used for programming in Linux OS components. Like eos apps, is it python, C++, C … etc.

Prefer if someone who is actually doing programming for Linux or eos would let me educate myself so I can peruse another path and be more useful.

But all comments are welcome.

1 Like

There is no best. Use whatever you want and just try it. The knowledge you gather by just programming in any language is universal. The language just dictates the syntax.

Original EndeavourOS apps are mostly done with bash and yad.
Under linux many different languages are used, and a combination of them as well. Different libraries are also very important for various purposes.
Linux was written in C.


Python is a great first language to learn on and is widely used in Linux.

As far as the languages that are most widely used, I would say it is Python and C++.

That being said, because of the nature of open-source. Virtually every language is pretty well represented in one way or another.


In general terms i’d advice:

  • C
  • Python

This will pretty much cover all the other ones :upside_down_face:


Best paid job - COBOL. :sauropod: (If you dare)
Contribution to linux kernel - C
Web design - perhaps JavaScript
Other that that I would go for Python (3+) as relatively modern high level language that has broad usage even though it may not be optimal for low level stuff and speed optimisation (for that I would focus on C/C++).
Very useful for Linux environment is Bash (not a full programming language but it is very good for scripting).

As a note I would also recommend English as main language for programming. Not many people follow that advice which is kind of sad.

I have this down :D. I’m just trying to find another language (not for a job, I already have a well-paid one).

Seems like best path is Bash → C/C++ → Python or Bash → Python → C/C++.

I already dabbled in C# but it’s too platform-centric and not a fan of Java. Any good place to start learning Bash?

Contribution to linux kernel - C

If I’m not mistaken, Rust will be usable in the future.



I am not sure how that is supposed to be read. :woozy_face:

As for the order, I think it depends if you already know how to program or not.

If you already know how to program at a somewhat high level, it doesn’t really matter what order you look at them. Just find a project you want to contribute to and learn/use that.

If you don’t already know how to program, I have a few pieces of advice.

  • Don’t start with bash. The things done in shell scripting are completely antithetical to working in a modern programming language. This will install bad habits and/or make it more difficult to learn other languages. I do both and it really requires a shift in mindset going back and forth.
  • C and C++ are actually more different than most people realize. I also think you aren’t likely to find all that much C code in modern Linux projects. For applications, C++ is much more common.
  • C is a difficult language to learn to program on because of the perils with memory management
  • C++ is better than C but still somewhat difficult as a first language because it is big and complicated. This is partly because it is an older language that is has evolved over the years so there are many conflicting ways to achieve any given task.
  • Conversely, Python is a great language for learning to program.
    • You can write basic scripts easily and with very little code
    • It also scales up to complicated software systems
    • Because it is positionally dependent, it enforces many good programming habits from the start

The path was just hypothetical. By profession, I’m an IT Administrator and an OCR solution developer (2 in 1 :smiley:) networking/server stuff and scripting using XML/XSLT/Xpath). But I’ve also followed the below stuff as well,

  • TC (Turbo C/C++)
  • TP (Turbo Pascal)
  • VB (I know it’s a meme)
  • Little bit of Java (it didn’t catch on)
  • PHP
  • JavaScript
  • DB stuff (SQL and mono/Mysql)
  • C# (Recently)
  • And BATCH scripts (MS .bat files)

So I’m not a total rookie to programming :smiley:. That’s why I posted that path but I would be picking up those 3 anyway.

But why are they all listed twice…

the difference is the placement of C/C++.

Learning any language well and become truly productive with it is a long term process.
It takes years! There are so many techniques in a language you can use, and not all of them are explained (or even mentioned) in books…

1 Like

Yeah, I found that out the hard way :stuck_out_tongue:. SO is friend, Google is family and pulling my hair out is normal :rofl:.


I see. I was reading it wrong.

I was reading it like this:
Bash → C/C++ → (Python or Bash) → Python → C/C++

It is supposed to be read like this:
(Bash → C/C++ → Python) or (Bash → Python → C/C++)


1 Like
Honorable mention


No, I don’t recommend it as a first language, or even second. I find it a pain to write Rust code, probably because its significantly different than any other language I’ve done (C/C++, Python, JS)

But yeah Rust is a good language in general.

1 Like

It doesn’t matter which language you learn first. There is no such things as the “best” programming language. They are all just tools. Some are better than others, and some are better at some specific tasks, but in general, it’s impossible to pick one out as the best one.

The first programming language is the hardest to learn, but learning your fifth or sixth programming language is quite easy, and this is mostly independent of actual languages.

Here are the languages I know:

The first programming language I learnt was C, I was about 8 years old at the time I started with it, my dad taught me everything I needed to know, and a few years later, I took the Kernighan & Ritchie book and went through it all, so by the time I was in early teens, I was quite comfortable with it.

C is a very nice and elegant programming language, and deceptively simple – but it is fairly low-level so you need to know about memory management. Also, simple tasks in C need a lot of code: string manipulation is especially tiresome in C. On the other hand, the language is very minimalist and it’s very easy for an average programmer to memorise everything there is to know about C.

C++, on the other hand, is an incredibly ugly language, and I don’t think there is a person in the world who knows all of it, but it’s very efficient and it makes it fairly easy to do fairly complex things with not too much code (partially thanks to its bloated Standard Library). C and C++ are quite different, and although C is somewhat of a subset of C++, the programming practice is quite different between the two languages. Nowadays, whenever I need to solve a concrete, practical problem, the first language I use is C++ (or Bash, if it is a really simple task). That said, you can spend your entire life learning C++ and not know more than 10% of it.

I also learnt FORTRAN at the university. It’s a terrible language, I would advise against learning it.

JavaScript is a very useful language to know and it is has a very pretty syntax (much nicer than Python). Unfortunately, all JavaScript interpreters are awful and slow. JavaScript has nothing to do with Java, except the similar sounding name.

Python is easy to learn, but it has a very flawed syntax: the fact that whitespace matters in Python is just an insanely stupid design decision. You can literally have bugs in your code that are entirely invisible, a single misplaced tab or space can cause your program to be syntactically valid, but do things you don’t want it to do. Like JavaScript, it is also an interpreted (scripting) language, so it will perform much worse than a compiled language like C, C++, or Rust. However, the Python interpreter on Linux is a bit better than any JavaScript interpreter. Even though I know how to program in Python, I almost never use it.

Bash scripting is really weird, but very useful to know on Linux. About a year or so ago, I did not even know how to declare a variable in Bash. It took me couple of weeks to get comfortable with it, at least to a point I can make stuff like this. The biggest obstacle to overcome was the incredibly weird and somewhat ugly syntax.

Rust is a very nice language, but it has a problem that it is a fairly young language, so its syntax is not yet fully fleshed out. Also, it is too memory safe, its compiler is quite neurotic and that can get a bit tiresome.

Go, on the other hand, is terrible.

What else? I know a bit of Pascal, but that’s about as useful as FORTRAN.

For a first language, I would advise C++ if you’re into serious programming. Or Python and JavaScript if you want to take it easy.

Gees, awesome man thank you. I might pick up C++. I went through C and C# so why the heck not :smiley:.

I actually feel the opposite on this topic. Once I got used to it, I found the positional requirements of Python to be a positive. I used to be the guy that was called in to fix bugs that other programmers couldn’t find. It was almost always one of two issues.

  • Flawed memory management in C
  • Poorly indented nested conditionals that made the code appear to do something different than what it actually did

Probably even less :rofl:

1 Like

I don’t think it is possible to make a compelling argument in favour of presence or absence of whitespace affecting the program logic. It creates literally invisible bugs.

Sure, complex nested conditionals are where bugs often hide, that’s why it is advisable to simplify the conditionals as much as possible. In C and C++, this is typically done with early return statements. In Python, you have the exact same problem, but with an added complexity that whitespace matters.

Whenever I program in Python (which is really rare nowadays), I always turn on symbols for whitespace in my text editor, so I can see where the spaces and tabs are. Without that, I would be extremely annoyed.

And yes, memory management in C requires a lot of care, that’s the biggest downside of C. On the other hand, Rust eliminates all those problems with C, but its compiler is extremely oppressive and annoying. I have a hard time making up my mind whether I prefer C or Rust in this regard.