The Wasteful Legacy of Programming as Language

A few years ago I visited a friend who is a graduate student in linguistics. After some time he asked me if I was aware of the work by Chomsky on formal languages. I told him that yes, Chomsky work was a basis for much of the developments in theoretical computer science. More than that, I was glad to learn that there was something technical that I could share and discuss with other people in linguistics.

At the time I found this was just a great coincidence. It was only recently, though, that I started to think seriously about the implications of the idea that much of our understanding of computer programming stated with the study of human languages.

Language and Computers

One of the early ambitions in computer science was to understand, or at least be able to parse, human language. In order to do this, computer scientists explored models of how language worked in general. Based on these models, researchers figured out that we could classify languages in terms of complexity. Moreover, many computer languages could be entirely contained in some of the lower levels of this hierarchy, which is called the Chomsky hierarchy.

This was an incredible discovery for scientists working on compilers and interpreters, because its developments resulted in the necessary tools to efficiently parse languages. After that, instead of creating ad hoc parsers, which was the norm in the early period, one could apply a rigorous method to find a parser for a particular programming language.

The insidious side of this success, however, is that it completely changed the perceptions computer scientists have of how to give instructions to computers. We now have a frame of mind in which the important thing in the process of instructing a computer is to define a suitable language – and the more powerful the language the better.

The problem of this line of reasoning is that it creates a number of hurdles that are completely artificial, as we will soon discuss. For example, it makes us believe that there is something fundamentally different between programming languages, when in fact it doesn’t.

Computer Languages versus Human Languages

When we look at human languages, it does make sense that different languages exist. After all, language is a cultural concept. For example, as a speaker of two languages, it is very clear to me that speaking in English conveys different meaning and context, compared to things spoken in my mother language. There are a set of ideas that are better expressed in English, as well as there is a huge subset of thoughts that I wouldn’t be able to express well in anything other than my primary language.

As human beings, we want language to be inexact and able to convey several meanings. Contrary to the popular belief among mathematicians and engineers, this is a good feature of human languages, because it mimics the way we think. The truth about the study of language is that we are dealing with the whole culture of a community, not just with a stream of tokens that convey meaning.

The opposite, however, is true for computer languages. While we might strongly favor the use of human-like language, computers don’t really care if we use a bracket of a “begin” symbol to start a block of commands. Which means that we are, by introducing the subtleties of human language, complicating the task of how to instruct computers. Instead, we could just avoid the subtle differences in programming language and use a simple, uniform representation.

Unnecessary Work

The other problem with using current programming languages is that they create a lot of unnecessary work. Computer scientists have throughout the years devised baroque languages such as C++ and Java in an effort to provide programming instructions in a powerful way. It turns out, however, that the whole steps of writing a sequence of tokens, parsing that stream, and checking the syntax is unnecessary.

Everything in a computer program can be interpreted as a tree of expressions. If you’re encoding that tree in a block generated by a bracketed expression or a for loop it is not important for the computer. There is no reason why we cannot manipulate the syntax tree directly, for example, using a tree model on the screen, instead of parsing tokens used to recreate the tree every single time.

As a result, the use of a language is unnecessary in both sides: computers don’t care where the stream of bits is coming from. It could be coming from a direct binary representation or from a Java program with all variables in German.

Human beings, on the other hand, don’t necessarily need to use the language either. Although it may look like a useful feature, the existence of a language implies the manual labor of keeping a textual representation, as well as the algorithmic work of translating that representation back into a tree of expressions. The point is that, for all we care, we could just as well be moving boxes around the screen to represent variables — there is no necessity to create a textual document representing a program.

Divide and Conquer

Still, the other issue with programming languages is that it tends to divide programmers into artificial categories, one for each language or even flavor of a language. For example the only difference between a Java programmer and a C# programmer is that they use somewhat different keywords and have to program against a different run time library. The only reason C# and Java programmers think of themselves as different is that they use the concept of language to define themselves.

Being more polemic, the only difference between a C programmer and a Lisp programmer is in what their languages force them to do. A C programmer is forced by its language to write pointer-related code. While a Lisp programmer is forced to think in terms of lists of expressions (even when they’re using other data structures).

A language-less programming system, on the other hand, would avoid this kind of issue altogether by providing only the means to do work, without forcing programmers to use a pre-defined way of thinking. Whatever the form used to interact with the program, a language-less system doesn’t care if parts of the program are shaped as s-expressions or C blocks: it just combine them as needed to create a program.

In a program written in this way, using garbage collection is just a matter of plugging the right run time support, which you could get along with the system or you could buy from a third party. Instead, we erroneously consider garbage collection as a fundamental attribute of the language in use. As another example, in a language agnostic system we would would be able to create and call closures by just adding a simple module to the system, not by devising yet another language that supports closures as a first class citizen.

But the advantages don’t stop there. Without the need for a language, it also disappears the need for a compiler. Everything is such a system is already parsed and ready to use. When we combine pieces of code they already know how to glue themselves to each other, so there is no need for a linker either.

A system would regenerate a new executable in a fraction of a second, instead of going through the painful and wasteful process of language interpretation, code generation, linking. For example, what exactly is the need to recompile an entire file when we change only a single character? In a traditional language, that is entirely necessary, because you could be modifying the token “blass” to “class”, which changes entirely the meaning of the whole file. In a language-less system, this could never happen, because each transformation is related to the existing syntax tree, which is already stored in the system. Therefore, a single change like this can only have local effect in the program.

Why Such a System Doesn’t Exist?

There are several reasons, but the least important of them is technology. We have graphical capabilities in any modern desktop computer that are beyond what is necessary to implement the visualization features for such a programming environment. The main difficulty separating us from that goal is the experience we already have as programmers.

Each one of us have been trained to use textual languages as the main way of interact with computers. We have learned to use associated tools, such as grep and make, that are imperfect but that give good results if you are disciplined.

Moreover, it is satisfying to use the huge amount of code available with the existing technologies. Everyone of us have been conditioned for many years to look at what has been done in our programming language, and even reuse the code if needed.

I think that this is the main reason why visual languages have had such a hard time to establish themselves. After using such a language for a few minutes, you immediately feel that it is so much easier to go back and write yet another program in C or Java or Python. Of course, it will always be much more productive to use a tool that you’re used to.

However, we have never been able to really improve a language-less system enough to see their advantages as compared to traditional language-based systems. I believe that there will be a big jump in programming quality the day a group of people decide to develop a true language-agnostic programming system. And when programmers in general learn that they don’t need a language to create valid code they will think that we were just crazy for using, for such a long time, a concept as wasteful as that of programming language.

Photo credit: commons.wikimedia.com

Similar Posts:

Similar Posts

909 Comments

  1. Hello are using WordPress for your blog platform? I’m new to the
    blog world but I’m trying to get started and create my own.
    Do you need any html coding knowledge to make your own blog?
    Any help would be greatly appreciated!

  2. Einige unserer Links auf Gameoasis.de sind Affiliate-Links, für die wir eine Provision erhalten können, sollten sich Kunden über einen unserer Links bei einem Partner-Casino registrieren. Ja, zu den gängigen Arten gehören Bonusguthaben, Freispiele, freie Spielzeit und Cashback-Angebote.
    Besuchen Sie regelmäßig Casinotestseiten und -foren,
    um aktuelle Informationen über die besten Angebote zu erhalten.
    Waltenberg hat Tausende von Online-Casinos, Spielautomaten und Casinospielen überprüft und verfügt
    über fundierte Kenntnisse zu Boni und Spielautomaten. Egal ob Du einen Echtgeld Bonus ohne Einzahlung oder Freispiele ohne Einzahlung zur Verfügung
    gestellt bekommst, es kommt am Ende immer auf die Bonusbedingungen an. Echtgeld Bonus
    oder Freispiele ohne Einzahlung – was ist besser? Von wenigen Ausnahmen abgesehen, ist der Hausvorteil bei Online Roulette Tischspielen meist sehr gering, und daher
    gibt es diesen Bonus im Live-Casino nicht. Wir empfehlen Dir auf jeden Fall,
    mit einem Casino Bonus ohne Einzahlung zu spielen.
    Neue Kunden erhalten ein gratis Guthaben oder Freispielbonus, das im Willkommenspaket inklusive ist.
    Wenn Sie sich bei einer der oberen Online Casinos registrieren, erhalten Sie noch heute sofort einen gratis
    Bonus oder kostenlose Freispiele. Nach der Verifizierung, oder nach Kontaktaufnahme
    mit dem Kundenservice, erhalten Sie Ihren gratis Bonus oder Ihre kostenlosen Freispiele.

    So erhalten neue Spieler gleich nicht nur
    einen normalen Willkommensbonus mit Einzahlung sondern auch das gratis
    Startguthaben.

    References:
    https://online-spielhallen.de/ihr-umfassender-leitfaden-zum-holland-casino-venlo-bonus-code/

  3. I’m not sure why but this website is loading incredibly slow
    for me. Is anyone else having this issue or is it a problem on my
    end? I’ll check back later and see if the problem still exists.

  4. I truly love your website.. Very nice colors & theme. Did you develop this website yourself?
    Please reply back as I’m looking to create my own personal site and
    want to learn where you got this from or exactly what the theme
    is named. Kudos!

  5. Neben Gratisguthaben, sind dabei vor allem Freispiele bzw.
    Ähnlich wie bei Sportwetten gibt es auch bei Online-Casinos einen sogenannten Wettbonus ohne Einzahlung.
    Der Bonus kann in Form eines normalen Bonus mit Mindestumsatz
    oder in Form eines Gratisspiels angeboten werden. Langfristig hat der
    Wettanbieter also eine gute Chance, Kunden zu binden und so über die Zeit aus dem anfänglichen Verlust einen Gewinn zu machen.
    Allerdings bist du zuvor nicht auf einen Gewinn aus den Freispielen angewiesen. Es kann auch vorkommen, dass die Casinos die Gewinne aus den Freispielen noch einmal
    an Umsatzbedingungen knüpfen. Wer den besten Online Casino Bonus ohne Einzahlung sucht,
    steht häufig vor der Frage Echtgeld oder Freispiele. Einige Anbieter verzichten bei einem
    Echtgeld Casino Bonus ohne Einzahlung sogar komplett auf Umsatzbedingungen, während
    Freispiele meist andere Regeln haben. Möglich sind Echtgeld Casino Bonus ohne Einzahlung oder Freispiele.
    Du kannst Bonusjagden spielen und andere Strategien ausprobieren.

    References:
    https://online-spielhallen.de/spinanga-casino-erfahrungen-ein-detaillierter-bericht/

  6. An impressive share! I’ve just forwarded this onto a
    friend who was doing a little research on this.
    And he in fact ordered me dinner because I discovered it for him…
    lol. So let me reword this…. Thanks for the meal!! But yeah, thanks for spending time to discuss this topic here on your blog.

  7. Hey I know this is off topic but I was wondering if you knew of any widgets I
    could add to my blog that automatically tweet my newest twitter updates.

    I’ve been looking for a plug-in like this for quite some time and was hoping maybe you
    would have some experience with something like this.
    Please let me know if you run into anything. I truly enjoy reading your blog and I look forward
    to your new updates.

  8. I was curious if you ever considered changing the page layout of your blog?
    Its very well written; I love what youve got to say.
    But maybe you could a little more in the way of content
    so people could connect with it better. Youve got an awful lot
    of text for only having one or two pictures. Maybe you could space it out better?

  9. Hello There. I found your blog using msn. This is a very well written article.
    I will be sure to bookmark it and return to read more of
    your useful info. Thanks for the post. I’ll definitely comeback.

  10. Hi everyone, it’s my first pay a visit at this website,
    and article is genuinely fruitful designed for me, keep up posting
    such articles or reviews.

  11. Write more, thats all I have to say. Literally, it seems as though
    you relied on the video to make your point.
    You obviously know what youre talking about, why throw away your intelligence on just posting videos to your weblog when you could be giving us something informative to read?

  12. I’m impressed, I must say. Rarely do I come across a blog that’s equally educative
    and entertaining, and let me tell you, you have hit the nail on the head.
    The issue is something which not enough people are speaking intelligently about.

    Now i’m very happy I stumbled across this in my hunt for something concerning this.

  13. I loved as much as you’ll receive carried out
    right here. The sketch is attractive, your authored material stylish.
    nonetheless, you command get bought an nervousness over that you wish
    be delivering the following. unwell unquestionably come
    further formerly again since exactly the same nearly very often inside case you shield this
    increase.

  14. I loved as much as you’ll receive carried out right here.
    The sketch is attractive, your authored material stylish.
    nonetheless, you command get bought an impatience over
    that you wish be delivering the following. unwell unquestionably come further formerly again since exactly the same nearly a
    lot often inside case you shield this hike.

  15. Thanks for one’s marvelous posting! I certainly enjoyed reading it, you could be a great author.I will
    be sure to bookmark your blog and will often come back later
    on. I want to encourage you continue your great job, have a
    nice evening!

  16. For Aussie players, the site fully supports AUD as both a deposit
    and withdrawal currency. And yes, you can still claim a
    skycrown casino no deposit bonus no matter which method you
    use. Once you complete your skycrown casino login, you’ll find a massive library of games — no exaggeration. The terms on skycrown casino no deposit bonus codes are laid
    out clearly.
    With the mobile platform’s stability and full functionality, everyone can remain engaged whether
    they are relaxing at home, out on errands, or traveling.
    All slot titles utilize certified Random Number Generators (RNGs) for fair
    and transparent gameplay. Slots often serve as
    the backbone of any modern online casino, and Skycrown casino app shines in this
    category with an extensive library. Skycrown Online acknowledges this by regularly providing incentives that appeal to various players—whether they
    love extra funds, free spins, or specialized event promos.
    Skycrown also highlights deposit and withdrawal limits
    upfront, so individuals can plan their session accordingly without
    encountering hidden obstacles. Learn how to register, claim bonuses,
    discover a myriad of slot titles (including Snoop Dogg, Elvis Frog, and
    Sweet Bonanza), and enjoy the benefits of a well-regulated environment.

    Launched by Hollycorn N.V., Skycrown Casino invites Australian players to experience premium online gaming.

    With robust security measures and a Curaçao license,
    Sky Crown Casino provides a trustworthy and enjoyable gaming experience for Australian players.
    Players can manage their accounts and play their favorite games directly
    through their browsers with no compromise on quality.
    The “Info” section contains all essential details about the casino’s
    operations, ensuring players have access to crucial resources and support.
    These games allow players to bet on multiplying odds before the round crashes.
    Crash games at Sky Crown Casino provide fast-paced, high-adrenaline gaming experiences.

    References:
    https://blackcoin.co/22_all-slots-casino-1500-bonus-2500-loyalty-points_rewrite_1/

  17. Excellent blog here! Also your website loads up fast! What
    host are you using? Can I get your affiliate link to your host?
    I wish my site loaded up as quickly as yours lol

  18. This design is spectacular! You obviously know how to keep a reader entertained.
    Between your wit and your videos, I was almost moved to start my own blog (well, almost…HaHa!) Fantastic job.
    I really loved what you had to say, and more than that, how you presented it.
    Too cool!

  19. I’m curious to find out what blog system you’re utilizing?
    I’m having some minor security issues with my latest website and I’d like to find something more safe.
    Do you have any recommendations?

  20. Hey there would you mind stating which blog
    platform you’re using? I’m going to start my own blog in the near future but I’m having a hard
    time choosing between BlogEngine/Wordpress/B2evolution and Drupal.
    The reason I ask is because your design seems different then most blogs and I’m looking for something
    unique. P.S Sorry for getting off-topic but
    I had to ask!

  21. The hotel’s grand entrance wowed me, and the dining options were top-notch.
    I experienced luxury and sophistication throughout my stay at the
    casino hotel. With 160 tables, electronic machines, and private salons,
    there’s plenty of room to enjoy the VIP gaming
    experience. However, once approved it will include a 350-room hotel, featuring suites and luxury apartments, signature restaurants,
    bars, nightclubs, high-end retail outlets, pool
    and spa facilities, conference rooms, and VIP gaming facilities.

    So, you can conveniently enjoy the games without worrying about carrying physical
    cash. Crown Sydney offers a plethora of culinary delights,
    each more tempting than the last. The casino collaborates with local authorities to maintain safety standards,
    ensuring a secure environment for visitors.
    While there are no exclusive games, the casino offers a variety
    of popular options found in many casinos. With an array of table games, including innovative and new offerings; the latest in electronic gaming; and the possibility of providing ongoing poker action 24/7,
    the Crown Sydney could become one of Australia’s finest casinos.
    Offering stunning and inspiring views of Sydney, access to the best
    possible gaming and entertainment experiences, and first-rate restaurants, bars, and nightclubs, it’s projected to be a primary destination for those who
    desire the complete casino experience. Discover premium entertainment at Crown Casino — Australia’s leading destination for world-class gaming, luxury hotels,
    fine dining, and unforgettable experiences. With its
    strategic locations in Sydney, Brisbane, and the Gold Coast, The Star Casino
    offers a unique blend of gaming, dining, and entertainment options that cater to a wide range of preferences and tastes.

    References:
    https://blackcoin.co/online-gambling-in-sydney-a-comprehensive-guide/

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.