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
Very soon this web site will be famous amid all blogging and site-building viewers, due to it’s fastidious articles
I have been browsing on-line more than three hours nowadays, but
I by no means discovered any interesting article like yours.
It is lovely worth enough for me. Personally, if all web owners
and bloggers made excellent content material as you did,
the web shall be a lot more useful than ever before.
Howdy! Quick question that’s entirely off topic. Do you know how to make
your site mobile friendly? My web site looks weird when browsing from my iphone.
I’m trying to find a theme or plugin that might be able
to fix this issue. If you have any suggestions,
please share. Thanks!
Hey There. I found your blog using msn. This is an extremely well written article.
I will be sure to bookmark it and come back to read more of your useful information. Thanks for the post.
I will certainly return.
I like what you guys are usually up too. Such clever work and reporting!
Keep up the great works guys I’ve included you guys to my
blogroll.
Wow, this piece of writing is nice, my sister is analyzing these things,
thus I am going to convey her.
Ridiculous story there. What occurred after?
Good luck!
Great blog here! Additionally your web site a lot up
fast! What web host are you the usage of? Can I am getting your affiliate hyperlink
for your host? I desire my web site loaded up as fast as yours lol
It’s enormous that you are getting ideas from this article as
well as from our discussion made here.
You’ve made some really good points there. I looked on the internet to
learn more about the issue and found most people will
go along with your views on this website.
The other day, while I was at work, my sister stole my iPad and tested to see if it can survive a twenty five foot drop,
just so she can be a youtube sensation. My iPad is now destroyed
and she has 83 views. I know this is entirely off
topic but I had to share it with someone!
This post is invaluable. Where can I find out more?
You’re so interesting! I don’t suppose I have read through a single thing
like that before. So nice to find another person with a
few original thoughts on this subject. Seriously.. thank you for
starting this up. This website is something that’s needed on the web, someone with a bit of originality!
Thanks on your marvelous posting! I actually enjoyed reading
it, you happen to be a great author.I will remember to bookmark your blog and will eventually come back
from now on. I want to encourage you to definitely continue your great
posts, have a nice day!
I am really glad to read this website posts which carries lots of valuable data, thanks for providing such
data.
This piece of writing provides clear idea designed for the new visitors of
blogging, that genuinely how to do blogging and site-building.
What’s up to all, how is all, I think every one is getting more from this web site, and your views are good in favor of new viewers.
Nice post. I was checking continuously this blog and I’m impressed!
Very helpful information specifically the last part :) I care for such information a lot.
I was seeking this certain information for a long time.
Thank you and good luck.
When someone writes an paragraph he/she maintains the image of a user in his/her brain that
how a user can understand it. Therefore that’s why this post is perfect.
Thanks!
Hiya! Quick question that’s totally off topic.
Do you know how to make your site mobile friendly?
My web site looks weird when browsing from my apple iphone.
I’m trying to find a template or plugin that might be able
to correct this issue. If you have any suggestions, please share.
Many thanks!
Thanks for sharing your thoughts on dumpster rentals wilton manors.
Regards
Its such as you read my thoughts! You seem to grasp so much approximately this, such
as you wrote the e book in it or something. I believe that you
just could do with a few percent to power the message house
a little bit, however other than that, that is excellent blog.
A great read. I’ll certainly be back.
hey there and thank you for your info – I
have certainly picked up something new from right here.
I did however expertise several technical issues using this site,
as I experienced to reload the site a lot of times previous to I could get it to load correctly.
I had been wondering if your web host is OK? Not that I’m complaining, but slow loading instances times will often affect your placement in google and can damage your high quality score if advertising and
marketing with Adwords. Well I’m adding this RSS to my e-mail and
could look out for a lot more of your respective intriguing content.
Make sure you update this again soon.
You could certainly see your skills within the work you write.
The world hopes for even more passionate writers such as you who
aren’t afraid to mention how they believe. At all times go after your heart.
If some one wants to be updated with latest technologies therefore he must be pay a quick visit this
site and be up to date every day.
Thanks on your marvelous posting! I seriously enjoyed reading it, you may be a great author.
I will make certain to bookmark your blog and definitely will
come back sometime soon. I want to encourage continue your great writing, have a nice weekend!
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?
Either way keep up the excellent quality writing, it’s rare to see a nice blog like this one these days.
Amazing blog! Do you have any tips and hints for aspiring writers?
I’m hoping to start my own blog soon but I’m a little lost on everything.
Would you suggest starting with a free platform like WordPress or go for a paid option?
There are so many options out there that I’m totally confused
.. Any tips? Cheers!
WOW just what I was looking for. Came here by searching for fire
water damage restoration
Hello there! This is kind of off topic but I need some help from an established
blog. Is it hard to set up your own blog? I’m not very techincal but I can figure things out pretty
fast. I’m thinking about making my own but I’m not sure where to start.
Do you have any points or suggestions? Many thanks
Hi there mates, how is the whole thing, and what you would like to say
on the topic of this piece of writing, in my view its really
amazing for me.
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.
Very rapidly this web page will be famous amid all blogging and site-building visitors,
due to it’s nice posts
Ahaa, its nice conversation about this piece of writing at this place at
this webpage, I have read all that, so at this
time me also commenting here.
It’s very straightforward to find out any topic on web as compared to textbooks, as I found this paragraph at this website.
Asking questions are truly pleasant thing if you are not understanding anything entirely,
but this article offers good understanding yet.
Great delivery. Great arguments. Keep up the amazing effort.
Hiya! I know this is kinda off topic nevertheless I’d figured I’d ask.
Would you be interested in trading links or maybe guest writing a blog article
or vice-versa? My website covers a lot of the same topics as yours and I believe we could greatly benefit from each other.
If you are interested feel free to shoot me an e-mail.
I look forward to hearing from you! Great blog by the
way!
Hi there! I just wanted to ask if you ever have any problems with hackers?
My last blog (wordpress) was hacked and I ended up losing months of
hard work due to no data backup. Do you have any methods to protect against hackers?
Marvelous, what a web site it is! This webpage provides valuable
data to us, keep it up.
Appreciation to my father who shared with me concerning this
website, this webpage is truly amazing.
Very quickly this site will be famous amid all blogging viewers, due to it’s good content
I need to to thank you for this excellent read!!
I definitely loved every bit of it. I have you saved as a favorite to look at new things you post…
Great post! We will be linking to this great post
on our site. Keep up the good writing.
At this moment I am ready to do my breakfast,
after having my breakfast coming again to read further news.
Thank you for sharing your info. I really appreciate your efforts and
I will be waiting for your further post thank you once again.
Attractive component of content. I simply stumbled upon your weblog and in accession capital to claim that I get in fact enjoyed account
your weblog posts. Anyway I will be subscribing for your feeds and even I success you get
entry to persistently quickly.
I’m extremely impressed along with your writing
abilities and also with the format on your weblog.
Is that this a paid subject matter or did you customize it your
self? Anyway stay up the excellent high quality writing, it is
rare to see a great blog like this one these days..