I was thinking about this along similar lines that Mark was.

I think the best language to program in depends on what programming
paradigm you're using. Or perhaps, people who speak different human
languages prefer different programming paradigms. I'll explain.

English is a Subject-Verb-Object language (as in, "Sam eats oranges"),
whereas Verb-Subject-Object languages would write/say that same sentence as
"Eats Sam oranges". If you're using object-oriented style, then you might
write Sam.eat(oranges), in which case you're using Subject-Verb-Object like
English. 42% of world languages are SVO, including English, Esperanto, and
many others. So it's no wonder that Americans were largely the ones to
develop object-oriented programming (
http://en.wikipedia.org/wiki/Object-oriented_programming#History)

But when we write function calls, we put the verb first in the sentence -
as in, "eat(Sam, oranges)" <--> "Eat Sam oranges". If you're writing
function calls like that, you could say the best human languages to pick
from are the verb-first languages (Verb-Subject-Object
<http://en.wikipedia.org/wiki/Verb%E2%80%93subject%E2%80%93object> [VSO] or
Verb-Object-Subject
<http://en.wikipedia.org/wiki/Verb%E2%80%93object%E2%80%93subject> [VOS]
languages), because their grammar best matches the pre-fix notation that
function calls do. You can also flip the arguments to the function call,
eat(oranges, Sam), which turns it into a VOS sentence. Functions are often
(always?) verbs, so function calls are perhaps best understood in
verb-first languages. Only 12% of world languages are verb-first, according
to Wikipedia
<http://en.wikipedia.org/wiki/Verb%E2%80%93subject%E2%80%93object>.

The next case is Subject-Object-Verb -- "Sam oranges eats." What
programming construct would represent that? Sam.oranges.eat() ? Not sure -
you could write a program where that works, but it assumes that all
"objects" in the grammatical sense (like oranges) belong to the subject
(Sam) as a member variable, where both the grammatical subject and object
are objects in the programming sense. And it assumes that all verbs are
methods on the objects (in both the grammatical and programming senses)
that they act on -- oranges.eat() instead of eat(oranges). I guess you
could do this too -- seems convoluted to me, but maybe that way makes more
sense to a Chinese or Russian speaker. 45% of world languages are SOV.

I can't think of any programming construct when you'd arrange the sentence
with the object first (as done in Object-Subject-Verb or
Object-Verb-Subject languages). That would be something like
oranges(Sam).eat() or oranges.eat(Sam) to represent the sentence "Sam eats
oranges". Though you could of course implement your program in a way to
make either of those work, the intended meaning doesn't jump out at me from
either of those method calls. Equally well, because only 1% of world
languages are object-first (OSV or OVS).

Blake Elias
Department of Electrical Engineering and Computer Science
Massachusetts Institute of Technology
Class of 2016
blakeelias.com

On Mon, May 11, 2015 at 9:08 PM, Mark Engelberg <mark.engelb...@gmail.com>
wrote:

> There was a talk about this at the Clojure/West conference:
>
> https://www.youtube.com/watch?v=MqjMZNwnYCY&index=19&list=PLZdCLR02grLrKAOj8FJ1GGmNM5l7Okz0a
>
> Aside from just the technical challenge of needing a language that lends
> itself to renaming the core primitives, there's the fundamental challenge
> that coming up with good names for core functions is hard in any language.
> Naming the control constructs is also has.  For example, how do you write
> the two-part "if/then" in a language that uses "if" but not "then" for
> conditionals?   Also there are a lot of stylistic questions that come up
> with other languages that don't occur in English because English is more
> grammatically fuzzy than most, and that sort of works well for
> programming.  For example, when a variable is passed as an argument to a
> function, it should presumably be in objective case, but in the body of the
> function it should be nominative case.  Should functions use an imperative
> tense if the language has one?  What if it is being used as an input to a
> higher-order function, is it a verb, a noun, or an object in such a
> situation?  In languages that have different forms for the different parts
> of speech, this becomes a tricky issue, and there's no established body of
> code that I know of in which these stylistic issues have been decided.
>
> On Mon, May 11, 2015 at 6:54 AM, kirby urner <kirby.ur...@gmail.com>
> wrote:
>
>>
>> People will read my subject heading and
>> think I'm asking "what computer language?"
>> but I'm actually asking what world human
>> languages should be used to share computer
>> science -- or should they need to be in world
>> languages at all?  What's wrong with comp
>> sci in Visayan, spoken by millions in the
>> Philippines.
>>
>> http://en.wikipedia.org/wiki/Visayan_languages
>>
>> Some people are of the opinion that since
>> English has come so far as a world language,
>> that computer science should simply be taught
>> in English.
>>
>> That's fine for English speakers, but isn't going
>> to fly with Chinese, so we need some better
>> ideas than that.  I'd say any human language
>> is up to embracing STEM, starting from where
>> it is.  Obviously extending a human language
>> means inventing namespaces, just like we
>> do in Python.  We've been doing it for many
>> thousands of years, to keep up with our own
>> tools just for starters.
>>
>> The devil is in the details.  How should we teach
>> Python in multiple languages.  Maybe we should
>> expect more multi-lingual texts and examples
>> e.g. regular expressions with Cyrillic should be
>> as common as rain even in a book mostly in
>> English.  The point is:  if all you use in Latin-1
>> in your examples, you're hardly showing much
>> Unicode fluency.  Python teaching meets
>> LEX Institute I guess (an old theme here on
>> edu-sig).
>>
>> Here's some more on that topic:
>> http://mathforum.org/kb/message.jspa?messageID=9769308
>> (about the overhead in memorization incurred
>> by having to learn a whole other vocabulary).
>>
>> As I posted earlier this month, I think hospitals
>> are under the gun to at least get patient names
>> in their native script on computer monitors.
>>
>> That brings up issues of collation / alphabetization
>> across languages.
>>
>> I ask basic questions about that here:
>>
>> https://mail.python.org/pipermail/i18n-sig/2015-May/002131.html
>>
>> Insights / feedback / comments welcome.
>>
>> Kirby
>>
>>
>> _______________________________________________
>> Edu-sig mailing list
>> Edu-sig@python.org
>> https://mail.python.org/mailman/listinfo/edu-sig
>>
>>
>
> _______________________________________________
> Edu-sig mailing list
> Edu-sig@python.org
> https://mail.python.org/mailman/listinfo/edu-sig
>
>
_______________________________________________
Edu-sig mailing list
Edu-sig@python.org
https://mail.python.org/mailman/listinfo/edu-sig

Reply via email to