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 think the admin of this website is truly working hard in favor of his website, since here every
information is quality based information.
Informative article, totally what I wanted to find.
Thank you for every other excellent post.
Where else may just anyone get that type of info in such a perfect means of writing?
I have a presentation subsequent week, and I am on the search for such information.
I’m truly enjoying the design and layout of your website.
It’s a very easy on the eyes which makes it much more pleasant for me to come here and
visit more often. Did you hire out a developer to create your theme?
Excellent work!
Ahaa, its good discussion about this piece of writing here
at this weblog, I have read all that, so now me also commenting
at this place.
Thanks in support of sharing such a fastidious idea, post is nice,
thats why i have read it entirely
I have fun with, result in I found exactly what I used to be looking for.
You have ended my 4 day long hunt! God Bless you
man. Have a nice day. Bye
I have fun with, lead to I found just what I was having a
look for. You have ended my four day lengthy hunt!
God Bless you man. Have a nice day. Bye
I was suggested this website by my cousin. I’m not sure whether this post is written by him as no one else know such detailed about my difficulty.
You’re wonderful! Thanks!
I love what you guys are usually up too. This sort of clever work
and exposure! Keep up the great works guys I’ve incorporated you guys
to blogroll.
Great blog you’ve got here.. It’s hard to find high quality writing like yours these days.
I truly appreciate people like you! Take care!!
A fascinating discussion is worth comment. I think that you ought to write more about this issue, it may not be a taboo
subject but usually folks don’t talk about these subjects.
To the next! All the best!!
It’s awesome for me to have a web site, which is good in favor of
my knowledge. thanks admin
Saved as a favorite, I like your web site!
Hi mates, its impressive paragraph concerning educationand completely explained,
keep it up all the time.
Hey There. I discovered your weblog the usage
of msn. That is an extremely smartly written article.
I will be sure to bookmark it and return to read more of
your helpful info. Thanks for the post. I’ll definitely return.
Good post. I am experiencing many of these issues as well..
I every time used to study post in news papers but now as I
am a user of web so from now I am using net for posts,
thanks to web.
Marvelous, what a weblog it is! This website gives helpful data to us, keep it up.
When I originally left a comment I appear to have clicked the -Notify me when new
comments are added- checkbox and now whenever a comment is
added I recieve four emails with the exact same comment.
There has to be a way you are able to remove me from that service?
Thank you!
Its not my first time to visit this site, i am visiting this website dailly and take nice information from here all the time.
I am extremely impressed with your writing skills as well as
with the layout on your blog. Is this a paid theme or did you
customize it yourself? Either way keep up the excellent quality writing, it’s rare to see a great blog like
this one these days.
Valuable info. Fortunate me I found your site by accident, and
I am surprised why this twist of fate did not came about in advance!
I bookmarked it.
Thanks for sharing your thoughts on mattress stores.
Regards
If you wish for to take a good deal from this article then you have to apply such
methods to your won weblog.
Hi to every one, the contents present at this web site are actually amazing for
people experience, well, keep up the nice work fellows.
Pretty! This was an extremely wonderful post. Many thanks for providing this information.
This design is spectacular! You definitely know how to keep
a reader entertained. 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!
Hi, I do think your site could possibly be having internet browser
compatibility problems. Whenever I look at your site in Safari, it looks fine but when opening in Internet Explorer, it’s
got some overlapping issues. I just wanted to provide you with a quick heads up!
Besides that, great site!
Hi this is kind of of off topic but I was wanting to know if blogs use WYSIWYG editors or if
you have to manually code with HTML. I’m starting a blog soon but have no coding know-how so I wanted to get
guidance from someone with experience. Any help would be greatly appreciated!
Have you ever considered writing an ebook or guest authoring on other
sites? I have a blog based on the same subjects you discuss and would love to
have you share some stories/information. I know my viewers would value your
work. If you’re even remotely interested, feel free to shoot me an e mail.
Great goods from you, man. I’ve keep in mind your stuff prior to and you’re just too magnificent.
I actually like what you’ve acquired right here, really like what you’re stating and the best way in which you assert it.
You are making it enjoyable and you still care for to stay
it wise. I can not wait to learn much more from you. This is
really a terrific site.
Excellent site. Lots of useful information here.
I’m sending it to a few friends ans additionally sharing
in delicious. And certainly, thanks on your sweat!
Hey There. I found your blog using msn. This is a very well
written article. I’ll be sure to bookmark it and return to read more
of your useful info. Thanks for the post. I’ll certainly comeback.
Hello, its good post about media print, we all be aware of media is a
enormous source of data.
Greetings from Florida! I’m bored at work so I decided to browse your blog
on my iphone during lunch break. I really like the knowledge you
provide here and can’t wait to take a look when I get home.
I’m surprised at how fast your blog loaded on my mobile ..
I’m not even using WIFI, just 3G .. Anyhow, amazing site!
Somebody necessarily assist to make seriously articles I might state.
That is the very first time I frequented your web page and thus far?
I amazed with the research you made to create this actual submit amazing.
Great process!
Woah! I’m really enjoying the template/theme of this website.
It’s simple, yet effective. A lot of times it’s challenging
to get that “perfect balance” between superb usability and appearance.
I must say you have done a amazing job with this.
Also, the blog loads extremely quick for me on Firefox.
Excellent Blog!
You’re so cool! I don’t suppose I have read anything like this before.
So good to discover someone with some genuine thoughts on this subject.
Seriously.. many thanks for starting this up.
This web site is one thing that is needed on the internet, someone with a bit of originality!
I’m curious to find out what blog system you’re utilizing?
I’m experiencing some small security problems with my latest site and I would like to find something more safeguarded.
Do you have any recommendations?
Thank you for the good writeup. It in fact was a amusement account it.
Look advanced to far added agreeable from you! However, how can we communicate?
Hey There. I discovered your blog the use of msn. This is
an extremely smartly written article. I will be sure to bookmark it and return to read more of your helpful info.
Thank you for the post. I will definitely comeback.
Thanks for finally writing about > The Wasteful Legacy of Programming as Language | Carlos Oliveira
– Optimization & Engineering < Loved it!
I do not even know how I ended up here, but I thought this post was great.
I do not know who you are but certainly you’re going to a famous blogger if you aren’t already ;) Cheers!
Do you have a spam problem on this website; I also am a blogger,
and I was curious about your situation; we have developed some nice methods and we are looking to trade techniques
with others, be sure to shoot me an e-mail if interested.
Pretty nice post. I simply stumbled upon your weblog and wished to mention that I’ve really enjoyed surfing around your weblog posts.
After all I’ll be subscribing in your rss feed and I’m hoping you write again soon!
Woah! I’m really digging the template/theme of this blog.
It’s simple, yet effective. A lot of times it’s hard to
get that “perfect balance” between usability
and visual appeal. I must say you have done a excellent job
with this. Also, the blog loads extremely fast for me on Chrome.
Outstanding Blog!
Having read this I believed it was very enlightening.
I appreciate you finding the time and effort to put this informative article together.
I once again find myself spending a lot of time both reading and commenting.
But so what, it was still worthwhile!
With havin so much written content do you ever run into any problems of plagorism or copyright
violation? My blog has a lot of unique content I’ve either authored myself or outsourced but
it seems a lot of it is popping it up all
over the web without my authorization. Do you
know any techniques to help protect against content from being stolen? I’d really appreciate
it.
It’s perfect time to make a few plans for the long run and it’s time to be
happy. I have read this post and if I may just I desire to counsel you
few fascinating issues or advice. Maybe you can write subsequent articles regarding this article.
I wish to read more issues approximately it!