Why people design a new #ProgrammingLanguage?

There are tons of good reasons of course. Some does that for fun or for curiosity, some for political or educational reasons, some to address shortcomings faced with existing one, either in specific use case or in general.

To me, at least at the conscious level, it’s completely a political issue.

I see how programming is a new political force (so much that I actively used it to fight #BigTech in Italy) and I see how people who cannot read (aka #debug) or write (aka #programing), are doomed to becomes second class citizens in a #cybernetic society.

I don’t want this to happen to my daughters, so I want to teach them how to program and debug.

BUT mainstream programming languages are weird, full of accidental complexity and with over-complicated semantics.

As a nerd who can programs in most of them, I tend to get fun in the abstractions and details of, say, a #Haskell or an homoiconic macro in a #Lisp.

But while they are fun to a person grown (and selected to fit) within such a primitive computing environment, they are inheritely excluding people who cannot spend decades to grasp their subtle intricacies.

And how you can teach such languages to kids?

Sure they can learn and understand any programming language construct way better of an average adult, but at a first glance all they will only see is glibberish!

And while some will be fascinated by such esoteric language that can be used to create games, worlds and agents that serve their will (just like I was when I was a kid), most will find that complicated and thus boring.

On the other hand a language that is explicit and with simple semantics (such as say #Oberon) will seem verbose and boring to a professional programmer.

I love the simple clarity of a #snake implementation like this https://github.com/tmartiro/voc-snake/blob/main/Snake.Mod whose complexity is almost just the complexity of the task at hand.

And while I see little improvements I could add to such language to further simplify it’s syntax and semantics, when I try to do so, I end with something that is less readable than the original, despite syntax and semantics being simpler (as in less rules and no exceptions or incoherence).

It was pointed out by @[email protected]: while I want to make the language easy to read and simple to understand, I subconsciously try to address the issues I faced in my ~25 years as a polyglot programmer.
And apparently I can’t resist such impulse, like if I cannot escape my experience.

It’s sad.

It makes me think of how the phonetic alphabet was invented by people who cannot read or write but were exposed to hierogliphs, and think that creating a democratic programming language is beyond my ability because of how my mind has been blent from the existing one.

@[email protected] @[email protected]
@[email protected]
@[email protected]

  • Giacomo Tesio@snac.tesio.itOP
    link
    fedilink
    arrow-up
    1
    ·
    2 days ago

    @[email protected]

    It’s not much about thinking that people who tried before were demented, but about knowing, as we both know, that each programming language had certain goals in mind and certain constraints to work within.

    Given that programming is usually seen as a profession (and an engineering one), instead of a human right, I think it’s reasonable to assume that very few programming languages were designed to pursuit a political goal.

    Many educational “toy” languages, for example, are fun to learn and may help some kids to discover a passion for programming, but cannot be used for building serious softwares, such as an operating system, an editor, a browser or whatever.

    As a conseguence such kids cannot develop a demand for programs they can fully understand and modify, and they becomes useds as adult.

    The best attempts at viable simplicity I know about are Wirth’s #Oberon system and language, that basically conflated user and programmer, were a step in the right direction.

    In my head I’d like to improve from there with simpler semantics (no heap memory, no record extensibility, total functions, cantor set theory for types…), but when I try to, I end writing example programs full of symbols instead of readable keywords.

    I get what you say about the need of rigour yet flexible semantics.
    And maybe you are even right.

    But if you are not?

    What if a powerful language with a readable syntax and simple semantics that every adult could understand could exist…but nobody ever try to create it?

    @[email protected] @[email protected] @[email protected] @[email protected]

    • As I often say, industrial languages must be distinguished from academic or research languages. Industrial languages are born out of industrial needs, they are pragmatic and often dirty. Probably the ones you have to deal with in your work. Fortunately I don’t have to answer to anyone in my choices and I can use what I want for the most part. There are many languages suitable for teaching without lapsing into toy language. There is no politics in a programming language but rather in its use and software that is produced with it. Do we want to fall into defining right-wing for imperative programming and left-wing for logic? OOP? Functional? :D
      Oberon, Oberon. How many lines of code did you write in Oberon or ComponentPascal? Come on, let’s be serious. I probably wrote more in Oberon/ComponentPascal than you.
      Interesting Oberon? Yes it was twenty years ago but because the OberonSystem was interesting. Is it still? Fads come and go and sooner or later it’ll be back too, you just have to wait for.
      You want to teach Oberon? Do it, do less wanking and do it. You will gain time from the search for the perfect programming language. Perfection is in the language of god alone, I’m basking very well in the imperfection of language of the devil. :D

      CC: @[email protected] @[email protected] @[email protected] @[email protected]