butt___hugger's comments

butt___hugger | 3 years ago | on: I still Lisp (2021)

SBCL, probably. Scheme would be a close second depending on the implementation (Chicken, Gerbil or other compile-to-C impls.) Racket and Clojure are closer in performance to scripting languages like Python.

butt___hugger | 3 years ago | on: Ask HN: How did you master the art of programming?

Reading that book a million times won't make you a master programmer. Reading it a few times will make you an intermediate (i.e. not a novice) programmer. But you become a master by solving many different problems many different ways, as opposed to solving the same problem the same way over and over.

I consider myself a master programmer because I have seen so many problems and solutions that there isn't a 1:1 connection between them. A diversity of problems and solutions means that you will see what underlying principles are common or contrasted between each approach. Then you can apply those basic axioms to make your own algorithms that are custom-suited to each problem.

I think a master programmer should have knowledge of the following areas:

- Something like Python (primarily dynamic types, primarily imperative)

- Something like Haskell (static types, purely functional)

- Something like Scheme (dynamic types, minimalism, lambda calculus)

- Something like Rust (static types, imperative, lower-level)

- Something like Prolog (logic programming, constraint-based)

- Something like Forth (stack and concatenative programming)

I would compare this to learning to be a chef. You can learn a lot of recipes from the best cookbook, but that just means you can cook a meal. To be an expert, you understand each component of the recipe and can mix-and-match, create substitutions, to create exactly what you want.

page 1