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
You really make it seem so easy with your presentation but I in finding this matter to be actually something
that I believe I’d by no means understand. It kind of feels too complex and extremely wide for me.
I’m taking a look forward in your subsequent submit, I’ll try to get the hang of it!
It is not my first time to pay a quick visit this site, i am
visiting this web page dailly and take nice data from here everyday.
I loved as much as you will receive carried out right here.
The sketch is attractive, your authored material stylish. nonetheless, you command get bought
an shakiness over that you wish be delivering the following.
unwell unquestionably come further formerly again since exactly the same nearly a lot often inside case you shield this hike.
Howdy! Quick question that’s entirely off topic.
Do you know how to make your site mobile friendly? My
blog looks weird when browsing from my iphone 4.
I’m trying to find a theme or plugin that might be able to resolve this problem.
If you have any recommendations, please share.
With thanks!
Simply wish to say your article is as surprising.
The clearness for your submit is simply cool and that
i can think you’re knowledgeable on this subject.
Well together with your permission let me to snatch your
feed to keep up to date with impending post. Thanks one million and
please carry on the enjoyable work.
Hello! Do you know if they make any plugins to assist with SEO?
I’m trying to get my blog to rank for some targeted keywords
but I’m not seeing very good gains. If you know of any please share.
Thank you!
With havin so much written content do you ever run into any issues
of plagorism or copyright infringement? My site has a lot of completely unique content I’ve either created myself
or outsourced but it appears 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 certainly appreciate it.
Hi there it’s me, I am also visiting this website daily, this web page is genuinely nice and the visitors are genuinely sharing pleasant thoughts.
Definitely believe that which you stated. Your favorite justification seemed to
be at the internet the simplest factor to consider of.
I say to you, I certainly get annoyed even as other people consider worries that they just do not recognize about.
You managed to hit the nail upon the top and also outlined out
the entire thing without having side effect ,
other people can take a signal. Will likely be back to get more.
Thank you
Its like you read my mind! You seem to know so much about this, like you wrote the book in it or
something. I think that you could do with some pics to drive the
message home a bit, but instead of that, this is fantastic blog.
An excellent read. I will definitely be back.
Hurrah! In the end I got a webpage from where I
be able to actually get helpful information regarding my study and
knowledge.
Thanks for some other informative blog. The place else may just I
get that kind of information written in such a perfect way?
I’ve a venture that I am just now operating on, and I’ve been on the
glance out for such information.
Greetings! I’ve been following your site for a long time now
and finally got the bravery to go ahead and give you a shout out from
Huffman Tx! Just wanted to say keep up the fantastic
job!
Hurrah! In the end I got a blog from where I know how to really take useful information regarding my
study and knowledge.
If you would like to increase your familiarity just keep visiting this website and be
updated with the latest news update posted here.
bookmarked!!, I like your web site!
Thanks for the marvelous posting! I genuinely enjoyed reading
it, you happen to be a great author. I will be sure to
bookmark your blog and will often come back later on. I want to encourage you continue your
great writing, have a nice day!
I think this is among the most important info for me. And i am glad reading
your article. But wanna remark on some general things, The website style is great, the articles is really nice :
D. Good job, cheers
Hey there 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!
I visited various websites but the audio feature for audio
songs current at this web page is actually marvelous.
I need to to thank you for this excellent read!!
I absolutely loved every little bit of it. I’ve got you book marked to check out new things you post…
It’s genuinely very complicated in this busy life to listen news on TV,
therefore I simply use internet for that reason, and
take the latest news.
Hi Dear, are you actually visiting this site on a regular basis, if so
then you will without doubt obtain nice know-how.
Hi there, I enjoy reading all of your post. I wanted to write a little comment to support
you.
I am really thankful to the owner of this web site who has shared this enormous paragraph at at this place.
Hi just wanted to give you a quick heads up and let you know a few of the pictures aren’t loading properly.
I’m not sure why but I think its a linking issue.
I’ve tried it in two different internet browsers and both show
the same results.
I blog quite often and I seriously thank you for your information. This great article has truly peaked my
interest. I am going to bookmark your blog and keep checking for new information about once a week.
I subscribed to your Feed too.
Link exchange is nothing else except it is only placing the other person’s website
link on your page at proper place and other person will also do similar
in favor of you.
Your way of explaining all in this article is genuinely good,
every one be able to without difficulty understand it, Thanks a lot.
Howdy! I know this is somewhat off-topic but I needed to ask.
Does running a well-established blog such as yours take a lot of
work? I’m completely new to operating a blog however I
do write in my journal everyday. I’d like
to start a blog so I can easily share my own experience and feelings online.
Please let me know if you have any kind of ideas or tips for new aspiring blog owners.
Thankyou!
Yes! Finally something about gartenpool komplettset.
You should be a part of a contest for one of the highest quality websites on the net.
I will highly recommend this web site!
I’m not that much of a online reader to be honest but
your sites really nice, keep it up! I’ll go ahead
and bookmark your site to come back down the road.
All the best
Hi there, I discovered your blog by the use of Google
while looking for a comparable topic, your web site got here
up, it appears to be like great. I have bookmarked it in my google bookmarks.
Hi there, just changed into alert to your weblog through Google, and located that it is really informative.
I am going to watch out for brussels. I’ll be grateful for those who continue this in future.
A lot of other folks will likely be benefited from your writing.
Cheers!
Hi, i feel that i noticed you visited my blog thus
i got here to go back the desire?.I’m trying to to find issues to enhance my website!I assume its ok to use a few of your concepts!!
For most recent news you have to pay a quick visit internet and on world-wide-web I found this website
as a most excellent website for most recent updates.
Asking questions are actually good thing if you are
not understanding something totally, but this piece of
writing provides fastidious understanding even.
Thanks to my father who stated to me regarding this website, this
website is genuinely amazing.
Hello! Would you mind if I share your blog with my myspace group?
There’s a lot of people that I think would really appreciate
your content. Please let me know. Many thanks
Thanks designed for sharing such a pleasant opinion, post is good, thats why i have read it entirely
Keep on writing, great job!
Wow, superb blog layout! How long have you been blogging for?
you made blogging look easy. The overall look of your web site is fantastic, let alone the content!
With havin so much content and articles do you ever run into any problems of plagorism or copyright violation? My site has a lot of completely unique content I’ve either authored myself or outsourced but it seems a lot of it is popping it up all over the internet without my authorization.
Do you know any ways to help reduce content from being
stolen? I’d certainly appreciate it.
Piece of writing writing is also a excitement,
if you know then you can write or else it is complex to write.
Wow, this post is good, my sister is analyzing these things, therefore I am going to tell her.
What’s up mates, how is all, and what you desire to say regarding this paragraph,
in my view its really awesome in favor of me.
Hi there to all, how is all, I think every one is getting more from this site, and
your views are pleasant in support of new visitors.
Greetings! Very useful advice within this post!
It is the little changes that make the biggest changes. Thanks for sharing!
After exploring a number of the blog posts on your web site, I truly appreciate your technique
of blogging. I book marked it to my bookmark site list and will be checking back in the near future.
Please visit my website too and tell me how you feel.
You really make it seem so easy together with your
presentation however I in finding this matter to be really something
that I believe I would never understand. It sort of feels too complex and very wide for me.
I am looking ahead to your next submit, I’ll attempt to get the grasp of it!