Lush: My favorite small programming language
Scott Locklin reflects on Lush, a historically significant programming language for machine learning, praising its ergonomic design and ease of use, while advocating for its revival amidst the popularity of R and Python.
Read original articleScott Locklin reflects on Lush, a small programming language he once favored, which has historical significance in the development of machine learning algorithms. Initially popular among its creators, including Yann LeCun and Leon Bottou, Lush has faded from mainstream use as other languages like R and Python gained traction. Locklin recently revisited Lush, discovering updates and fixes made by Bottou on its older version. He appreciates Lush for its ergonomic design, self-documenting features, and ease of integrating C libraries, which contrasts sharply with the complexities found in other languages like R. Lush's array handling and object system are highlighted as particularly useful for machine learning tasks. Despite its age, dating back to 1987, Locklin argues that Lush remains a cozy and effective tool for developing algorithms, emphasizing its programmer-centric design. He notes some limitations, such as outdated documentation and minor usability issues, but overall, he advocates for a revival of Lush, suggesting that it could have significantly influenced the machine learning landscape had it not been overshadowed by more popular languages.
- Lush is a small programming language with historical importance in machine learning.
- It features self-documenting capabilities and easy integration with C libraries.
- The language is noted for its ergonomic design and user-friendly object system.
- Locklin suggests that Lush could be revived to better serve modern programming needs.
- The language's decline is attributed to the rise of more popular languages like R and Python.
Related
Why Use Clojure for Machine Learning?
Clojure's functional paradigm benefits machine learning with modular, readable, and predictable code. Leveraging JVM ensures speed and portability. Integration with Java libraries like TensorFlow and PyTorch supports deep learning. Despite being less mature, Clojure shows promise in ML projects.
The Liberating Experience of Common Lisp
The author critiques modern programming languages for their complexity, praising Common Lisp for its stability, unique developer experience, and creative freedom, making it preferable for software development.
Choose Boring Technology and LLMs
The author favors reliable technologies like relational databases and programming languages while embracing accessible large language models, sharing resources for learning and inviting connections as a software consultant.
https://news.ycombinator.com/item?id=34908067
https://news.ycombinator.com/item?id=9602430
https://news.ycombinator.com/item?id=2406325
Also this comment:
> "Lush" stands for "Lisp Universal Shell". It has not just S-expression syntax but recursion, setq, dynamic typing, quoting of S-expressions and thus lists and homoiconicity, cons, car, cdr, let*, cond, progn, runtime code evaluation, serialization (though bread/bwrite rather than read/print), and readmacros. Its object system is based on CLOS.
I would think of a language like Go as small (say, in comparison to Rust or Swift) - the language itself at least, if you discount the standard library.
I find the use of the word 'small' quite confusing.
Related
Why Use Clojure for Machine Learning?
Clojure's functional paradigm benefits machine learning with modular, readable, and predictable code. Leveraging JVM ensures speed and portability. Integration with Java libraries like TensorFlow and PyTorch supports deep learning. Despite being less mature, Clojure shows promise in ML projects.
The Liberating Experience of Common Lisp
The author critiques modern programming languages for their complexity, praising Common Lisp for its stability, unique developer experience, and creative freedom, making it preferable for software development.
Choose Boring Technology and LLMs
The author favors reliable technologies like relational databases and programming languages while embracing accessible large language models, sharing resources for learning and inviting connections as a software consultant.