What are your favourite programming languages?

I love Scala and Ruby, it’s really pleasurable to work with these languages and their technical aspects really suit my preferences. I also like using Java, Rust and Python but not as much as Scala and Ruby.

Kotlin and Lua are nice too.
Bash is nice as a shell language but I only use it for scripts that only I will run on my Linux system.
I wouldn’t mind C# but I prefer Scala and Java for bytecode.

Although I never used Crystal, Elixir and Clojure, I believe I would enjoy using them too.

Due to my personal preferences, I’m not a big fan of C, C++, Javascript and a few others.

1 Like

Recently, I have spent the most time with C++/Qt and Python.

I am not sure I have a favorite. I would say Java and C# are not my favorites.


I really like C. I find it a pleasure to program in C. I enjoy its simplicity and minimalism, and I love the preprocessor as a concept. C is easy to learn, but difficult to master. Gives you great power, but expects responsibility. It’s by far my favourite programming language.

I use C++ the most (daily, professionally and for personal projects). I don’t particularly like it (I don’t hate it either), but it does the job very well. When I want something done, I program it in C++. What it lacks in beauty, consistency and elegance, it more than makes up in efficiency, comfort of use, and raw power. While superficially similar to C, in some ways it’s actually the opposite of it: difficult to learn, easy to master, bloated with useful features and features you will never use. I’m not a fan of the object-oriented paradigm, but C++ doesn’t force that upon you (or any other programming style), so that’s fine. Unfortunately, my boss forces OOP upon me, so that’s what I do daily… :rofl:

Awk is a really, really neat concept. I love Awk. <3 It has a very specific use case that it excels in, yet it is powerful enough to do complicated programs (not that you’d want to do that). I really appreciate that. People abuse it in shell scripting for trivial things that they don’t know how to accomplish in pure Bash. I don’t like that, but that’s not Awk’s fault.

Assembly is fun, but not very practical, obviously. It lacks portability and makes for utterly unmaintainable code. Apart from toy projects and recreational programming, I only use it in embedded projects where performance is critical and think I can optimise something better than the compiler (which is to say, almost never).

Shell scripting is kinda nice, I like it. Very slow, though. I appreciate programmers who take effort to write pure Bash that runs in a single process, without any plumbing or abuse of cat, sed, awk, etc…

I used to really dislike LISP, but I’ve grown appreciation for it, it’s actually a really neat programming language. I also like the fact it is simple enough that I feel confident to implement a working compiler/interpreter for it as a weekend project. Scheme is my favourite LISP dialect. When it comes to functional programming paradigm, LISP does it much better than, say, Haskell, which is just too… fruity.

I used to program quite a bit in FORTRAN, as a physicist. I didn’t enjoy that. It’s a powerful language, great for numerical computations, but quite annoying to use.

I am mostly neutral towards Python (I hate some aspects of it, like relevant whitespace and total lack of type safety, but I do like some aspects of it, like elegant and efficient syntax). It’s a good language for kids to learn algorithms and data structures. Like with any other scripting language, Python programs tend to run very slowly.

Ruby is absolutely useless. It’s not an ugly language, but it has absolutely nothing unique about it, nor anything that it does better than any other language. No niche use case that would make me actually want to use it rather than something else. You may as well just use Python, really…

I hate Java, it’s the most cursed thing ever. I also hate its bastard offspring: Scala and Clojure. Sometimes, at my job, Java is inflicted upon me and in those cases I find my self uttering profanity so ugly and obnoxious that I surprise even myself, because I thought I wasn’t capable of it (still, it’s not as ugly or obnoxious as Java).

C# is mostly used on a niche gaming platform that I have no interest in (windoze), so I never encountered it. I don’t miss it in my life. M$ Visual Basic can burn in Hell, together with Bill Gates, too.

I don’t like Rust, it’s clumsy (say “traits” one more time, I dare you). Memory safety is overrated (important but not difficult to accomplish in C or C++, if you’re not stupid). It’s like Wayland – when a traumatized programmer wants to fix a problem (in this case memory safety) so he designs a programming language focused on just fixing that issue, sacrificing everything else. I also dislike the concept of package managers for programming languages (Cargo in particular, but also npm, pip, gem, etc…). It encourages low-quality code with a lot of a dependency bloat. Not particularly safe to have 2000 dependencies you have no control over, is it?

I don’t like Go(olag). It’s created by an utterly evil company and I don’t trust it. I don’t trust the compiler.

JavaScript is made of soy. TypeScript is M$-SoyTM, I could do without any of them. People with small brains hate Brendan Eich because he donated $1000 of his own money to an unpopular political cause. I hate him because he invented JavaScript.

OBLIGATORY DISCLAIMER: Obviously, this post is very opinionated. The OP asked about personal preferences, this is that. You are free to disagree with me. You’re also free to be wrong. :frog:


I dislike dynamically typed languages. Javascript is serious pain to me. Python also doesn’t feel very good to my senses, but I still end up using it because its quick to code in Python.

C++ was where I started off (assuming HTML/CSS aren’t programming languages). Later I discovered Rust and that has been my language of choice ever since.

I’ve used other languages too, at work or otherwise. Go felt very unnatural to me. Java with its web frameworks felt too convoluted (which is fine considering the scale at which it worked). Dart is good at what it does, but sadly has an evil company behind it.

JavaScript :rofl:


P.S. Rust :crab:


Java! I’ve been using it since late 90s (version 1.2)

I am self taught software developer, I don’t write applications as a career all for personal projects or for a rescue I volunteer at, with that said the programming languages I have used mostly would be Java, HTML, Javascript, CSS, SQL, Python, and C.

I learned Java first and honestly still learning, but I think its been an amazing language. It’s my usual go-to language but I feel that is because I am just so familiar with it and comfortable with it. When I decided to write a web application for a rescue management system for the husky rescue I volunteered at was such a interesting and learning experience that I will never forget. With that project alone it I also honed my skills in not only Java but also HTML (JSP), CSS, HTML, as well as developed a lot of skill in SQL.

Python is probably the next language that I enjoy working in the most, I mainly used it for projects interfacing micro controllers like Arduino and Raspberry Pi’s with computers. I now have expanded into just using it to get random things done in my professional life. Python is one of those languages that is easy to learn and can be surprisingly powerful when needed. Currently trying to learn the Django framework to create a robust web application.

Finally C, which to me is the grandfather to so many languages, just my opinion. It is also surprisingly easy to learn but when it comes to using chars or bytes variables I do get a little confused. My experience with C though has been very limited to some basic command line applications and use in Arduino where most of my experience comes from with C.

With computer power these days I don’t really understand when people call a programming language “slow”, the computing power more than makes up for garbage collection or buffer overwrites that most languages tend to perform well on. This is however just a personal opinion and again limited to my experiences. I run my own servers to host the applications I have written, I am server administrator professionally so maybe I tend to compensate the servers for the lack of features in a particular programming language. I just think it is very subjective opinion based on experiences of the individual. Hot take I know. LOL

I prefer old school approaches to software development, I am not all about frameworks and all that new technology. Not that it doesn’t have its place in technology, personally I prefer to write code from scratch and that way I know if there is a bug somewhere in my software and not in the “framework” that I then have to code around.

1 Like

The main takeaway this set of opinions inspires in me is that the view of programming languages is very much influenced by WHEN your personal programming journey began! And, perhaps, by the platform on which programming takes place.

For example, assembly and its place to me depended more on the platform than its general utility otherwise… I learned it first on 6502 (or 6510 etc) and its main use for me was on 680x0 family chips. I used it to write a multi-user BBS system on the Amiga - with tiny, fast code snippetscalled as needed from each OS-managed instance as required (such as an editor for messages etc.). The same timeline was less friendly for assembly if you were stuck with Intel chips to tackle! (see little-endian v big-endian, segmented memory etc etc).

C is an excellent language, but required the programmer to pay attention almost as much as assembly - strictly practical only for the young (which I used to be).

Visual Basic I feel was given a bad rap - up to version 6 it was a neat and capable RAD environment (Rapid App Devel) - especially because it accepted C code into itself where useful for speed. Once it went to .net, though - downhill fast.

Other good languages back then were Pascal (including Turbo Pascal) Modula2 (including Delphi) and so on. The worst loss was the unthinking prejudice aganst BASIC in all forms. If someone had released a modern implementation and called it "Oxide’, say, instead of BASIC it would have taken the world by storm. MUCH more useful than Python! :duck: Those with some interest in an easy way to accomplish things should maybe take a look at BASCOM.

As for bash - it is surprisingly capable (especially with appropriate addons like YAD) - but a less coherent mashup is difficult to imagine.

OK - there’s my opinions - load your skeet guns and see if you can shoot 'em down!


Yeah, I’m not that old. :rofl:

Although we did learn Pascal when I was in high school, it was so ancient and outdated by then, I just laughed at my teacher when she was explaining bubble sort. I showed her my implementation of quick sort in C with dynamic arrays and she was like: “okay, you don’t have to pay attention to the class, do your own thing, just don’t disturb me”.

I did have a :parrot: version of Borland Delphi, but it sucked terribly, I couldn’t get into it. Borland C++ Builder version 1.0 was okay, I used that when I was junior at college, but the later versions were crap, so I stuck to the old version for as long as I could.

I don’t necessarily agree with that. I was programming for as long as I remember. I learnt letters on the computer (including an old IBM mainframe my dad had at work). My first “programming language” was MS-DOS batch, when I was maybe 5 years old. Next was FCL (Freescape Command Language) with the 3D Construction Kit on the Amiga (I think I was 8 or 9 when I really got into that):


And then C, first on the Amiga (I think I was 10 or so) and later on my own 386 (using Borland Turbo C) – my dad taught me the basics of it. There was also Qbasic on MS-DOS, but I didn’t like that. Never got into Turbo Pascal. And then in my early teens I did the complete K&R book, with all the exercises.

Then, at the university, it was all FORTRAN for several years, though I did personal projects in C++, and I also learnt HTML, CSS, and JavaScript.

No, not really. My first serious encounter with Assembly was just last year, on the x86-64 platform on Linux. You’re never too old to learn a programming language. I decided it was time to get good at low level stuff, as I was doing some embedded stuff (that didn’t require any Assembly :rofl:), so I picked up a book about Assembly and started doing the exercises. I picked x86-64 instead of ARM, because it’s what my desktop is running and is the most convenient, figuring once I get good at that, switching to a different platform won’t be too difficult. Previous to that, I did experiment with Assembly on the Motorola MC68000 (on my TI-92 calculator) a long time ago in high school, but I gave up after a couple of hours, as it wasn’t fun for me and I didn’t have an interesting project to attempt.

Also, I got into Bash scripting just a couple of years ago (I think it was 2018), when I stopped using Buntu and switched to Manjaro. I was using Buntu for about a decade and never wrote a single Bash script. :man_facepalming:

1 Like

My first program was in vb .net :sweat_smile: I know, i know … I was young at that time and building GUI was so easy with it.

I’ve really started programming with java when i was working on a emulator for hosting private server. So many good memories of the lib of Apache mina because its was so good for my need: multiple game servers and one realm server (login, game server selection). In that period, some tooling was also made in c#. I don’t really like c# but that can do the job.

For now, Rust is my favorite language. The tooling is pretty good. Cargo is so nice that i don’t want to go back to maven or other sh*t like that. Lots of good libs, like Leptos or Ratatui. For the little interaction i have with it, the community seems rather pedagogical. The system of documentation (docs.rs) is so good.

This week, i’ve started to play with Vlang. To soon to give my opinion but for the moment, i like it.

PS: Since some of you talk of assembly, just discovered https://github.com/videolan/dav1d. Its art at this point.

Mainly PHP, HTML, CSS and a bit of java script, MySQL and python. And bash as well but that is very minor
C++ once in a project with my friend (we made a traffic light controller for pedestrians)
Learned from scratch (with the help of a good friend) with no background in programing whatsoever.

That was sort of the point - that you AREN’T that old :grin: I stand by my point that one is influenced by what you actually achieve something with, especially when starting out. My actual first ‘success’ was an accounting program (!) that I wrote to support my trucking business (1 semi + 1 pickup on furniture removals) to run on my portable SX-64 (a C64, screen + floppy + keyboard in a single case) - so I still have some good feelings about BASIC as a result - reinforced by my first game in assembly and assorted projects in BASIC, including another BBS (def not multi-line! would have been overwhelmed by more than 1200 bps!) which I later compiled and ‘form fillers’ for local doctors etc.

Delphi was a bit flaky at times, and didn’t make the splash I had hoped for - as it came the closest to Modula2 - which was the most sensible language on offer at the time. Have you ever worked with Turing as a language? Now that was a pain to look at bubble sorts!

Anyway - at a minimum this brings back memories - some of them good! :grin:

Edit: added in a pic!


I’m pretty sure C is older than Modula2, therefore it was definitely not the most sensible language on offer during its time. :rofl:

By the way, if you miss Pascal and want to program in a modern, Linux-centric, Delphi-like environment, there is Lazarus, which has quite an active community. It’s also Free Software.

Now now - the time I refer to was after Modula2 showed up - and I contend it had C beat in a few ways… although there wasn’t anything that C couldn’t do, of course. I remember back when K&R actually stretched my understanding of algorithms a bit :grin:

There is also an equivalent for VB, but the projects I have recently can be covered with C, or even bash - IF I manage to stay focused that long. I think the last thing I did was an image ‘finder/display’ for my conky music section, and that required C because bash kept ‘interpreting’ too often!

My point exactly. Everything can be covered with C, so all other languages are just syntactic sugar, often too sweet for my taste. :rofl:

One of the first programming languages I learned in university was APL (“A Programming Language”). I wouldn’t call it my favorite language, but it’s certainly a lot of fun.

Lines of code are read right to left; the syntax involves around a hundred non-alphanumeric symbols (and a unique keyboard); and its central datatype is a multidimensional array (of which scalars and vectors are special cases).

The syntax is very concise, allowing the programmer to represent a complex algorithm with a small number of characters, sometimes with a single line of code. Here are some examples:

Example 1

Consider this code:


It calculates and returns 6! (“6 factorial”), which is the product of the first six positive integers:


To understand the code, start at the right end of the line. This code


generates a 6-element vector comprised of the integers from 1 to 6:

	1 2 3 4 5 6

Reading now to the left, this code


generates a scalar value by multiplying together all of the elements in our vector:

Example 2

More simply in Example 1, we could have used APL’s built-in factorial operator to arrive at the same result:



Factorial is an example of a monadic operator, because it operates on only a single operand, in this case the scalar value 6.

We should read our code from right to left: We begin with 6 and then, reading to the left, we apply the factorial operator. So we write !6 instead of 6!.

By the way, the plus operator is said to be dyadic rather than monadic, because it operates on two operands:

3 + 4

Example 3

Consider this code:


It returns the number of 4s that come up after 10,000 random throws of a 6-sided die. For example, I just got this result:


To understand the code, start as always at the right end of the line. This code


returns a vector comprised of 10,000 elements of the scalar value 6:

	6 6 6 6 6 6 6 6 6 6 ...

Continuing to read the line from right the left, this code


applies the monadic randomize operator to each of those 10,000 elements, so each value is now a random integer from 1 to 6:

	3 4 2 2 1 3 6 4 3 2 ...

Continuing to read the line to the left, this code


applies the dyadic equal operator to compare the scalar value 4 with each of the 10,000 elements in our vector, returning for each element either a 1 (equal) or 0 (not equal):

	0 1 0 0 0 0 0 1 0 0 ...

Finally, we arrive at the left end of the line, where this code


sums the 10,000 1s and 0s in our vector, returning a scalar value which is the count of 4s we rolled altogether:

Example 4

Consider this code:


It returns a vector with the count of 1s, 2s, 3s, 4s, 5s and 6s achieved, respectively, after 10,000 random throws of a 6-sided die. For example, I just got this result:

	1732 1673 1689 1574 1644 1688

To understand the code, start again at the right end of the line. We have already seen in Example 3 that this code


generates a vector with 10,000 random integers from 1 to 6:

	3 5 1 4 1 2 5 4 1 4 ...

Still reading to the left, we see a dyadic operation between two vector operands.


The operand on the right is our vector of 10,000 random integers, while the operand on the left is a 6-element vector comprised of the integers 1 to 6, as we saw in Example 1:


	1 2 3 4 5 6

The result of the dyadic operation is a 2-dimensional matrix which represents the outer product of the vectors when the equals operator is applied to pairs of values from the two vectors:

	0 0 0 0 0 0 0 0 0 0 ...
	0 0 0 1 0 0 0 0 0 0 ...
	0 0 0 0 0 0 1 0 0 0 ...
	0 1 1 0 0 1 0 1 1 1 ...
	1 0 0 0 0 0 0 0 0 0 ...
	0 0 0 0 1 0 0 0 0 0 ...

So, for example, the fourth row contains 10,000 values of 1 or 0, depending on whether the corresponding value in our array of random integers is equal to 4.

Finally, we arrive at the left end of the line, where this code


returns a vector of six elements, each the sum of values in a different row of the matrix:

	1732 1673 1689 1574 1644 1688
Example 5

As a sanity check, we can sum the elements of the vector result of Example 4:



If our code in Example 4 is right, the result here should always be 10,000.

My first paying job, while I was a university student, that applied what I had learned in university involved APL programming on the IBM 5110 desktop computer (a precursor to the IBM PC):

Notice the special APL symbols on the keyboard keys.

You can try for yourself, interactively, some APL programming here:



There are so many programming languages.
Here are some of my favorites:


Basic on a Ti/994a was where I first learned and then Adam-Script on a Coleco Adam which, strangely enough, was very similar to Apple script on an Apple IIe. Formally learned on Fortran, then Pascal and C. (Yeah, I’m old.)

Current favorite languages:
Rust (Still learning)

Agree with a previous poster on the Go compiler concerns, hence my conversion to Rust.