Subject: Re: RFC: Lisp/Scheme with less parentheses through Python-like significant indentation? From: Erik Naggum <erik@naggum.net> Date: 2000/08/14 Newsgroups: comp.lang.lisp Message-ID: <3175267619940824@naggum.net> * Paul Fernhout <pdfernhout@kurtz-fernhout.com> | She is willing to consider learning Lisp and has in the past | expressed interest in it. In this particular case, I would be doing | all of the development, but there is always the issue of maintenance | down the road. While her approval is a factor, there is still an | issue for myself with my own aproval of the language (versus say | Python or Smalltalk or C or Delphi which I have all used for other | projects). Instead of thinking of your partner like "someone else", I would suggest you think of her as a part of yourself, in that when you explain something to her, you realize that the common ground between you is a foundation for understanding your _own_ thinking so much better. This will (in my experience) mean that even if that other person never maintains or even understands the actual _code_, it has been developed within a framework of understanding that will benefit it over its entire lifetime. This has nothing to do with the syntax of the language, of course. | I think we all bring our prejudices to the table, although ideally | we rise above them as you point out. I think the best we can with our prejudices is to be aware of them. If you think you can rise above them, it will be impossible for you to understand which prejudices you haven't risen above. | There are many other factors -- familiarity, prefix notation, | functional style, availability of libraries, availability of | support, availability on specific platforms, availability of | programmers (network effect), whether it fits into the Microsoft | vision (ugh!), and so on. (This isn't meant to slam any particular | Lisp implementation, as obviously many of them are quite complete in | terms of libraries and support.) The factor that throws programmers from other languages most is none of those things. The lack of familiarity between languages that are accepted is quite stunning. However, human beings are, despite every effort of the user interface crowd to reduce us to clicking idiots, a species marked by its use of _language_, which means that we are naturally predisposed to feel a sense of similarity not in how words are strung together, but how they have a common root, heritage, etymology. Look at how Indo-European words crop up everywhere, and how the recent discussion of the "rete" evolved! Lisp has a _lot_ of words that are foreign to the C/Algol crowd, and the words we have in common don't generally mean the same due to a wide disparity of conceptual heritage. Suppose a language with a lot of useful features, but based in, say, Norwegian, were to be marketed in the predominantly English-speaking programming world. It could use as many braces and semicolons it could stand, but it still would feel foreign. | Still, I feel the parentheses are the single worst adoption hurdle | in a causal review, and are sort of symbolic of the language's | acceptance difficulties. (Causal? Casual?) The parentheses are a sort of lithmus test of people's intelligence. (This will insult about 5.5 billion people.) How well do you tolerate that some of your basic presumptions are violated? Suppose you were ridiculed for writing from left to right. Suppose you were ridiculed for using letters describing each language's pronunciation instead of universal symbols for concepts, however they were pronounced. Suppose you were ridiculed for eating with knives and forks? Suppose you were ridiculed for books with the text of their spine upside down when you lay it face up on your desk? If you are the kind of person who is able to put yourself in a position where you _understand_ that what you take for granted is somebody else's belly laugh, my guess is you possess sufficient intelligence to become a good programmer, or scientist, or do any other highly intellectual work for that matter. If you _can't_, and you obsess about certain trivia (which nobody are going to _change_ regardless of how trivial it appears), don't program computers. Some would say that syntax is irrelevant. It obviously isn't. It's as stupid as saying it's irrelevant which way you write, and then go from there to write books with neat spirals of text on every page. The _arbitrary_ is very far from _irrelevant_. I would venture that the arbitrary is among the most important aspects of human existence. Being able to accept whatever is arbitrarily chosen in whatever culture you deal with does seem to be an ability in short supply, but that doesn't mean those who can do it are _inferior_. It's the other way around: Those who can't should shut the fuck up. | They also satisfice -- looking for a solution they think is "good | enough", hence "worse is better". Worse is better is really not about selecting good enough, but about making lazy choices -- whatever seems least expensive at each point, often confused with "most convenient". What "wins" might not even be good enough, but may be marketed so as to have a bright future. People can't think long-term by themselves (people still smoke, for instance), but if they are presented with something that will look good years from now, they'll buy it, hook, line, and sinker. | The reality is that programming is becoming more and more important | to people's lives. This is a many-faceted truth with so much ambiguity that it is best not to state it. Try with one of the individual facets. Do people have problems that cannot be solved by existing software? If so, why not? Are they helped by languages like Visual Basic and C++? | People do learn to program -- the issue is more, if they don't | choose Lisp, why not? Because Lisp would actually solve their problems, and then they would've wasted all that time learning to program in it, and they would have to figure out the answer to "now, what?". I'm serious. Don't give people what they want -- they'll simply hate you for it. | And how can that be overcome? Obviously, this issue may be much | deeper than typography. Typography is just the only thing I can | think to change with reasonable effort, while still preserving | Lisp/Scheme's power and elegance. Perhaps it's time to have a belly laugh over the notion that users should program at the very detailed level that real programming requires? Suppose you want to convert a bunch of pictures into icons. Suppose you know how to do that with one picture: You click on the file, "drag" it over to the icon-generating program, then "drop" it there. Repeat until thoroughly disgusted with the idiocy of the paradigm of direct manipulation. (It doesn't matter whether you can select several files before dropping, obviously.) Suppose instead you were able to communicate your actual _desire_ to the computer, in (gasp!) a _language_! Not a programming language, but a language suitable to express goals and such. | The major strong point of my proposal (IMHO) is that it makes a minor | typographical change to the Lisp family language syntax, which might | have some major potential benefits. It amazes me that you still think it's a minor typographical change. | There obviously remain many challenges to programming well. You know, I don't think catering to the parenthophobic will make any difference at all. C++ is popular. It has the worst syntax of any real programming language so far. It is only eclipsed by Perl. Reading the manual of VCRs is hopelessly beyond their users' grasp, yet they sell in great numbers and are considered useful. | But why make it any harder than it has to be? I actually think programming both as a carreer and as a science suffer so much because it has been made easier than it has to be. Fiddling with superficial syntax indicates that the problems of acceptance are not where they should be. I think we need to figure out what the real problems are. As long as we find that people come to Lisp of their own accord, and as long as we have reasonable success with that approach, there is very little to argue that we're doing something wrong. I also don't think we're doing anything wrong because whatever _is_ being done wrong is not related to _which_ language people use, but rather what they expect to do, and have to do, in whichever language they choose. I appreciate the many glimmers of light this discussion has uncovered, but I'm still quite annoyed by what I consider a huge waste of time in fixing what isn't broken to begin with, but we have a long history on this newsgroup to have valuable discussions come up only when someone proposes something that everybody thinks is a dead end at the outset and get all upset about. Nothing happens with the dead-end stuff, but the discussions are usually fruitful. #:Erik -- If this is not what you expected, please alter your expectations.