this post was submitted on 03 Aug 2023
146 points (97.4% liked)
Asklemmy
43945 readers
985 users here now
A loosely moderated place to ask open-ended questions
Search asklemmy ๐
If your post meets the following criteria, it's welcome here!
- Open-ended question
- Not offensive: at this point, we do not have the bandwidth to moderate overtly political discussions. Assume best intent and be excellent to each other.
- Not regarding using or support for Lemmy: context, see the list of support communities and tools for finding communities below
- Not ad nauseam inducing: please make sure it is a question that would be new to most members
- An actual topic of discussion
Looking for support?
Looking for a community?
- Lemmyverse: community search
- sub.rehab: maps old subreddits to fediverse options, marks official as such
- !lemmy411@lemmy.ca: a community for finding communities
~Icon~ ~by~ ~@Double_A@discuss.tchncs.de~
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
I've used over a dozen languages, from BASIC to Haskell to C++.
If I were starting a new project today, it would probably be in Go, or in Python with static typing using mypy. Unless the project was itself a language or something language-like, in which case I couldn't stay away from Haskell and monadic parsing.
If I were looking to learn a language that I haven't worked in before, it would probably be Rust or Clojure.
Go is really fast, works well with "the Unix philosophy" (although maybe I should say "the Plan9 philosophy"), and has pretty excellent tooling.
Python is everywhere and there are libraries for everything. However, Hindley-Milner has been part of the CS canon for my entire life and there is zero excuse for a language not having type inference today.
Haskell gives access to the best goddamn parser library ever: Parsec. Screw the category theory; combinators are the Correct formalism for parsers.
(If you're still reading this: Read Graham Hutton's Programming in Haskell, second edition.)
(I made the mistake in my last job of getting 80% of the way into writing a new tool โ a "configuration as code" utility for configuring load balancers โ before I realized that it was, in fact, a compiler and would have been much cleaner if architected as a compiler instead of as a glorified ETL tool.)
Rust is what the Lemmy backend is written in, and I have terrible ideas of trying to stick my fingers in there and hope they're not bitten off.
Clojure is what a few of the most productive programmers I know work in, so there must be something good in there. Also, it's been almost 20 years since I last used a Lisp for serious work.