Some of what you said I agree with, and some I don’t. But in particular, I disagree with your thesis. A language is successful if it attracts enough programmers. It may very well be true that the best way to do that is to produce a high-quality language, but the ineffable “quality” of a language is not the only thing that attracts programmers.
You make a good point that programmers check out new languages because of the differences, rather than in spite of them. But I think that you’ve turned this into thinking that differences are inherently good (for example, in your suggestion "Why not use "if" to mean 'try' or 'switch' or 'foreach', and "ifif" to mean 'if'? What do you think?”), and that’s simply not true. Differences can be good, they can be bad, and they can also be meaningless. And I would argue that meaningless differences are bad, because it’s yet one more thing for a programmer to have to learn when switching from an existing language. There is an important balancing act going on when creating a new language. If you make it too different, even if you believe every single change is for the good, then the alien nature of the language will serve to make it harder for existing programmers to jump to your new language, and therefore you will get fewer programmers making the attempt. And too few programmers will, of course, render your language unsuccessful. -Kevin On Dec 31, 2013, at 6:56 AM, spir <[email protected]> wrote: > Holà! > > [This is a rather personal and involved post. Press del if you feel like > it...] > [also, it is long] > [copy to rust-dev mailing list: actually the post is inspired by a thread > there "Thoughts on the Rust Roadmap"] > > There is a point obvious to me; apparently most people including many > language designers don't share it, or act as if they did not: > > a language should be successful iff it is of high quality > > A kind of symmetric statement also holds; > > let us hope low quality languages have no success! > > There are various reasons to hope this, the most stupid beeing that > successful languages influence others, present & future. This is in my view a > symptom of our civilisation's funny spirit (read: madness), and related to > the actual points I intend to state (if, for once, I manage to express my > thought). > > Apparently, many language designers proceed more or less the following way: > there are a few key points (for them) they consider mis-designed or missing > or wrong in some way in existing languages (not all the same for every > language). Thus, they want to make a language that repairs these points, all > together. Then, certainly in fear that too many changes may repel potential > adopters of their language, in hope to maximise its chances of success > *despite* it breaking habits on the key points more important to them, they > won't change anything else, or only the bare minimum they can. They want > instead to remain as mainstream as possible on everything else. [4] > > I consider this spirit bad; I mean, very bad. This is the way basic design > errors propagate from successful languages to others, for instance. [1] > Apparently, it takes a great dose of courage to break any existing practice > in a _new_ language: tell me why, I do not understand. > > Note that I am here talking of wrong design points in the opinion of a given > language designer. Choices he (since it's mostly men) would not do if > programming were a new field, open to all explorations. (There are indeed > loads of subjective or ideological design points; see also [1] & [3]) > However, while programming is not a new field anymore, it is indeed open to > all explorations, for you, for me, if you or me wants it. Nothing blocks us > but our own bloackages, our own fears, and, probably, wrong rationales, > perhaps non-fully-conscious ones. > > Deciding to reuse wrong, but mainstream, design decisions in one's own > language is deciding to intentionally make it of lower quality. !!! Funny > (read: mad), isn't it? It is thus also intentionally deciding to make it not > worth success. This, apparently, to make its actual chances of success > higher. (Isn't our culture funny?) > Then, why does one _actually_ make a new language? For the joy of making > something good? To contribute to a better world, since languages and > programming are a common good? [2] For the joy of offering something of as > high a quality as humanly possible? Else, why? For fame, honour, status, > money, power? To mentally masturbate on the idea of having made something > "sucessful" (sic!)? > > We are not in need of yet another language trying, or pretending, to improve > on a handful of disparate points, leaving all the rest as is, meaning in bad > state. And, as an example, we are not in need of yet another failed trial for > a successor to C as major low-level lang. > Differences, thought of by their designer as significant quality > improvements, are the *reasons* for programmers to adopt a new language. > There are the _only_ (good) reasons to do so. Thinking that programmers may > adopt a new language _despite_ its differences is thinking backwards; this, > in addition to preventing oneself from working for the common good; by fear, > probably; fear of truely thinking by oneself and/or of making one's true > thinking public truely. (I can understand that, however: I often do not > disclose my thinking by fear of the terrible level of violence, in my view, > present in the programming "community" [hum!], and among geeks in general. > This, rather than sharing and mutual help and cooperation, for the common > wealth. Our civilisation... again.) > > I have recently decided to adopt possible differences even if i am not that > convinced of their betterness; to give alternatives a try; to give them at > least a chance to show us (or just me) how good they actually are, or not, in > practice, maybe on the long term [3]. > This may go too far; it is a personal decision. > > However, deciding not to change what one sees wrong is weird for the least. > It means removing points of quality according to one's own views, removing > chances to contrbute to a better world, removing sources of personal > satisfaction, removing reasons for others to judge a language better, thus > removing motivation for programmers to adopt it. Maybe, certainly, many > programmers do not adopt a language on the base of its quality, only; > however, this counts; people I wish would adopt my lang, if ever, are those > people who judge first on quality, not hype followers or otherwise > conservatives. > What I mean is, apart from working against the common wealth, in addition to > preventing one's own enjoyment of doing what one does, such an attitude may > also work against a language's potential success. Is this (a factor) why we > have no successor to C yet, what do you think? because most designers kept > most of its design bugs unchanged? [4] just to have a minimal chance, should > a potential successor instead break as much as possible? (And not have a > builtin interface to C? ???) > > Also note that attitudes and spirits are psycho-sociologically contagious. In > particular, fear and lack of courage and angst are highly contagious (in our > world, with such a close to universal high level of anxiety...) What if more > (would-be) language designers boldly thought by themselves and boldly assumed > their thoughts? > > Final note: isn't it weird that such conformism is _that_ prevalent among > language designers? Precisely the ones who should be bearers of novelty? the > one "milieu" which could & should be a network of interacting > counter-cultures and individual iconoclasts (idol breakers)? > > I do not expect anyone shares (all of) this. I just hope it may open new ways > of thinking or questionning to a few. > > Denis > > [1] Including the funny usage of "=" for assignment and "==" for equality, > after at least 5 decades, lol! Still my favorite syntactic error after dozens > of thousands of hours of programming in languages which nearly all use this > amusing convention. Why not use "if" to mean 'try' or 'switch' or 'foreach', > and "ifif" to mean 'if'? What do you think? > > [2] Actually, they are both communal and social. Better quality languages may > contribute to a better world, at a communal level because we programmers > share code and read others' code all the time, and at a social level because > apps are a significant part of the world's state. > > [3] As you certainly know, it takes time to unlearn, especially to stop > judging something bad while it is just different. (Think at C programmers and > their beloved code block {} braces. I for one have better usage for brace ;-.) > > [4] As an anecdote, somewhat complementary, in the course of my explorations > about programming languages, I often stepped on lists of C design bugs, at > least a dozen of them. Typically endless lists that take a quarter of an hour > to read in one go, without comments. There is space to works for a language > lover :-). If not enough, usually such critics seems to agree on more than > half of the points (and the remaining ones may not figure on some lists just > because the critic not think at it or did not study this point) (but their > solutions may diverge...). > > > > > _______________________________________________ > Rust-dev mailing list > [email protected] > https://mail.mozilla.org/listinfo/rust-dev _______________________________________________ Rust-dev mailing list [email protected] https://mail.mozilla.org/listinfo/rust-dev
