Java was the first real language I learned, and it's alright. I know it's not thought of super highly in the Computer Science world, but there's a reason it's so popular and has been so influential. It has a lot of the functionality of the other C-descended languages, with a lot of the headaches of C and even C++. If you're doing something that doesn't require efficiency, there's really no harm in using Java or Python. There is benefit to computer programming being accessible, and trying to get everyone to make basic projects in C or whatever CS nerds would want is just not feasible. Solid 7/10, maybe.
C++ is the nice middle ground for me when doing work. Efficient and clean enough, but not as much of a headache as the ancient-feeling C. When I get too far into OOP and all that abstracted shit, base C feels almost closer to Assembly than Java. I like a lot of the weird OOP and abstractions that C++ includes, but sometimes it's a bit too much to wrap your head around. Sometimes going back to just C is pleasant. Still the same pointer pains as base C, too, but less of them. A good 8/10.
Finally, for the C family of languages, we have the originator itself. C is harder to use than C++, for sure, but it's usually used as the metric for what makes an efficient language. There's a reason it's used (or a derivative of it is used) for pretty much everything that's modern and low level. The lack of modern amenities makes me not really use it for anything where I have much of a choice of language, but it's still important and I respect it. It is nice to get out of OOP land once in a while, too. For my use, 7/10.
Python likely needs no introduction, but I really don't use it very often. For very small little projects I want to do, it's pretty easy to pick up and put down quickly. I often have to remind myself of the syntax (I've looked up "Python for each loop" a few too many times), but that's just because of my C family bias. If you want to do anything with complex data structures or data processing, or even some API, it's simple to just look up some preexisting library and use that. The well-known downside is that all its syntactical sugar comes with a severe runtime cost (see my Java review above). I highly recommend it for a general audience, but for me, 7/10.
Prolog (and the next language on this list) definitely does need an introduction. Prolog is a logical programming language. If you know what those are, you probably get what Prolog is. It's basically a list of logical phrases (called Horn clauses), which can be either rules or facts. A rule is something like 'if you are a cat, you are an animal'. A fact is just 'a cat is an animal'. Basically, using a bunch of logical rules, you can query your list of rules and find answers remarkably quickly. It's a very odd kind of language, but I enjoy (rarely) using it. 7/10, in a weird way.
Racket is another lesser known language, but it's based on Lisp, which at least some people are aware of. I won't get too much into how Racket works here, but I'll say it makes certain recursive tasks very pleasant to write. Other than that, though, I find the absolutely ridiculous amount of parentheses to be a bit much. For me, 4/10.
I've used R for some data visualizations. It's really enjoyable to use. It almost feels more like a toy than anything else, if you have some data to use it with. Very pleasant, at least with the "tidyverse" package installed. Base R seems a little harder to get used to.
I like RISC-V as a system. Compared to other Assembly languages I've seen, it's much nicer and more consistent. I like its approach of using a low amount of instructions, as that really helps with writeability, which is really where most super low level languages suffer the most (other than readability, which is also not bad with so few instructions to understand).
The first language I ever used. It's originally from MS-DOS 6, and I used Notepad as my IDE. I wrote really long, unwieldy programs and it got me into programming. It also made it easier to learn RISC-V later in life, oddly enough, because I already felt used to the jumps (like j
or jal
) with the much-used goto
in Batch.
I left out domain specific languages that I don't think count as fully complete ones, like HTML and CSS and whatnot. Hopefully I'll learn more languages in the near future. Have a recommendation or a rebuttal to one of my reviews? Email me about it at laymanpang (at) mailfence (dot) com
.