English Language And Its Effect On Programming?
jasno asks: "I've been wondering lately about the effects that the English language has had on programming languages. Have the limitations/ambiguities/peculiarities of the English language changed how we might have created, for instance, C if we spoke, perhaps, Swahili? Since English is my only language I'm curious to see what my multilingual companions have to say about this." Interesting thought. What would Perl be like if it was coded by a native Japanese speaker?
English: Syntax Error. Core Dumped. Have a Nice Day.
Japan: Most unworthy computer has failed to compile honorable source code and will now commit seppuku. Please accept this gift of core dump with most sincereful apologies.
German: Scheisskopf! Dein Syntax ist Verboten! Get in der shower! Raus! RAUS!
Esperanto: Erro sintactico. Dumpoj coro automatico en bucketoj bito.
French: Eh.
--
too sexy for my login
I include this item only as evidence of the constricting nature of being taught formal Standard English. I guess at some point or other, all of us who were educated in Zambia, were taught that it is wrong to refer to someone who teaches the English Language as an "English Teacher". Apparently, this is ambiguous because it could be mistaken to mean "a teacher of English nationality". Well that seemed like a pretty airtight argument and so off we went calling all our English teachers, teachers of English. That is, until it dawned on us that virtually no one else in the English speaking world bothers with such linguistic exactitude. To the pedants in the house, doubtless teachers of English, I say: lighten up English teachers. I mean, we have to leave something to contextual interpretation, don't we?
As you can see, there are 2 "nouns" ("2" and "3") and one "verb" ("+") RPN is hardly non-noun.
I don't think a Forth programmer would agree. The action of something like 2 is to push the value 2 on to the stack. In Forth you can even make it explict if you want;
The idea that everything is a verb, that is that every executable thing is pure action is important to the understanding of stack based machines, virtual or otherwise. At some level of execution this must be literally true for any program running on a computer but some computer languages hide the fact better.If natural language is different then natural language is just plain wrong. :)
Bruce Walzer
bwalzer@lark.NOgawdSPAM.mb.ca
But it has no meaning until it is explictly given a context (i.e. ptr = &foo | *the vehicle* is a car) unlike a pronoun which draws its meaning by contextual reference (this->foo() | *it* is a car)
A pointer isn't a pronoun it is another reference to an object.
Example:
"Bill Clinton" and "Ronald Regan" are both nouns. A "pointer" for them could be "President of the United States". The current state of "President of the United States" (vs "former President of the United States") can only refer to one of them. The pronoun "He" OTOH could be either.
Perl is much trickier from a linguistic standpoint. $_ in both it's explict and implied forms make things much trickier. I haven't spent any time seriously considering it though, so I didn't want to bring it up.
Most definately the "this" of C++ is a pronoun. I'll agree to that, but as another poster pointed out, that is the only one.
A pointer hardly counts as a pronoun. Not generic enough.
I've heard of Objective-C, but never read it. (I was at the zoo studing spider monkeys, not programming)
Drawing on my Anthropology degree, all modern computer languages are highly simplified languages.
The basic components are there (Verbs, nouns, etc.) but they are typically very limited (ever see a pronoun in C?). Also, the sentence structure is *very* ridgid. (Unlike English which allows movement of objects and adjectives or even the removal of the subject!)
Although keywords tend to be english based, structure isn't and that is just as key to learning (and using) a language as the other elements. Just hope the standards aren't "influenced" by other languages the way natural languages have been. Can you imagine C after it "borrows" a few verbs (function calls) from say smalltalk?
Even less on-topic ...
I have heard that if you speak Chinese and English, you can communicate with one out of every two people on the planet.
So I would expect that your second statement is true.
There are two main dialects of Chinese: Mandarin and Cantonese. There are, to my knowledge, many other less common dialects. But Mandarin is the mother tongue of 70% of Chinese, if memory serves, Cantonese something like 25%. The other 5% are those other dialects.
...
Anyway, Mandarin is the official language and I think that 90% of Chinese understand it at least partially, and can speak some too
This is how I understand it. I could be wrong.
As far as I am aware (I have worked with Japanese people, but never in Japan) English is used as the main language for business and engineering communication. This is common throughout the world, including parts of Europe.
At college, there were many Chinese (who would speak Mandarin) and Greeks (speaking Greek) but use English for technical terms, so it was perfectly possible to follow their conversation :0) In fact, it was common to see a lab team speaking several languages at once and still work together.
Natural languages have no bearing on programming languages. The only relationship between C and English is that C uses English keywords. These could be replaced by abstract symbols, which would erase any discernible relationship to English or any other language.
There is a huge gap between the complexity of the structure of programming languages and of natural languages.
Japanese telegraphs and their "morris code" equivalent uses exclusively katakana and is strictly phonetic, just like Japanese Braille.
Radio and telegraphic code would not have carried any of the ambiguity of the written language.
Written orders used the whole character set, but I doubt it was genuinely that ambiguous. I might understand a few errors made that way, but not systematically.
When Chomsky is dead and his linguistcs is forgotten (soon I hope), he'll be remembered for some fairly important contributions to the theory of formal grammars.
He's been at MIT since the 1950's. What leads you to think a liberal (or even a real Marxist, which Chomsky certainly isn't) can't be a tech? Serious, hardcore biology is still dominated by Marxists and far leftists. There is still no such thing as a conservative linguistics department.
Don't mix his crappy linguistics with his crappy politics. Chomsky is careful not to, and those among his detractors who have mixed them generally make asses of themselves.
But the fixed order of arguments in mathematics comes from the Greek tradition, which enjoyed much freer word order than English does. For statements of a mathematical or logical nature, the shortest way of expressing them involves fixing the order of arguments, unless all the functions are transitive.
I suspect that there might be more use of quasi-morphology in programming languages if a more morphologically rich language like Russian or Japanese dominated things, although there's plenty of pseudomorphological constructs in C. For example, the distinction between printf, fprintf, sprintf, and wsprintf could be viewed as a matter of morphology.
Of course, the original authors of the software do not have to be the ones offering the support services; that could be done by a separate cadre of workers from a Professional Services Department. This seems to work well for things like initial installation and configuration, systems administration, maintenance and upgrades, and for problems arising from user error. Insofar as you can find competent people willing to do this work, it is a good idea, because it does save programmers' time. When you get down to bugs in the actual software, though, it really helps to get support straight from the horse's mouth. This is, of course, exactly the support model that free software projects have adopted through mailing lists and IRC channels. In my work in the industry, I've found that most hackers take pride in their creations and genuinely want to make them better, and that they do this best (and most time-efficiently!) when they can communicate directly with end-users. I'm proud to say that my company takes this approach with its BSD-licensed products. Mainly we use free, public mailing lists for this purpose.
As a software engineer, I'm willing to put my money where my mouth is. Support may not be fun, but it is vital to the usability of software, and it really does help you find bugs and fix them. I agree wholeheartedly with Eric Raymond: The software industry is a services industry that thinks it is a manufacturing industry. Support is what most people will really pay for, and it pays for free software development.
Vovida, OS VoIP
Beer recipe: free! #Source
Cold pints: $2 #Product
Riiight... everybody pretty much sounds the same while singing. Maybe that's why I keep mixing up Lemmy from Moetorhead and Christina Agulera. Not to mention the Japanese choir from _Ghost_in_the_Shell.
Causation can cause correlation
Umm no, that's false. Being Canadian, I was forced to learn French in school, and I am now anything but bilingual.
However, as a system the Latin alphabet is made up of very few visual elements. Circle, hump, ascending stick, descending stick, and the occasional diagonal line pretty much make up the lowercase alphabet.
Chinese characters are made up of a far larger array of elements (the 216 "radicals" are but a condensed subset) which make scanning much more efficient for those who are literate.
Not only that, but most Japanese can easily recognise 4 different systems of writing: Latin, two indigenous syllabaries, and about 6000 Chinese characters.
It has been mentioned on this thread that there are only about 2000 characters officially designated by the government as necessary. This is technically true. However, I have in front of me a novel from the 1890's that most Japanese College students would be expected to be able to read. On the first page, I'd say 25% of the characters are on that list of 2000.
"Reactionaries must be deprived of the right to voice their opinions; only the people have that right." - Mao
Nonsense. Mandarin is absolutely gorgeous!
:)
When it isn't being spoken by native Cantonese speakers that is.
"Reactionaries must be deprived of the right to voice their opinions; only the people have that right." - Mao
English Language And Its Effect On Programming?
I have a worse problem where programming affects my english.
I'm a french-speaking Quebecer (the term would be "francophone"). My english was mostly influenced by US TV shows and english books on all sorts of subject, but mostly technical and programming -oriented. My pronounciation was also (and probably mostly) influenced by anglophones here in Montreal (where the population is almost split equally in french and english). Eh?
I often find myself writing in english using constructs that derrive from programming languages. My syntax is also affected once in a while.
For example, while writing some non-techical text (say, a letter to a friend of mine in the states somewhere), it's not rare that I end up typing "this" as "this->"!
Which is why text in ALL CAPS is much harder to read quickly since all the words have the same blocky shape (no ascenders/descenders, for instance).
Well, Pinker doesn't believe in the Sapir-Whorf hypothesis, but it isn't really a hypothesis that can be refuted scientifically because nobody can really know how other people think. At most one can say that there is no support to the assumption that they think differently.
I like to consider myself half-bilingual. :)
"Dogs and cats, living together...it's mass hysteria!"
As opposed to the American/English approach (inherited from our German side, in spite of the French/Latin connection) of generating compound words.
Which is where our modern computer language names come from, especially when you add typists's lazyness to it (print_formatted -> printf).
"But remember, most lynch mobs aren't this nice." (H.Simpson)
-- Joe
English used to have a politeness indicator - whether you address someone as 'thou' (familiar) or 'you' (polite or plural). However 'you' got used so much that it came to take over both meanings, and 'thou' became obsolete.
:-)
It's a kind of politeness inflation
-- Ed Avis ed@membled.com
In object-oriented Perl you already can choose whether to put the verb at the beginning or the end (at least a little). For example, if you're using the IO::Handle module and you want to make standard output unbuffered:
STDOUT->autoflush();or
autoflush STDOUT;
-- Ed Avis ed@membled.com
Latin typically puts the verb at the end of the sentence too.
So does PostScript.
(sorta)
- The informal and formal forms of "you" (du and Sie). Perhaps you would use du with your PC, but I don't know I'd feel comfortable being so informal with an AS/400...
:)
- German doesn't quite have a generic "go" verb like English; one chooses a verb based on mode of transportation, which might be gehen, fahren or even fliegen or reiten, though perhaps springen would be more appropriate here...
- Most languages' distribution of default verb/preposition pairings is pretty arbitrary and not likely to make much sense to non-native speakers. The English preposition "to" gets translated to zu or nach (among others) in German depending on the verb and how it's used. Not that English is any less arbitrary, but it tends to rely on a smaller number of core prepositions.
I'm only being half-serious here, of course, but I think English, which has a less rigid word order than some other languages, is in some ways better suited as a source for the strange constructs of programming languages than a more rigid, highly inflected language. That being said, initial familiarity with the natural language on which a programming language is based probably only gains you the most minute and temporary of advantages. I'd probably be just as comfortable with C's smattering of reserved words if they were all in another language, or even just nonsense words. Where the language barrier really gets you are variable names and comments.--
Proud member of the Weirdo-American community.
It would probably look like C written by first-year CS students.
The Tyrrany Begins....
Finding God in a Dog
Well, to answer Cliff's question, Perl written by a Japanese would look like Ruby. It's a very nice little object-oriented (and I don't mean like OO in Perl) script language that has bindings for several toolkits. See this page for a contrast with other languages.
It's not a big deal, as a Spanish speaker, at least the character set is almost the same.
But it was good in the fact that it helped me learn English, specially in the 80s where most computer publications where only in that language.
- sigs are for wimps.
If, for example, most early CompSci was done by the Japanese many things which are US centric would most likely be different.
Where we have object oriented languages as a relatively recent phenom, I think that if the Japanese had created the languages they would have been done that way from the start.
With C/++ you have structs and classes, I think that if Japanese had created the languages you'd see things like teams. My idea for a team is an object which instead of attributes and functions would be made up of members with either abilities or data.
Take the STL string class for example. As I see it the string team would consist of two parts. The "string" portion of it would be a stand alone unit, maybe similar to a linked list of characters, with a member that consists of all of the string manipulation routines.
Since I speak very, VERY little Japanese, and can read/write NONE of it, I couldn't even guess as to what the Japanese names would be.
LK
"Hi. This is my friend, Jack Shit, and you don't know him." - Lord Kano
Remember Heinlein's The Moon Is a Harsh Mistress? In it, computers were programmed using "Loglan", a "logical language". This was in fact inspired by the late James Cooke Brown's Loglan project, begun in 1955. Lojban (from the Lojban words for "logical" and "language", rather than the English ones) is an offshoot of the original Loglan project, and appears to be the more viable of the two. I just bought the book describing the grammar, The Complete Lojban Language, and I highly recommend it for anyone interested in languages. I'm just starting to learn the language, but I'm interested to see where it will lead me.
If you buy the book, I'd recommend buying it directly from The Logical Language Group, since you'll save money over the price Amazon charges (save about $6-8 with shipping), you'll probably get it sooner (that's where Amazon will get it from) and the authors get more money from the direct sale, since their wholesale cost to Amazon is less than the $39 they're charging directly... (They charged me $5 for shipping.)
Deven
"Simple things should be simple, and complex things should be possible." - Alan Kay
Come on folks. The Japanese has a very regimented military for hundreds, if not thousands of years. They established a complex caste system, a dynastic/Imperial form of government and elaborate rituals (which obviously includes verbalization).
The very idea that they need English to communicate efficiently is ridiculous. You can not run an army without efficient communication. You can not build an empire on ambiguity. Just because their culture includes cordial formalisms that put English to shame, does not mean that Japanese is in any way ambiguous. On the contrary, the language is so effective that it was perfectly acceptable to make it ornamental and courteous.
Many Americans seem to think that the whole world used to live in caves before America came into being. The world on the far side of either pond has been there a lot longer than we have, and the only thing of ours anyone out there benefits from is dollars.
-- What you do today will cost you a day of your life.
To my ears, Japanese sounds much more like a Western (Latin-based) language than most Asian languages do. Very little use of inflection (i.e. "hana" (nose) and "hana" (flower) are inflected slightly differently, but it's not that common.
Bilingual Japanese programmers I know, though, say that English is much more direct and easier to understand, even for programming manuals! Apparently the Japanese tendency to soften things and use implicit rather than explicit forms extends even to technical writing.
And Japanese writing is, IMHO, a pig. There's a reason that the Jesuit missionaries declared it to be a language devised by the devil himself!
Unlike Chinese, which usually has one sound per character, and hence about 6,000 commonly-used characters, Japanese has 2,000 common characters, each with multiple pronunciations.
"Is this character pronounced 'i' or 'o' or 'u' or 'ha' or 'ki' or 'nama' or 'na' or 'mu' or 'sei' or 'shou'"?
Yes.
Graham
The only problem is that no linguist who has done any serious experimentation on the subject has been able to support Sapir-Whorf to any reasonable degree. Furthermore, they pretty much managed to undermine their own argument: in saying that an Inuit might have one word for snow lying on the ground, and another for snow falling, for example, you can see that we don't need a specific lexeme to grok the difference between falling snow and lying snow.
With that in mind, I'm gonna go out on a limb and suggest that language ain't got much to do with it. Maybe our keyboards would look different, and we'd all having Unicode native operating systems - which, now that I think about it, would be pretty damn cool - but I don't see that programming languages would be otherwise greatly affected.
As usual, I'm one step ahead of the rest of Slashdot :) While creating an IDE for the 2-D tarpit language Orthogonal, I had some quite freaky ideas, and I'm putting them together into something I call PORTUGOL. It's based on the grid rewriting paradigm, 2-D, mostly graphical (non-ASCII, designed to be used under an IDE) and very unfamiliar altogether to those used to "orthodox" languages like C and Pascal. However, one of its many interesting peculiarities is that all identifiers and names, as well as the IDE itself, is in Portuguese. Granted, this by itself isn't much, considering that Portuguese uses the Latin alphabet just like English, but the combination of Portuguese text and comments with the language-specific glyphs that basically make up a suplementary "alphabet" in and of itself... it's quite interesting.
PORTUGOL has been focused, lately, on educational goals. Oddly, I've presented an alpha version to some (Portuguese-speaking) college kids with some advanced math knowledge but no programming experience, and they've taken it to it quite easily; with my help, they grokked most of the system in a couple of hours. This is excellent time, especially compared to the ye^H^Hmo^H^Hwe^H^Hdays it takes for one to learn rudimentary C.
Anyone interested in PORTUGOL can email me here and/or join the Cat's Eye Language List.
To the editors: your English is as bad as your Perl. Please go back to grade school.
...As well as being able to read a menu in Chinese, which, phonetically, has nothing to do with Japanese.
(Chinese and Japanese are VERY different languages. It is as hard for a Japanese person to learn Chinese as it is for an English speaker.)
From the menu, you could tell that a dish would be chicken, beef, fish, whatever... That's because the Japanese adopted the characters, but not the pronunciation, from the Chinese. (With exceptions, of course.)
Cheers,
Jim
-- My Weblog.
I can imagine what it must be like to program in Chinese. It might be quite interesting:
* Single-character variable names would be quite descriptive, because single characters in Chinese are often whole words. So you'd get single-character names like "index", "flag" and so forth.
* There would be less temptation to use obscure function names like "strncasecmp", even in the standard library. The Chinese equivalent of "strncasecmp" would probably be called "string number ignore case compare", in Chinese characters. You could probably work out what that function does without looking up a manual.
* You could write code with less comments. A grapefruit could probably tell you what the function "count characters in string" does.
--
The only thing necessary for the triumph of evil is for good men to do nothing. - Edmund Burke
Although it's facisnating to consider an alternative history of the computer where development took place in another language, there is a much less theoretical question we could be asking: Is English, as the standard language for programmers, holding us back? Is there another natural language which would be better for describing our concepts or which would be easily speakable yet more understandable to our machines? As for the later, Constructed Logical Languages would be a massive boon to speech input and machine translation.
Could someone point us to some research on the usefulness of certain languages for certain tasks? Obviously the less letters the smaller keyboards, but is French really better for poetry or Latin for science?
If you want a good example of the effects of the English language on programming languages, look at BASIC. The structure and syntax of BASIC is modeled after the English language, and you could read the code as if it were a recipe--practically any moron can understand it (although not necessarily program it). C is a completely different animal (since it is much lower-level), but some of the same cases exist. Another thing to consider is the name of the functions.
FOR
WHILE
DIM (dimension)
INT (integer)
LONG
SHORT
STRUCT (structure)
etc. etc. etc.
All of these keywords are derived from the English language, and I'm sure that not all of them have a foreign language equivalent that would be easily understood and translated. In short, if C or BASIC were developed in a non-English speaking country, then it's obvious that many of the keywords would be different, and (in the case of BASIC) some of the structure and syntax would be different too.
# They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety. --Fran
Yoda C: {stuff1}[OR]{stuff2}[WHEN](!expression)
Now, take COBOL. Please take it. Rigorous English appearance, but strict grammar rules. COBOL would be different simply because the grammar would have been designed for whatever language its creator used. It happened to be American. I can hardly wait for Microsoft Cobolscript web pages. [Yes, I know Cobolscript exists]
a person who asks whether you know a second language?
A: Bicurious!
---
Despite rumors to the contrary, I am not a turnip.
The other way around surely, e.g. "hallowed be thy name"...
Oops, the last half of the post was cut off:
In general, I expect that English forms a much better basis for a computer language for only one reason: Parts of speech in English are positionally determined rather than being determined by form as they would be in Japanese, Latin, or other "inflected" languages.
How would you like to write a parser where you don't know the order of the operators and/or data? My guess is that regardless of the features of the natural language, we'd end up with something like we've got just because it makes writing the laguage parsers so much easier. Whether this will change in the future is an interesting topic for speculation.
"The future's good and the present is nothing to sneeze at." - Roblimo's last
split( ',', @foo );
would become
( ',', @foo ) split;
That would make sense, since Japanese and other oriental languages are strongly verb-final. (I know Korean is for sure.)
Whether it's an advantage to first know what operation you're doing, or what you're doing it on is a topic that should bring about a lively Forth and RPN vs. the world discussion...
"The future's good and the present is nothing to sneeze at." - Roblimo's last
English has such a huge vocabulary primarily because English speakers, unlike, say, Francophones, are not at all averse to stealing perfectly good words from other languages when they address a need.
This in combination with other factors, makes English much more subtlely expressive than most other languages in use today. (Interestingly, all languages seem to be becoming simpler - most ancient languages were far more complex than modern ones!)
Given that most computer languages are only designed to communicate a very narrow set of things relative to natural languages, there's an apples and oranges relationship here: Comparing programming and natural languages is an excercise that can produce nothing of value.
Finally, Perl is quite obviously based on something other than English... [ducks behind flame shield]
"The future's good and the present is nothing to sneeze at." - Roblimo's last
I have a hard time thinking the english language is that instrumental. the truth is, you tend to use a small set of "words" in programming that are prebuilt into the system, far smaller than the number of words in any language used by humans for day to day communication!
Instead, you have less than a "Learn English in X days!" booklet would have, and most of these are concepts which are mathematical, or structure based if you will, with you making up stuff on the fly for variable names... there isn't a single fuzzy "idiom" based thing going on... which is why many programmers may write excellent code but have questionable english skills... you don't really need them.
However, the use of the Roman Alphabet, which our keyboards are mapped to, certainly is a critical difference if your native alphabet is Cyrillic or Kanji! Definitely, for a German, Frenchman or Spainard, there really isn't much to learn... however if you've been writing in Arabic script your whole life, only the numbers will look familiar... I imagine that can't be much fun.
Also, learning to type must be a struggle... it was for me and I knew all the letters already.
It might be interesting to have a programming language that used all international notation for mathematics / logic instead of English words though... it would put everyone on an even footing. Not that I'm advocating that...
I'm sure there must be "translators" that just go through code looking for key words in the other language ( if, then, else ) and change them into people's native tounges... I've never seen any of the english-is-my-second language people use them myself, but I'm assuming they must exist...
Not that, as I've said, it would be so important as there aren't many English words to learn... I can't imagine asking someone from another planet who's only encounters with English were learning C++ or PERL to ask for directions on getting to New Jersey in Times Square and expecting them to make it alive.
This shouldn't be a surprise. Larry Wall is a linguist, afterall, and aimed at making perl a natural language, and probably borrowed non-english constructs from other languages, human or computer.
James
think of all the hundreds of characters you could use for kludgey variable names. you think bad code is unreadable now...
oi!
we should be glad that we came up with this stuff
...dave
Think different? I'd be happy if most people would just think...
Like I said, it was "back in the day" like 14 years ago or so.
The point that I failed to make was that real programmers keep telling me that the different programming languages are impacted, naturally, by the language of the creators.
Sorry for stabbing the wrong part of europe!
Visit DC2600
Eve Fairbanks says I drive a hybrid!LOL
Back in the day I was forced to take a Pascal class. I was told that Pascal was created by French programmers anf that is why "it is the way it is".
I found it to be a major pain, but some folks like it. Anyway, from what the CS majors and professors said, the language of the programming language inventor has a big impact on the way it is structured.
Sounded good to me.
Visit DC2600
Eve Fairbanks says I drive a hybrid!LOL
I guess it's like the large dictionary/more terse, small dictionary/more verbose tradeoff. If you can stick a larger dictionary in your head, then things that are written can be shorter. E.g., English has an alphabet of 26 letters which we have to arrange into words. We have to read each character of a word before we understand what is being said. If Japanese has 2000 "characters", and on top of that an even higher-level meaning, I can see that books would be much much shorter. It would be as if every letter in the english alphabet had a meaning unto itself.
It's 10 PM. Do you know if you're un-American?
And conversely, since the US doesn't have an "economic necessity", we happily percieve the world revolving around us. I'm an American, but I'd imagine any person from another country who is bilingual or trilingual by necessity would percieve Americans as being arrogant and elitist (the usual American solution to someone who doesn't know English is to SHOUT LOUDER).
It's 10 PM. Do you know if you're un-American?
What about in the middle of Russia or China or Saudi Arabia? I suspect you'd find a higher percentage of people who could speak English than one could find speaking Russian or Chinese or Arabic in the middle of the US (although those figures may be slanted in the US's favor in the first place because so many people from other nations immigrate here). Since we don't have to, it's just easiest to not learn any other languages, and measure things in units of 3 and 12 instead of 10. It's also a point of leverage: other nations that deal with the US, consume American (a)culture, language and products, and become "Americanized" (France has fought this tooth and nail, and I can't say they don't have good reason).
It's 10 PM. Do you know if you're un-American?
From http://www.isss.org/primer/whorf.htm:
In other words, a person's language restricts what one can think about.
Or, as Bjarne Stroustrup puts it:
... Restrictive tools designed to prevent the worst programmers from failing often prevent the best programmers from succeeding. Conversely, unsupportive languages and tools can make average programmers unproductive.
So it's possible that a Japanese's mentalese is different from the American's, and it prohibits him from seeing the situation in the same way that an American would see it, and visa versa.
I think the Whorfian hypothesis is false, but it's an opinion held by many psychologists, so who am I to argue?
~me
Just off the top of my head, I can see at least two things that might have been different if programming languages weren't designed by English-speakers.
The most obvious difference would be word order. Conventional expression syntax (i.e. "1 + 2") is clearly SVO, like English. Function calls are SVO, too, if you remember to include the subject: "subject = verb(object);" None of those conventions had to be that way. In fact, SOV order is easier to implement in some ways. (That's why a CS student's first expression parser will always be in RPN.)
It kinda makes you wonder if VSO speakers think that LISP is perfectly natural, and C is incomprehensible... (I doubt it, though.)
Another English-biased element of programming languages is their isolating nature. If I showed you a programming language in which the return type of a function is indicated by a suffix, i.e. "strlenint foostr;" you'd be right to scream and run away. For a native speaker of Southern Tiwa, though, it might seem perfectly natural.
MSK
French and English are basically the same language. Arabic is a bit more exotic, particularly because of its wacky infixes and circumfixes, but it's still very similar to the first two. I believe it's still SVO, also, or at least mostly SVO. Coming to a conclusion about human language based on your experiences with French, English, and Arabic, is like coming to a conclusion about music based on your experiences with Brittney Spears, Christine Aguilera, and maybe Puff Daddy. There is a lot more diversity in language, and it could definitely affect programming languages... I'll post my opinions on that later if I have the energy.
Your second claim is pretty fishy too, but there is something to it: English is very good at compounding words, which makes it easy to express new concepts such as "astronaut" or "e-commerce" (blech) or "batmobile". Whether that has had an influence on technological development or not, I couldn't say.
MSK
Your english sentence "If the value of a is 1, then set b to 2 and print 'Hello' to the screen." ordered like Japanese, might look more like this:
The japanese words I put inside parentheses are japanese particles, which are kind of like English prepositions; in a programming language they'd be best represented by a form of punctuation.Anyway, if you look at the programming languages you gave in light of a Japanese-ish example, you can see that they look a whole lot like English and little like Japanese. Each of them is ordered exactly the same way as your sentence!
So, here's what your example could look like written in a (fictional) language more like Japanese:
Doesn't look very intuitive, does it? I think one of the main reasons why LISP isn't popular is because it doesn't look anything like English. Programming languages might look a lot like the example I just gave if we all spoke Japanese. It's hard to say what effect it would have on the quality of our code, though.The answer to this question is "very Little, but not none at all". Programming languages aren't really based on the English language - they are based on predicate logic. In predicate logic, you break down any statement into a relationship (sometimes an "action" relationship) between two entities with a set of qualifiers which often have defaults. For a thorough description of predicate logic, visit the Lojban site, where they have gone the other direction, creating a human language from predicate logic.
For those of you who just want a quick answer, we'll use the following example:
The processor saves the data to file X.
We have an obvious object, verb, subject, and prepositional phrase here. In predicate logic, this is broken down to the relationship (in this case, "to save") and the entities involved in this relationship (the processor and the data), with an instructional details. Japanese changes the ordering of subject, verb, etc., but they still have all of those structures.
This brings us to a possible lingual difference. In English, we have implied imperitives which obviate the use of a subject ("You Run!" is usually just "Run!"), which bleeds heavily into our use of programming languages, i.e. print("this stuff"), because we can assume that the processor is going to do the work. I couldn't tell you if this is a practice in all other languages. It is interesting that object oriented programming begins to blur this assumption with the implication that any of many objects might "do" something.
So the question is, what differences are there in the editing of predicate logic between languages?
Mythological Beast
Wake up - the future is arriving faster than you think.
http://www.geocities.com/connorbd/varaq/
DO NOT LEAVE IT IS NOT REAL
Utterly incomprehensible.
I can sorta understand Spanish, and I was just learning C++ (I'm still not fluent in either), so trying to read some weird amalgamation of the two was mind blowing. You don't really think about how all the variables influence what you're writing, and the comments were of course not much more help.
At least that was still ascii though. Is it even possible to write code in a language that requires some kind of Unicode extensions? Chinese, Japanese, Arabic, Hebrew, Russian, etc. Or for that matter, even a relatively close language like French or Swedish, when you accound for all the accent marks and such. I'm guessing that the compiler would have to be aware of the character set it was working with and adjust accordingly. Must be an absolute joy to debug though... :)
DO NOT LEAVE IT IS NOT REAL
I like the idea of writing a C compiler that will only compile code that reads as a haiku:
int a = 3;
if (a 200)
printf("Sushi Rules!");
Mmmmmm, warm fuzzy feeling inside.
My girlfriend keeps trying to teach me bits and pieces of Thai so I can impress her parents, but I consistantly sound like Zippy the Pinhead because I'm tone deaf. "How was the test?" "Oh, it was pretty leaning backwards."
On a semi-related note (lingustics), they did a study that found that folks that speak tonal languages develop a limited form of perfect pitch that allows them to detect changes in tone. There's a theory that everyone is born with this ability, but looses it if not exposed to tonal languages. Bad knews for us farang trying to pick up an Asian language. . .
"Sweet creeping zombie Jesus!"
I'm fairly sure I once heard of the idea of making a lojbanic syntax for Perl. This seems like quite a good idea, considering that lojban is designed to be unambiguous, and basically contains all the words that would be necessary for a programming language already. The result of this would be pronounceable Perl.
--
No more e-mail address game - see my user info. Time for revenge.
Win dain a lotica, en vai tu ri silota
I speak a little Japanese from what I took in college, and there are some unique features of the language that might effect syntactical structure
While I am sure Japanese has several unique features, the feature you mentioned (Subject Object Verb word order) is far from unique. Over 40% of languages use this form. (Turkish, Tamil, and Tibetan are a few examples) (SVO, the word order used by English, is a close second, and probably has more speakers than SOV languages (as English and Chinese are both SVO languages))
ONly kind of on topic, but.. hey. =)
Trees can't go dancing
So do them a big favor
Pretend dancing stinks!
Besides, wouldn't compilers have a problem with languages that required that much lookahead?
None of the word orders really affect look-ahead. postfix (SOV) is just as easy to parse as infix (SVO) (and is much less prone to ambiguity).
Trees can't go dancing
So do them a big favor
Pretend dancing stinks!
ALWAYS have people felt that the langauge that they spoke was changing for the worse, and usually it's percieved that it's on the brink of disaster as well.
Is this democratization of linguistical/syntactical/semantical decisions a good thing?
There is no democratization. Language has ALWAYS been determined by how people spoke, and if people 'choose' to speak differently, the language changes.
To answer your questions: No. It's not a good thing. It's not a bad thing either. English will not be 'ruined' to the point of unusability. New and 'difficult' dialects may arise, but actually I don't think that will happen much either - today's level of global intercommunication makes even that unlikely.
Trees can't go dancing
So do them a big favor
Pretend dancing stinks!
Think about Shakespeare, for example. The language of Shakespeare is so different from standard English as to have virtually no intersection.
Your are in error. Shakespeare is considered the beginning of "modern english", which is what we speak today. 95% of his vocabulary is the same (though some spellings differ), and most of the grammatical constructs we see in Shakespeare are still used today. The biggest reasons that his writings are at all difficult are that they are use a lot of metaphors, many of which are archaic and abstruse.
Even Chaucer (pretty much definitive "middle english") is fairly similar, though a lot of the words have shifted in pronounciation and spelling since then. I frequently need to say the stuff out loud to even recognize the words. But the sentence structure is basically the same, and for the most part the vocabulary is only superfically different.
Trees can't go dancing
So do them a big favor
Pretend dancing stinks!
You are correct that Finnish and Sanskrit are completely unrelated, at least historically speaking.
They do share some features in commmon, though, such as the use of "cases" in lieu of prepositions. (I think Latin does a bit of this too, but I may be wrong.)
I don't know a whole lot about the history of the Finno-Ugric family of languages, but I can tell you that Finnish and Magyar (hungarian) are the most well-known examples, and that there are also a handfull of uralic languages (that is, spoken in the Urals) which belong to this family. (estonian, and lithuanian perhpas?).
I can also tell you a bit about the histry of the Indo-European language. From what I recall, the Aryans (the real ones, Hitler totally misclassified his own race!) brought it into india, with their miltary victory, some several thousand years back. They did a lot for the dissemination of the language family as they were a successful and aggressive people. There it evolved into Sanskrit (which has evovled into Hindi, which even today co-exists with the totally unrelated Tamil).
Trees can't go dancing
So do them a big favor
Pretend dancing stinks!
As far as I know no complete (or close to complete) grammar exist for any natural language.
Yeah, well, it's not too difficult to write a grammar for english that encompasses most of the things that we say in daily conversation, if you're not dead set on making an unambiguous context-free grammar. We can parse general context free language in O(n^3). Most programming languages parsers use LL(1) or LR(1) grammars (subsets of context-free languages, but more expressive than regular languages), which can be parsed in basically O(N). Parsing general context-sensitive languages, well, knowing how long it will take solves the halting problem.
However, I think that a simple generative grammar, even a context-sensitive turing complete one is basically doomed to failure, since "valid english sentences" is a fuzzy set. This doesn't really matter from the point of view of making a parser, though (So what if it understands things that I might not, so long as it also understands the things that I do grok)
Trees can't go dancing
So do them a big favor
Pretend dancing stinks!
However even correcting for that, if you look at bigrams (i.e. pairs of words) in Shakespeare and, say, a newspaper article there will be very few in common and even those will mostly include prepositions.
I wonder how much of that is stylistic. Do you have any data on other bigram comparisons?
Trees can't go dancing
So do them a big favor
Pretend dancing stinks!
- It saves keystrokes (no parens)
- It makes intermediate results accessible
Besides, it's cool and geeky!main(O){10<putchar(4^--O?77-(15&5128 >>4*O):10)&&main(2+O);}
Programming in almost any language forces a precision of thought not usually found in "human" languages. Even though the words themselves are borrowed (or made up), the constructs and concepts that are being described are well, different.
I guess a lot of the currently popular computer languages could be compared to "dialects" of C - all somewhat derived from it, and mutually intelligible. It was easy to pick up Java when I already knew C++. Then you have things like Scheme, or COBOL, or M4 that aren't necessarily immediate to understand.
"Language shapes thought" is the essence of the Sapir-Whorf hypothesis (still debated in linguistic circles AFAIK). A good question is how much it goes back and forth between the two. I learned to program in 6502 assembler (well, BASIC too, but is wasn't good for much), and using that "language" definitely shaped part of how I think. But now after 15 yrs I haven't gotten around to figuring out functional languages - different way of thinking. I've heard people complaining about not "getting" functional languages on other postings. So I guess there's something to it. It's all pretty interesting. I'm starting to ramble a bit now, huh?
Maybe take a look at the Plankalkuel
:) ) sometime in 70s, IRC.
http://www.tuxedo.org/~esr/retro/plankalkuel/
at The Retrocomputing Museum.
It's a programming language developed in 1945 by a german. I assume there is as nearly as no english-american influence. (War, Axis/Allies)
Well, I can't point out what the german influence is.
I think the greatest influence in programming is
math. (Structured Query Language aside)
A professor of mine (in cs) told me
something about a japanese cs who built the first japanese computer (a clone of a british or american computer
There was something remarkable on the machine-code
of this clone. It should be somehow related with how DNA can be read (two complementary strings, bidirectional readable).
But don't rely on this. It was only a passing comment in a short lecture about the history of computing.
Maybe someone can help me here?
"Between strong and weak, between rich and poor [...], it is freedom which oppresses and the law which sets free"
I have studied Japanese, and I have heard this argument, that the Japanese language is "ambiguous" or "unspecific". It is made often, by people who are smarter than me and who have studied Japanese more than I have. Still, I don't think that it is neccessarily true. Those complaints may be more true of the implementation of the Japanese language than the language itself.
Many Japanese sentences omit subjects and objects or other sentence parts, and they are inferred by the context. Japanese can be very specific however, if the speaker chooses to use it in that socially unconventional way. Being a novice speaker, I probably pepper my sentences with more detail than a native speaker would. The point is, you can provide more detail with the language if you want, but it is not the standard practice.
However, it seems to me in a situation, such as a war, where much depends on clarity, the language could be used to communicate as clearly as neccessary.
Don't forget that Friday is Hawaiian shirt day.
The really fun thing about Slavic Languages (at least Bulgarian and Russian, I don't know about the others) is that double negatives are grammatically correct, and only reinforce the negativity of the statement. For example, saying "I don't have no money" is perfectly acceptable, and means "I don't have _any_ money". So, you could imagine Slavic C, where:
!!a is actually equivalent to !a
Then there's the whole Cyrillic character set, which has some characters in common with Roman, but they mean different things (b == v, p == r etc)
For one thing, most of the refined numerical concepts are either not present in swahili or are borrow words. So, abbreviations for "integer" and "floating point" and stuff would probably still be abbreviated from English. Or perhaps arabic, which would give it an interesting flavor.
However, swahili morphology (the way verbs change when conjugated) is totally different. The verb stem gets a bunch of prefixes and infixes for subject, direct object, and tense. So instead of stringing words together in function names, like
doProcessWithThings(thing1, thing2);
it would be more like
uvyofanye(kitu1, kitu2);
That's probably what C would look like in Swahili (and yes, I know no one really cares what it would look like, swahili is always used as arbitrary language of choice, but I just thought I'd satisfy anyone's bizarre curiosities. And no I'm not kidding; this is what it's really like).
If you think about it, the brain is acting like an interpreter when you listen to someone else's speech. Of course, if they are speaking Japanese and you only understand English - you need to get a patch. :)
"The first time I got drunk, I got married. The second time I bought a chimpanzee, after that I stayed sober" Arian Seid
I'm working on a project right now adapting a bespoke solution into a more modular and global system. nothign unusual you might think, except for the context.
:)
:)
the original program was written by a collection of serbian programmers, and was not intended at the time to be maintained by anyone else. so it is a collection of hacks, with little documentation, but the most impressive thing is the variable names - these are the only solid connection to the (natural) language, and as such are a headache to track and work out
i have seen an attempt to port a language into italian (C, i think it was), so you'd end up with something like:
se (var == Vero){
func1();
} senno {
func2();
}
(an if - else, with Vero being italian for True)
i dont think logic works too differently in other languages.
david
/* Standard I/O library we must include, hm? */
/* Do, or do not. There is no try. */
/* Mmmm, yes, finished now we are! */
#<h.stdio> include
/* Now begin we shall. */
(argc int, argv** char) main
{
("World, Hello!")fprint;
}
And the brethren went away edified.
I am neither a linguist nor a military strategist, but why should that stop me from having an uninformed opinion. :)
:) Well, ok, that's a oversimplification, but in general when things start screwing-up, low-level American troops will take the initiative and try to compensate for conditions instead of withdrawing and regrouping.
From what I've read, Japanese culture is very precise and exact. When the Japanese military issues orders, they are extremely precise and exact and Japanese soldiers are expected to obey them precisely and exactly. This is fine as long as things go as planned, but when things start screwing-up and you don't have contingency orders and your soldiers have no experience taking the initiative (indeed, are discouraged from taking the initiative), then I don't see any alternative to withdrawing and regrouping.
On the other hand, you get a bunch of American good-old-boys and there's almost no point issuing precise orders 'cause you know they're not going be obeyed precisely anyway.
I suppose there are strengths and weaknesses to each culture, but anyway, that's my uninformed opinion.
// TODO: fix sig
Just like computer languages, our "human" languages lend themselves to particular uses, i.e. they are good for some things, and bad for others.
Example: You can easily write a code parser in prolog to verify its correctness... in fact you can write a prolog compiler in prolog with little to no difficulty...
However in C/C++ writing a code parser is a huge pain in the ass. Also, when was the last time you cranked out a C++ compiler (that is correct!) in a few lines.
However prolog does not have many of the features (OO) that C++ has... so it is good for some things, not others...
My point: Some computer languages are good for some things, and not for others...
This is extremely true for human languages. Some languages such as german lend themselves very well towards technical description. Ever see technical manuals from Europe? They are mostly in German for a reason... it is very easy to describe physical aspects of machines in German.
Another example: Mainland chinese. There are many many dialects spoken in China... however they all share several common features. They lend themselves very well to poetry and literature. The descriptive capability of the language is "better" than English...
So why do we end up using English? Well, its easy. And many people don't like the answer (because Americans think thier language is superior because "everyone" speaks it) The answer is because English is terse, and weak, and unambiguous. There is some ambiguity dont, get me wrong, but we don't exactly have 2000 different words for the sun, like some languages do. We have a limited vocabulary, and the language itself is short and to the point. This is why we use it to code in.
What do other countries code in? Most romance languages are very similar to English, so in Europe it is not uncommon for there to be code in other languages (how do they compile it? I dont know). However in India, China, Japan, most people code in English, as it is significantly less ambiguous then thier own languages. Also, who wants a keyboard with 4000 symbols on it? Romance languages also feature a limited but usefull character set, which also plays an important role.
Im sure there will be flames now, but if you stop and think, how many synonyms do you know for earth? The Native Americans had several dozen. We have very few.
Just another example...
And this was almost exactly my point. English shares some nouns and verbs with others, but noone would make the case that it is the same language as french or german.
As such, programming languages are different from english and others. They are languages in and of themselves. For them, the expression of logic is of the utmost importance.
Look at PERL. It has what...2 normal ways of outputing data (print and printf..couple of other related ones....and of course the lowlevel syswrite...) but how many ways of expressing logical operations?
AND, OR, etc all have multiple "words", with different shades of meaning (|| binds more tightly than "or" does for example - but the underlying logic that is being expressed is the same)
They are thus built upon math as their foundation, much more so than english. They only borrow the alphabet and words of english....the grammar, the shades of meaning, these are not taken from english.
-Steve
"I opened my eyes, and everything went dark again"
...as the example. You can expect that for the most part all languages which are from the same family tree (e.g. English, French, Spanish, Italian etc..) would be similar. The real issue is that not all modern languages even have technology terms. Historically English does because it is the language in which all these things were "invented". But- but what do you do with a language like Navaho, where even the word "Tank" (army vehicle) is just the two words for "metal" and "turtle" put together..?!
Nothing wrong in english, but certainly in swedish (for example). Especially for a nitpicker like myself :-)
Not that everyone gets that right, though. In restaurants, you'll see signs that say "rök fritt" (smoke freely) when they (probably) mean "rökfritt" (non-smoking ie "free from smoke").
All opinions are my own - until criticized
Any officer will do his best to boost his troopers morale. That is why every soldier, from any nation facing any enemy, real or potential, will here things like:
"Yes, they may be better trained, but they are unable to act on their own initiative. Break their first attack and we will win"
"They may outnumber us but we are better trained."
"They fight for a corrupt government, they will not be motivated"
"Our airforce has smart-bombed their defences"
"Don't worry about all those bombers in the air. They are just for show. They are only hitting our decoys"
etc etc
Never take anything you here about other armies too seriously. Especially if they are present/former/potential future enemies.
All opinions are my own - until criticized
You mention "Buzz word" That is two words. A german or scandinavian would have written it as "Buzzword" (substituting "buzz" and "word" for something more native, perhaps "surrord":-)
In French you will call a function which fetch a value chercher_la_valeur, notice the pronoun, this a sentence ! while in English you will naturally call it : get_value, this closer to a concept than the French form
Why not "cherche(r)_valeur" in french or "get_the_value" in english? Your example is about simplified grammar, not linguistic difference.
On a side note, I personally use english for variable and function names, even though I'm not a native speaker. There are two reasons for this:
1) The keywords are english. It is easier to read a code that does not switch language.
2) Should I name the get_value function in my native swedish "Hämta_värde", the code would not compile. Substitutes like "Hamta_varde" or "Haemta_vaerde" are ugly and sometimes confusing.
All opinions are my own - until criticized
Because it's not really based on english - it's based on machine code, logic, and math. Don't be too certain that mathematics isn't influenced by cultural factors in turn. You may find link interesting, to say the least.
Because it is fairly simple in certain ways.
A Russian friend of mine told me that in Russia, people are very happy to program in English because in Russian, there are a lot of different ways to say "put" (or "set") and "get", according to gramattical rules involving verb conjucations. In English it's much more straighforward, so naming functions is more easy - and guessing function names is also more easy.
Of course theoretically, you can program in English and not even know the language. However, I suspect that when using 3rd party libraries and system functions, some knowledge of English comes in handy. Since English is fairly close to an international language, and, as noted above, the grammer is well suited to writing function and variable names, I think it's fair that most libraries use English.
I will refrain from jabs at your moniker. ;-)
Now hiring experienced client- & server-side developers
-- @rjamestaylor on Ello
If you read a paper on (say) math or biology the language will be sufficiently different to make the contents incomprehensible unless you happen to be a specialist. Yet again we recognize it to be English.
How the language used influences the thought process is a fascinating subject. For example, Allan Bloom in his "Closing of the American Mind" points out that a lot of the words or to be more precise the way we use them nowdays, such as lifestyle, charisma, values, superman, etc are actually a trivialization of ideas of German philosophers (notably Nietsche). He argues that very little general discourse would be possible now without using some of these words.
Compared to natural languages, as you said, computer languages seem rather uninteresting as computers are still much more primitive than humans.
Well, the other side of it is that the Japanese have an affinity for management and control systems that's far more efficient than ours.
Actually it is ours, your referring to TQM (Total Quality Mangement). This was invented by an American who was scoffed at by various American manufactures (GM, Ford, General Electric, etc) for the ludicrous nature of the idea. He went to the Japanese with his idea and they took it hook line and sinker. This combined with the arrogance of our own manufacturing base (Ford Mustang designed to start leaking oil after 66 months comes to mind), is what enabled the Japanese to become such an international powerhouse. For those who are skeptical about the TQM bit, keep in mind they /fully/ integrated TQM at all levels with a commitment from management. Something (total commitment) American companies have sometimes painfully learned really was neccasary.
Somebody must have devised a programming language with Japanese or Chinese keywords. Anyone know?
In Japanese both the object and subject are given before the verb. I think this probably makes RPN seem a bit more natural to Japanese speakers. Although humans have a very limited stack depth, before a sentence becomes difficult to follow. I can see assembly formated like:
Loc1, Loc2 MOV
Loc2, Reg1 ADD
Calvin: "I like to verb words."
Hobbes: "What?"
Calvin: "I take nouns and adjectives and use them as verbs. Remember when `access' was a thing? Now it's something you do . It got verbed."
Calvin: "Verbing weirds language."
Hobbes: "Maybe we can eventually make language a complete impediment to understanding."
- Calvin & Hobbes, by Bill Watterson
What would Perl be like if it was coded by a native Japanese speaker?
Of course Perl wouldn't be Perl unless it Larry Wall had made it, but Perl is based more on the "Unix language" than the English language. Perl is awk+ksh on steriods. With a lot of other stuff (especially from C) thrown in, just becase it could.
Language wise, Japanese is more like Forth (or Postscript). It is an almost entirely postfix language. You say some words, then say a preposition-like word (usually called a "particle") which makes them into a clause, then after a few clauses, you say the verb, which ties the clauses together. Or something like that. Everything is tied together with words at the end, rather than with words in the middle. Certainly instead of "2+3", we'd be doing "3 2 +".
Japanese has such a pure grammar because they were on an island where they were left alone for thousands of years to come up with their own primitive language. Then the Chinese came by, showed them how to write, and the Japanese were mostly left alone for another thousand years to mis-pronounce the Chinese and come up with one of the most bastardly complicated writing systems on the planet. Most kanji have more than one reading, and many times more than one reading is valid in a given context.
Hmmm... and in Perl, There's More Than One Way To Do It. Go figure.
#naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
I think Churchill's point may have been a valid one.
There are, I believe, significantly more homonyms in Japanese than there are in English. This problem is non-existant in writing, because different characters are used for most homonyms. In speaking, the problem is solved by actually ghost-writing the character onto one's hand, so someone can deduce the meaning. Often, notebooks in Japanese business meetings are used for writing characters in large print so the notebook may be turned around for others' viewing convenience.
-------------------------------
I think if Perl were written in Japanese, you'd see verbs on the tail-ends of sentences.
split( ',', @foo );
would become
( ',', @foo ) split;
(except it would be written in Japanese, not English).
Besides verbs, word order often doesn't matter, as words are followed with relationals that tell you what purpose they serve. So you could well see it written as:
@foo wo ',' ni split;
Which, due to the grammatical particles, would just as easily be written:
',' ni @foo wo split;
- cylence
You must use different miles from everyone else. There are plenty of places in the Bay Area where knowing at least one other language could be quite helpful. If you want to go a bit further afield, it's less than 400 miles to LA, where "Se Hablo Espanol" signs are so common that you nobody notices them anymore, and it could be quite useful to speak either Mandarin or Cantonese.
There's no point in questioning authority if you aren't going to listen to the answers.
Have you ever run Windows 98???
kwsNI
Thanks, I should have known that. Anyways, I have an even better idea. If Hula can be used to tell stories, why can't it be used to code? "Uh, yeah, I'd like to sign up for the hula coding class..."
kwsNI
The Hawaiian alphabet is much smaller than ours (5 vowels and 13 consonants - I believe). Think of what it could do for ergonomics...
kwsNI
Yeah, right. I've tried. It's pretty damn hard. Do you know what type of fucked up tan lines you get when you have your laptop on your lap on the beach?
kwsNI
Nah. Most people throughout the world are concerned with managing the details of their own lives. Your average European doesn't learn other languages because he's high-minded, or has a more balanced picture of the world, he learns them because he's wants to talk to the people around him. I lived for a while in Bulgaria, and I had people ask me, sometimes in English, things like, "Oh... you're from America? Do you know my friend Bob Smith?"
Not only do most people in the US not need to learn other languages to talk to their neighbors, but it's often very difficult to even find a neighbor who speaks a different language, if you're inclined to learn one.
People, very practically, tend to concern themselves with things which affect them. If you live in a big, monolingual country, other languages don't affect you much. Heck, most Chinese really figure China's the center of the world... that's not egocentrism, that's provincialism.
"The best we can hope for concerning the people at large is that they be properly armed." - Alexander Hamilton
As it so happens, I have. Partly because I'm a bit of a sinophile, partly because my stepmother's Chinese... a metallurgical engineer, whom my father married in Wuhan. And of course you're correct... there are lots of spoken dialects, which are different enough to regard as separate languages, really. On the other hand, they have a single written language, so at least they can all write to one another.
I realized I was oversimplifying the case, just to throw something on at the end of the post, and should have known somebody would call me on it. You'd think I'd have learned by now.
Anyway, the Chinese learn other dialects so they can talk to their neighbors. They also figure China's the center of the world.
So, Mr. Skald, it seems to me that you're further proof of the failure of the American educational system.
Oh, absolutely. :-) Though for other reasons than thinking that all Chinese can understand each other's speech.
As for being the center of the world, I think they realize that's a very outdated belief
The very educated (like my stepmom and her family) do, though that fact tends not to mean much in their daily lives. Most people are happily ignorant of the rest of the world, even today... they realize it exists, and they don't care much.
(let's face it, everyone thinks they're the center of the world, not just the Chinese).
Funny thing is, China is diverse enough that many Chinese are, in a way, quite cosmopolitan... I think that serves to reinforce the illusion that China is the whole world. You could characterize folks as thinking, "Of course I don't think Guang-zhou's the center of the world... there's all the rest of China!"
"The best we can hope for concerning the people at large is that they be properly armed." - Alexander Hamilton
Wow, we're really on opposite sides of the fence on that one... I'm a fairly rabid states' rights person.
I cannot imagine the complications that would result from different currency, languages and customs.
Actually, we had different currencies before the Constitution came along, and different customs for yet a long time after. Even, to an extent, today. And it's interesting to see just how much the US Federal Government was crafted to accomodate just such a situation. It was intended largely to standardize certain things which were causing problems, such as units of measurement and currency, as well as to prevent trade wars and punitive tarrifs on interstate commerce.
So imagine America of the late colonial period... except that English was predominant, it's just what you describe.
"The best we can hope for concerning the people at large is that they be properly armed." - Alexander Hamilton
Watch, now that I said that, we'll both get modded down and assulted by a pack of clowns bearing bowls of grits. ;-)
"The best we can hope for concerning the people at large is that they be properly armed." - Alexander Hamilton
Have you checked out http://www.linuxwales.com/ ?
As far as programmers' thought processes when programming goes... Yes, maybe most commonly used languages are Turing complete. The fact of the matter is, though, that a programmer who is writing assembly language has to think differently about the problem than one who is writing in Forth, or one who is writing in Lisp, or C or C++. Different languages cater to different ways of approaching and thinking about the problem. It seems a bit...glib to say that since all (most) languages are capable of expressing an arbitrary algorithm that they are all based on the same fundamental structures of reasoning. Was it Knuth who said that a programming language which doesn't change the way you think about programming isn't worth learning?
That said, I've been told that Russian, for instance, has interesting facilities in the language for dealing with when a "verb" is taking place. (i.e. expressing ideas about concurrency which would require a bit more work in English) The person I've talked to who spoke Russian claimed that it was difficult to grasp these alternative verb forms, in spite of the fact that he spoke English and French with a fair degree of fluency. Native Russian speakers, obviously, are quite facile with the alternative verb forms. It may be, for instance, that a Russian programming language designer would feel the need to build facilities for concurrent actions into the programming language itself. This would be somewhat different from the most commonly used programming languages, where ideas about concurrency are shunted into the layers of standard (or non-standard) libraries.
What about the effect of slang on programming languages?
--
Wooden armaments to battle your imaginary foes!
If a function is like a verb and its arguments are like subjects and objects, than C might be considered a VSO language. I imagine there must be natural languages that have VSO order, but I don't know what they are, and I have a sneaking suspicion that speakers of such a language weren't the primary designers of languages such as C and Pascal. It must be that VSO just seems more logical to designers and logicians.
The earliest electronic calculators that I remember seeing used RPN (i.e. "3 enter 4 +" instead of "3 + 4 =") -- which is more SOV-like than the more familiar math notation that modern calculators use. Of course that's because they were doing stack-based math, which doesn't have issues of precedence or need parentheses. Natural SOV languages do not share that feature; Japanese syntax can be ambiguous just like English.
chris
In building an industry, on the other hand, you generally can do a lot of planning and the on-the-spot adjustments -- esp. for good old early 20th century industry -- could be minimized. And indeed, some say this sort of programmatic industry is what Japan made itself good at.
Actually, I think the whole idea is bollocks, but that is my take on what had been said.
The Mongrel Dogs Who Teach
That's not new. Befunge already does that.
TO BUY A NEW CAR WOULD MAKE YOU SEXUALLY ATTRACTIVE.
True, but once you learn more than one, preferably embodying different coding styles (procedural, functional, object-oriented), you will be able to learn a new one very easily, because most languages are pretty much the same as the other ones. Personally, I feel that I have transcended the languages enough to navigate the raw actions of the underlying machine. It's like The Matrix. (Wow, I love relating stuff to that movie!)
TO BUY A NEW CAR WOULD MAKE YOU SEXUALLY ATTRACTIVE.
File this one under "That's not quite right".
My understanding of Pinker's explanation of Chomsky is that everybody has the same mentalese
I don't think this would be true in all cases. For example: imagine a scene where a female employee of a company is verbally berating a male co-worker, one that is not her subordinate.
Someone from the US, a country where the so-called "woman's movement" has lead to more open attitudes about women in positions of power, might get a "mentalese picture" very different from someone from, say, Japan, where women are still expected to be submissive to a certain extent.
I use this as an example only: not trying to start a gender/racial thread.
So it's possible that a Japanese's mentalese is different from the American's, and it prohibits him from seeing the situation in the same way that an American would see it, and visa versa.
This is really the point I was trying to convey. After all, language, at it's most basic, is simply our way of expressing our view of the world to others.
Perhaps my example was not clear enough. Going back a bit, say the hypothetical female employee is berating the male for something he did: perhaps he didn't get those sales figures like he promised for the big meeting. Jane Doe takes John to task on it: after all, it could be her ass on the line.
Again, I'm not looking to racial stereotype anyone here, but there's probably going to be a difference in how an American and Japanese person sees this situation. Both would probably see Jane's reaction as justified, but the Japanese person might view Jane as overly aggressive, or perhaps even out of place. If you later asked both individuals to describe the situation, would the description of the Japanese person reflect this supposed cultural bias? I don't know: but those links make for some interesting reading nonetheless.
This is all well-and-good, but does it apply to programming? I don't think so: when your programming, you deal mostly with logic problems, with step-by-step solutions. More black-and-white than a social situation. After all, effective programming demands certain things, like variables, pointers, counters, loops.
While I agree with the thesis that programming constructs are strongly driven by "machine code, logic, and math", I think most English speakers and, to a lesser extent, most speakers of Indo-European-derived languages have no idea of the range of variation in languages and therefore just how much out programming constructs reflect those languages.
For example, in machine languages, most opcodes are coded as OPERATOR OPERAND [OPERAND}. This reflects the common structure of English sentences - Subject Verb Direct-Object Indirect-Object, or more particularly the imperative form with the Subject implied and omitted. For example, in English, we say "Send the boy home!". Other languages always put the object(s) in front of the verb, and a machine language built by speakers of such a language might very well have operands preceeding operators. (And I suspect more likely to favor stack-oriented architectures).
Most all higher level languages (and mathematical notation systems) also tend to reflect the English "SVO" ordering, with PostScript and Reverse Polish Notation being notable exceptions, both driven by the functional elegance of a stack implementation.
English and the Indo-European languages are also hard at one end of the spectrum on dividing nouns from verbs in the language - for most words in isolation a native speaker of the language will have strong opinions on wether a word (in isolation) is a noun or verb, despite the fact that virtually all nouns can be used as verbs and vice-versa. In other languages, the distinction is not as strong, although still there (with debatably one or two languages that don't make the distinction). I suspect the early sharp distinction between program and data, the struggles some people have with passing functions as parameters, and some of the resistance to OOP are all rooted in this sharp distinction in English.
There are doubtless other small ways English has influenced programming language structure, though as the previous poster notes, a lot of structure is derived from mathematics and logic.
This is actually a fair summary of Chomsky -- at least, everything I've seen by him (and particularly, his "destruction" of Skinner) basically boils down to not much more than this.
-- the most controversial site on the Web
Personally, I find Japanese a much more algorithmic and unambiguous language than English. Not only is the language's basic syntax more structured than that of modern Anglophiles, there are pre-defined levels of respect and formality that control word choice and forms in every sentence. You can tell the respective social positions of two Japanese people by their choice of verb conjugations. I think that influences their style of management and "quality control" far more than the business courses of a conquering invader.
What they did learn from America was the allure of capitalism. It allowed their feudal heritage of the shogunate, samurai, and personal honor and sacrifice to resurface in a socially-acceptable forum. The Japanese sarariman (salary-man) of the mid- to late-twentieth century was the new samurai, who spent a lifetime owing allegience to a single corporate "house." From the time they started work -- immediately after high school or college -- to their deathbed, the same corporation gave them employment, structure and discipline, and often even their housing. Just like their language, the core structure of their lives remained unchanged from two thousand years prior.
Even their large primary alphabet, kanji, is formed of complex arrangements of a core of smaller pictographic 'primitives'. It takes a special kind of weirdness to be willing to take something more or less equivalent to our concept of words, and distill it down to the individual character level.
I don't think programming language structures rely very heavily on English. There are certain kinds of loops that are useful in programming, and we don't exactly try to define them in proper English. Let's look at the if/then loop.
English: "If the value of a is 1, then set b to 2 and print 'Hello' to the screen."
BASIC: IF A=1 THEN LET B=2:PRINT "HELLO"
C: If (a) {b=2;
printf ("Hello");}
bash: IF ($a=1)
THEN
$b=2
echo Hello
FI
None of these have a great deal in common with English, other than that we use the word "if" to declare a conditional because it's intuitive. Essentially, we need one instruction to let the computer know we're about to do a conditional (if), one instruction to let the computer know we're typing the instructions that go with the conditional (then/brackets), and one instruction to let it know we're done with the conditional (brackets, or "fi", or significant whitespace).
The words we use are irrelevent. There's just certain mathematical ways of doing loops.
"Beware he who would deny you access to information, for in his heart he deems himself your master."
I noticed in Europe that some language are very difficult to understand when they're shouted. English, and German are easier to hear over distances and through noise because of their hard consonants. French, while a beautiful language, is not easily understood when it's shouted.
I'd rather have someone respond than be modded up.
The difficult part of human communication is that we each start out with a meaning, but have to code that into some sort of text. This text could be verbal or paralinguistic. The text is then transmitted (a vocal emission, a smile, a middle finger, etc), but it is up to the receiver, not the transmitter to find the original meaning. Most of the time the receiver uses their previous knowledge and understanding to circumlocute the meaning.
In programming it's the same. The only difference is that the compiler has no idea what you mean, only what you say. It can't see your grimace when it spams your own account with process confirmation notices, so it doesn't know it's doing anything wrong.
Any language will have this problem. English, more than most, especially American "English", is a mosaic of other languages and cultures. It gets worse with digital media and competing corporations trying to put their own version of jargon across (Refresh vs. Reload).
Personally, as someone who loves to learn and speak languages, I do not feel that having another tongue dominate the tech industry would be bad. However, given our American pride, would we be as quick as, say the Scandinavian countries, to learn someone else's language so we could compete in the Technology field? (Remember when they put up kilometre signs and people shot the daylights out of them?)
I'd rather have someone respond than be modded up.
I'm not sure that any of the classic programming languages, with the sole exception of COBOL and derivitives, can claim its roots in English. Oh, the keywords used in the languages are indeed rooted in the British/American wordset, but the overall structures don't fit, not even when you talk about intransitive constructs. (BASIC is more like intransitivie English than any other language, but the Microsoft extensions send it off in a whole new linguistic direction.)
Latin, with its introducing the players before the verb, is very much in the spirit of Reverse Polish Notation. (I might add that Polish notation turns that around: you have the verb and then all the players, which for some reason works only for people who grew up with languages with similar structures. I'm not familiar with any languages that put the subject first, but I'm sure there are some.)
COBOL is structured as though it were English...because it was designed to be. "ADD A AND B GIVING C" makes perfect sense to the English writer, but not to a writer in a language like Latin.
FORTRAN, on the other hand, is based on the notation of classic mathmatics than on any particular language construct.
One thing that shows that English is not the sole contributor to computer languages is the treatment of nested modifiers. English is terrible at compactly describing modifications to modifiers -- the adjective/adverb system sucks when things get complex. Contrast that to Spanish, which sorts out what's modifying what, and far better than English ever will.
The B language (and its child the C language et al) combined assembler language with more human-readable constructs such as the assignment statement popular in ALGOL and to a lesser extent FORTRAN. Many of the "instructions" of the PDP-7 were single-character or dual-character tokens in the B language. The roots of B were in ALGOL and FORTRAN, which were in turn rooted in standard math notation. Many of the Fortran/Algol "built-in language features" were removedand relegated to functions in B/C, thus simplifying the language and also improving portability by eliminating the assumptions made by FORTRAN (unit record input-output) and ALGOL (character-stream input-output).
LISP is a pure-math thing. (All those parens can't have an analog in human language, could they? If it does, I want to see it!)
Food for thought: if Russian was the seed of computer languages, would programs be easier to debug?
But it is clear evidence of Slashdot's decline, and I'm not trolling or flaming. In the past when questions like this came up, there were always linguists around who would have shot the original question full of holes within the first 50 posts. Now, thank God for him, we rely on an IANALinguist who has read Pinker's book at least. Oh well... This poster gets many bonus points for the precise way he phrased it: even if C is close to English, it doesn't matter.
Yes, it is correct that Japanese people formulate thoughts pretty much the same way as everyone else, and they formulate what they are to say the same way also, and their language is just as capable of expressing their full range of thinking. Churchill does not have the evidence he would need to make his claim, unless it hinges on a particular phrase here or there that accidently turned out significant, something like (please forgive me in advance) "I meant Bud Right!" ;)
It is possible, though, that Japanese cultural conventions and norms might lead to less effective communication in some circumstances, but it would also need to be pointed out that they probably would have advantages in other circumstances. I'm referring to deference to authority, for example: sometimes it's good, sometimes it's not. It is also possible that slight differences in the genetics of IQ could play a role. Japanese test slightly higher overall on standard IQ tests than Europeans, but that's based on math. They actually test weaker on language skills, and yes that testing was controlled for culture.
I've had more than one Arabic professor tell me that Arabic is the best language to program computers in because of its highly logical structure. I've never encountered any programming languages based on Arabic, so I've always assumed this was a made-up factoid that got published somewhere. Has anyone ever heard of one?
The grammatical rules of written Arabic (which is profoundly different from most spoken dialects) are pretty logical and the rules do have a rigid complexity that resembles a programming language, which is why many people in the Arab world don't learn to read and write well. It's like having to learn C in addition to your native (spoken) tongue.
-
-
Give me liberty or give me something of equal or lesser value from your glossy 32-page catalog.
For those not conversant in Japanese, the particles mean:
X ni - to or into X (or indirect object)
X wo - X is direct object
X wa - X is subject or topic
X ga - X is subject
X he - to X (direction, e.g. for sending)
X de - using X
So, you could come up with a programming language that said:
"Konnichi wa" wo [mail-program] de [mailing-list] he [SPAM] suru; # Spam "Hello" to the mailing list using the mail program
Might be an interesting experiment.
sulli
sulli
RTFJ.
You know how everybody pretty much sounds the same when singing? It sorta masks the singers accent. Maybe as programming languages develop they mask the grammar of the designer, because of the simplicity and purity desired. Natural languages are messy and complex - programming languages are distilled.
_ The bureaucracy is expanding to meet
the needs of an expanding bureaucracy.
It's true that higher level languages abstract machine code and that therefore, superficially at least, one spoken language over another shouldn't matter.
But, as my subject said, there's more to it than that. English is peculiar and different from other langauages, in it's capacity (or lack thereof) to describe certain relationships and connections.
I'll admit I know only a teeny bit of Spanish and not much else aside from English, so I can't speak as an expert on language comparisons. But I do see how, at least in theory, the langauge a group of programmers interact in could influence the code they produce. From a design standpoint, high-level abstract objects in an OO project are defined with various relationships, built on top of metaphors like publish/subscribe, client/server, is-a, has-a, and so on. I'm not sure how universal these concepts are among other languages, or if there are basic relationships in other langauages that don't exist in English, that might produce a different high-level design. If there are, though, the subtly-different design scheme would of course reflect in all the underlying code.
It's a tough question. As someone pointed out, the spead of programming know-how has been very English-driven. While there are a large number of Indian programmers, they're required to learn English, they generally take all their college-level tests in English, and are essentially learning the same OO-design principles the rest of us are. So differences in their Native language may not get a chance to influence design schemas, at least not yet.
If differences in language can lead to differences in code, eventually they almost certainly will, _if_ what's different is also as good or better, and has a chance to get wide exposure. Considering how popular the idea of tapping Indian and Eastern talent for development work is getting, I think we'll see the model change very soon, if it's going to at all.
Xentax
You shouldn't verb words.
This means that English is capable of easily expressing a wide range of thoughts - some of which are difficult to express in other languages. For example: What is the German word for 'compassion'? (Its a trick question; as far as i know, there is no German word for compassion.)
The longer I live, the more that I realize that the ambiguity and imprecision of English is actually a good 'map' of the real world - which has an element of imprecision and ambiguity to it.
While the French may hate the idea, the fact that most programming is done in English is a good thing; it reduces the 'Tower of Babel' effect in the world. This results in an increase in communication.
I have noticed that people who are not native English thinkers have some certain common characteristics to their programming. For example most of the programs that I have seen from German programmers have interfaces that seem to require the user to do some clumsy things. I attribute that to the German concept of 'VERBOTEN' which is much more than the English concept of 'Forbidden'. The German concept appears to be closer to: 'That is absolutely Forbidden by the laws of God and Physics; to even consider it is unthinkable.'
It appears to me that once a German programmer has decided to do something a certain way that he follows that path - even if it leads him into a ridiculous human interface for his program. After all, to do it any other way seems to be 'VERBOTEN'. The idea that people aren't interested in the internals of a program - but want an interface that does a lot with little action on their part never seems to enter the equation.
Of course I am speaking in generalities here, and I might not be able to defend my observations very well. Since I am talking about the 'feel' of a program - what seems awkward to me might 'feel' precise and rich to another observer. YMMV.
I HATE American English!!
/*(big 5)*/
#üÀ
Ö÷Ìʽ()
{
Ý"ö("ÊÀ½çÄãÃ!");
}
Even smaller than you think, 5 vowels and 7 consonants A E H I K L M N O P U W
See: http://www.geocities.com/TheTropi cs/Shores/6794//
Point of view from a native french speaker.
.2 ecus.
Once, when I was young, some hackers of this time tried to translate the "BASIC" language keywords into some french equivalent... And got a very shallow succes, not to say they failed miserably.
That guy (or team) is probably still laughed at.
I did not say it was not working. I just said that, around 20 years ago, a lot of people tried it and let it rust in some corner.
At that time, I did not know english very well, but I clearly found the french-translated basic syntax very clumsy.
This may be caused to the fact that english tend to be more concise (but maybe less accurate, no flame please) than french. I'm not sure.
my
[Pruneau
But aside from the character-set issue, I bet if Perl were in Japanese, it wouldn't seem that fundamentally different. The logic and constructs would presumably be the same (pretty much every language has if-then-else, while, etc.). You'd need to learn a new set of keywords, of course. And maybe some of the symbols that the language depends on wouldn't be on your keyboard (ouch!).
I'd think the hardest part would be using third-party modules whose names you didn't understand. Imagine going to CPAN if all those module names were in Japanese (or any other language you didn't know). And all the documentation, too!
Slightly off-topic question here: Someone once told me that the source code for SAP is "written in" German -- i.e., even though the language itself is C or something English-derived, variable names, comments, and so on are all in German. Anyone know if this is true? Anyone (either German-speaking or not) worked with that source enough to be able to comment on the implications? I'm curious...
"Biped! Good cranial development. Evidently considerable human ancestry."
A bit off topic but, Finnish works just like this. "I am going to the garden" would translate to "minä (I) menen (am going) puistoon (to the park)". You could also leave out "I" since "menen" means "I am going" while "menet" means "you are going". So we could say just "menen puistoon", or turn it around and say "puistoon menen". The latter is seldon used, a bit archaic, but it is correct and could be found in a poem or such.
Can you imagine if we still used Roman numerals rather than Arabic numerals. Imagine what vector graphics would be like:
vector_a = { IV, MX, X } + { -XI, C, 0};
Forget calculating the projectory of a rocket!
perl -e 'print $i=pack(c5, (41*2), sqrt(7056), (unpack(c,H)-2), oct(115), 10);'
Most likely keywords are becoming symbols. I've read quite a bit of code from european authors, tho the comments stretched my french, german and spanish skills, I could still understand the code.
I've been more interested in what fatigue does to coding style, say, when one, after 20 hours straight coding, writes thus:
WTF?!? What's this compiler's problem? Just work!
Often 2 hours sleep reveals the obvious...
Vote Naked 2000
A feeling of having made the same mistake before: Deja Foobar
In all natural languages, syntax is so difficult and complex that despite hundreds of years of effort, we are still incapable of creating even an adequate rigorous guideline for a single language. Yet your average computer language can be described completely, rigorously, and absolutely in somewhere between a few dozen and few hundred pages of text. This is because computer languages need to be utterly unambiguous- a sharp contrast to human languages, which are riddled with ambiguity and imprecision. This need for precision has led us to create computer languages that contain nothing but the barest minimum of syntax. Even a syntactically rich language like Perl has a fairly limited set of rules and an extremely small lexicon. For this reason, computer languages appear fairly natural-language independent. Instead, they encode the most basic logical rules needed to encapsulate a series of orders- rules that appear to be fairly universal. In some sense, a computer language appears to be what you'd get if you boiled down a natural language to it's absolute bare bones. In that sense, it's independent from any one language and instead incorporates the most basic element of all of them. But the richness- the things that make natural languages so interesting, and of course so different- that doesn't compute. A more interesting question might be to discover if anyone has in fact "translated" the lexicon of an English computer language into another natural language. I imagine this would be a fairly trivial task- a language like C has perhaps a few dozen keywords and no more than a few hundred functions in the basic libraries. The apparent simplicity of this kind of semantic transformation underscores the basic nature of computer languages. Similar tasks between natural languages are extremely complex, even for human beings.
In English, word order is much more important than Japanese, which uses case markers like 'wa' and 'o' to identify the roles of words. So you could verbalize "Mary loves John" as "Mary-wa loves John-o" or "John-o Mary-wa loves" etc, and be understood.
Most computer languages use word order in functions. So f(x,y,z) means something different from f(y,z,x). But you could imagine someone inventing notation like (x:arg1, f:funcName, z:arg3, y:arg2) in which markers identify the roles of variables rather than their position in the sentence.
mkubwa () { sema("Jambo, Dunia!\n"); }
main () { printf("Hello, World!\n"); }
Looks much the same to me.
I can't remember offhand, but a friend stayed for a few months in a certain region of Africa where the local language had no notion of vowels.
An example of a Declarative natural language? Maybe African tribesmen would have come up with Prolog or Lisp.
And, another important language issue I found was when I spent some time in Thailand... I managed to lose my phrase book a couple of times and each new one I bought had a different translation for "Yes" and "No".
I eventually found out that there really is no such thing as "Yes" and "No" in Thai! There is only reiteration of the request to confirm, or saying the request back and appending a NOT operator to it. I thought, "No binary! What the hell is going on!"
It allows the same kind of exchanges that you would expect in normal life as Yes & No allow, but is more procedural than state-based.
Actually, it's kind-of like a serial packet request-response or a checksum or somfink.
Thai also has this wacky "Politener" that ideally you should put at the end of each sentence. It changes depending on whether the speaker is male or female. Males say "Khup" and females say "Kaah". It sort of says (on every sentence!) "I'm male and I'm being polite" or "I'm female and I'm being polite". It puts you in a totally different kind of head-space saying that all the time!
This also seems to have parallels to certain serial protocols... sometimes you need to keep saying what you are to make sure that you get the right things.
Contrary to what you seem to believe, Japanese don't go creating new characters all the time.
There are approximately 2000 "daily use" kanji officially sanctioned by the government, out of a total of around 30,000 Chinese characters. All words in the Japanese language are usually represented by a combination of these 2000 daily use characters, or by using one of the phonetic alphabets. There are, of course, a few exceptions when dealing with names, advertising and the like.
However, these characters still carry significantly more information than English letters. Japanese books are much shorter in length than their English counterparts, simply because it takes fewer characters to relay the same amount of information. On a related note, Japanese can typically read their native language much faster than native English speakers can read English, because it is very easy to "scan" the characters and pick up what is being conveyed. When I was learning Japanese my professor would always chide us for speaking the words (aloud or in our heads) while we were reading, as it was actually slowing down the intake of what was on the page.
At the lowest level, each character in the phonetic alphabets (hiragana and katakana) typically represents a combination of 2 English letters. At a much higher level, a single kanji character can represent an idea, with combinations of these expressing more complex concepts.
As far as computer languages are concerned, an interesting language to check out might be Ruby, which was invented in Japan. I believe it is a souped-up scripting language, kind of like Python, but I hear that it has a number of unusual features.
Not quite. Programing languages are all turing compatable, and it can be proven you can translate from one to anouther correctly. Bablefish doesn't do a very good job of translating english to german (or back), and both those languages are based from latin roots.
What this means to you is that if I teach you C, to the point that you become good at it, I can teach you perl, APL, and several other languages in very little time. (In school I had a class that covered 12 languages in 10 weeks) If I tought you german it would help you to learn Danish, but it would still take you a while to learn Danish. I could then to Spanish and Portageese (very close), and you would learn faster. If I went on to Korean, Russian and (american) Indian, you would have little advantage over someone who had never learned anouther language. Some only because you wouldn't expect it to look like english.
In the last year I've used about equal amounts of TCL, Spanish, German, and C - almost no usage of any of them, and I used to know them all. If I needed to pick up one again I wouldn't have a problem picking up C or TCL, because I've been programing even though it is in a completely different language. Even though I spend more time speaking english then programing I'd have a hard time getting back to proficant with Spanish or German.
Controlling people is something that can be done in any language
Which is preceisely why I find the Churchill argument doubtful. If the langauge is good enough to give orders on factory floors, I doubt military work requires less ambiguity.
While many Japanese industrial processes were adopted from abroad, borrowing words has nothing to do with it. Most of the English words found in Japanese non-technical dictionaries were borrowed before WWII. Furthermore, adopting English words does nothing to change ambiguity. Anything that can be accomplished using an English word could be accomplished using a Japanese one, so long as the speakers agree to that code.
You can say a lot of things in Japanese that you would think could only be parsed by a computer... For example, Japanese tolerates unusually long strings of negations, of the type: if !(i=!(!x)) like: sore wa fukanou de wa nai to wa hitei dekimasen ne. "You can't deny that it is not impossible, can you." "fukanou", "nai", hitei", and "dekimasen" are all negatives. Another interesting bit is how deeply-layered embedded phrases can get: Daisuke no heya no tonari no isu no shita no gaban no naka no hon no hyoudai wa "The Story of Ping" (desu). "The title of the book of the inside of the bag of the underside of the chair of the side of the room of Daisuke is 'The Story of Ping'".
"Reactionaries must be deprived of the right to voice their opinions; only the people have that right." - Mao
It would look like Ruby.
Ruby is written by a Japanese programmer, and to me it looks just like a kinder, gentler perl. If you read the docs comparisons to Perl are frequently made.
I wouldn't know how Japanese as a natural language influenced the Ruby language though.
Actually, this isn't true. While children in this country these days do learn to read phonetically, research shows that most adults read by recognizing whole words at a time, just after pre-attentive processing, by recognizing the 'shape' of a word. This is an extension of "chunking", which is how we recognize simple components of a more complex syntax in language we may have never heard before.
Check my Go-related blog for beginners: DGD
By using English to describe any concept that couldn't be clearly expressed in Japanese. Keep in mind, most Japanese industrial leaders (in the 1950s), and much of their middle management, were trained in America. This is for their post-war development, and the eventual introduction of "quality" to Japanese work (which didn't exist prior to the 1960s).
As for productivity? Well, the other side of it is that the Japanese have an affinity for management and control systems that's far more efficient than ours. Controlling people is something that can be done in any language.
"But remember, most lynch mobs aren't this nice." (H.Simpson)
-- Joe
I bet Japanese coders would find a way to make it have really big eyes and/or breasts.
BilldaCat
I had the interesting experience of having my first-ever CS course when I was on a semester abroad in (then) West Germany.
The course was taught using Pascal, which gave me an advantage because, as the post mentions, it's basically English. Of course, the course was taught in German, which took that advantage away again...
I think that you'll find that it's the higher level languages that take the most content from the spoken language of their author. Assembler, while mneumonically based on English, is simple enough that that shouldn't be a problem. And, of course, machine language itself has no real influence from spoken language. Also, something highly mathematical (and abstract) like APL will probably have little language-related learning curve.
LISP is an interesting case as well. It's higher-level, but pretty abstract. It's reportedly impossible to learn if you come from a culture that doesn't have parenthesis, or one that pronounces them as a "click".
-
bukra fil mish mish
-
Monitor the Web, or Track your site!
Eloi, Eloi, lema sabachtani?
www.fogbound.net
I can see some severe problems in communicating in Japanese with lousy radio voice equipment. Often, one missed or slightly mispronounced syllable can completely change the meaning, and speaking clearly and loudly in Japanese is slower than doing the same in English (you might have heard emergency warnings in anime, and know that the very generic "ABUNAI!" (danger) tends to be used where a more specific "DUCK!", "RUN!", or "BEHIND YOU!" is likely to be used in English); it lacks some of the natural redundancy of English and the handy Anglo-Saxon selection of clear, short emergency words. Terseness in Japanese is achieved by leaving out words that are clear by context (by this method, often a rather astoundingly complicated concept can be expressed in only a few words, which is why you can sometimes read several paragraphs in English that explain a phrase used as a name for something in Japanese), and there isn't always a lot that's clear by context in short commands. Speed is achieved by abbreviating groups of syllables as rather subtle compounds that can be difficult to hear under bad conditions. Furthermore, back in the days before transistor radio and TV Japanese was strongly dialectized, which would surely have added to their problems.
I suspect that this might have added somewhat to the top-down military structure, and further restricted the ability of individual units to improvise in a coordinated manner. Of course, that's hard to say, as this was already something of a feature of the Japanese military. This isn't to say that it's strictly a negative thing, there are advantages and disadvantages to having troops either more or less willing to strike out on their own when they think they know better than their commanders (either way, any military operation usually has some spectacular screw-ups caused by this feature).
As for those other replies that dismiss Churchill's comments as wrong in principle or "just plain racist", with the implication that all languages are alike, I would insist that there are very significant differences in the capabilities of languages. This requires different amounts of training to learn the specialized sub-language of any new field. There's a reason you can't understand what the drill sergeant is yelling, or the impenetrable babble of doctors in emergency surgery ("sew up that hole", "give him some painkillers", "saw off his foot", "he bumped his noggin").
If daily Japanese speech is more different from Japanese military commands than daily English speech from English military commands, it's going to take more training to learn a large and flexible vocabulary, so this ability will tend to be restricted to higher ranks.
Churchill was exaggerating, if not flat-out wrong (after all, ambiguity is a special feature of Japanese, but it is also purely optional), but IMHO it's at least plausible that the features of the language were a factor in the organization of the Japanese military.
---
Despite rumors to the contrary, I am not a turnip.
Sanskrit is essentially a simplified form of proto-indo-european (the mother of all indo-european languages). Essentially, much of the tense structure was lost (my Sanskrit grammar is a bit rusty but I seem to remember that the optative and subjunctive hardly had any other tenses than the present), the syntax was slightly altered (for example, the genitive case has gobbled many of the uses of the other cases) and the morphology evolved (all vowels merged to 'a'; a new 'e' and 'o' were formed from vowel+sonant diphtongs, and consants multiplied by palatalization among other things).
Anyway, the point of my saying all this is not merely to brag about my knowledge of Sanskrit philology, but merely to point out that Sanskrit is a rather ordinary ancient indo-european language. Much of what you point out about it could be said of ancient Greek or even Latin. And, more importantly, being an indo-european language, it does not differ that much from English in its basic ideas. So I don't think it would bring you closer to "enlightenment" (in the sense of losing your linguistic prejudices) except perhaps in the spiritual sense of the word (Sanskrit is a "sacred" language :-).
I speak fluently arabic (native speaker), french (nearly native) and english, I can say for sure that english has absolutly no influence on programming languages. The structures used in programming languages are in rather primitives (while, repeat until, if then else, etc) and I guess might be universal. Well according to Turing and Church, Goedel and consors, "all universal, which include human languages are equal :)" what might be different is the way they express thing.
:). The difference might rather sociologic tha intrinsec in my opinion.
But I believe that the "pragmatic" nature of english has really influenced the way people think and solve computer problems. Eglish is really efficien compared to Arabic and French which tend to be much more "constipated" languages, as they feel attaqued by english, they don't tend to evolve very quickly and tend to be conservative, they don't adapt naturally to technologic evolution, as the pramatic and conquerant english
I've also heard, but it's not necessarily true, that a Japanese communiqué was dispatched that would have convinced the Americans not to bomb Hiroshima, but due to a double-entendre, the meaning did not get through.
I watched a two part documentary entitled "Hiroshima" on the nuclear bombings and the events that led up to it recently and actually what did happen was this:
1. The Emperor, the Japanese Prime Minister, and basically everyone in the Japanese Government except the Army wanted to end the war and accept the allies unconditional surrender, but the Army seemed to have a stiff control over the government.
2. The Japanese Prime Minister addressed the millitary over the radio, and when asked what he thought of the allies unconditional surrender ultimatum he used the word (if I remember correctly) Matsato, he said it to appease the troops and didn't think the allies would listen. He wanted to end the war.
3. The allies were listening and couldn't immediately translate it, they brought in a Japanese linguist who said the word meant "to silently refuse", or it could have meant "to silently refuse in hopes of a better offer", but that was unlikely, Truman accepted the first meaning, and then signed off on dropping the bombs.
-- iCEBaLM
If English language should have had any impact on the design of a structural language, the syntax would be more like.
Consider this:
old_a=a;
b=func(&a);
if (a>b)
a=old_a;
Well if the language should be more natural it would look more like this:
old_a => a. /* put old_a into a. */ /* give addr. of a to func and
execute and put the return
into b. */ /* Is a > b ? then put old_a
into a. */
&a @ func => b.
a>b ? old_a => a : .
The abstraction in the (C like) programming language comes from math more than from the natural language and is far more infruenced by math notation than English.
Even OOP is far from the natural language (maybe except Perl). If we try to write a sentence like "Peter gave his Mother the basket" would likely look like this in C++
Peter->give(basket, Mother);
But despite the order of words, the logic is quite different. What is "basket" here? it is a variable holding a reference to an object. Why is it name basket, a part from giving us a clue here? Well, it probably is a generic object pointer that could refer to anything else than the basket. How is basket related to Peter? Is it part of his "inventory"?
object = Peter->loose_item_by_name("basket");
Peter->give(Mother, object);
Now more like it, but we are now leaving the abstraction, that natural language gives. Experiments have been made to make a language less formal, but often they strand on being ambigeous, an issue we deal with in everyday communication without a thought, but if our language wasn't ambigeous, we would be very longish and convoluted in expressing even simple meanings.
Our language consists of three basic kinds of utterations: Statements ("I am hungry.", "The boy was naughty to his Mother"), questions ("Are you hungry?", "To whom was the boy naughty?"), and imperatives ("Pass the butter!", "Please be nice to your Mother!"). Even when questions are expressed like statements ("I wonder if you know how it hurts.") or imperatives like questions ("Would you mind to be more causeous?") we still destinct them quite well, and no further kinds utterations exists.
But computer languages are often separated into query languages, declarative languages and imperative languages and they don't mix well. Look at the C++ example; the imperative language cannot express a (real) statement: I have come to know, that Peter gave his Mother the basket. Even questions are not questions, they are requests for boolean evaluation.
AI is getting better and better results in simulate a conversation, but it is not suited for programming languages, because a program is not a conversation. I ask the computer a question in a program, but an intelligent answer requires an understanding of the context and can hardly be used as a condition, since the answer may be "It depends on other premises."
An idea is, that programming should within time be substituted with communicating values and wishes, that in a fuzzy way gets to actions by the computer that will make us happy, like a manager communicating with his secretary. This may happen some day.
:-) = I am happy
:^) = I am happy with my big nose
C:\> = I am happy with my OS
Not a single Perl Haiku to be found? C'mon people!
Wah!
Top 12 things likely to be overheard if you worked with a Klingon Programmer:
"The urge to fly from modern systems, instead of moving through them to even greater, fairer things is, I think, an indi
Programming languages aren't closely based on natural languages. The first thing to notice is that a programming language only has imperitive verbs (imperitive languages) or is just an absurdly long noun phrase (functional languages).
Most programing languages don't have cases. The first basic I used had two (numeric and string). Unix shells have two (assignment and reference). Perl has several, but English speakers have no more trouble with this than a native speaker of a language with cases. Larry Wall probably knew what he was doing: he studied linguistics, and probably realized that a case system makes it easier to recognize mistakes.
Spelling and phonetics don't matter in a purely written programming language, so the most important classification for natural languages that would apply would probably be word order. Most programming languages do roughly follow English's SVO word order, like "x equals 4". They tend to put modifiers like array indices at the end, like english uses postfixes.
If we read "function(x)" as "ask function x", we can read namespace::object->function(x) as "ask namespace's object's function x", but in another language, we might have to change the order to "ask the function of object of namespace x".
Consider "program arguments out_file". You can read it in english as "program arguments from in_file to out_file". In japanese, you would say, "in_file from out_file to arguments program".
But, if you look at non-imperitive languages, you would think they aren't designed by english speakers. Most assembly is VSO, and is difficult to read aloud in english. Lisp is more or less VSO, and has a complicated syntax that allows you to build phrases of indefinite length. Lisp might make more sense to a German speaker than and English speaker.
Variables and functions can be considered a type of pronoun, where any word that isn't in the language is assumed to be a pronoun.
Just some ideas.
Q: What do you call a person who speeks 3 languages.
A: Trilingual.
Q: What do you call a person who speeks 2 languages.
A: Bilingual.
Q: What do you call a person who speeks 1 language.
A: American.
Last night I was reading Jorge Luis Borges' collection of short stories, Labyrinths. One story involves (amongst other things) a language without nouns like "moon", instead using verbs to describe the action of "to moonate" or the state of "mooning".
It struck me whilst reading that this wasn't too far from a stack-oriented language, like RPN or Forth. Unusually this is a case where a concept was probably more familiar to me now than it was to Borges (famously fond of obscure references) when he wrote it.
What would Perl be like if it was coded by a native Japanese speaker?
Well, to an English speaker, it would probably look like line noise.
Rather like it does right now.
Tarsnap: Online backups for the truly paranoid
I believe he is more referring to the alteration of the form, relative to various languages, than just converting the tokens. An example, would be Korean, which could be thought of as a natural language RPN, where the general syntax is:
,,, ) convention, which I assume stems from the difficulty in parsing ,,, ,,, ;)
clause -> [object].. verb [tense]
sentence -> [object].. [clause conjunction].. clause term
While there are a few special cases, the overall language is extremely precise, and while fairly position independant when considering object position, specifies that the verb always concludes the clause.
A programming language stemming from a Korean-oriented mind might result in a language with a function call like such:
( "The time is: %t":fmt, [()time]:data )fmtstring;
-which is equivalent to-
( [()time]:data, "The time is: %t":fmt)fmtstring;
As opposed to English, which is relatively position-dependant in syntax:
fmtstring( "The time is: %t", [time()] )
Of course, it's interesting to note that many procedural languages have adopted the (
Weapons of Mass Analysis
points of dispute
"There is absolutely no ambiguity."
You have got to be kidding me. Take a look at 3 or 4 translations of the same passage from the Upanishads, for example. There are often wide variations in interpretation. It its later years, sanskrit words were intentionally layered with multiple meanings, and authors used these to create richness of texture which is impossible to translate. Few translators catch all of the references, even in a common text such as the Bhagavad-gita.
Perhaps, but also with an incredible amount of irregularity. The nominal cases you are talking about are monolithic forms of what we would use combinations of connecting words for. For example, rather than having a locative case of the noun 'house', we say "in the house." There's a reason languages became more modular: modularity makes things more flexible, easier to deal with and to understand.
Note that computer languages have evolved in much the same way, especially if you view the object-oriented paradigm as an extension of modularity.
Don't get me wrong, I love sanskrit. (is it obvious?) However, I think all in all it's just as well we don't speak it much anymore.
Sanskrit is essentially a simplified form of proto-indo-european
Simplified??????
When you make generalizations about declinsions that were lost and so on, remember that there were many various periods of sanskrit, and certain cases that were more prominent earlier on got lost later on, and so forth. In this aspect, there may be more differences between early & later sanskrit than between sanskrit and another language.
what you're all missing....
Look at sanskrit, where is all the power? In the noun. Look at spanish, where is all the power? In the verb.
For example, in the entire 180-some-odd verses of the yoga sutras, there are something like 2 verbs.
Just like in computer languages, we have the Object-oriented approach, (noun) and the functional approach (verb).
I have a lot more to say about it, but this message is long enough!
check out my mp3 page
An interesting paper about this can be found here. While it doesn't address the what-ifs asked about, it's an interesting look at at least the english side of it. Not surprisingly, Smalltalk is a big example throughout.
Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
http://www.geocities.com/connorbd/varaq/
Be afraid. Be very afraid.
The only real difference is that there is no compiler for the spoken language.
--
Wooden armaments to battle your imaginary foes!
I happen to work with a woman from Thailand, and her variable names are all but impossible to determine meaning from. I would have thought that Thai could not exist with only the latin alphabet, but I've been proven wrong.
As for how things would be different if the majority of code was written in a different language (that a majority of programmers understood, much like English is today), I really think it would make very little difference. True, some languages express certain emotions, situations, etc. a little more precisely than English, but usually an example can be given comparing the same language in which English has a more detailed expression in describing something.
As for Perl, show my mom a program written in Perl and a French poem, and I guarantee you the Perl will look more foreign to her than the French. It's all perspective.
Source code is a lot like a parachute; it needs to be open in order to function properly.
I once read that good chess players learn to recognize patterns on the board, and build up a simpler model based on those patterns.
I am now going to speculate that what may make a good programmer is the ability to build up a mental model of a problem using a similar thought pattern. Basically, you break down the problem into chunks that you understand and, more importantly, you know how to glue those chunks together. You then create a program out of those chunks, and the optimized glue. The emphasis on algorithms and object-oriented programming supports this notion (though it is only a notion).
So, how a native language would effect programming would be more in what sort of natural chunks does the native language have? I don't know enough linguistics to answer this.
Programming languages were developed by English speakers, and reflect concepts represented in English.
:P) The idea of regular expressions is a good example. It's mathematical, not 'natural' (not to be confused with "Natural" in the Kleene-star sense). We all understand regexp, but how much 'natural' language did this understanding cost?
If we were able to divorce ourselves from our language, and design a language centered on computational concepts, rather than linguistic ones, then that language would likely look a lot like APL, or LISP, or those funky squiggles we saw in The Matrix.
It's a hard thing for people to do, separating ourselves from language. Even those of us who speak more than one language fluently, tend to THINK IN A LANGUAGE. Yes, we all perceive concepts abstractly, but we formalise and represent them, inside our own heads, using a language. Communicating is something we do naturally, and we communicate with sounds and printable characters. It's just a part of our biological wiring.
One interesting line from The Matrix sticks out when we think about this: The first 'Matrix' failed because, "some thought we lacked the language to represent your puny little world".. Or something to that effect. The machines considered creating a new language that would have a greater level of semantic richness to describe the problem.
This is an interesting idea, since human languages, all of them, evolved to describe the 'natural world'. We have no problem with understanding the causality of if-then, do-while or has-a and is-a... Even the concepts of OOP are 'natural'. Encapsulation, inheritance, aggregation, these are all natural concepts derived from the natural world and described with natural language. Any human language should be able to describe the world, and so any can be used for programming. The structure of programming languages would not be very different, because they are developed by beings who think in a language used to describe the natural world. {whew}
Now the neat part: What would a language be like if it were designed from the ground-up to be centered on computational concepts, and not those of the 'natural' world?
It would look like APL, with it's huge number of characters used to describe complex ideas that take many words to explain to people. If-Then is easy to explain to a newbie. How do you explain tail-recursion, or semantic closure? How do you concisely respresent a colored-tree (tertiary or more) without using the metaphor of trees and colors?
A language developed in a natural language other than English would not be all that different that what we're used to. (Not that PERL looks anything like English to begin with.
A language designed around computational concepts would look cryptic and superbly compact. The idea of programming patterns could potentially be represented as a single character, or a small set of glyphs which would require a long verbalization to translate into a human language. Such a language would likely be LISPish in structure, where instructions and data would blend seamlessly into each other.
This language would probably use coding-time translation tables and run-length instruction encoding in source, and would build complex concepts from little ones whenever needed; much like we do with functions, but from a much finer, to a much broader scale. This language would be self-referential, self-describing and self-modifying.
A langauge like this could not be designed by a human, because we are by definition prejudiced towards 'natural' languages. A computationaly centrered language could only be written by a machine which itself would have the capacity for manipulating abstract concepts. A pretty tall order.
A programming language designed by the ancient Celts, the Arabs, the Japanese or Babylonians would certainly APPEAR very different from Java, but after translating it - it would be simple to understand. A language built on un-'natural' concepts might not be comprehensible because it might include concepts we can not conceive of.
Time to re-read "Godel, Escher, Bach" one more time.
-- What you do today will cost you a day of your life.
I can imagine this conversation between two native speakers of Japanese:
"English is a really ambiguous language. It doesn't have words for politeness levels."
"Actually, it does have words like 'sir', 'madam', and 'boy', but for some reason, people don't use them. I guess they just deduce the politeness level from context."
And if this were the 1980s rather than the 2000s, the conversation could go on: "Maybe that's why Japanese manufacturing firms are kicking the Americans' butts -- since the English language doesn't mark politeness distinctions clearly, American workers don't respect their bosses as much as Japanese workers do."
--
send all spam to theotherwhitemeat@ropine.com
I speak a little Japanese from what I took in college, and there are some unique features of the language that might effect syntactical structure.
For instance, the acting verb in a sentence almost always occurs at the end of a sentence. To use English with Japanese grammer, the sentence, "I use Perl," would roughly reconfigure as, "I Perl Use."
This may have the effect on function definition and usage. Perhaps this would be the case:
{
argument++;
} function (&argument) increment;
i = 0;
((i)increment)print;
I think the one other good way to trace or guess as to the syntactic etomology of a programming language would be to look at that nation's written mathimatic syntax, as many computer languages stem from math notations.
-AP
I just finished (re-)reading Steven Pinker's "The Language Instinct" where he 1) explains Chomsky's theories and 2) expands on them with his own theories. (I'm no linguist, so expect this post to be followed by a lot of "you are an idiot", "do some research" or "that's not quite right" posts)
First, people don't think in the language they speak in. When you think about a dog eating ice cream you don't literally think the words "The dog is eating ice cream". There is some "mentalese" that you are actually using. When you decide to speak aloud, you translate this mentalese into your language of choice (English, for me). My understanding of Pinker's explanation of Chomsky is that everybody has the same mentalese.
That said, here is my addenda to Pinker's explanation of Chomsky's theory (with help from Church-Turing) would be: All programming languages are equally powerful and isomorphic. This indicates that there is some abstract "algorithmese" that all programmers (can) think in. Therefore, while it may be the case that C is especially close to English*, but if so it doesn't really matter.
*I doubt this is the case. C is very verb-oriented: printf(the_data). C++ is very noun-oriented: the_data.print.
--
Linux MAPI Server!
http://www.openone.com/software/MailOne/
(Exchange Migration HOWTO coming soon)
We probably would have ended up with much the same constructs, just with different words representing things. Why? Because it's not really based on english - it's based on machine code, logic, and math. English is just what we use to represent these things (if, while, whatever function calls, etc...)
Addlepated - punk & metal
In his The Second World War (a six-volume set mainly of his memos as Prime Minister and Minister of Defense for GB during that war) he attributes the collaspe of the Japanese Navy's offensive strategy in the South Pacific (particularly the setback in the Coral Sea in 1942) to the ambiguties of the Japanese language. In substance he said the Japanese had to withdraw and regroup whenever a tactical plan met with an obstacle because of language ambiguities, while the English-speakers could communicate in clear, definite fashion to make ad-hoc adjustments as needed.
IANALinguist, but I found Churchill's comments fascinating. If some Japanese-speaking /. community-members want to refute this notion, please do. (I'm not proposing it is true, only reporting what the Prime Minister said).
Now hiring experienced client- & server-side developers
-- @rjamestaylor on Ello
One of the original design intentions of Smalltalk was to create a language which resembled english more than other programming languages of the day, but remaining terse and effecient enough. While Smalltalk doesn't look exactly like english, it follows a similar syntax as basic english sentences- noun verb and noun verb noun.
To me, I see Smalltalk as resembling the language of the Ojibwe people, a Native American tribe which lived in parts of Minnesota, Wisconsin, and Canada. While I'm not an expert in Ojibwe (having only one semester worth), I have a basic understanding of the general mechanisms of it. Ojibwe is very modular and simply sytactically, much like Smalltalk, whereas english is simple sometimes, but there are many gotchas even in simple constructs.
Ojibwe has the concepts of a pre-verb, that is, a one syllabal modifier of the verb, to change context. They declare future and past tenses, as the desire-to-perform-the-verb, the probability-the-verb-will-happen and others. It'd be an interesting idea to introduce to a language- small messages to an object to change context it's recieving it. Perhaps something like "(anObject become: somethingElse) doThis". Currently not used often, using them as a fundament of design might develop a new way of solving problems and coding the solution.
Nindigoo ojibwemong Enigoons. Giga-waabamin!
Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
In my opinion, programming languages mirror natural languages only loosely. But there are certainly some things which makes programming
languages similar to natural English:
(1) English is almost inflection-free, which means
(2) that it has to have a strict word ordering
(3) which make programming languages simple to parse
German, however, has case markers and therefore
free word ordering.
So, in principle, you could exploit that feature
in a natural-language-like programming language:
ASSIGN value TO variable
WEISE der Variablen den Wert ZU
WEISE den Wert der Variablen ZU
which would be unambigious in German.
However, the case markers in German are in many cases bound to the articles, and usually, one just would have something like
ASSIGN b TO a
WEISE a b ZU
where the case markers have disappeared, so
even the German version would have to rely on a
(previously agreed upon) word order.
Thus, the strict word ordering of today's English-like language seems pretty inevitable to me.
However, if we leave the realm of Indoeuropean
languages with its "a does b to c" scheme, the
question would certainly be a different one.
Agglutinating languages? Non-ergative languages?
They probably might have developed a totally
different concept of writing down algorithms
(or might even have developed a non-von-Neumannian
machine).
Damian gave a talk on the module at the O'Reilly Perl Conference, but unfortunately neither the talk nor the module is available on-line. He said he was going to post the module to CPAN, too... Maybe it's time to bug him about that.
Anyway, a person who attended the conference faxed me his paper for the speech; if you're interested, e-mail me (after de-spam-proofing my address), and I will fax it to you.
Vovida, OS VoIP
Beer recipe: free! #Source
Cold pints: $2 #Product
If perl were written like Japanese, it would have different forms depending on the computer's relationship to the coder. If the computer were older or higher in social status than the coder, the coder would have to use elaborate formal endings on all suggestions (commands would be forbidden). If the computer were younger or lower in social status, the coder would be able to use short, direct commands, and would not have to address the computer by title, or bow after each statement.
Men and women would also have different vocabularies. It would be considered improper for a male to use "Ladies' Perl" in most computer environments (except perhaps the Mac).
---- "If we have to go on with these damned quantum jumps, then I'm sorry that I ever got involved" - Erwin Schrodinger
Of course, the opposite would happen with German Perl. You'd create new words by concatenating existing ones, so you'd have a word 4,000 characters long which would do everything related to a specific task -- change one of the component phrases and the new word does something related yet different.
Moreover, I'd say that the only difference would be the names of the keywords.
Languages like Japanese (for example) have a completely different grammatical syntax than English. But then again, so does programming... The difference between coding in one langauge or another is mainly syntax and vocabulary, just like with the differences in spoken languages.
However, all programming languages are meant to make it easier for the programmer to communicate with the machine. Since it all gets converted into machine language anyway, most programming languages have a syntax that is more mathematical. So, even if our founding coders spoke a completely different language, the syntax would probably have been based on mathematics.
This leaves only the vocabulary to be a little different... meaning that we would probably only have different keywords.
"If we knew what we were doing, it wouldn't be called research." - Einstein
The grammar of Sanskrit is very tough to learn since it is very vast and there are a lot of things to remember than in a language like English (somewhat like C++ being more complicated than C). But it's all very very logical and straightforward. The main thing is that there are a lot of forms of the same word. For example, udyanam means garden; udyanasya means "of the garden", udyanat means "from the garden" , and so on. There are several forms of the same noun. Each form has a unique meaning, and each meaning has a unique form. There is absolutely no ambiguity. Same for verbs and adjectives and other language constructs.
One beauty of this uniqueness is the fact that now the order of the words in the sentence doesn't matter at all. For example, consider that you want to say "I am going to the garden." Aham is I, udyanam is garden, gacchami is going. So I would say, Aham udyanam gacchami. Now I could also say that udyanam gacchami aham or gacchami aham udyanam or any permutation, all of which mean exactly the same thing. Taking this one step further, I could simply say udyanam gacchami since the verb gacchami implies the "I". If it was somebody else who was going to the garden, I would have to say gacchati, and if it were you, I would have to say gacchasi so the verb form implicity determines the subject.
This is just a novice example of the fact that a lot of semantic information is built into the syntax of Sanskrit in a very elegant way that would appeal to purists and compiler designers. I believe that natural language parsing of English and other European languages is much tougher than parsing Sanskrit would be. The downside to adopting Sanskrit would be the vast number of grammar rules and verb and noun forms that have to be learnt.
Professors in the few universities in India where Sanskrit is still being taught strongly advocate the use of Sanskrit for computing. I just know high-school level novice Sanskrit, so if there are Sanskrit gurus among you, speak out with more relevant details.
Anoop Iyer