this post was submitted on 03 Aug 2023
143 points (97.4% liked)

Asklemmy

43946 readers
532 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!

  1. Open-ended question
  2. 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.
  3. Not regarding using or support for Lemmy: context, see the list of support communities and tools for finding communities below
  4. Not ad nauseam inducing: please make sure it is a question that would be new to most members
  5. An actual topic of discussion

Looking for support?

Looking for a community?

~Icon~ ~by~ ~@Double_[email protected]~

founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[โ€“] [email protected] 5 points 1 year ago* (last edited 1 year ago)

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.