DEV Community

Discussion on: What library/language/tool wowed you with its developer experience?

Collapse
 
not_jffrydsr profile image
@nobody

. . . I agree 💯 Ruby & Elm merit all the praise for their unique grammars and DeveloperX. Personally, what's reigned supreme (after 3yrs (to mere competency) of steep walling) is the Clojure/ClojureScript stack.

For concision's sake I'll share 2 reasonings why still Clojure most wows me...

  1. Unique Homoiconic syntax - Clojure, most evidently, is a LISP (a programming language consisting grammatically of lists). As a LISP, Clojure code is substantively identical to Clojure data. This is possible thanks to Prefix (Polish) Notation where valid expressions follow the order: (( <Functor> < & Args> ). In addition, Clojure uses unique enclosing characters for various data types [ ] <- vector, { } <- map, ( ) <- list, this adds readability and simplifies conventions.

  2. Genuine Metaprogramming - many languages incrementally added Reflection & Metaclass
    protocols/interfaces that allow programmatic changes to source code attributes during runtime( Python, Ruby, Haskell, etc...). LISPs like Clojure or Racket enjoy an abstract syntax tree modeled in source and evaluation, allowing code generation with macros that relates to evaluation 1-to-1. I think features like this need to be a core aspect of a language spec, not an after thought like most other infix-notation languages.

Collapse
 
ssimontis profile image
Scott Simontis

I really want to like Elm but I am very disappointed where the creator has chosen to take the language. It really bothers me how restrictive they have made the package system and how only he and a select few are given the freedom to work with native code.

I understand his ideology, but at the same time, it seems pretty arrogant to not trust your user base to code things correctly. The reality is that you are going to have to interop with JavaScript at some point, because the entire world doesn't run on Elm, and all he's accomplished is making that experience even more painful.