Third kind of languages?

I am now reading the book “Language in Space - a window on Israeli Sign Language” by Irit Meir and Wendy Sandler (ISBN 965-311-056-X). The book applies linguistic analysis to the Israeli Sign Language, used by most of the Deaf in Israel.

There are similarities and differences between spoken and signed languages. There are principles, which serve as common denominator between those languages.

As I am thinking about programming languages, I wonder whether they can be regarded as a third kind of languages. In other words, if we apply linguistic analysis to programming languages, what can learn from the linguistic analysis results? An example for a programming language, whose design takes into account linguistic issues in an explicit way, is Perl, especially Perl 6.

One major difference between human languages and programming languages is that humans can freely invent new words, new ways to modify words, and new ways to combine words into sentences. However software developers are constrained by the compiler/interpreter’s limitations and cannot easily break away from those constraints.

For example, to discuss sorting in Hebrew you need only to invent a new meaning for the word “מיון”. However to discuss sorting in a program, you need to develop, find, beg for, or steal a library, which implements the sorting algorithms, which interest you.

Recent programming languages are less constraining than early ones (with the exception of LISP, which was early, difficult to learn but not constraining). Languages like Perl and Python support lists (arrays indexed by numbers) and hashes (associative arrays, which map arbitrary-but-immutable values into other arbitrary values). They also support classes/objects. I wonder if there are more concepts, like lists, hashes and objects, which need to be supported in order to make programming languages feel as unconstrained as human languages.

RSS feed | Trackback URI

8 Comments

Comment by shlomif
2005-09-22 11:28:33

Hi Omer!

May I suggest posting this message to Hackers-IL? I believe it would be of an interest there and more people probably read what is posted there than this blog. It would also be easier for more people to collaborate on this discussion.

Just my 20 agoroth - feel free to disagree.

(http://livejournal.com/users/shlomif)

 
Comment by linjunky
2005-09-23 05:56:17

I think that humans are born with a certain set of language signs and sounds and have ready vessels for certain kind of words such as “father”, “mother”, “food”, etc…
A computer have a much much lower set of words and less different categories of words. In addition, there is no mechanism in a PC to learn aliases for notions or internal representation of words. Thus, its hard to compare between a human language to a computer language. Also, humans sometimes makes mistakes while learning this words, imagine what will happen when a computer will runs millions of code lines and have mistakes interpreting those words. You will notice that small children have an amazing learning capabilities for languages that in time slows down and locks into place. Imagine a computer doing that, probably it will give a new meaning to a PC - a really personal computer that only understand what the user codes into it :)
(http://livejournal.com/users/linjunky)

Comment by tddpirate
2005-09-23 07:08:21

I see that there is a confusion. Programming languages are not computer languages. Programming languages are human languages.

An human software developer, who writes software, thinks in terms of the programming language, which he uses. His thought processes are constrained by the programming language, which he uses.

This constraint is similar to that expressed by the Sapir-Whorf hypothesis. See the following references:
http://venus.va.com.au/suggestion/sapir.html
http://www.aber.ac.uk/media/Students/njp0001.html

This similarity is why I feel justified in considering a programming language to be an human language rather than a computer language.

(http://livejournal.com/users/tddpirate)

 
 
Comment by linjunky
2005-09-23 07:39:41

I see what you mean, i was indeed refering to the assembly code of processors.
Anyway, i think that what you are really talking about is not exactly a programming language, it is a design language.
For example: Sharon is a person, a person talks to the software. the software is a process. and on and on…
You might want to have a look at our faculty developed case-tool for the OPM - OPCAT. IE faculty, technion.
http://www.objectprocess.org/

After you have the design that is detailed enough you can auto-generate the machine code.

(http://livejournal.com/users/linjunky)

Comment by linjunky
2005-09-23 07:41:39

Btw, i am not sure the tool itself is on site, they seemed to have removed it since i think they want to sell it now. Go figure…

(http://livejournal.com/users/linjunky)

 
 
Comment by tddpirate
2005-09-23 08:38:47

In other words, a good programming language (good in the sense of not limiting the developer's mind too much) really serves as a mediocre design language.

The separation between an adequate design language and a programming language is necessary exactly because of all those concepts, which need to be quickly and easily invented by the developer.

(http://livejournal.com/users/tddpirate)

Comment by linjunky
2005-09-23 08:44:14

The code is just a side effect and OPM is not midiocare its the best there is (and i know and used many). The problem, is this unexplained tendancy to patent and close source everything. Not only that, it is done by the technion. I just can't understand it.

(http://livejournal.com/users/linjunky)

 
 
Comment by shlomif
2005-09-24 11:47:47

I agree that a capability to learn language slows down in time. However, one thing to note is that the capability for learning your Mother Tongue (or Tongues) is almost always greater than the one for other languages you've learned. I'll give you some examples.

I know both Hebrew and English relatively well. However, when I learn a new Hebrew word, I can many time understand what it mean from the context, and it enters my mind and stays there forever. With English, I often encounter words that I'm sure I've encountered before and I forgot what they mean. I also sometimes misunderstand the meaning of a word out of its context. I'm gradually improving my mastery of English, but much more slowly. It'll probably take me a very long time to reach the level of a native English speaker who is intelligent enough and keen on improving his language.

Here's another example: recently the Israeli Perl Mongers were visited by Stas Bekman who is a Russian-Israeli programmer who now lives in Australia. He visited Israel a year before. After spending some time in Australia, his Hebrew became very bad, and he had a lot of trouble expressing himself, and kept forgetting words. I think he was still able to understand the conversation we spoke between ourselves in Hebrew, but it was still clear he forgot most of his Hebrew. But he probably still remembers Russian very well, because it's his mother language.

It's very different with programming languages. A talented programming can easily master several programming languages, and hack using them simultaneously, while still performing the right paradigms in each one. While he may sometimes perform “faux-amie” (”false friends”) mistakes or otherwise will have to look up stuff (even trivilaties), he would still be able to otherwise make a powerful and quick use of all of them.

It's also much easier to recover knowledge of a relatively forgotten programming language than it is of a human language.

One interesting anecdote is that I once saw on T.V. an interview with Avi Arad, who is an Israeli expatriate who now lives in the States. He spoke Hebrew on the interview, fluently, but used many English words, even for many words for which there is a Hebrew equivalent.

(http://livejournal.com/users/shlomif)

 

Sorry, the comment form is closed at this time.