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
I’m extremely impressed with your writing skills as well as 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 nice blog like this one these days.
Greetings from Florida! I’m bored at work so I decided to check out your blog on my iphone during lunch break.
I love the information you provide here and can’t wait to take a look when I get home.
I’m amazed at how fast your blog loaded on my
phone .. I’m not even using WIFI, just 3G .. Anyhow, very good site!
We are a bunch of volunteers and starting a brand new scheme in our community.
Your site provided us with useful information to
work on. You have done a formidable job and our whole community can be thankful to you.
constantly i used to read smaller content
which also clear their motive, and that is also happening with this
post which I am reading at this time.
Hello to all, as I am really eager of reading
this weblog’s post to be updated on a regular basis. It contains pleasant material.
It is actually a great and useful piece of information.
I’m satisfied that you shared this helpful info with us. Please stay us up to date like this.
Thank you for sharing.
Can I simply just say what a comfort to find a person that truly
knows what they are talking about on the web. You certainly understand how to bring
a problem to light and make it important. A lot more people really
need to read this and understand this side of the story. It’s surprising you aren’t more popular since you most certainly have the
gift.
Thank you for the auspicious writeup. It in truth was once a entertainment
account it. Look advanced to far introduced agreeable from you!
However, how could we keep in touch?
I was suggested this website by my cousin. I
am not sure whether this post is written by him as nobody else know such detailed about my trouble.
You are amazing! Thanks!
I think the admin of this site is in fact working hard for his web page, because here
every stuff is quality based material.
I’ve been surfing online more than 2 hours today, yet I never
found any interesting article like yours. It is pretty
worth enough for me. In my opinion, if all webmasters and bloggers made good content as you
did, the internet will be much more useful than ever before.
Hello, I enjoy reading through your article post. I
wanted to write a little comment to support you.
Actually no matter if someone doesn’t understand afterward its up to other viewers that they will
assist, so here it happens.
Its like you learn my mind! You appear to know so much approximately this, like you wrote the e book in it or something.
I feel that you can do with a few p.c. to force the message house a bit, however
other than that, this is great blog. An excellent read.
I’ll definitely be back.
Wonderful post! We are linking to this great article on our website.
Keep up the great writing.
After I originally left a comment I seem to have clicked
on the -Notify me when new comments are added- checkbox and now whenever a comment
is added I recieve four emails with the same
comment. Is there a means you can remove me from that
service? Appreciate it!
I’d like to find out more? I’d care to find out more details.
Howdy! I’m at work surfing around your blog from my new iphone
3gs! Just wanted to say I love reading your blog and look forward to all your
posts! Keep up the great work!
whoah this blog is wonderful i like reading your articles.
Stay up the great work! You understand, lots of individuals are looking around for this information, you can aid them greatly.
Somebody essentially assist to make severely articles I would state.
That is the very first time I frequented your web page and to this point?
I surprised with the research you made to create this particular put up amazing.
Excellent activity!
Hello there! Do you use Twitter? I’d like to follow you if that would be ok.
I’m definitely enjoying your blog and look forward to new
posts.
I’m not sure exactly why but this blog is loading very slow for me.
Is anyone else having this problem or is it a issue on my
end? I’ll check back later on and see if the problem still exists.
I am really grateful to the holder of this site who has shared this wonderful article at here.
Wonderful article! This is the kind of information that are supposed to be shared around the net.
Shame on the search engines for now not positioning this put up higher!
Come on over and talk over with my website . Thank you =)
Pretty portion of content. I simply stumbled upon your blog and in accession capital
to claim that I acquire actually enjoyed account your weblog posts.
Anyway I’ll be subscribing on your feeds and even I fulfillment you get entry to constantly quickly.
With havin so much content and articles do you ever run into any issues of plagorism or copyright
infringement? My blog has a lot of exclusive
content I’ve either authored myself or outsourced but it looks
like a lot of it is popping it up all over the web without my authorization. Do you know any methods to
help protect against content from being stolen?
I’d really appreciate it.
Hi there to all, the contents existing at this site are
really amazing for people experience, well, keep up
the good work fellows.
Hi, I do believe this is an excellent web site. I stumbledupon it ;) I’m going to revisit once again since i have saved as
a favorite it. Money and freedom is the greatest way to change, may
you be rich and continue to guide other people.
Definitely believe that that you said. Your favorite justification appeared to be at the
web the easiest factor to be aware of. I say to you, I definitely get irked
while other folks consider worries that they just
don’t realize about. You managed to hit the nail upon the
highest and also defined out the entire thing without having
side-effects , folks could take a signal. Will likely be
back to get more. Thank you
Hello to all, how is everything, I think every one is getting more from
this web page, and your views are good designed for new people.
I don’t know whether it’s just me or if perhaps everyone else experiencing problems with your blog.
It appears as if some of the written text in your content are running off the screen. Can somebody else please provide
feedback and let me know if this is happening to them as well?
This might be a problem with my browser because I’ve had this happen previously.
Many thanks
Very shortly this web site will be famous among all blog
people, due to it’s pleasant content
Hi there, just became alert to your blog through Google, and found that
it is truly informative. I am gonna watch out for brussels.
I’ll be grateful if you continue this in future.
A lot of people will be benefited from your writing.
Cheers!
I do consider all of the ideas you have presented for your post.
They are very convincing and will definitely work. Still,
the posts are very brief for newbies. May you please prolong them a
little from subsequent time? Thank you for the post.
What’s up to every single one, it’s truly a good for me to pay a visit
this website, it contains helpful Information.
Post writing is also a excitement, if you know then you can write if
not it is complex to write.
Thank you for every other excellent post. Where else may anybody get that kind of info in such a perfect method of writing?
I have a presentation subsequent week, and I’m on the search for such info.
Hola! I’ve been reading your website for a while
now and finally got the bravery to go ahead and give you a shout out from Dallas Tx!
Just wanted to mention keep up the fantastic job!
Hello, I enjoy reading all of your article.
I like to write a little comment to support
you.
Fantastic blog! Do you have any helpful hints for aspiring writers?
I’m hoping to start my own site soon but I’m a little lost on everything.
Would you recommend starting with a free platform like
Wordpress or go for a paid option? There are so many options
out there that I’m completely confused .. Any ideas? Appreciate it!
Write more, thats all I have to say. Literally,
it seems as though you relied on the video to make your point.
You definitely know what youre talking about, why waste your
intelligence on just posting videos to your weblog when you could be giving us something informative to read?
You should be a part of a contest for one of the finest blogs on the net.
I am going to recommend this blog!
First off I would like to say wonderful blog! I had a quick question in which I’d like to ask if you don’t
mind. I was interested to know how you center yourself and
clear your thoughts before writing. I have had
a hard time clearing my thoughts in getting my ideas out there.
I do take pleasure in writing but it just seems like
the first 10 to 15 minutes are wasted just trying to figure
out how to begin. Any ideas or hints? Kudos!
Howdy! 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 recommendations?
What’s up to all, the contents present at
this site are truly amazing for people experience, well, keep up the nice work fellows.
Thank you for sharing your thoughts. I really appreciate your efforts and I will
be waiting for your further post thank you once again.
Hello it’s me, I am also visiting this website on a regular
basis, this web site is in fact good and the people are truly sharing good thoughts.
I seriously love your site.. Very nice colors & theme. Did
you develop this website yourself? Please reply
back as I’m wanting to create my own site and want to find out
where you got this from or exactly what the theme is named.
Thanks!
You should take part in a contest for one of the greatest blogs on the internet.
I will recommend this blog!
magnificent post, very informative. I wonder why the opposite experts of this sector don’t understand this.
You must continue your writing. I am sure, you’ve a huge readers’ base already!