4 ms·
> let’s say a word means what the people who use it mean by it. This is how words work, so I don't know why the author says "let's say". There is no "correct"
by DonaldPShimoda 6y ago
> let’s say a word means what the people who use it mean by it.
This is how words work, so I don't know why the author says "let's say". There is no "correct" definition of a word; the dictionary which you might consult to obtain such a definition is itself just recording what is the most commonly-used meaning of the word among people who use it most natively.
I make this point not out of pure pedantry, although that may play a part, but also because nobody seems to know what "homoiconicity" actually is — nor does it seem to actually be very important for us to find out! When people cannot agree on what a word means, I think it's reasonable to say that that word doesn't really have a meaning.
Some time ago, I had the opportunity to talk to Matthias Felleisen — the progenitor of the Racket project (a derivative of Scheme, itself a derivative of Lisp). When I asked whether he felt homoiconicity was an important quality of a language, he indicated something to the effect of (heavily paraphrasing) "I don't know what that word means, and you don't know what that word means, but whatever you think it means is not important. It doesn't matter."
Shriram Krishnamurthi, a former student of Felleisen's and one of the original members of the Racket project, can be found to disparage the word whenever he finds it on Twitter. He also consistently refers to it as h11y (that's "H-eleven-Y"), not just to save characters in tweets, but also, I think, because the word itself is not very important. I've seen multiple exchanges where he challenges peoples' attempts at defining the term precisely, and invariably they give up. (One such exchange is visible at [0].)
Another Racketeer, Matthew Flatt, recently started a push to build a new Racket language (now called Rhombus, I think) which abandons s-expressions almost altogether, but without losing any of the benefits of Racket.
If these people, who are all everyday Lispers, and who are widely known and respected in the programming language community, don't have a solid definition of "homoiconicity" and, further, don't think it's worth investing the time to define it... maybe we should stop getting articles like this, and maybe we should instead tell people to abandon their search for the One True Meaning.
(I do want to say that I think this is one of the better articles about the topic that I've read, and the author did a good job. I just think the topic is not as interesting as the author expects their readers to find it.)
Homoiconicity doesn't matter. Nobody can define it very precisely, so no two people will have the exact same definitions in their head when discussing it, so any talk regarding it will be necessarily lossy (or, in the worst case, completely non-productive). If the literal representation of your language happens to evoke some imagery in your mind of the secret machinations of the underlying forms or something, that's great! But I don't think it's worth pursuing this quality specifically. What syntax works this way for you may not work well for others, or vice versa.
I think that, instead, it is better to focus on more specific goals. Maybe your language is very tree-oriented, so you make it easy to represent trees directly. Something like that. But the specific goal of "homoiconicity" — whatever that means to you — is perhaps not worthwhile, nor should we be seeking to define it. We should leave it by the wayside and move on!
[0] https://twitter.com/ShriramKMurthi/status/1046944950531829760 https://twitter.com/ShriramKMurthi/status/104694495053182976...
- vanschelven 6y ago> This is how words work, so I don't know why the author says "let's say". I say that specifically because this word was coined in 1965 by Calvin Mooers with a particular specific definition; I'm saying that even though it's a (relative) neologism, the word has already shifted in meaning. > maybe we should stop getting articles like this, and maybe we should instead > tell people to abandon their search for the One True Meaning I actually agree... the article (and the previous one) are mostly consequences of starting out in the belief that homoiconicity is something to strive for, and then failing to understand what homoiconicity would really be -- but discovering the things to strive for in the process.
- DonaldPShimoda 6y ago> I say that specifically because this word was coined in 1965 by Calvin Mooers with a particular specific definition; I'm saying that even though it's a (relative) neologism, the word has already shifted in meaning. Mm what I meant to get at was that you give a definition of "meaning", which is that "a word means what the people who use it mean by it", and your use of the phrase "let's say" makes it sound like this is a charitable admission on your part. And my point is that this is what it means for a word to "mean" something — it's entirely based on what people who use it mean by it, so the way you say "let's say" was rubbing me the wrong way, so to speak. > I actually agree... the article (and the previous one) are mostly consequences of starting out in the belief that homoiconicity is something to strive for, and then failing to understand what homoiconicity would really be -- but discovering the things to strive for in the process. I did not take the time to read the previous article, but I regret that now. I will go back and read it. :) I don't think I did a good enough job saying that I think this is among the best articles on homoiconicity that I've read! I meant for my lament to be more general and not specifically directed at you, but more just at those people striving for homoiconicity without a clear idea of what that means. I think, rereading parts of this article again now, we're more aligned than I had previously though. I'm sorry for not realizing that earlier!
- pritovido 6y agoI believe words and the concept they represent are important, Homoiconicity is very very important, but the concept is something subjective that you get after working years on it. After programming for a long time in other languages, I had the intuition of wanting something like lisp, but I could not express those ideas with exactitude. They were diffuse, not clearly defined ideas. Then after having a master teach me lisp I got it. I also had the intuition of lisp limitations too and started working around those limitations and getting to know in specific terms what those limitations are, and the most important thing, working on solving it. You have people around the internet with very little programming experience discussing all day about concepts they hardly understand, because they have not programmed a lot to really grasp it. This is like discussing the sex of Angels. A lot of the problems that exist have lots to do with the limitation on the input technology of computers. Creating anything takes millions of time more energy and work that just thinking about it. I could think about computers talking to me and me talking with the computer. It takes lots of work(years) to actually do it. I could dream about the computer writing code for me, but it can take decades of actual work to do it. Spending your time just talking is so easy compared to actually going the distance working around it.