Live data from Hacker News

Rama is a testament to the power of Clojure

blog.redplanetlabs.com

41–50 of 76 posts

Re: Rama is a testament to the power of Clojure

#41

Earlier quoted context omitted.

This is one of those perpetual myths about macros. Ruby on Rails metaprogramming is often harder to debug than macros in Common Lisp. Flink and Spark work by generating and loading Java code at runtime (macros) but, since Java has no language-level support for macros, the generated code is very hard to inspect and debug. What killed most lisps was the AI Winter and the concurrent drying up of DARPA funding.

I don't think I've expressed myself well. When I say software at scale I mean: - going on GitHub opening a file and understanding what's happening - reviewing a PR and figuring out stuff without requiring an ide - having easy onboarding with devs already accustomed to a base language and its patterns Java, C, TypeScript, Scala, Kotlin, etc. Pretty much all major languages offer this: less power but much less ambiguit…

Scala???

The language that never met an abstraction it didn’t immediately incorporate into itself?

Re: Rama is a testament to the power of Clojure

#42
post #38

Earlier quoted context omitted.

Are you a lisper? The article is mostly about the power of a lisp dialect. It's kind of "in the tradition" of lisp to write about it in glowing terms. I myself was inspired to learn a lisp after reading several of these types of essays.

the real question/point is whether it delivers. It's just that there's a lot of empirical evidence that these grandiose praise is just praise, but not a lot of shipped software, compared to the 'worse is better' languages such as php, javascript or c. However, this might be due to the fact that in order to write something in lisp, the author has to be pretty clever, but in order to crap out something in php, you don'…

The greatest trick the devil ever pulled was convincing people that Clojure is not a practical, get-shit-done language.

For obvious reasons (syntax) Clojure gets lumped in with the other lisps but Clojure is really intensely practical. It makes a number of choices to that effect. The most of important of which is being a JVM language, so you get access to basically all Java code ever written. The builtin collections are very high quality. It's incredibly stable, so the code you write just keeps working regardless of whatever new features they add in the newest version of the language. There are a lot of high-quality libraries that are "done". The immutable-by-default thing makes writing concurrent code much, much easier. Being on the JVM means you don't have to fuss around with cross-compilation. It's fast enough that you rarely need to mess with optimizing it until you reach real scale. I could go on.

I don't even do much Clojure anymore, but when I did, it was hands down the best thing I ever used for work where the main tasks involved moving lots of data around, filtering it, reducing it, etc. Of course Clojure does tend to attract a lot of clever people, but it also attracts a lot of people looking for the tool with the most leverage to get their work done. There is a lot of Clojure out there, just quietly running the back offices of small/medium sized businesses.

Re: Rama is a testament to the power of Clojure

#43
post #38

Earlier quoted context omitted.

the real question/point is whether it delivers. It's just that there's a lot of empirical evidence that these grandiose praise is just praise, but not a lot of shipped software, compared to the 'worse is better' languages such as php, javascript or c. However, this might be due to the fact that in order to write something in lisp, the author has to be pretty clever, but in order to crap out something in php, you don'…

> not a lot of shipped software, compared to the 'worse is better' languages such as php, javascript or c Quantity of "shipped software" depends on many factors. Quality of the language is pretty far down the list. Take Javascript. It's usage numbers might have something to do with it being available in every browser on the planet.

> It's usage numbers might have something to do with it being available in every browser on the planet.

but clojurescript is available, so if clojure is truly as superior as javascript, it would make a lot of sense to use this. And indeed there are apps that do, but overwhelmingly more apps just use plain javascript. But when typescript came along, a lot of people switched to it. So it cannot be just merely compiler/build friction imho.

Re: Rama is a testament to the power of Clojure

#45

Earlier quoted context omitted.

This is one of those perpetual myths about macros. Ruby on Rails metaprogramming is often harder to debug than macros in Common Lisp. Flink and Spark work by generating and loading Java code at runtime (macros) but, since Java has no language-level support for macros, the generated code is very hard to inspect and debug. What killed most lisps was the AI Winter and the concurrent drying up of DARPA funding.

I don't think I've expressed myself well. When I say software at scale I mean: - going on GitHub opening a file and understanding what's happening - reviewing a PR and figuring out stuff without requiring an ide - having easy onboarding with devs already accustomed to a base language and its patterns Java, C, TypeScript, Scala, Kotlin, etc. Pretty much all major languages offer this: less power but much less ambiguit…

There's a place for languages that are the COBOL of their niche, yes. Depending on how you look at it, they are DSLs too.

Javascript in the browser is actually an interesting case here. (And after Javascript spralwed out... ClojureScript is the nicest way to write React apps)

Re: Rama is a testament to the power of Clojure

#46

It seems really distasteful to take the name of an important religious and cultural figure from a different country and appropriate it for some pet project. https://en.wikipedia.org/wiki/Rama

Except it has other meanings, not necessarily the Supreme Being. From the link you shared:

Rāma is a Vedic Sanskrit word with two contextual meanings. In one context, as found in Atharva Veda, as stated by Monier Monier-Williams, it means "dark, dark-colored, black" and is related to the term ratri, which means night. In another context in other Vedic texts, the word means "pleasing, delightful, charming, beautiful, lovely"

Re: Rama is a testament to the power of Clojure

#47

It seems really distasteful to take the name of an important religious and cultural figure from a different country and appropriate it for some pet project. https://en.wikipedia.org/wiki/Rama

Except it has other meanings, not necessarily the Supreme Being. From the link you shared: Rāma is a Vedic Sanskrit word with two contextual meanings. In one context, as found in Atharva Veda, as stated by Monier Monier-Williams, it means "dark, dark-colored, black" and is related to the term ratri, which means night. In another context in other Vedic texts, the word means "pleasing, delightful, charming, beautiful,…

And neither of these meanings are relevant to the project, nor have these meanings been widespread for at least last 2000 years.

Re: Rama is a testament to the power of Clojure

#49

Earlier quoted context omitted.

Except it has other meanings, not necessarily the Supreme Being. From the link you shared: Rāma is a Vedic Sanskrit word with two contextual meanings. In one context, as found in Atharva Veda, as stated by Monier Monier-Williams, it means "dark, dark-colored, black" and is related to the term ratri, which means night. In another context in other Vedic texts, the word means "pleasing, delightful, charming, beautiful,…

And neither of these meanings are relevant to the project, nor have these meanings been widespread for at least last 2000 years.

It’s also the concatenation of two, extremely common syllables, so purely by chance one is ought to hit them. Like, where I’m from its the name of a margarine brand - is it also misappropriating?

Re: Rama is a testament to the power of Clojure

#50

> Lisps have great control over what happens at compile-time, which lets you do incredible things. > Lisp programmers have struggled ever since it was invented to explain why this is so powerful and why this has a major impact on simplifying software development I've written some Common Lisp, Scheme, Racket. I like them. But what op defines as a feature is actually what kills all those lisps but Clojure where macro a…

> Everybody implementing their abstractions, every library implementing their own language

In Lisp one can extend the language syntax. One does not need to implement a new language. For example the Common Lisp Object System adds operators like DEFCLASS, DEFMETHOD, DEFGENERIC, ... in addition to already existing operators like DEFUN, DEFSTRUCT, DEFTYPE, DEFPARAMETER, ...

Thus the language can be incrementally extended, instead of using a completely new language.

The CLOS macros are used by many programmers, they were standardized, documented and implemented.

As every form of abstraction, syntactic abstraction needs to be learned and requires extra work. Lisp was from the start developed to enable such things, and its early form of that applied to Lisp itself were the Lisp interpreter evaluating s-expressions, FEXPRs (procedured receiving unevaluated arguments) and in 1962 macros.

> I feel like Lisp and Haskell attract people that love programming more than shipping code.

One of the purposes of Lisp was to implement new ideas: like computing with mathematical formulas (-> Macsyma and earlier attempts), computing theorems (-> ACL2 and earlier attempts), ... This ability to support experimentation in R&D (actors, rule-based systems, frame systems, ...) was always a part of the language community.

If we look at the surviving commercial systems (Allegro CL and LispWorks), they still support this feature set.

Clojure was developed as a Lisp-inspired functional language with deep Java/JVM integration to support enterprise programming for people who were tired of programming in Java. That's fine. But the advice then was to not utilize the full power of Lisp (syntactic abstractions), to address the fear of unmaintainable software, while at the same time not using various features of Lisp (like gradually typed implementations of Lisp like SBCL) which helps to write robust software.

Generally Lisp has a broader outlook. It ran on an experimental spacecraft, it powered autonomous robots inspecting pipelines, it was the base for early research in computing (-> Interlisp), it ran on calculators (HP RPL), it supported children education (Logo), it's used to schedule telescope operations (-> Hubble and James Webb), it is used to schedule airline/airport operations, ...

> php has more killer software than all those languages combined.

If we research for ground breaking software, then I bet over the long history of Lisp there were a lot more in many more diverse domains written in Lisp

Lisp has been applied to develop airplane parts. BOEING and Airbus used to be Lisp users (they might be still use it for older planes). ICAD was the first parametric CAD system. ICAD used macros to describe physical objects and their relationships. This was used to construct turbines, wings, and a lot of other parts of Airplanes.

If you look into the long history of Lisp, it has been successfully applied in domains PHP has never seen. Sometimes really crazy stuff, like the first virtual military troop training systems, where the US army deployed a few extensive training and simulation systems, where the virtual worlds were controlled & generated by a Lisp system and rendered by multiple graphics engines for each training simulator. In the early 80s. -> https://en.wikipedia.org/wiki/SIMNET

That's nothing like PHP, but it was ground breaking in its domain. PHP had a different purpose: it was developed to make it simple to write&generate web pages in a large scale. That's a huge domain, but that was not what Lisp was developed for.

Btw., we see a bunch of new languages which now also support some form of macros. A recent example is Rust.

Post reply on HN