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
Nice post. I learn something new and challenging on websites I stumbleupon everyday.
It’s always exciting to read articles from other authors and use a little something from other websites.
You actually make it appear really easy along with your presentation but I
find this topic to be actually one thing
that I feel I’d by no means understand. It seems too complicated and extremely extensive
for me. I am having a look ahead on your next publish, I will attempt to get the dangle
of it!
Way cool! Some extremely valid points! I appreciate you penning
this write-up and also the rest of the website is really good.
You’ve made some good points there. I checked on the internet
to find out more about the issue and found
most individuals will go along with your views on this site.
Hmm is anyone else experiencing problems with the images on this blog loading?
I’m trying to figure out if its a problem on my end or if it’s
the blog. Any suggestions would be greatly appreciated.
Thank you for another informative web site. Where else may just I get that kind of information written in such a perfect way?
I’ve a mission that I’m simply now operating on, and I’ve been at the glance out for such info.
I used to be suggested this website via my cousin. I am
no longer sure whether or not this post is written by means of him as no one else realize such distinct about
my problem. You are wonderful! Thank you!
Hello, I enjoy reading through your article post. I wanted to write a
little comment to support you.
I used to be recommended this website by my cousin. I’m not certain whether this put up is written by way of him as no one else know such detailed about my difficulty.
You’re wonderful! Thanks!
Hi there, You’ve done a great job. I’ll certainly digg it and personally suggest to my friends.
I’m confident they’ll be benefited from this website.
An interesting discussion is worth comment. I think that you should write more about
this issue, it might not be a taboo subject
but usually folks don’t discuss these issues. To the next!
Best wishes!!
Just wish to say your article is as surprising.
The clearness in your post is just great and i could assume
you’re an expert on this subject. Well with your permission allow me to grab your RSS feed to keep up to date with forthcoming
post. Thanks a million and please carry on the gratifying work.
My brother recommended I might like this blog. He was entirely right.
This post truly made my day. You cann’t imagine
just how much time I had spent for this info!
Thanks!
Wow that was unusual. I just wrote an really long
comment but after I clicked submit my comment didn’t appear.
Grrrr… well I’m not writing all that over again. Anyway, just wanted to
say superb blog!
Aw, this was an exceptionally good post. Taking the time and actual effort to make a superb article… but what
can I say… I procrastinate a whole lot and never manage to get
nearly anything done.
Thank you for another informative site. The place else may just I get that type of
information written in such an ideal way? I have a challenge that I am just now working on, and I’ve
been at the glance out for such information.
No matter if some one searches for his required thing, therefore he/she wishes to be available that in detail,
therefore that thing is maintained over here.
Hi there to every body, it’s my first pay a quick visit of this web site; this
webpage consists of amazing and truly fine stuff in favor of readers.
Wonderful goods from you, man. I’ve be aware your stuff previous to and you’re simply too
fantastic. I really like what you have received here, certainly like what
you’re saying and the way wherein you assert it.
You’re making it enjoyable and you still care for to stay it wise.
I can’t wait to learn far more from you. That is really a tremendous
website.
Hey there superb website! Does running a blog similar
to this take a massive amount work? I have absolutely no understanding of computer programming but I was hoping to start my own blog soon. Anyway, if you have any suggestions or tips for new blog owners please share.
I understand this is off topic but I just wanted to ask.
Many thanks!
Thanks for your marvelous posting! I definitely enjoyed reading it, you are a great author.I will make certain to bookmark your blog and may come back sometime soon. I want to encourage
continue your great work, have a nice evening!
An outstanding share! I have just forwarded this onto a friend who had been doing a little homework on this.
And he in fact ordered me breakfast simply because I discovered
it for him… lol. So allow me to reword this….
Thanks for the meal!! But yeah, thanx for spending time to talk about this topic here on your blog.
I need to to thank you for this fantastic read!!
I certainly enjoyed every little bit of it. I have got you book marked to check out new stuff you post…
I quite like looking through a post that will make men and women think.
Also, thanks for allowing me to comment!
I have fun with, cause I discovered exactly what I was taking
a look for. You have ended my four day long hunt! God Bless you man.
Have a great day. Bye
I was wondering if you ever thought of changing the 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?
My partner and I stumbled over here from a different website and thought I may
as well check things out. I like what I see so now
i am following you. Look forward to exploring your web page for a second time.
Amazing issues here. I am very glad to see your post. Thank you
a lot and I am looking ahead to contact you.
Will you please drop me a e-mail?
I do not know if it’s just me or if perhaps everybody else experiencing issues with your
blog. It appears as though some of the written text within your posts are running off the screen. Can somebody else please comment and let
me know if this is happening to them as well? This might be a issue with my browser because
I’ve had this happen previously. Cheers
This website definitely has all the info I needed about this subject
and didn’t know who to ask.
It’s awesome for me to have a web site, which is valuable in favor of my experience.
thanks admin
Hello, Neat post. There is a problem along with
your website in web explorer, might test this? IE still is the market chief and
a big portion of other folks will omit your great writing due to this
problem.
Wow that was unusual. I just wrote an extremely
long comment but after I clicked submit my comment didn’t show up.
Grrrr… well I’m not writing all that over again.
Anyways, just wanted to say great blog!
Admiring the hard work you put into your website and detailed information you provide.
It’s awesome to come across a blog every once in a while that isn’t the
same outdated rehashed material. Great read! I’ve saved your site and I’m including your RSS feeds to my Google
account.
Hi there colleagues, how is the whole thing, and what you desire
to say regarding this post, in my view its really awesome designed for me.
I every time used to read paragraph in news papers but now as
I am a user of internet so from now I am using net for articles or reviews, thanks to web.
For newest information you have to go to see web and on the web I found this web site as a
finest web site for newest updates.
Wow that was strange. I just wrote an incredibly long comment but after I clicked submit my comment didn’t
show up. Grrrr… well I’m not writing all that
over again. Anyhow, just wanted to say wonderful blog!
Why viewers still use to read news papers when in this technological globe the
whole thing is presented on net?
Hi there, I discovered your web site by means of Google even as looking for a comparable subject, your site came up, it seems great.
I’ve bookmarked it in my google bookmarks.
Hello there, just was aware of your weblog via Google, and
found that it’s truly informative. I’m gonna be careful for brussels.
I’ll be grateful in the event you proceed this
in future. Lots of folks will likely be benefited out of your writing.
Cheers!
It’s very straightforward to find out any topic on net as compared to textbooks, as I found this paragraph at this
website.
Hi there! This is my first comment here so I just wanted
to give a quick shout out and tell you I truly enjoy reading
your articles. Can you recommend any other blogs/websites/forums that
cover the same topics? Many thanks!
You really make it seem so easy with your presentation but I find
this topic to be really something which I think I would never understand.
It seems too complex and very broad for me. I am looking
forward for your next post, I will try to get
the hang of it!
After checking out a handful of the blog posts on your blog,
I honestly appreciate your technique of writing a blog.
I book-marked it to my bookmark site list and will be checking back in the near future.
Please visit my website too and let me know what you think.
WOW just what I was looking for. Came here by searching for Web novels
This is a topic that’s close to my heart… Take care!
Exactly where are your contact details though?
Wow! In the end I got a weblog from where I be capable of genuinely take valuable information concerning my study and knowledge.
We absolutely love your blog and find almost all of your post’s to be precisely what
I’m looking for. Do you offer guest writers to write content to suit your
needs? I wouldn’t mind writing a post or elaborating on a few
of the subjects you write about here. Again, awesome site!
At this time I am ready to do my breakfast, once having my breakfast coming again to read more news.
Hello mates, its enormous piece of writing regarding teachingand completely explained, keep it up all the time.