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
Hi there, just became alert to your blog through Google, and found that it is
truly informative. I am going to watch out for brussels.
I’ll appreciate if you continue this in future. A lot of people will be benefited from your writing.
Cheers!
That is a great tip particularly to those new to the blogosphere.
Short but very accurate info… Many thanks for
sharing this one. A must read article!
Hi, I would like to subscribe for this website to take most up-to-date
updates, so where can i do it please assist.
I blog frequently and I really appreciate
your information. This article has truly peaked my interest.
I will take a note of your blog and keep checking for new details about once a week.
I subscribed to your Feed as well.
WOW just what I was looking for. Came here by searching for ????????? PG
Hi there, I desire to subscribe for this website to take most recent
updates, therefore where can i do it please help out.
I was curious if you ever considered changing the page layout of your website?
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 2 pictures.
Maybe you could space it out better?
Have you ever thought about publishing an e-book or guest authoring on other blogs?
I have a blog centered on the same information you discuss
and would love to have you share some stories/information. I know my subscribers would value your work.
If you’re even remotely interested, feel free to send me an email.
You said it adequately.!
Thanks a lot! Quite a lot of postings.
Cheers. I enjoy this.
Wow a lot of very good material.
Vovan Casino ??????? ??? ???, ??? ????? ?????. ? ????? ?????? ?? ??????? ???????????? ???, ??????? ????????? ????, ????? ? ???????. ??????????? ???????? ??????????? ???????????, ??????? ?????? ???? ??? ????? ?????????????. ?????? ????????? ? ???? — ???? ?? ??????? ???????. ?????????? ? ???????????? ???????? Vovan Casino, ????? ???????? ???????????? ??????. ??? ?? ?????? ?????? ????????? ????? ?? ?????, ? ????? ??????????? ?????? ??????? ????. ? Vovan Casino ?? ??????? ????????? ?????? ????? ???????????? ? ??????? ?? ?????? — https://t.me/vovan_GamBling. ????? ????? ????? ???????? ??????? ????? ?????: ? ????? ?????! ??? ????????? ???????, ??????? ??????? ??? ??????? ???? ??????????: ????? ??????? ???? ??????? ???? ???????????? ? ??????? ?????????????. ??? ??????? ??????? ? ??? ???? ??????????? ???????????, ??????? ???????? ??? ???????? ??????? ??????????. ????????? ? ??????? ????, ?????????? ????-??????, ????? ???????? ?????? ? ???????????.
You actually explained it adequately!
Nicely put. Thanks a lot.
Wonderful forum posts. Regards!
Terrific material. Many thanks.
Whoa all kinds of wonderful knowledge!
You actually reported this adequately!
Great write ups, Many thanks!
Wow a lot of valuable tips.
Smoothies are among the easiest ways to combine preference and nutrition in one scrumptious beverage. Packed with fruits, vegetables, seeds, and superfoods, smoothie recipes permit you to appreciate a healthy and balanced boost at any time of day. Whether you are looking for a morning pick-me-up, a post-workout recuperation beverage, or a rejuvenating treat, smoothies are a functional solution. With limitless flavor mixes, you can personalize them to fit your choices and nutritional objectives while maintaining them fun and pleasing, https://blogfreely.net/danielhealth09/zdrave-a-snadne-recepty-na-smoothie-ktere-si-zamilujete.
I am really grateful to the owner of this web page who has shared this fantastic post at at this
place.
I blog frequently and I really thank you for your information.
This article has really peaked my interest. I’m going to take a note of your site and
keep checking for new details about once a week.
I opted in for your RSS feed too.
Pretty nice post. I just stumbled upon your blog and wished to say that I have
really enjoyed surfing around your blog posts. In any case I will be subscribing to your feed and I hope you write again soon!
I got this web page from my pal who informed me on the topic of this web page and now this time I am
browsing this web page and reading very informative articles at this
place.
Hi my friend! I wish to say that this post is amazing, nice written and come with almost all vital infos.
I would like to look extra posts like this .
We are a group of volunteers and opening a brand new scheme in our community.
Your site provided us with valuable info to work on. You’ve done an impressive process and our entire community
shall be grateful to you.
I am really thankful to the holder of this site who has shared this wonderful paragraph at
here.
I am extremely impressed with your writing skills and also with the layout on your weblog.
Is this a paid theme or did you modify it yourself?
Anyway keep up the nice quality writing, it’s rare to see a
great blog like this one today.
I love it when individuals come together and share thoughts.
Great website, continue the good work!
I used to be recommended this website via my cousin. I’m not certain whether or not this post is written by him as
no one else know such particular approximately my problem.
You are incredible! Thanks!
Great article, exactly what I needed.
It’s really a great and useful piece of information. I am glad
that you just shared this useful info with us. Please stay us up to date
like this. Thank you for sharing.
I was suggested this web site by my cousin. I’m not
sure whether this post is written by him as nobody
else know such detailed about my difficulty. You are wonderful!
Thanks!
I am regular reader, how are you everybody? This paragraph posted at this web page is truly pleasant.
Hi, Neat post. There is a problem along with your site in web explorer,
might test this? IE still is the marketplace chief and a good portion of
people will leave out your great writing because of this problem.
I loved as much as you’ll receive carried out
right here. The sketch is attractive, your authored material
stylish. nonetheless, you command get got an edginess 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.
I have read so many posts concerning the blogger lovers however this post is truly a good article, keep it up.
Appreciating the dedication you put into your website and in depth information you offer.
It’s awesome to come across a blog every once in a while that isn’t the same outdated rehashed material.
Wonderful read! I’ve bookmarked your site and I’m adding your RSS feeds to my Google account.
Greetings I am so delighted I found your site, I really found you by error, while I was researching on Google for something else, Nonetheless I am here now and would just like to say
cheers for a incredible post and a all round entertaining blog (I
also love the theme/design), I don’t have time
to browse it all at the minute but I have bookmarked it and also
included your RSS feeds, so when I have time I will be back to read a lot more, Please do keep up the awesome jo.
Aw, this was a very nice post. Finding the time and actual effort to generate
a great article… but what can I say… I
hesitate a whole lot and never manage to get nearly anything done.
Hello to every body, it’s my first visit of this website;
this website carries amazing and really fine information for visitors.
Hey I am so happy I found your website, I really found you by error, while I was searching on Google for something else, Anyhow
I am here now and would just like to say cheers for a fantastic post and a all round exciting blog (I
also love the theme/design), I don’t have time to
browse it all at the moment but I have saved it and also added your RSS
feeds, so when I have time I will be back to read much more, Please do keep up the
fantastic b.
It’s in fact very complex in this busy life to listen news on TV,
thus I only use world wide web for that reason, and get the
newest information.
What’s up, just wanted to tell you, I enjoyed this blog post.
It was inspiring. Keep on posting!
Hello there! This is my first visit to your blog! We are a group of volunteers and starting a new initiative in a community in the same niche.
Your blog provided us useful information to work on. You have done a
extraordinary job!
I’ll right away take hold of your rss feed as I can’t in finding your email
subscription hyperlink or e-newsletter service. Do you have any?
Kindly allow me recognise so that I could subscribe.
Thanks.
I know this if off topic but I’m looking into starting my own blog and was curious what all is required to
get set up? I’m assuming having a blog like
yours would cost a pretty penny? I’m not very web smart
so I’m not 100% certain. Any recommendations or advice would be greatly
appreciated. Cheers
Hello There. I found your blog the use of msn. That is an extremely
well written article. I’ll make sure to
bookmark it and return to learn extra of your helpful info.
Thanks for the post. I’ll definitely return.