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