An article in the Saturday edition of the NRC
(one of the national newspapers in the Netherlands) made me aware of the work of Anna Wierzbicka
and Natural Semantic Metalanguage
. From the Wikipedia article:
- The Natural Semantic Metalanguage is an approach to semantic analysis based on reductive paraphrase (that is, breaking concepts/words down into combinations of simpler concepts/words) using a small collection of semantic primes. The semantic primes (below) believed to be atomic, primitive meanings present in all human languages.
Currently the following 61 primitives are recognized (in alphabetical order):
- ABOVE, AFTER, ALL, BAD, BECAUSE, BEFORE, BELOW, BIG, BODY, CAN, DIE, DO, FAR, FEEL, FOR SOME TIME, GOOD, HAPPEN, HAVE, HEAR, HERE, I, IF, INSIDE, KIND OF, KNOW, LIKE, LIVE, A LONG TIME, MANY/MUCH, MAYBE, MOMENT, MORE, MOVE, (LONG), NEAR, NOT, NOW, ONE, OTHER, PART OF, PEOPLE/PERSON, THE SAME, SAY, SEE, A SHORT TIME, SIDE, SMALL, SOME, SOMEONE, SOMETHING/THING, THERE IS, THINK, THIS, TOUCH, TRUE, TWO, VERY, WANT, WHEN/TIME, WHERE/PLACE, WORD, YOU
That it is possible to express complex concepts with NSM, was the description of the Dutch word "gezellig" that was mentioned in the article:
- Everyone here can think like this: I am here now with some other people. These people are all doing some things at the same time because they want to feel something good. They don't want to anyone here to feel something bad. They all feel something good. I want to be here with these people.
In the past I have been frequently asked to translate the word "gezellig", but never have been able to do so with all the nuances involved. I think this definition is very good.
Anyway, after reading the article I could not help but wonder how you would express Perl with these primitives, especially compared to other programming languages. And thereby conclusively proof that Perl is a better programming language ;-)
Someone pointed out to me that in my example about the Dutch word "gezellig", the word "everyone" is not a primitive. That is correct: you don't need to use only primitives in a description. You may also use compounds, as long as these compounds consist of other compounds or primitives. Just as your program consists of subroutine calls, possibly within subroutine calls. In the end, they're all Perl statements.
Getting back to "everyone", that of course is a compound, described by "all people".