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