Rouille
github.com
github.com
Interesting factoid: in France, most of the stop signs say "stop" due to the Vienna Convention on Road Signs and Signals linked below.
In Québec, on the other hand, most of the stop signs say "Arrêt" due to nationalism reasons. Bilingual Arrêt/Stop signs exist, but are rare.
Here's another interesting fact which I suspect is more of a fact than "your" fact: Almost all countries in Europe has stop signs with the word "Stop" because it was agreed upon in 1968.
https://en.m.wikipedia.org/wiki/Vienna_Convention_on_Road_Si...
I've corrected my OP.
I like that. :-) Or maybe 'precisify'.
Here you would say something like: "J'va m' parker dan'l stationnement" (I am going to park in the parking).
The rules are somewhat simple: 1) Take the verb in English and give it a French spin (add "er" to the end)
2) Add an unnecessary second part to your sentence in French to clarify the English verb
3) Reduce the total runtime by mashing together as many syllables as you can
God I love our dialect!
Weirdly (to me anyway), you could pretty much keep any "ne" you wanted to place after things and it worked fine, because it was a feature of both languages.
When you got _just_ the right conversation partner the little word swaps led to a lot of laughter. (We did this in English to some degree too, e.g. naru-freaking-hodo)
I feel the latter definition of the word factoid feels more sensical: suffixing the word fact with -oid makes the text in which it is applied softer, where the word fact is rather harsh, the word factoid feels more friendly, like boba/ kiki, I speculate. In addition I think using more letters to address the subject you're about to share might make the reader hold its attention for longer and thus feels "right" to use in short sentences. I also feel as if I prefer to read the sentence in which it occurs with a slight upward inflection, which I find more positive.
Personally I hope the latter definition will stick and humanity is one more ironic definition richer.
Like a humanoid is human-shaped, a factoid is fact-shaped but not necessarily or even probably actual fact.
[0] https://archive.org/details/321contactjul88/page/n7/mode/2up
While that is true, the word “stop” had been part of the French language for centuries prior to 1968. It means “halt”.
Is the difference in cognitive load among folks who speak different languages is consistent or even measurable? Does it bias a developer toward any specific pattern/mistake/misunderstanding/bug? Are there subtle mental-model-building advantages to decoupling software commands from their linguistic meaning through a language difference even if it's initially more difficult? Does the presence or quality of English instruction affect adoption of development beyond the first few weeks?
Could be cool to explore these things to see how they might inform pedagogy or even language design. Then again, my relatively naive suppositions might lend entirely too much weight to it.
I also regularly can’t recall a german word, when there is an english one that is more precise and vice versa.
I always assumed it was just a random keyword for a programming concept. Same for “thread” by the way (also took me a while to understand how to pronounce it as I only read it).
> depreciate. to reduce the purchasing value of (money)
> deprecate. Computers. to cease supporting or recommending the use of (older elements, features, or versions of software)
(Source: dictionary.com)
Secondly the keywords don't really have any strong prior meaning to overload, so in a way they're more "pure" cognitively and easier to grok. The word "for" in everyday English really has nothing to do with "iterative loop with variable definition", the word "use" has nothing to do with symbol imports, but that's all it means to a non-English coder.
Now libraries are another thing. Typically they start using higher level abstractions that start to map to everyday constructs (eg, in a drawing library you might find things like "stroke width" which are trivial to understand for a native speaker)
The two main points I’ve seen are:
- it’s a daily pain to handle two vocabulary sets and lead to undue errors and bugs. When you have a “FishingBoat” class which related to a “boat” table and all the documentation points to “Bateau de pêche” and “barque” it’s 2x harder to follow things. Then people will accidently translate “bateau” to “ship” and it slips through a few reviews of mostly independent features, and you’ll have both words in the code base before you realize.
- it becomes a swamp the day a non native speaker touches your code base. For instance you need to share part of it with a company next door that happens to be the other side of the border. Or you ask a Romanian dev team to port your code to another platform.
This leads to business domain objects to be translated in English by the devs and they will make different or incorrect translations.
Then, all the stakeholders and requirements will be in French. All developers need to constantly map the real world names to the English names used in the code base, but that nobody else uses.
This leads to bugs, inconsistencies and extra cognitive load. It comes back to how hard "naming things" is.
I would disagree with this. A lot of programming keywords have enough context to help new people. I.e. "for" or "forEach" maps almost perfectly to English. "For each friend you know, call them and ask what their birthday is and what kind of cake they like".
friends.forEach(friend => { friend.askBirthday(); friend.askFavoriteCake(); })
While loops are the same way. "While there's still boxes on the truck, you need to be moving those boxes".It requires some slightly awkward contortions, but you can phrase English so that it somewhat resembles code.
"Use" and "import" both also have relatively clear parallels in English. import meaning bringing something from a foreign space into your own, and "use" being equivalent to using a tool.
English is my only real language (other than horribly botched Spanish) and the similarities to English really helped me when learning Python. Both in understanding and just simply remembering the keywords.
method: "a particular form of procedure for accomplishing or approaching something, especially a systematic or established one."
class: "a set or category of things having some property or attribute in common and differentiated from others by kind, type, or quality."
I agree that virtual is a little shakier, but: "almost or nearly as described, but not completely or according to strict definition."
I think as a developer one quickly realizes the value of sticking with the defaults (in this case English). Like configuring your system in English to be able to google the error messages; or Excel, which changes key shortcuts based on your language (ctrl+G for Guardar, to Save; ctrl+S in English); checking documentation in English or buying books in English because they are 2-3 years earlier than the local ones.
Using an US keyboard configuration also makes it much easier to type certain common characters in programming, although that might be too much to ask for :)
Companies with a poor engineering culture often name things in their own language, which makes an awkward and confusing mix because everything else is in English.
I have noticed interesting regional differences too. In France it is hard to get people to use English, but otherwise the grammar is mostly fine. But in Asia it's easy to get people to use English, but it's not easy to get the grammar right. For example they have a hard time with plurals when naming variables.
Of course it's just my data point and a broad generalization, because there are also very skilled developers everywhere.
You just associate the words with what they do, but it doesn't matter what it's written. You just associate in the same way the operators +, - work in math. It just happens.
It initially supported both English and French keywords: https://github.com/nlehuen/babble/commit/eb090fd3e80238166ac... - that was fun but for some reason I found it cringy and removed it (as if the rest was not cringy either).
Completely off topic, but I also implemented Hodor - "Its main objective is to teach programming to Hodor.": https://github.com/nlehuen/babble/tree/hodor
10/10 looks very painful to use. Reminds me of my college days.
This gave me a "PTSD moment" of university projects in Java with variables in French and comments in Franglais (mix of French and English). Some old teachers even made it mandatory to write comments in french (I suspect they didn't understand English beyond the language keywords).
And let's not forget when the Orifice de la Langue Française shows up to your workplace and forces to have a Frenchisation committee to set up all workstations and software in French. Googling anything was a freaking nightmare and back in the days changing the OS language was a pain in the ass.
Sometimes it's better to have code comments that the little fraction can understand well, for specific purposes in an internal organization. Example, the source code used in French government for property taxes: https://github.com/etalab/taxe-fonciere/blob/master/src/EFIT...
or Klingon: https://metacpan.org/pod/Lingua::tlhInganHol::yIghun
Jokes asides, the concept underlying this project is actually interesting. It wouldn't be bad at all if programming languages were localizable.
I think it would help many if it was possible to choose the (human) language in which to use a programming language. Ideally, the same source code could be viewed in different languages depending on the preferred idiom of the developer.
That is an admirable dream to have, and one that I have sometimes had myself. Unfortunately, as with most things reality soon puts an end to it.
First, the dream is only really a dream you can have with the luxury of a Western language. It is unlikely to be viable once you start looking further East in the direction of e.g. Kartvelian languages (i.e. low number of speakers worldwide and even fewer with relevant specialisms in programming to write compilers) or Asian languages (e.g. Japanese and its particles and other complexities).
Second, when you are writing code you don't really want to have to worry about the possibility of debugging your compiler. Sticking to English means the likelyhood of a more robust compiler because of more widespread adoption. You also remove technicalities such as UTF-8 or whatever else that might cause indirect issues.
Its a bit like science really. Sure you can write your papers in your native language, but the reality is if you're serious about your work being discovered and are interested in being offered bigger and better jobs, you'll want to publish in English sooner rather than later.
Usually, when a thing gets labeled as a dream, people don't try very hard either.
> Sticking to English means the likelyhood of a more robust compiler because of more widespread adoption.
The comment you quote specifically talks about localizable software, not having one compiler per language. When you I18n a website, you don't write n sites, for instance.
Some things are hard, but worth trying.
Other things are a dream because the reality is they are unachievable either due to the realities of practical constraints or because the amount of work involved would be hugely disproportionate to the benefit.
For example, I mentioned Kartvelian languages. How about we specifically look at Laz which according to Wikipedia at the last count in 1980 had only 22,000 native speakers.
Writing a Laz compiler ? I'd say if we're being totally honest its a dream, not just "hard work".
And you can trust english speakers to properly assess the benefits of I18N, right?
> Writing a Laz compiler ? I'd say if we're being totally honest its a dream, not just "hard work".
As I said in the message you quote, internationalizing a compiler is not the same as rewriting it. If you consider that making languages accessible to other languages means each natural language should have its own programming language and compiler, of course it's going to be hard.
But that's moving the goalposts.
First off, you don't need to port a programming language to every natural language. Some smaller goals would already help. For instance, making it easy for third parties to i18n the language and libraries would be a significant enabler.
This seems like letting the perfect be the enemy of the good. "We can't possibly localize for every possible language ever" is not much of an argument for why localization itself isn't worth it.
That's less interesting if you have lots of libraries if you don't translate them.
Go switch Excel or Google Sheets into a language you don't know. Then try to use formulas with them.
Come back and tell me if localized programming languages are a good thing after that. :D
I don't believe that point supports your claim. Switching excel to a language you don't know is a good example of the benefits people who don't speak english get from localized languages, not the other way around.
> Come back and tell me if localized programming languages are a good thing after that. :D
The truth is that localized excel has enabled a generation of people speaking poor english to still do pretty dope stuff for their business.
Likewise, localizable languages for children (e.g. Hedi) work pretty well at helping children discover computers before they have a firm grasp of english.
Support is already a problem currently, because personalized error messages are less searchable but more useful than generic ones. Moving to error codes is a good example of an orthogonal concern that would incidentally help i18n. Supporting error formats that can be treated by machines is a further unrelated step that would also benefit i18n.
So I would say the stuff we already do tend to make this concern less relevant.
> reusable code
That's an orthogonal concern. You don't write new code when you i18n something, you just create dictionaries.
> common understanding, and readability (in a team)
I don't believe anyone is making the point that one team should write in separate languages. However, a team able to choose its own language (possibly the one used by the rest of the business) is a plus.
In non-english countries, it's very common to have code written in english to describe a business that is done in local language, with really bad translations of business terms. This already causes issues.
> increases the amount of development overhead of whomever has to maintain the language.
Why would the language maintainer do the i18n themselves?
Sorry to be blunt, but you have no idea of what you are talking about.
No. i18n is not that easy, sorry. I wish it were.
To be frank, this answer reads as though it was written by someone who has not done any extensive i18n work in their life. Languages are not 1:1 translatable. This goes beyond words and phrases - numbers, math, time, dates, names, grammar, etc. are all completely unrecognizable between certain languages.
It's not a problem that even regular software has solved generically and elegantly, and then going on to apply it to programming language design is a completely different beast, with its own set of problems.
I argue that i18n is not translation.
It seems like you're making a point for solving problems beyond the scope of PL internationalization, including problems that are not solved when it comes to how english code translates to english natural language.
My original point is that foreign excel versions already did help people. From there, improving compilers to make that work easier and less costly is a reasonable goal, or at least a tractable one. Some of that work is already being done for unrelated reasons (e.g. modern compilers offer interfaces for LSPs as well as error messages in formats that allow processing beyond reading for CIs — both of these changes benefit potential i18n efforts).
I got paid a lot to transform projects that used abusively Excel sheets. All of them had absurdly long delay and cost explosions caused by this.
Excel sheets are for small business and small projects by non-programmers. Excel sheets in a non-English language are for small businesses and small projects by non-programmers that are doomed to stay this way. This is because having programmers that want to unfuck a mess of macro AND speaking your foreign language simply are very rare AND doing so before the business implodes are very slim.
I wonder where all this money came from.
I also got paid a lot to transform projects that abused excel, among other things. The usual truth was that, without excel (or, on other projects, without their tortured python scripts, or without the off-the-shelf software modded to death), these companies would never have built a business successful enough to pay entire teams for months or years before any returns.
> having programmers that want to unfuck a mess of macro AND speaking your foreign language
I mean, at which point did the idea "Oh, that language is so weird that very few can possibly speak it _and_ learn to program" start to make sense to you?
Did it ever occur to you that my foreign language was the first language of a whole lot of people living in my country, and that maybe there are a few good universities here?
It wouldn't be bad indeed, it would be terrible.
I wouldn't be against some IDE add-ons allowing you to see the keywords in your language if you wish, but the underlying names should stay in english. And the function names as well. Otherwise:
- you duplicate the documentation effort, which is already a burden;
- you make googling things extra hard
- people will use their language features, which means non ascii chars. Good luck typing "La leçon du père noël à l'école de la forêt" with something else than my french keyboard.
- IT is nothing but thousands of conventions glued together. And names are a hell of a shortcut to describe conventions. Break that and you destroy trust, reliability and productivity.
- you split the community. FOSS works so well because we can collaborate so well: we have one rosetta stone that lets us do so. Is has a basic alphabet, few rules, and is quite easy to learn.
I'm a french Python dev, and Python 3 does allow you to write variables names with french accents. I would never do that, and really hope nobody ever does.
In that case, then it's ok to bite the bullet, to avoid the worst case scenario. But you are already in a bad place to start with. Because if you put in prod some code by somebody who can't write english properly, then it means your team doesn't have access to most information resources in the world.
So your problem here is damage control, hardly a situation to generalize from.
Asian languages are harder. But if you're told about IME, then at least if you know what you want to type, how to actually type it isn't a big burden. IME can also help with rarer math symbols like ⋂ (\bigcap) ≅ (\cong) or ⊵ (\unrhd), or is another way to get something like the compose key system.
And now your typing is not at all fluid, even if you didn't have to stop and thing about every single special characters (which most people do), you will have to enter a combination to get them every time completion can't help.
In fact, even with an AZERTY keyboard, typing French, my native language, is slower than english.
Instead of having one simple common ground, you also now have an infinite number of variations to care about.
Not to mention having to understand a lib in spanish, an another one in russian and a last one in Hindi or arab.
You're just repeating your other points about the problems that come from having so many languages, which I mostly agree with, but typing at least is not really an issue, which is all my point is. The issue is: "do I know Arabic?" not "I know Arabic, can I type it?"
As for your experience with French, maybe the AZERTY layout is just inherently bad, but how much slower is it really? Typing your example sentence with my compose key takes me about 3x longer than ignoring the accented characters entirely, which is more than I expected, though I'm very unpracticed. With Japanese, which I'm even more of a noob at, nevertheless the overhead is smaller. If I wanted to type 'purple', I hit a chord to enter JP IME mode if I'm not in it already, type 'murasaki' (the romanized version of the word) at full speed, and leave it as むらさき or select from kanji completions to get 紫 or maybe I needed it to be in katakana so I hit F7, finally I commit it and move on. It may seem like a lot but whatever the case it's a really tiny overhead from just typing 'murasaki'. In practice though looking at source code from Japanese developers I see a mix of full English (maybe some Japanese comments, maybe not), some mix of Japanese but always using romanized symbol names, and full-on variable and function names are in actual Japanese. Because the overhead of typing is so small though, I don't have a preference for the second or third option, they're both fine, though of course selfishly I'd love for the whole world to understand and use English exclusively. For the French case, even with an overhead of 3x in the worst case, I wouldn't object to a variable with an é in it.
There's key bindings for a regular qwerty keyboard that lets you compose letters and symbols to make accents. It's very easy to write French (with all the accents) on a US keyboard (on Gnome Intl. Alt keyboard with dead keys I believe).
Then, numbers which are very common to type when writing code must be typed by pressing shift. A French keyboard is made to write French efficiently, arguably English too, but definitely not to write code.
And 2-3 times longer? Most sentences in French don't have that many accents, the example picked was a rare one.
What a terrible idea.
For an extreme version of this, where the language isn't just used to replace a few keywords, there's always Linga::Romana::Perligata.
- some words are loaned from another language like Eigenvector or group (sort of—I think it came from the French groupe). Also eg a blackboard-bold Z (for Zahlen) or Q (for quoziente) for integers or rationals
- other words are taken from the native language (eg rational or probability or field extension) though they may derive from Greek or Latin and have cognates in other languages.
- some symbols are quite universal and used in every language (eg the forall or exists or implies symbols)
- I don’t know whether letters that are typically used for things are the same (eg I don’t know why density is often rho. Is it referring to a word in a different language)
- the proofs are written in the native language and often that part matters a lot.
- so much stuff is named after people so words don’t need to be translated (eg noetherian domains or Cauchy–Schwarz)
- I wonder if some theorems get different names? (I assume in China they don’t call it Chinese remainder theorem)
Apparently they are! “中国剩余定理” according to Wikipedia, where the first two letters mean China.
https://zh.wikipedia.org/wiki/%E4%B8%AD%E5%9B%BD%E5%89%A9%E4...
I would definitely not recommend.
Nope, WinDev is still alive. The latest version is from December 2020
Also, their monthly magazines were the most sexist stuff I’ve ever seen… hopefully that changed…
Which, of course, while it is a diret word-for-word translation, has perfectly antinomic meaning in each language.
* "c'est la merde" : "we're in trouble"
* "c'est de la merde" : it's shit
* "Je te dis merde" : well... "F*ck you" or "all the best", depending on context.
Yes, for real ^^
(edit: formatting)
e.g. "écoute ce que je te dis, merde" ... ending sounds the same as your example "je te dis merde" but totally different meaning.
Thanks for your addition!
The supersition goes that you should not reply with "merci" ("thanks") but "je prends" ("I'll take it ?")
There are unverifiable explanations for why "merde" is used by actors ; my favorite one is that it is related to horse carriage carrying theatre-viewers to the theatres ; you're wishing actors that a lot of horse will carry a lot of viewers, and do the other thing...
Do you know of others you could share, before I google it?
In my consulting days I met a number of customers in Quebec who were coding with French method names, variables and such. They were even using accented names for variables. I actually think if they get onto Rouille they might start using it. That's scary but at least, it would look less bancal.
I can bet you can find the same use case in all other languages, so we need Óxido and 锈
Edit: LOL just discovered there are a few of these already https://github.com/bnjbvr/rouille/network/members
https://nas.sr/%D9%82%D9%84%D8%A8/ https://github.com/nasser/---
https://github.com/bnjbvr/rouille/commit/3d67732c593a78f0545...
Although technically speaking, it's a contre-casse!
文言 is programming in classical chinese. So its starting… :)
I love how in the README, the syntax highlighter doesn't pick up letters with diacritical marks.
Casually derogatory joke, a classic.