I spent nearly 6-7 years developing control systems applications in LabVIEW. While I loved working in LabVIEW, I don’t wish LabVIEW was more popular, but I would love to see a graphical programming language take off. The dataflow paradigm is really interesting to work with.
Java.
(ducks and runs)
Common Lisp. I really enjoy the interactive development experience and the language itself (and macros). I feel though that the ecosystem isn’t very active and so existing libraries are often unmaintained which is a shame.
Elixir. It was strange at first, but once I got the hang of it I fell in love. It’s a really well thought out language with just the right amount of features, has surprisingly good libraries, and is just really versatile.
brainfuck
Pascal
Why?
It was my first.
Javascript
With proper context I’d also say JS because I would hope popularity would lead to improvement. I like writing JS but hate building, troubleshooting, and installing it.
good one :'D
For backend development, you mean? It’s essentially required for front end development (granted you can use a language that compiles into Javascript… also is activeX still a thing or have we killed it off).
Didn’t think I’d have to add /s 😅
These days, WASM is also an option. I’ve written an SPA with HTML+CSS+Rust. The Rust gets compiled to WASM. There’s a bit of JS under the hood to load the WASM and access the DOM, but that can be generated for you by a framework, like Leptos.
Kotlin. I know it’s becoming the thing for Android but I’d love to see it more on desktop and servers. It’s a fantastic language.
The fact that Kotlin doesn’t have an official open source LSP in this day and age, in addition to related tooling, forcing you into a single not particularly open IDE ecosystem, and the fact that the developer company straight up said its purpose is to drive up Intellij sales, makes me very apprehensive about it… good syntax or otherwise. Even Java doesn’t come with as much of a vendor lock-in, and I woudn’t wanna touch that either.
All fair points. I feel like they’re stuck in the Sun / Microsoft trap of trying to monetize a language and it holds them/it back.
And to add - Java has zero vendor lock-in these days. OpenJDK is the reference implementation and is open/free.
Programming languages shouldn’t be monetised
Yea I wasn’t a fan of it initially coming from C++ and C# but it is growing on me. There’s a lot of neat concepts. I just wish it’d allow me to put curly braces on the next line.
Shout-out to the Flutter-Dart stack that Google made. Neither are outstanding, but Flutter compiles to native code for every platform including mobile and web. This is way more convenient than React Native (which funny enough doesn’t really work on web). Dart is a much saner lang than JS and the UI framework is much saner than React. Dependency management is fast and easy without NPM and webpack trash. So for my recent project I embedded a flutter app inside a static website, and can also have it run native on desktop or wherever. The only real downsides are an extra 1.5mb load for the dart runtime stuff, and some need to fiddle with platform specific issues and configs. Upside is I need neither xcode nor node
Not quite what you’re asking for, but I wish Erlang had gotten popular before Java took off. I think that could have massively changed the course of “mainstream” languages. Maybe the JVM itself would have been BEAM-inspired. Heck, in an ideal world, the Netscape corporation and Brendan Eich would have created something based on Erlang/BEAM to ship with Navigator, instead of inventing JavaScript.
This but elixir
It’s basically erlang but nice
Or Gleam!
I took a glance at it a while back, and it looks like Elixir + Go. Meh. Elixir could use gradual typing (and it’s coming along there), but turning to Go isn’t the answer.
Elixir is running on the BEAM. It wasn’t invented until 2012, though, so it couldn’t have become popular in time to influence the JVM or Netscape.
Yes, I’m aware, I’m more wishing it was elixir rather than saying it was actually possible.
in an ideal world, the Netscape corporation and Brendan Eich would have created something based on Erlang/BEAM to ship with Navigator, instead of inventing JavaScript.
I completely agree that in an ideal world JavaScript wouldn’t exist. 😀
BEAMScript!
elixer?
But in the browser. My complaint with JavaScript is that it was effectively the only choice for in-browser logic up until WebAssembly was stabilized, and even now it requires JS glue code.
Oh, I’m sure someone is going to hate me for this, but I really liked Lua when I was making simple games in Love2D. I think it’s a shame how there’s basically no applications for Lua outside of game development and modding.
Lua is used as built-in language in more and more apps. I use it on a daily basis for configuring and extending neovim
dont forget scripting/configuring! i love lua despite its feature we dont mention
lua is a really cute and surprisingly capable language! it’s how I got my start, and it’s one of the easiest languages I’ve ever played with. it would’ve been a good pick for web, I think. probably just needed to be fleshed out more.
Well configuring NeoVim is basically game development / modding. But yeah it’s built as an embedded mostly single thread thing so. I also used it for AwesomeWM many years ago, whole thing was lua. I do think it’s one of the most elegant languages ever designed, with it’s very simple table/metatable mechanics
Presenting: an excerpt from my lua windows management script:
-- Exists because lua doesn't have a round function. WAT?! function round(num) return math.floor(num + 0.5) end
Yeah, not a fan.
Related: There is an article on LWN called Lua and Python, which is mostly about the approach of the two languages WRT being “batteries included” or not.
I think Lua being a bit barebones is 100% fine… if you just pair it with a good helper library, or set of libraries with a coherent API, that allows it to thrive. Then you can either use the framework library or not, depending on whether your project requires the extras, or can do without.
As a parallel, I’ve been doing C++ development for almost two decades, and I cannot imagine doing anything non-trivial without Qt. For example, Qt has a debug framework that pretty prints automatically most containers, and adds the newline also automatically. Also, QString is an actual string type, whereas std::string is more like QByteArray. It’s functionality that it’s essential for me (and it’s just the minimal examples… then Qt has all the GUI functionality, of course, but I use Qt even in console-only programs!).
This is surely opinionated on my side, and most C++ devs don’t see it this way, but my point is that a language with a “core experience” that it’s lackluster to you should not be a bad thing if the language is capable enough to provide an ecosystem with a good 3rd party library that adds exactly what you want. In the Lua ecosystem that maybe it’s Penlight.
But I totally get your point. Penlight doesn’t even seem to have a math library, so I found no round implementation there. This can be not a problem for some, but deal breaking for others.
I’ve been writing Lua off and on for probably close to a decade, and I can’t remember the lack of a
round
function being an issue. I may have needed it at some point, but it’s not exactly a complicated function to write up in a minute.To me, the biggest appeal of Lua is actually the lack of an overbearing standard library. It has just enough to be usable as a scripting language within a larger application, and the larger application can always include its own helper library that gets loaded into the interpreter automatically on initialization. Feature-wise, there is enough to define your own OOP helpers (but no language built-in specific OOP stuff beyond metatables basically), there is enough to build your own async/await and generators using coroutines, etc.
Not having a huge built-in standard lib comes with the benefit of not needing to distribute a huge standard lib with your larger application.
I loved using PLUA on the Palm Pilot back in the day
I don’t hate you, I just hate your one-indexed table-shaped horror language ;P
But actually would anyone really hate someone for liking Lua? I hope not. That’s weird, even as someone who finds the language kinda obnoxious. Maybe I’m reading too much into the “hate” part and it wasn’t meant so severely 😅
C#.
It’s a pleasure to work with, cross platform, superb documentation, great support and a robust ecosystem. The only complaint people ever seem to have is moaning about Microsoft.
Fucking Microsoft, with their fully featured toolsets, libraries for everything, fantastic IDE, second fantastic IDE, and cloud infrastructure that actually delivers on the promise of cloud, and isn’t just “bare metal bullshit in the sky”. Hate those fucking pricks.
Is VS for C# actually good or is it just that there are no alternatives?
Rider is an alternative that’s in my experience better
If you mean Visual Studio IDE (not VS Code), it’s actually the most robust fully featured IDE I’ve used. Using other IDEs, including other frameworks or languages, don’t come as close.
Easy management for external packages, easy build and project dependency mappings, easy unit test suites, etc. A lot of extensions work great out of the box (DB integrations, code coverage tools, security/vulnerability tools, benchmark testing, etc.).
Seeing as a lot of C#/.NET things are open source now, I wish that they would also work on an IDE for Mac and Linux. They’re about to retire the Mac preview VS, which didn’t compare to the Windows counterpart, but still usable.
Ye an closed source debuger and non free extension for vscode, that developer kit thing that is not free to use if more then 5 people
And PowerShell, as an addendum
I despise powershell. But I have no actual reason for that opinion. … I’m just familiar with Bash so anything else looks like too much effort.
PowerShell 5 and up use BASH aliases out of the box so your hate makes less sense nowadays.
Oh I don’t think I made it clear enough. I know full well my opinion has no merit. I legit know nothing about Powershell, other than it has a uniquely blue background.
Not hating, but you should really try it out before forming an opinion. PowerShell Core is multi platform and if you value readable scripts at all, PowerShell is heads and shoulders over bash. I know all of us admins are proud of our bash scripts, but bash reads like hieroglyphics to anyone who didn’t write it. PowerShell has noun verb syntax and just heaps of syntax sugar. Scripts, even more than code imo, needs that readability for fast debugging and maintenance.
But hey, opinions on languages and such are highly, highly subjective. No skin off my nose if you just don’t like it at all.
You’re completely right. The deeper I get into bash the more absurd it is. Trying to iterate through text delimited by line breaks is ridiculously complex. And the sheer number of options for find and replace style operations is confusing sed, awk, printf, why?!
Oh and that’s somewhere where PowerShell really shines! Check out the examples on the docs page for some examples and see how easy they are to read and write compared to sed/awk/etc.
I also think PowerShell being object-based instead of string-based gives it flexibility for those of us who have experience with object-oriented programming languages. Being able to ship around objects to functions, splatting, etc are huge value adds for me personally.
Again though, sooooo subjective! Some people will legit hate that it’s object-based and hate the syntax. The world supports all kinds of developers and we’re all making cool stuff, so it’s all good!
PowerShell is heads and shoulders over bash
Sure… but that’s a low bar. Bash is basically the worst shell of them all (if you exclude the ones that are so bad nobody uses them).
I’m a fan of
fish
personally. It’s both concise and feature rich. The fish language isn’t something I’d want to write a complex shell script in, but it’s a thousand times better than bash and if you’re writing something complex then I’d argue any scripting language is the wrong tool for the job. Including Power Shell. You should be using a proper programming language (such as C#).PowerShell is innovative, for sure. But string output/input shells scripting wasn’t broken (unless you use bash) and I’m convinced trying to fix it by replacing simple string input/output with objects was a mistake.
I love OOP. However I also love using existing tools that work well, and none of those tools are designed to be OOP.
You’re right that Bash is among the worst options available, but it is common and what our friend above indicated he had experience with. I think your points are all valid, but I also find that most professional situations don’t offer much choice in the matter anyway. I used PowerShell because it was my company’s standard and there were 10 years of technical debt built around it. I got to know its ins and outs because of that and find some of them neat.
I don’t think anyone should take any of my messages as saying PowerShell is best in class for any particular use cases, but I do enjoy using it. I’m all Python and Golang now anyway 🙃
Personally, I think, it’s dumb, because it’s more verbose than most programming languages. I’m normally even a fan of verbosity, but Powershell just feels like using big words when little words would do.
It’s weird to have something that verbose for using in the shell. I don’t want to use verbose commands when just doing stuff interactively, so I never learn how to really use its features as a concequence. Bash, while it has more footguns, is more readable to me because I’m more familiar with the individual commands. For most programing you spend more time reading it than writing it, but that’s not the case for the shell so there it’s the wrong tradeoff imo.
I found that the tradeoff came in the form of being more explicit, thus requiring fewer comments and less explicit readmes. Developers who normally struggled with naming things well would do better in PowerShell since it kinda “forced” them into the habit and structure. I know fans of Go (myself included) generally like that it takes that concept to the extreme. It fit my needs well at a time when I had a team of juniors to manage and teach.
Overall though, nothing wrong hating that strictness or verbosity! Lots of good options that support the reverse extreme and more moderate ones.
nushell feels like a pretty good in between of the two. I’m still going to use fish tho.
I’ve been a Java developer and even I find powershell obnoxiously verbose. Especially for a friggin shell.
Yeah, my word choice was quite deliberate there, because there’s this other full-fledged programming language, which is also often less verbose than PowerShell, called
Microsoft JavaC#.There is some nuances, which don’t make this quite as hard-cut, but in far too many cases, PowerShell is just an objectively worse choice than C#.
(And I’m not saying that C# is a particularly good choice, but since it can also make use of the .NET APIs, it is particularly easy to argue that it’s better than PowerShell.)
Plus it has a decent web framework in Blazor. I’m not a developer by trade, but I’ve enjoyed it in the context of small, personal projects.
I pretty much only code to mod games, which is 90% C# for the things I’ve modded. Everything about the language, I learned from a Neverwinter Nights guidebook lol
Move to NZ. It’s nearly all c# here.
Yeah, you do have to set the opt out of telemetry for the runtime as the default is opt in…
Is it really unreasonable to gain insight in to how their tooling is used? If it were being used to sell to advertisers I’d agree with you
I prefer opt in, but I guess that’s a dream.
Some info for others: https://learn.microsoft.com/en-us/dotnet/core/tools/telemetry.
Seems odd that ‘dotnet run’ will collect, but ‘dotnet app.dll’ will not.
I personally mind because its microsoft. I don’t like them nor do i trust them. There is stuff i use where i don’t mind the telemetry and i leave it on to help developers. But microsoft is not one of them.
A company that insists on putting “edge” back on my toolbar no matter how many times I remove it is not trustworthy enough to get telemetry.
C# is used by every medium to large French company as an alternative to C++. How is it not popular?
OP didn’t ask for unpopular languages but for languages you want to be more popular.
I also want C# to be more popular, it’s a fantastic language.
Lisp
It solves so many problems new languages have been invented to try and solve, while being simultaneously simpler than most
I dabbled with CLisp a while back, and I loved it – but I’m not sure what problems it solves. Do you mind expanding on that?
Common Lisp “solves” most language-level problems by providing metaprogramming capabilities via lisp-style macros. (Almost) any language feature you would want can be implemented with lisp macros, and many such features already have been. So you don’t have to worry whether or not lisp has “for i in…” loops, or pattern matching, or generics, or virtually anything else, because if it doesn’t, you can write it! Plus if it’s really a good feature somebody has probably already made a library for it (if it’s not already part of the standard).
One of the most extensive examples of this is Coalton, which is an ML-style statically typed EDSL for Common Lisp.
There are metaprogramming features in a few other languages: template haskell, C pre-processors, even macros in Rust or Julia. But these all fall very short of lisp-style macros because those languages are not (truly) homoiconic, which makes the macros awkward to write and integrate into the language. This kind of metaprogramming is rarely employed, and when it is only for heavy duty tasks, and even then is generally discouraged as a last resort/special circumstance. But lisp macros are very easy to write because it’s the same as writing any other piece of lisp code. This results in macros being used often for smaller lightweight abstractions in the same way you write a small function.
The other big pro of lisp is image based development. But that’s not so much solving a problem in other languages as it is simply a feature that they don’t (and pretty much can’t) have.
And all of this is done in a language with less syntactic and semantic primitives than almost any other language, including the other “simple” ones like Python, Ruby, Elixir, etc.
I really enjoy writing clojure lately. the only thing that annoys me is the whole “hosted” thing where you either get a bunch of good clojure-native libraries or all the JS’s npm mess (other clojure hosts are very much non-existent).
Yeah Clojure is like the monkey’s paw of Lisp weenies. It adds many modern day niceties that are lacking in standard Scheme or Common Lisp, but also changes enough things to make it feel very un-lispy. I go back and forth as to whether or not I even consider it Lisp (Richard Stallman doesn’t).
But I do know that I’d rather write Clojure than any other non-lisp language.
I’d also recommend people try ABCL, which is Common Lisp on the JVM , or Parenscript which is Common Lisp that compiles to Javascript.
I love lisp. Well, scheme and less so clojure. I don’t know why. Is it macros? Is it the simplicity? Or is it just nostalgia from learning it during a time in my life.
But I just can’t find a place for it in my life.
It’s not job material, effectively nobody uses it. It doesn’t solve basic problems with ease like Python does.
And because of this, anything I do in it is nothing more than a toy. As soon as i put it down, I have no hope of picking it up or maintaining it in 6,12,24 months later.
A toy I spend 2 weeks in absolute joy, but as soon as life gets in the way it is dead.
I understand the general job market, but what about lisp prevents you from pursuing personal ventures with it?
I’m old, I have other shit to do, and I don’t have the time. If I’m writing code, I’m doing it because there is a problem that needs a solution. Either solving someone else’s ‘problems’ for $$$, or an actual problem at home.
If it’s a short term problem like “reorganising some folders” I’m not going to (re)learn another language. I’m going to smash it out in 30mins with whatever will get the job done the quickest, then get back to doing something more important.
If it’s an ongoing problem, I’m going to solve it in the most sustainable way possible. I might fix the problem now but 100% someone’s going to drop support or change an API in 2 years time and it’ll break. Sure, doing it in Chicken would be fun. But the odds are, I won’t remember half the shit I learned 2 years later. It’ll be unmaintainable. A forever grind of learning, fixing, forgetting.
So without a commercial driver to actively invest in Lisps, there’s no point. It’s not profitable and It doesn’t solve any problems other tools can. Without the freedom youth brings, I don’t have the time to do it “for fun”.
Ada
It has a lot of really nice features for creating data types and has amazing static analysis during compile time.
But all the tooling around it is absolute crap making using the language unbearable and truly awful. If it had better tooling I could see that it would have taken a decent chunk of development away from C and C++
@MajorasMaskForever @CoderSupreme Ada tooling has come a long way. Steps to creating an ada project on linux:
1: curl --proto ‘=https’ -sSf https://www.getada.dev/init.sh | sh
2: alr init --bin myproj
3: cd myproj
4: alr with json #add json support
5: alr edit
6: alr build # when I’m ready to compile
More info at https://alire.ada.dev/ or https://getada.dev