CoffeeScript is Afrikaans Javascript
February 7, 2012 § 16 Comments
A while ago I met a few Afrikaans speaking people, and found out that (being Dutch) I was able to understand them pretty well, despite the fact they were speaking Afrikaans.
Afrikaans is one of the newest West Germanic languages in the world and is primarily spoken in South Africa and Namibia.
The Dutch commander Jan van Riebeeck founded a new colony in 1652 near today’s Cape Town. Since then the Dutch language that the inhabitants spoke started to evolve and developed itself into a new language. This happened because of the influences of other languages that were spoken in South Africa at that time. About 90-95 percent of the Afrikaans vocabulary is of Dutch origin. The other 5-10 percent is copied from languages like Malay, Portuguese, Bantu and Khoisan. Which were the native languages of the inhabitants that were moved to South Africa by the Dutch. It was not until 1925 that Afrikaans was acknowledged as an official language. Before that it was considered to be “kitchen language” for the unlearned and not suitable for use in authorities like government, church and court.
Simple grammar
For Dutch people Afrikaans is a very funny language. Because of its simplified grammar and spelling it sounds like some sort of “baby-Dutch”. One of the simplifications in Afrikaans is that verbs do not conjugate differently depending on the subject. For example:
This made me wonder about all those complicated grammar rules. Do we really need them? Apparently not… The Afrikaans speaking community can do it without, and they can understand each other perfectly well. I quite like the clean and simple grammar in Afrikaans. And I’m pretty sure this makes Afrikaans an easier language to learn than the original Dutch.
Parallels with Coffeescript
Being a developer, I couldn’t resist drawing a parallel between Afrikaans and recent developments in Javascript-land such as CoffeeScript. CoffeeScript helps (just like Afrikaans did) people with different “mother tongues” to understand each other. It simplifies the spelling and grammar of the classic language, and introduces useful parts of a different language.
Isn’t that what CoffeeScript is all about? I have no problems reading and writing Javascript. But I can see why the verbosity sometimes can confuse backend developers. Why don’t we just leave that complexity out, like they did with Afrikaans?
At Mint Digital we use Ruby on Rails for back-end and an increasing amount of Javascript on the front-end. Not every front-end developer at Mint is sure about how CoffeeScript can help us, and to be honest, I’m one of them. However, looking at it from this angle makes me see the great advantage; it helps other people with using a language which is not their mother tongue! It can help Ruby developers to get going with Javascript because of its similar syntax, and it takes care of some of the bad parts in the language. To the people that already know Javascript, it’s not much more than a dialect, because in the end it compiles to Javascript.
Is CoffeeScript a “kitchen language”?
Do you see CoffeeScript as a “kitchen language” that will never be picked up? Or do you embrace it? A fair part of South Africa’s population embraced Afrikaans. It’s the third most spoken mother tongue in the nation, and is used by 6 million people as first language. Another 15-23 million people speak it as a second language. It has the widest geographical and racial distribution of all of South Africa’s first languages. Research has found out that the working class had a major influence on the evolution of the language, however nowadays it’s been used in all classes of society. Do you think CoffeeScript can be the same?
Goeie artikel. Het die vergelyking met Afrikaans geniet.
I have thought many times about unnecessary grammer in natural language. Why do we retain it if it doesn’t contribute to meaning?
Redundancy is important in natural languages because we communicate verbally over very lossy channels. With machine languages, any redundancy is there purely to make the tool easier for the human, not the machine.
Great post and an interesting comparison.
For me, CoffeeScript is a nice layer of syntactic sugar on top of JavaScript. Not a simplification as such but a way to cut out a lot of the ‘Bad Parts’. It is well suited as a way to enforce a set of ‘Good Parts’ coding practices on a group and as you say makes JS more accessible to developers familiar with other languages.
I like to think of it along these lines.
Nice article, Living in Edinburgh, Ive heard about Mint Digital here and there and projects their doing many of which are great.
Strangly enough I’m a second language Afrikaans speaker (my Father is first language Afrikaans). And while readin your article I was sure if it was going to be damning of CoffeeScript or not, seeing as Afrikaans doesnt have the best of reputations (from what I’ve expierienced).
And dispite this article doing a great job at promoting the pros of CoffeeScript, its also the first article I’ve seen praising Afrikaans (being the youngest Official langage in the word) and also on the teetering edge of being wiped out as less and less people learn it/ or use it over time.
That being said I really like CoffeeScript, but I’m one of those front-end Devs that cant wait to use it but due to work cant get enough liberty to do so with a good amount of commitment (the joys of Work)
Looking forward to hearing what projects Mint Digital is working on in the near future.
Like with any computer language your knowledge and skills will increase the deeper your understanding is.
Knowing assembler takes your understanding of how the computer works to a whole new level…same goes for CoffeeScript (or Dutch if you only know Afrikaans)
BTW: In scandinavian languages verbs do not conjugate differently as well.
If CoffeeScript is Afrikaans Javascript, then what is ClojureScript?
I am from South Africa, and I do speak Afrikaans. However, business and pc software here is mostly conducted or used in English I would say, and I can count on one hand how many programs I have seen in Afrikaans. I doubt it would be cost effective to program in Afrikaans, since you would be catering for a select group or company.
Deric, I think you are missing the point of the article. He is drawing parallels to what Afrikaans is to German and Dutch what CoffeeScript is to Javascript.
@necaris, Esperanto.
I recently did my first project in coffeescript. The syntax is simpler but some of the concepts (splats, list comprehensions, classes) are more complex than what is normally found in Javascript. [I say normally, since obviously if it can be done in Coffeescript, there is a way to do it in Javascript].
I don’t know how that would relate to spoken languages but it seems to spoil your Afrikaans analogy.
[…] CoffeeScript is Afrikaans Javascript […]
I don’t understand why everything is different in CoffeeScript compared to JavaScript. Maybe some programmers coming from BASIC appreciate CoffeeScripts syntax:
date = if friday then sue else jill
eat food for food in foods when food isnt ‘chocolate’
globals = (name for name of window)[0…10]
This seems like natural language but I prefer having some tokens in the language not looking like variables. JS is better readable, at least for me.
If it comes to debugging, you have to know both languages very well. So the advantage of CS is marginal or even negative IMHO.
My conclusion: CoffeeScript is a kitchen language. JavaScript has enough good parts and there are many programmers coming from Perl, PHP, C or Java which are more familiar with JavaScript than with CoffeeScript. Maybe the Ruby guys prefer CS, I don’t know.
BTW: I is what I is. Perhaps simpler to learn, but it sounds terrible ;-)
I’m moving all my javascript code in a large old project to CoffeeScript. It isn’t that big of a deal to move between the two and if we ever get sick of CS we can easily move back to straight up JS. So far, I’m enjoying the cleaner looking code. We will see how long it lasts.
At the surface, you can say CoffeeScript is to JS as what Afrikaans is to Dutch; that is … just simpler or nicer syntax and some new words.
That’s where I think the metaphor stops. CoffeeScript is attempting to introduce idioms that are not available in JS as first class citizens, for example list comprehensions. In computer languages, such idioms allow for different expression at, generally, higher level of expressions. The result is compaction in expression, for the same concept.
Whilst Afrikaans is not my first language, and don’t know Dutch at all, I’d be curious to hear of at least one example where a single expression in Afrikaans is a higher level abstraction for the same concept in Dutch. I’m sure there are colloquial examples, but formal Afrikaans?
Languages are expressions of thoughts, and semantic equivalence in concepts are expressed with different abstractions in each language, as opposed to syntactical equivalences.
Novel thought, btw :-)
I like JavaScript, but wish it had a cleaner design so we wouldn’t need yet another dialect (i.e. CoffeeScript) that you need to learn if you want to understand other people’s code.
[…] CoffeeScript is Afrikaans JavaScript (logicalfriday.com) […]