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
It’s nearly impossible to find educated people for this subject, but
you seem like you know what you’re talking about!
Thanks
This is a topic that is near to my heart… Thank you!
Exactly where are your contact details though?
If you wish for to obtain a great deal from this article then you have
to apply these techniques to your won weblog.
Everything is very open with a clear description of the issues.
It was really informative. Your website is very helpful.
Thank you for sharing!
I visited multiple web sites however the audio feature for audio songs present at this web page is in fact wonderful.
Howdy! This article couldn’t be written much better! Reading through
this post reminds me of my previous roommate! He always kept preaching about this.
I will forward this post to him. Pretty sure he will have a very good read.
I appreciate you for sharing!
We stumbled over here from a different page and thought I may as well check things out.
I like what I see so now i am following you. Look forward to finding out about your web page yet
again.
When someone writes an piece of writing he/she maintains the image of a user in his/her brain that how a user can be aware of it.
Therefore that’s why this post is perfect. Thanks!
It is not my first time to go to see this website, i am browsing this website dailly and
get good facts from here all the time.
Admiring the hard work you put into your blog and detailed information you present.
It’s awesome to come across a blog every once in a while that isn’t the same old rehashed
material. Wonderful read! I’ve saved your site and I’m including your RSS feeds to
my Google account.
Hey there I am so thrilled I found your site, I really found you by error, while I was searching on Digg for something else, Nonetheless I am here now and would just
like to say thank you for a fantastic 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 book-marked it and also included your RSS feeds, so
when I have time I will be back to read much more, Please do keep up the excellent job.
After looking over a handful of the blog posts
on your blog, I truly appreciate your way of blogging.
I saved it to my bookmark website list and will be checking back in the near future.
Take a look at my web site too and let me know your opinion.
Wow, that’s what I was seeking for, what a data! present here at this weblog, thanks admin of this
website.
I could not resist commenting. Well written!
Hi there, this weekend is good in support of me, for the reason that this occasion i am reading this wonderful educational piece of writing here at my residence.
Hey! Do you know if they make any plugins to protect against hackers?
I’m kinda paranoid about losing everything I’ve worked hard on. Any tips?
Wow! This blog looks just like my old one! It’s on a entirely different subject but it has pretty much the same layout and
design. Wonderful choice of colors!
I was recommended 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 problem. You’re incredible!
Thanks!
Greetings I am so glad I found your blog, I
really found you by mistake, while I was researching on Aol
for something else, Anyways I am here now and would just like to say
thanks a lot for a tremendous post and a all round entertaining blog
(I also love the theme/design), I don’t have time to go
through it all at the minute but I have book-marked 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 excellent b.
Ahaa, its good dialogue on the topic of this article here at this weblog, I have read all that, so at this time me also commenting here.
When I initially commented I clicked the “Notify me when new comments are added”
checkbox and now each time a comment is added I get several e-mails with the same
comment. Is there any way you can remove me from that service?
Cheers!
What i do not understood is if truth be told how you are
not actually much more neatly-appreciated than you might be right now.
You are very intelligent. You know therefore significantly on the subject of
this subject, produced me for my part believe it from so many numerous angles.
Its like men and women aren’t involved except it’s something to accomplish with Lady gaga!
Your personal stuffs nice. Always deal with it up!
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.
Incredible! This blog looks just like my old one!
It’s on a totally different topic but it has pretty much the same page layout and design. Excellent choice of colors!
Very descriptive post, I loved that a lot. Will there be a part 2?
I was recommended this website by way of my cousin. I am
not certain whether this submit is written via him as nobody
else know such designated about my trouble.
You are incredible! Thanks!
Hi to every single one, it’s genuinely a pleasant for me to go to see this site, it includes
priceless Information.
Remarkable! Its genuinely amazing paragraph, I have got much clear idea concerning from this piece of writing.
Hmm it seems like your blog ate my first comment (it was
extremely long) so I guess I’ll just sum it up what I wrote
and say, I’m thoroughly enjoying your blog. I as well am an aspiring blog blogger but I’m still new to the whole thing.
Do you have any recommendations for newbie blog writers?
I’d definitely appreciate it.
Very rapidly this website will be famous amid all blog people, due
to it’s fastidious content
I have read so many content concerning the
blogger lovers but this article is genuinely a good paragraph, keep it up.
Wow, that’s what I was exploring for, what a material!
existing here at this weblog, thanks admin of this website.
Superb blog you have here but I was curious if you knew of any community forums that cover the same topics discussed in this article?
I’d really love to be a part of online community
where I can get opinions from other experienced individuals that
share the same interest. If you have any recommendations, please let me
know. Thanks!
I do agree with all the ideas you have presented to your post.
They are really convincing and can definitely work.
Nonetheless, the posts are very brief for newbies. May you please extend them a little from next time?
Thanks for the post.
For the reason that the admin of this site is working, no doubt very soon it will be renowned, due to its quality
contents.
This design is steller! You obviously know how to keep a reader amused.
Between your wit and your videos, I was almost moved to start my
own blog (well, almost…HaHa!) Fantastic job. I really enjoyed what you had to say, and more than that, how
you presented it. Too cool!
Thanks for sharing your thoughts on elektromobil. Regards
Quality content is the important to be a focus for the people to pay a visit the web
site, that’s what this web site is providing.
Hello, i read your blog occasionally and i own a similar one and i was just curious if you get a lot of spam responses?
If so how do you reduce it, any plugin or anything you can advise?
I get so much lately it’s driving me insane so any assistance is very much appreciated.
Very good article. I am experiencing a few of these issues as well..
Hi there it’s me, I am also visiting this web site
on a regular basis, this web site is truly fastidious and the viewers are truly sharing good thoughts.
This website was… how do I say it? Relevant!!
Finally I have found something that helped me. Thanks!
Hello there, You have done a great job. I’ll definitely digg it and personally recommend to my
friends. I’m sure they will be benefited from this website.
I blog frequently and I really appreciate your information. The article has truly peaked my interest.
I’m going to book mark your blog and keep checking for new information about once
a week. I subscribed to your RSS feed as well.
I delight in, lead to I found exactly what I used to be having
a look for. You have ended my four day lengthy hunt!
God Bless you man. Have a great day. Bye
Hello all, here every one is sharing such familiarity,
therefore it’s fastidious to read this website, and I used to go to see
this website all the time.
Does your blog have a contact page? I’m having trouble locating it but,
I’d like to send you an e-mail. I’ve got some ideas for your
blog you might be interested in hearing. Either way, great site
and I look forward to seeing it expand over time.
Great post however , I was wondering if you could write a litte more on this subject?
I’d be very grateful if you could elaborate a little bit further.
Bless you!
Heya i’m for the primary time here. I found this board and I find It
truly helpful & it helped me out a lot. I hope to provide something again and help others such as you aided me.
Very quickly this site will be famous among all blogging and site-building people, due to it’s nice articles