I'm currently a frontend JS/React engineer but planning to retire in one or two years (FIRE) and don't plan to stop coding, only not doing it for money. My language of choice will probably be Clojure.
Python is so cool and old (1991) or let's say "battle-tested". I really like minimalistic languages like C (1972) and Python.
It seems like minimalistic languages have higher chances of survival.
Mostly I wonder how much I would continue to program. Something I struggle with now is thinking of interesting projects to work on with the free time I have already. Probably I would choose Clojure(Script) because that seems to be where I feel the most productive. Maybe Janet, but I've struggled to be productive with Janet for things like webapps. I might spend more time tinkering with embedded using Forth. Over the last year I've slowly built out small pieces of Forth code on the ATMega328 for controlling a small robot (writing snippets code to control an ultrasonic distance sensor, motor controller, etc). One day I'd like to tie all of that together but it is a very time consuming process.
What I would really want to focus on if money were not an issue is photography. Before the pandemic I had planned to build a darkroom in my basement. It seemed non-essential so I've put it on hold. When things start to go back to normal I won't feel guilty about hiring contractors to come to my house to help me indulge my hobby. Darkroom work is very time consuming but also very satisfying. Meditative even. You need a proper space for it and most importantly you need lots and lots of time.
I would also spend more time exercising, or at least as much time as I do now. Working from home has allowed me to replaced the time I would have spent commuting with getting more sleep and exercising 3-5 days (usually 5) a week. At the moment I think I am the strongest I've ever been. Not as fit as I was in my teens and early 20s, but definitely stronger and more disciplined. Anyway, what's the point in having free time to indulge yourself if you are too frail? I'd like to keep my momentum going and hopefully remain physically capable when I'm old.
I think I would want to get out of the house more. Go talk to people. Take pictures of people. Write about it. This was something I was passionate about long before coding became part of my life. Coding pays the bills and gives me money to spare so I can at least do some of this. I think it would be hard to eek out a living on something like this alone, but who knows?
Whatever it is, it needs to be simple (in the way C is simple) and modern. Currently Zig fits that combo technically. Other features that are nice to have:
- REPL or some mechanism that's close enough (zig has --watch which is not close enough, but shows some promise perhaps). Python is ideal. Common Lisp traditionally too, but it's a bit clunky in other ways.
- resource efficiency. Zig's pretty ideal for this.
- superb package management. Rust's Cargo is the shining example. Zig has no package management yet.
- if async is a thing, it needs to be a core thing that's supported by everyone. Zig's looking good here.
Some features that are hip now that I don't care that much:
- extreme safety when it costs fluidity and fun.
- OO features
- advanced PL features
- gathering all PL features just for the sake of having them
These are my opinions today. Next week, I might be in the mood for "Why were any languages invented after Common Lisp? Seems like a huge waste." sigh Sometimes I wish I knew only a single programming language.
Then for each language I created categories (7 in total):
- Job Results from Indeed Japan
- Release Year
- Salary in Yen
- Stack Overflow's Dreaded Languages
- Stack Overflow's Loved Languages
- Stack Overflow's Wanted Languages
- Tiobe Rank
After that, I first discarded 63 % of the suboptimal languages from each category (37 % rule). And selected (roughly) 37 % of the most optimal languages from each category.
Finally, I gave a point for the top 37 % languages in each category, and it culminated to:
1. Python
2. JavaScript
3. Rust & TypeScript
4. C
IOW: the 37 % rule tells me that these programming languages are decent.
Python, JavaScript/TypeScript and C have a solidified job market already. (More than 9000 results; ignoring the outlier TS. A minimum salary of 800000 yen.)
The only outlier with the lowest result was Rust. (Kotlin was the second lowest, and Swift the 3rd lowest.)
But the heavy Stack Overflow weighing (42 %) brought Rust into the top 4.
So the answer is: Rust. (The language that I would like to use in a professional setting, but can't.)
I think the spirit of the question is "what if you didn't have to check other people's opinion and the job market to pick a language?", it's kind of the opposite of what you've done here.
Well not quite. I based it on the Stack Overflow developer surveys as well (Tiobe too). Tiobe is basically a measure for how often a language is searched for, if I am not mistaking.
Rust for example has a small market share (based on the Indeed Japan results). I still want to use Rust (even if I don't get to use it in a professional setting).
Though, I understand your sentiment, but I guess it's a "technically I am right situation". Or what do you think?
Tl;dr: I picked Rust. :)
Edit: Though on a second thought: you are actually right! :) Sorry OP!
Probably still C++. Sure, it's got plenty of warts and pitfalls, but at this point I'm sufficiently used to the ones in the subset that I work in that I can just get on with the domain problem and not really have to think too much about the language.
Probably depends more on the kinds of projects I’m doing in this hypothetical semi retirement hobby lifestyle :). If I’m playing with data science stuff, Python. If I’m in a large codebase, something statically typed. If I just want to learn languages, Haskell? Forth?
Ada, Erlang, maybe something like D. I'd probably find time to learn about all that category theory / lambda calculus stuff and use some more pure functional stuff.
I write Go at work I thought I would use it for a recent side project to avoid stumbling around another language, but I just couldn’t do it. Testing err != nil branches is excruciating. I have no will to do it except for money, and low test coverage makes me feel too dirty to be happy with my work if I skip it.
i find proper error handling to be just as interesting as coding the actual algorithm, especially server-side. debugging big distributed systems often boils down to how errors are handled. throwing an exception loses too much context and feels like cheating.
It’s interesting when there’s some way to recover from the error, but the vast majority of the time I’m just wrapping it and passing it up to the caller.
It also depends somewhat on how many potentially-error-returning calls are involved in an operation. Go’s verbosity means there can be 7+ different error return points in what would be a single statement in another language (HTTP request, subprocess, etc). I sometimes like the fact that I have to handle error for the operation generally, but not at that level of detail.
If I did not need the money I would never code again in my life, besides some automation and web scraping to archive stuff I want a local copy of. Life is simpler and happier for me when I minimise computer time.
Web development was gradually overcomplicated the past 15 years. There is no joy in it, yet it's where the jobs are. I envy people who are doing it in their spare time, but for me it's a special kind of hell. Low level and game dev is enjoyable but hard and demanding, not because it is bloated with shit we don't need, but due to its nature and restrictions.
I like minimalism in my own life, not the plan9 kind of autistic 'suckless' kind but the Zen Buddhist letting go variety. That's not what we have now in computer programming.
That sentiment is shared by a significant amount of people[1][2][3][4], it seems.
I am also sympathetic to minimalism in life (owning essentials only) and in many of my (programming) projects (single-header libraries[5], minimal dependencies).
I think I would be content with C, Bash, Python and SDL alone, if I wasn't so dependent on the need to "exchange my time for money". (And perhaps Rust as well.)