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
hey there and thank you for your information – I’ve definitely picked up something new from right here.
I did however expertise some technical points using this web
site, since I experienced to reload the web
site many times previous to I could get it to load properly.
I had been wondering if your web hosting is OK? Not that I’m complaining,
but sluggish loading instances times will often affect your placement in google and can damage your high quality score if ads and
marketing with Adwords. Anyway I’m adding this RSS to
my email and could look out for much more of your respective intriguing content.
Ensure that you update this again soon.
Hi I am so delighted I found your blog page, I really found you by error, while I was searching on Askjeeve for something else, Anyways I am here
now and would just like to say thank you for a incredible post and
a all round interesting blog (I also love the theme/design), I don’t have time
to read it all at the minute but I have bookmarked it
and also added in your RSS feeds, so when I have
time I will be back to read more, Please do keep up the superb work.
Wow, this article is nice, my sister is analyzing such
things, thus I am going to tell her.
Hello, Neat post. There’s an issue together with your web site
in web explorer, could check this? IE still is the marketplace leader and a good component to other folks will miss your excellent writing due to this problem.
Oh my goodness! Impressive article dude! Many thanks, However I am going through difficulties with your RSS.
I don’t understand the reason why I am unable to join it.
Is there anyone else having similar RSS issues? Anybody
who knows the answer can you kindly respond?
Thanks!!
Hi there i am kavin, its my first occasion to
commenting anywhere, when i read this piece of writing i
thought i could also create comment due to this sensible piece of
writing.
There’s definately a great deal to know about
this topic. I like all of the points you made.
It’s in fact very complicated in this active life to listen news on Television, so I just
use the web for that purpose, and take the newest news.
Genuinely no matter if someone doesn’t understand afterward its up to
other viewers that they will assist, so here
it happens.
fantastic post, very informative. I’m wondering why the other specialists of this sector don’t
realize this. You should proceed your writing.
I’m confident, you have a great readers’ base already!
What’s up, the whole thing is going fine here and ofcourse every one
is sharing information, that’s really excellent, keep up writing.
I’m gone to tell my little brother, that he should also visit this weblog on regular basis
to get updated from most up-to-date reports.
It’s amazing to pay a visit this web site and reading the views of all friends
about this piece of writing, while I am also keen of getting knowledge.
Great blog right here! Also your site lots up very fast! What web host are you the usage of?
Can I get your associate link on your host?
I want my website loaded up as quickly as yours lol
I like the helpful information you provide in your articles.
I’ll bookmark your blog and check again here frequently.
I’m quite sure I’ll learn many new stuff right here!
Best of luck for the next!
Great post. I am going through many of these issues as well..
Very good information. Lucky me I ran across your site by accident (stumbleupon).
I’ve saved as a favorite for later!
Fantastic beat ! I wish to apprentice while you amend your web site,
how can i subscribe for a blog website? The account helped me
a acceptable deal. I had been a little bit acquainted of this your broadcast provided bright clear idea
Simply want to say your article is as astonishing.
The clearness in your post is simply spectacular and i could assume you are an expert on this subject.
Well with your permission let me to grab your RSS feed to keep up to date with forthcoming post.
Thanks a million and please continue the gratifying work.
This is a topic that’s close to my heart… Thank you!
Where are your contact details though?
Its such as you read my mind! You appear to grasp so much about this,
such as you wrote the ebook in it or something.
I believe that you simply can do with a few percent to force the message house a
bit, but other than that, this is wonderful blog. A fantastic read.
I will certainly be back.
Hello, Neat post. There is a problem together with your website in internet explorer, might
check this? IE still is the market leader and a huge component
of folks will miss your great writing because of this problem.
This info is invaluable. When can I find out more?
Thanks for sharing your thoughts on custom Raw Silk Yarmulke.
Regards
It’s perfect time to make some plans for the future and it’s time to be happy.
I have read this post and if I could I desire to
suggest you few interesting things or advice. Maybe you could write next articles referring
to this article. I desire to read even more things about it!
Hi there, this weekend is nice designed for me, because this point in time
i am reading this enormous educational paragraph here at
my home.
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!
I’m gone to inform my little brother, that he should also go to
see this web site on regular basis to get updated from most recent news.
Hi there, i read your blog occasionally and i own a similar one and i was just wondering if you get
a lot of spam feedback? If so how do you reduce it,
any plugin or anything you can suggest? I get so much
lately it’s driving me crazy so any help is very much appreciated.
It’s actually very complicated in this busy life to
listen news on Television, so I only use the web
for that reason, and get the hottest information.
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.
Everything is very open with a clear description of the challenges.
It was truly informative. Your website is extremely helpful.
Thanks for sharing!
With havin so much content do you ever run into any issues of plagorism or copyright infringement?
My site has a lot of exclusive content I’ve either authored myself or outsourced
but it appears a lot of it is popping it up all over the internet without my authorization.
Do you know any ways to help protect against content from being ripped off?
I’d definitely appreciate it.
Excellent post. I was checking constantly this blog and I am impressed!
Extremely useful information particularly the last
part :) I care for such information much. I was seeking
this particular info for a very long time.
Thank you and good luck.
I’ve been exploring for a bit for any high quality articles
or blog posts in this sort of area . Exploring in Yahoo I
at last stumbled upon this site. Studying this info So i am
happy to show that I have an incredibly just right
uncanny feeling I came upon exactly what I needed.
I so much indisputably will make certain to do not disregard this web site and provides it a
glance on a continuing basis.
Hi, constantly i used to check web site posts here in the early hours in the dawn, as i love
to gain knowledge of more and more.
Wonderful article! This is the kind of information that are meant to be
shared around the net. Disgrace on Google
for not positioning this post upper! Come on over and
visit my site . Thanks =)
I appreciate, cause I found exactly what I used to
be looking for. You’ve ended my four day lengthy hunt!
God Bless you man. Have a nice day. Bye
We absolutely love your blog and find most of your post’s to be just what I’m looking for.
Do you offer guest writers to write content available for you?
I wouldn’t mind producing a post or elaborating on many of
the subjects you write concerning here. Again, awesome web site!
Hi there, this weekend is nice in favor of me, because this point in time i am reading this
enormous informative piece of writing here at my house.
Currently it looks like BlogEngine is the top blogging platform available right now.
(from what I’ve read) Is that what you are using on your blog?
Admiring the dedication you put into your website and detailed information you provide.
It’s great to come across a blog every once in a while that
isn’t the same unwanted rehashed material. Fantastic read!
I’ve saved your site and I’m including your RSS feeds to my Google account.
Peculiar article, just what I was looking for.
It’s truly very complicated in this active life to listen news on TV,
so I simply use internet for that reason, and get the hottest information.
Wonderful article! That is the kind of info that are supposed to
be shared around the internet. Disgrace on Google for not
positioning this submit upper! Come on over and talk over with my web site .
Thank you =)
This is really interesting, You are a very skilled blogger.
I’ve joined your rss feed and look forward to seeking more of your magnificent post.
Also, I’ve shared your web site in my social networks!
After looking over a number of the blog posts on your site, I really
appreciate your way of blogging. I saved as a favorite it to my bookmark webpage list and will be
checking back soon. Please check out my website too and let me know what you think.
No matter if some one searches for his required thing,
therefore he/she desires to be available that in detail, so that thing is maintained over here.
Useful info. Fortunate me I discovered your site accidentally, and I am stunned why this coincidence did
not took place earlier! I bookmarked it.
Wow! In the end I got a blog from where I be capable of actually get helpful facts concerning my study
and knowledge.