Non-English-based programming languages - <AUTHOR> https://en.wikipedia.org/wiki/Non-English-based_programming_languages <comment><USER5> Seeing a programming language in your native language after working with English ones, you discover that it looks and sounds pretty ridiculous. My belief is that the native language is ingrained on a low level in the brain, so it's decoded 'in the hardware' and directly invokes meanings and associations, whereas a second language goes through at least some level of conscious processing. The very same way, I'm physically unable to shut off the brain's frantic search for meaning when I hear some inane song lyrics or advertisement in my native language—which causes suffering whenever I get near television. Meanwhile, I'm completely comfortable reading or hearing total drivel in English until I consciously try to interpret it. Similarly, I can't skim in English as fast as I do in my language.

This all brings me to the thought that native-English speakers probably have a rather different experience with programming languages, since the keywords must constantly invoke deeply ingrained associations but that's in turn modified by regularly seeing and thinking of them in the programming context.

КОНЕЦ ЕСЛИ

<comment><USER6> French here, that's my experience as well. I want to emphasize that the huge majority of the non-english native programmers I know are pretty opposed to translating programming languages.

However, my experience teaching Japaneses has been that what is crucial if you want to make a programming language accessible to different nationalities is to translate error messages correctly. Learning IF, FOR, RETURN is not hard. There are 20 words max to learn. You could learn that many kanjis in one day if you needed. However, when you are not good at English, understanding "Access error: Array index is out of bounds" requires another level of understanding and vocabulary.

<comment><USER7> Cannot agree on error messages, had opposite experience with them. I always require all team members to install English versions of runtimes because it is easy to search non-trivial errors on the internet. Many translations are automatic or done by not very technical people and they sound weird in local language, e.g. many terms in Russian, even such simple as "heap allocation", are really weird. An English error that you see for the first time is usually solved via quick search with the first result usually linking to StackOverflow with the correct fix, but with the local language it's often difficult to understand where to start. (But basic English knowledge is assumed)

<comment><USER6> > But basic English knowledge is assumed

Let's be clear: it is my opinion that today, basic english is a pre-requisite to any programmer.

What I am saying is that people making "native" programming language seem to want to change that and that they are misguided if they think the language is the crucial part. The crucial part are the error messages, which indeed are often very poorly translated.

Yes, heap/stack would look weird in french as well, but as weird as they look in english the first time you encounter them. However if you translate the error message correctly, a novice programmer will understand that it is a memory problem and may try to hunt the error more efficiently.

<comment><USER8> I learnt my basic English while programming. Definitely not a prerequisite !

</comment></comment></comment></comment></comment><comment><USER9> I used to think about this when I was a student. I could totally make a programming language in Thai.

Surprisingly, one of the main issues that I thought of was a cultural one. Thais culturally don't use a single word to encapsulate complex meaning. We use a combination of words to capture that kind of meaning.

Just to give an example: a taxi driver is 'human-drives-taxi' in Thai. A barber is 'tradeperson-cuts-hair'. So, the programming language would be really verbose.

Also, since programming originates from the western world, we never really have Thai words for many concepts in programming. I've been programming for years, and I have no idea how to say 'software', 'hardware', 'class', 'inheritance', 'encapsulation', 'abstraction', 'refactoring' in Thai.

<comment><USER10> Back in the 80's, when C++ first became a thing, we tried to find Japanese words for the concepts. Destructors became "Death Tractors", which I always thought was awesome.

<comment><USER9> From your 'death tractors' example, now I understand why people are debating changing 'master-slaves' to 'leader-followers'.

Thais wouldn't want to call their machines (or anything or anyone) 'slave' with serious tone. It sounds offensive.

Thinking about it, native English speakers might have internal struggle about many programming words.

As a non-native english speaker, rude/strange/crude/offensive words don't really cause me emotional impact.

<comment><USER11> Explicitly translating master/slave to my native Dutch just makes me chuckle. It's like reading a rather upfront ad in the classifieds for folk who are into bondage and discipline.

</comment></comment></comment></comment><comment><USER12> The Wikipedia list does not mention Tampio, an OO language where programs are written in proper Finnish: [https://github.com/fergusq/tampio](https://github.com/fergusq/tampio)

As an example, here is kertoma.itp (an example routine to calculate a factorial):

      Pienen luvun kertoma on
          riippuen siitä, onko se pienempi tai yhtä suuri kuin yksi,
          joko yksi
          tai pieni luku kerrottuna pienen luvun edeltäjän kertomalla.

      Luvun edeltäjä on se vähennettynä yhdellä.

      Olkoon pieni muuttuja uusi muuttuja, jonka arvo on nolla.

      Kun nykyinen sivu avautuu,
          pieneen muuttujaan luetaan luku
          ja nykyinen sivu näyttää pienen muuttujan arvon kertoman.

It sounds basically like a small part of a mathematics lecture.

<comment><USER13> The article also does not mention that not only Excel Formulas are localized, but VBA was localized in Office 95 as well [1].

This is German VBA:

        Funktion VorherigerGeschaeftstag(dt Als Datum) Als Datum
            Dim wd Als Integer
            wd = Wochentag(dt) ' Wochentag liefert 1 für Sonntag, 2 für Montag usw.

            Prüfe Fall wd
                Fall 1
                    ' Auf Sonntag wird Datum vom letzten Freitag zurückgegeben
                    VorherigerGeschaeftstag = dt - <USER2>
                Fall 2
                    ' Auf Montag wird Datum vom letzten Freitag zurückgegeben
                    VorherigerGeschaeftstag = dt - <USER3>
                Fall Sonst
                    ' Andere Tage: vorheriges Datum wird zurückgegeben
                    VorherigerGeschaeftstag = dt - <USER4>
            Ende Prüfe
        Ende Funktion

[1] [https://de.wikipedia.org/wiki/Visual_Basic_for_Applications#...](https://de.wikipedia.org/wiki/Visual_Basic_for_Applications#VBA_unter_Office_95)

<comment><USER11> The localisation of Excel goes even further. If I send a normal CSV file (that is, one containing values separated with actual commas and newlines) to an American, their Excel can open it.

If I send the same file to a fellow Dutchman, their Excel can't.

Excel, for some obscure reason lost in time, decreed that the Dutch do not, in fact, separate their comma-separated values with commas. We use semicolons. No one seems to know why Microsoft thinks we apparently do this. That means that a normal bog-standard CSV file won't work by just double-clicking it or opening it in Excel.

That's right: a Dutch comma-separated values file _must_ have semi-colons according to Excel.

LibreOffice meanwhile works with anything you throw at it, in any language, of course. It'll just ask you about the separators, defaulting to commas.

</comment></comment></comment><comment><USER14> One of my favorite online April Fools' gags from recent years was when it was announced Scala would become Skala and all of the keywords would switch to German [0]. `val` `var` and `def` would all keep their uniform length by becoming `unveränderliche`, `opportunistisch` and `verfahrensweise` :-)

[0] [https://www.scala-lang.org/blog/2017/04/01/announcing- skala....](https://www.scala-lang.org/blog/2017/04/01/announcing-skala.html)

<comment><USER15> I worked with a German version of VBA for a little while. MS soon gave up on this but it was a really weird experience.

<comment><USER16> I thought VBA was always in english (syntax & APIs). Only excel formulas are displayed translated in the regular Excel UI.

<comment><USER17> So I just so happen to have a PowerBook 540c here with a Swedish install of Office 4.2.1, and had to check my memory, since I remember it being localized.

VBA on this machine has English keywords (Sub/Dim/If/While), but Swedish application APIs (search in Word is Sök for instance). Screenshot of one of the sample macros: [https://i.imgur.com/vDWQcWk.png](https://i.imgur.com/vDWQcWk.png)

</comment></comment></comment></comment><comment><USER18> One really annoying thing about using an English-based UTF8-capable programming language with some types of non-English content (e.g. if it's in Serbian) is that you have to switch between keyboard layouts constantly. Sooner or later you end up forgetting to switch back and you start writing your code in say, Cyrillic. And let me tell you, Cyrillic letter A looks exactly the same as Latin alphabet letter A, but will happily break your javascript in the craziest possible ways, like 2 vars not being the same even though they look exactly the same.

<comment><USER19> Consider configuring your editor to highlight characters above 127.

</comment></comment><comment><USER20> It is a fun exercise to take a non-english language, look at its idiosyncrasies, and design a programming language with that.

My native language is German. Some ideas:

* We can take nouns and combine them to longer nouns. A "list of objects" is "Objektliste". Parsing will be a challenge but it makes the language more terse and auto-completion is faster.

* We also have gender specific articles. It is "das Objekt" and "die Liste". We could use this to have three possible namespaces, so "der Foo", "die Foo", and "das Foo" would refer to three different things.

* All nouns start with an uppercase letter, so your loop index must be "I" or "J". We could have user-defined qualifiers (like const) which are distinct from variables because they start lowercase. So where you have to use @ in Python, we just use lowercase.

<comment><USER21> > All nouns start with an uppercase letter, so your loop index must be "I" or > "J". We could have user-defined qualifiers (like const) which are distinct > from variables because they start lowercase. So where you have to use @ in > Python, we just use lowercase.

Yeah, but i and j come from math. I've never seen a math paper where people summed a variable using a capital subscript.

I think it might be more interesting to think about how you write a German version of a language that is meant to be English-like. Something like SQL or Cobol.

<comment><USER22> Also, a loop index is a placeholder for a numeral, like "eins", "zwei", "drei", hence

      Für i = 1 bis 2 ...

However, using articles,

      Für das I = 1 bis 2 ...

And we may want to use a "Doppelpunkt" and an exclamation mark, since this is still a command:

      Für i: 1 bis 2!

<comment><USER22> Extending on the importance of commands in the German language (and culture) – these are a serious matter and not to be fuzzed with –, a computer featuring an explicit fast-mode, like the Sinclair ZX81, may lend itself particlarly well to a German language implementation:

      Für i: 1 bis 10, aber schnell!

;-)

</comment></comment></comment></comment><comment><USER23> A somewhat related thing I've had on my mind:

I remember at my Dutch university we would get intro to programming courses in Java. We would often discuss things in Dutch, but found it awkward to talk about `null` (the "pointer") and `0` (the integer, which in Dutch is "nul").

In fact, I remember a distinct bug that happened from informal communication of an API. The conversation went (in Dutch):

        Student 1 - "What does Function A return if the input is invalid?"
        Student 2 - "Nul"
        Student 1 - "Null?"
        Student 2 - "Yes".

And the program went on to crash on a divide-by-zero exception, because it ended up only checking the return value for Null, rather than 0.

We ended up saying "null" as "naL", with heavy emphasis on the L and kept 0 as "nul", to somewhat mitigate these problems. The awkwardness never really went away.

I wonder if Guido van Rossum when designing Python intentionally bypassed this issue by naming the null pointer "None". This is the only language I know of that uses None, some use "nil" AFAIK, but the language issue (in Dutch) is not avoided in these cases.

I also wonder if other non-native English speakers who wrote English-based programming languages have applied similar considerations to avoid possible confusion between the native language of the speaker and English.

<comment><USER5> Ackchually, the proper pronunciation for English 'null' is supposedly /nʌl/: [https://en.wiktionary.org/wiki/null](https://en.wiktionary.org/wiki/null)

<comment><USER23> Interesting, that we gravitated towards a similar pronunciation due to a conflict in the beforementioned terms. It's unfortunate that proper English pronunciation does not always cross the North Sea :P. There are actually plenty of words in English that I have only written and read, and have never heard or spoken out loud... and I consider myself a decent speaker of English.

<comment><USER24> > There are actually plenty of words in English that I have only written and > read, and have never heard or spoken out loud

… and I'm a well-educated native speaker.

English proudly possesses a prodigious panoply¹ of… um… phrase particles.

¹ I have never heard this word spoken.

<comment><USER23> Hah, even simple words can be confusing. My English friends seem to end the word `idea` with a, to my ears, clearly audible `r`, but look at me funny when I mention it to them. Whereas my American friends seem to pronounce it in a more straightforward way..

I also love listening to people speak the "pronunciation poem" out loud. It's very interesting to hear how the pronunciation of each second word is changed, just to make it rhyme with the first (mispronounced) word.

[https://www.learnenglish.de/pronunciation/pronunciationpoem....](https://www.learnenglish.de/pronunciation/pronunciationpoem.html)

</comment></comment></comment></comment></comment><comment><USER25> From 2016: [https://news.ycombinator.com/item?id=11961223](https://news.ycombinator.com/item?id=11961223)

2013: [https://news.ycombinator.com/item?id=6315913](https://news.ycombinator.com/item?id=6315913)

2009: [https://news.ycombinator.com/item?id=524758](https://news.ycombinator.com/item?id=524758)

<comment><USER26> So the posting is right on time

</comment></comment><comment><USER27> Perl in Latin: [https://metacpan.org/pod/Lingua::Romana::Perligata](https://metacpan.org/pod/Lingua::Romana::Perligata)

<comment><USER28> Perl is so cool from a linguistic standpoint. I wish there were more written about that aspect of it. Also Conway is amazing.

<comment><USER5> I mean:

> _While in graduate school at the University of California, Berkeley, Larry > Wall and his wife were studying linguistics with the intention of finding an > unwritten language, perhaps in Africa, and creating a writing system for it. > They would then use this new writing system to translate various texts into > the language, among them the Bible._

And Perl was explicitly designed with a slant towards natural-language traits. Wall has said that he didn't know as much about creating _programming_ languages, and that this likely affected Perl. So he might've written about the linguistic aspects instead.

> _Wall 's training as a linguist is apparent in his books, interviews, and > lectures. He often compares Perl to a natural language and explains his > decisions in Perl's design with linguistic rationale. He also often uses > linguistic terms for Perl language constructs, so instead of traditional > terms such as "variable", "function", and "accessor" he sometimes says > "noun", "verb", and "topicalizer"._

<comment><USER29> For a linguist, he made a horrifically unreadable language.

</comment></comment></comment></comment><comment><USER30> There was, of course, PHP's notorious Hebrew error message T_PAAMAYIM_NEKUDOTAYIM:

[https://yvoloshin.github.io/php/2018/01/20/why-does-php- spea...](https://yvoloshin.github.io/php/2018/01/20/why-does-php-speak- hebrew/)

</comment><comment><USER31> Programming languages and human languages are really not the same thing at all, unless maybe you consider some extreme outliers like AppleScript[1]. It seems like the choice of character set would make a bigger difference. Most of the today's popular languages would seem to be strongly impacted by making them compatible with code that is entirely in 7-bit ASCII. I don't know enough about other character encodings to try to imagine how they might make for a very different programming language design. What would a Chinese-influenced programming language look like if its designer(s) had never had any exposure to alphabetic or syllabic writing systems?

[1] [https://en.wikipedia.org/wiki/AppleScript](https://en.wikipedia.org/wiki/AppleScript)

<comment><USER31> > _What would a Chinese-influenced programming language look like if its > designer(s) had never had any exposure to alphabetic or syllabic writing > systems?_

The first thought that came to mind as I was writing this was: some kind of logographic APL. I don't actually know what such a thing would like, but I'm sure I wouldn't be able to read it.

</comment></comment><comment><USER32> I was a skeptic, but Asad Memon's "UrduScript", although it could just as easily be called "HindiScript" due to its usage of the Roman alphabet, made me realize that this would have been a game changer in my freshman year or anyone from the Indian subcontinent just starting to program. For Hindi/Urdu speakers, the "why (kyun?)" section here - [https://asadmemon.com/urduscript/](https://asadmemon.com/urduscript/) \- is a fun read. Although I have always studied in an English medium school, I distinctly remember being confused by the simple term "invoke". It was just not a part of my regular vocabulary, and I felt it was something more complicated than what it seemed. Turns out if I had something like UrduScript I would have been more confident in my early days. Having said that, I think such languages are most useful as a teaching aid rather than a serious production language.

</comment><comment><USER33> Many languages these days support Unicode, so you could technically write them in whatever you want. I think it's great that the world has settled on a popular, relatively easy to learn language. It helps immensely with sharing open source libraries worldwide. However it would be nice if doc formats ala Javadoc had provisions for translation.

</comment><comment><USER34> Having something like a global standard, inter-intelligibility between languages etc. is an unmitigated Good Thing, and may it never change. Apparently, my English-as-a-second-language compatriots Bjarne Stroustrup, Anders Hejlsberg, and Rasmus Lerdorf agree with me.

<comment><USER35> And it's not even about English, but about a subset of ASCII on a QWERTY layout - symbols that are inputtable and explicitly marked on pretty much any keyboard. Whether most keywords in a programming language are in English or not is not even relevant. I mean if all keyboards had Greek symbols on them we would have an article about non-Greek-based programming languages.

It's a good thing, I agree. There is no reason to worry either, as uncommon hard to input unicode symbols in the core language is such a huge usability failure, that those languages simply have no chance of gaining any significant mind share.

<comment><USER36> Totally agree. Using non-Latin characters would be a non- starter for most of the world.

</comment></comment></comment><comment><USER37> Possibly relevant here: a story about Donald Davies' inventing the work "packet" (in the networking sense) from Katie Hafner's book _Where Wizards Stay Up Late_ :

 __Davies ' choice of the word "packet" was very deliberate. "I thought it was important to have a new word for one of the short pieces of data which traveled separately," he explained. "This would make it easier to talk about them." There were plenty of other possibilities — block, unit, section, segment, frame. "I hit on the word packet," he said, "in the sense of small package." Before settling on the word, he asked two linguists from a research team in his lab to confirm that there were cognates in other languages. When they reported back that it was a good choice, he fixed on it. Packet- switching. It was precise, economic, and very British. And it was far easier on the ear than Baran's "distributed adaptive message block switching." __

I wish that much thought went into other technical naming. (Looking at you, grep.)

</comment><comment><USER38> I have a friend with a German shorthair pointer. Whenever I hear him refer to the dog as a pointer, I briefly wonder if he's referring to his dog, or if his dog actually represents the location of another dog.

</comment><comment><USER39> Since we're discussing this, I'd like to share my work with this community: a programming by demonstration system, which doesn't use text [1]. One of its advantages is that people of different non-English backgrounds can be part of (say) the same introductory programming workshop, as long as one person can learn and orally convey how to use it [2]. [1] www.blockstudio.app [2] [https://dl.acm.org/citation.cfm?id=3174196](https://dl.acm.org/citation.cfm?id=3174196)

</comment><comment><USER40> English's largely non-inflected, positional syntax makes it a good fit for programming languages. Chinese would be better if not for the writing system.

</comment><comment><USER41> I'd rather see a language with more math-like operator symbols (e.g. for-all, element-of, union, is-proper-subset, etc) and an accompanying keyboard.

<comment><USER42> Dyalog will sell you a keyboard to go with their APL: [https://www.dyalog.com/uploads/images/Business/products/dk_r...](https://www.dyalog.com/uploads/images/Business/products/dk_rc.jpg)

∪ - dyadic downshoe is union ( [https://tryapl.org/?a=%27ab%27%20%27cde%27%20%27fg%27%20%u22...](https://tryapl.org/?a=%27ab%27%20%27cde%27%20%27fg%27%20%u222A%20%27a%27%20%27ab%27&run) )

proper-subset isn't builtin; this might do it, but there are probably neater ways

        'ab' 'cde' 'fg' {((≢⊆⍺)>≢⊆⍵)∧(≢⊆⍵)=+/⍺∊⊆⍵} 'cde' 'ab'

"If the count of items of the left vector is greater than the count of the right vector (right side is smaller, it is proper), and the count of the right vector is equal to the number of elements in the right vector which are in the left vector (i.e. all of them are found, it is a subset)". [https://tryapl.org/?a=%27ab%27%20%27cde%27%20%27fg%27%20%7B%...](https://tryapl.org/?a=%27ab%27%20%27cde%27%20%27fg%27%20%7B%28%28%u2262%u2286%u237A%29%3E%u2262%u2286%u2375%29%u2227%28%u2262%u2286%u2375%29%3D+/%u237A%u220A%u2286%u2375%7D%20%27cde%27%20%27ab%27&run)

Not sure it needs "for-all" because functions work on all elements by default. It can have for: loops, but they aren't math-like.

</comment></comment><comment><USER43> I don't get all the explanation going on in "Prevalence of English-based programming languages". English is the lingua franca of programming so origin is almost irrelevant. I'm Swedish but if I would develop a programming language I would do it in English, even if it was only for myself so I don't believe the "used English to appeal to an international audience" argument.

<comment><USER44> > _...I would do it in English..._

Men du hade inte säga _varför_ du skulle skriver detta på engelska. Till exampel, är engelska mycket bättre än svenska för som programmerarspråk?

</comment></comment><comment><USER45> I've seen version of LOGO with all instructions translated into Polish used for education in 80s/90s. It was pretty OK but it wasn't really based on Polish, it wasn't using any features of Polish language, just translated the English commands to make it slightly easier for the kids.

To make a programming language based on Polish that captures the core of the language would be pretty strange - variable names would need to change depending on the role of the variable in the expression, and the order of the subexpressions in an expression shouldn't matter.

Function names should change too depending on which subject they are called, and most of the time subject name should be skipped :)

<comment><USER46> Similarly though, I don't think any programming language is really "based on English" or "captures the core of the [English] language", in any meaningful way. So isn't the situation basically the same between English and Polish?

Just like Polish noun cases, I don't see how any of the interesting distinctive features of English are captured by programming languages.

<comment><USER45> Well English is analytic language, so the syntax of if, while, and positional arguments of functions reflect that.

<comment><USER46> Good point.

</comment></comment></comment></comment><comment><USER47> Until we program in natural language, I don't see why we must even bother with this. Its fun but useless. For programming as it is today, its just a bunch of English words that we have to learn. We can always comment and document in out native languages if need be. I say this as an Indian, so obviously not English native speaker. (To preempt the "colonial benefit of English" retort, I would say I would say the same thing had USSR won the cold war and everything had to programmed in Russian in Cyrillic. We just had to learn a few words even then, assuming Soviet tech hadn't made NL based programming a reality.)

</comment><comment><USER48> [https://metacpan.org/pod/Lingua::tlhInganHol::yIghun](https://metacpan.org/pod/Lingua::tlhInganHol::yIghun)

        use Lingua::tlhInganHol::yIghun;

        <<'u' nuqneH!\n>> tIghItlh!

        {
            wa' yIQong!
            Dotlh 'oH yIHoH yInob
                    qoj <mIw Sambe'> 'oH yIHegh jay'!
            <Qapla'!\n> yIghItlh!
        } jaghmey tIqel!

Perl makes me smile more than any other language I've poked at. There's an absurd amount of flexibility available.

</comment><comment><USER10> D has support for Unicode characters in identifiers, pretty much the same as C does. But now I think that was probably a mistake. Some people use it, but nobody who wants their code to be editable by the larger community.

<comment><USER49> JavaScript has virtually always supported Unicode variable names (well, the basic multilingual plane).

[https://mathiasbynens.be/notes/javascript- identifiers](https://mathiasbynens.be/notes/javascript-identifiers)

<comment><USER10> Sure, but do people in general use them?

<comment><USER49> If you don't know English (a lot of people) and you are writing a script for a web page, you would use your own language.

Although compression tools replace the majority of symbols with short Ascii symbols, so it may not show in the final packed code.

It looks like the closure compiler emits Ascii only, using escapes for Unicode symbols that are not transformed.

</comment></comment></comment></comment><comment><USER50> In computer programming I will use American language, even if the documentation is Canadian (I am Canadian, so I write Canadian documentation even though the commands in the program itself will be American).

However, you can also have programming languages with abbreviated keywords or no keywords, which is also sometimes suitable. If there are keywords, I will always do it in American.

(And when writing music, I will write all of the notation in Italian, even though I do not speak Italian. If I don't know the Italian word for something, I will ask someone who does know, and write that.)

</comment><comment><USER51> I didn't know about Enkelt[0,1] but I guess this changes things:

```

Enkelt >> var första = "Nej! Jag ville inte att skriver detta!"

Enkelt >> skriv($första)

Nej! Jag ville inte att skriver detta!

```

Pro-tip: You can use LLVM for non-ASCII naming, if you don't want to stick to Enlish-only letters.

[0] - [https://enkelt.ml/index.html](https://enkelt.ml/index.html)

[1] - [https://trinket.io/embed/python/10bb0ea708?outputOnly=true&r...](https://trinket.io/embed/python/10bb0ea708?outputOnly=true&runOption=run&start=result)

</comment><comment><USER52> There are only a few reserved (English) words, most of which are shared among different programming languages. Why is this any more of an issue than all the Italian words used in musical notation?

<comment><USER53> It's not, it's just fun to think about. Likewise french dominance of culinary terms, etc..

What I find more interesting is actually how _removed_ from spoken English most programming language reserved words are.

Taking C and derivatives: "if" is pretty close, and "while" captures the meaning of the word but not its typical usage. The meaning of "return" is correct, but jargon (yes, you're "going back" to where you were called from, but that's not what people mean when they use the word normally). But from there it gets weird fast: "else" reflects a somewhat odd sense of the word that sounds archaic and stilted in human communication; "for" and "break" have little to no connection to spoken language at all.

As far as type names: "int" makes sense if you took high school math, and "char" abbreviates a real word that no one uses ("letter" is the one we get taught in school). But no amount of literacy is going to tell you what "short", "long", "double" or (weirdest of all) "float" mean, those are all terms of art you need to learn from scratch regardless of what language you speak.

<comment><USER46> "int" doesn't really make sense from a mathematical perspective, since ints in e.g. C are a finite set that is not closed under addition or multiplication.

So I think it's actually a good example of your broader point, that the meaning of English words as programming keywords is often very different from their meaning in other contexts.

<comment><USER53> > finite set that is not closed under

The discussion was about programming languages and English. What on earth is this about?

You're actually compounding the issue here, by invoking jargon from a different field. That's true of the definition of integers you'll find in college level math textbooks, but the _word_ "integer" as understood by normal people (even computer programmers) means "whole number", which is why the type is named that way.

<comment><USER46> My point was that 10^1000000000 is a valid integer according to the high school (or college) definition, but not in most implementations of c++.

</comment></comment></comment></comment></comment><comment><USER54> (non-native speaker, learned programming before English) I think this is a bad idea for a few reasons:

\- More languages = more barriers. Gosh we have enough problems with silos within the software dev community as well as languages in real life being one of the main hindrance to mobility. \- Learning how to program is a great opportunity to refresh your mind and adopt a new way of thinking, why carrying along the burden of your flawed human language?

</comment><comment><USER55> Today is a good day to code.

[https://esolangs.org/wiki/Var%27aq](https://esolangs.org/wiki/Var%27aq)

</comment><comment><USER56> Shameless plug here, but I am creating a programming language that tries to let everyone code in their native language and also 'translates': [https://citrine-lang.org/](https://citrine-lang.org/) Might be interesting for people reading this topic. Nobody uses it of course but I like to work on it. ;-)

</comment><comment><USER57> I vaguely remember reading about a fuckup where the translation department of a company (I believe it was Microsoft) accidentally translated the entire programming language (I believe it was PostScript) into German. Of course you were no longer able to print using the german version of PostScript.

Does anyone else know what I'm referring to? It was probably in the late 90s.

</comment><comment><USER58> Wasn't it possible to programm in different languages in VB/A? At least some co-workers told me so.

Something about VB in German.

<comment><USER59> Yep, VBA had localized keywords. The standard functions still were named in English though, so the weirdness didn't even buy significant localization.

Almost 20 years ago I wrote some Excel macros on an even then ancient Windows 3.1 computer with German Excel. I tried for Hungarian notation (as I said, almost 20 years ago) and used d for date. So the end date of some range was dEnde. D is also the first letter of Datei, which is German for file. So when I brought the Document to the boss's newer computer the program got translated but all the variables still had German names except for dEnde, which turned into EOF.

</comment></comment><comment> iso-8859-1 Lamdu supports switching human language on-the-fly now, good luck doing that with a text-based programming language!

[https://www.youtube.com/watch?v=viF1bVTOO6k](https://www.youtube.com/watch?v=viF1bVTOO6k)

</comment><comment><USER60> In my elementary school, we used a French version of Logo Writer along with a French language special purpose library called Caméléon to learn robotics programming.

</comment><comment><USER26> It says non-English but more specifically the spellings are American for the most part.

At least the one's I've used, apart from BBC BASIC, and ZX BASIC

</comment><comment><USER26> What features in a human language would make it the optimal basis for a computer language?

<comment><USER40> The degree to which words are inflected by context. In English, it's almost nil. In Chinese, it's nil. Lingua Romana Perligata is an amusing example of how to use a heavily inflected language for programming, but it shows why you don't really want to do that.

<comment><USER61> I've heard that Perligata has actually been used in production. (It was similar to their native language.)</comment></comment></comment>


Show HN: Kubernetes Manifests for BuildKit - <AUTHOR> https://github.com/moby/buildkit/tree/master/examples/kubernetes <comment><AUTHOR> Why is this Show HN? This is super useful for all BuildKit users, I would highly recommend it for in-cluster builds. Whilst I didn't contribute this, I do collaborate closely with the team and contribute issues back to the repo.</comment>


StackOverflow is down :( (missing it) - <AUTHOR> http://i37.tinypic.com/21drlsg.jpg

<comment> mark-t I got a much cuter picture: <http://stackoverflow.com/Content/Img/wait-ill- fix-it.jpg>

But seriously, why is this news? Certainly anybody who cared would've noticed on his own, yes?

<comment><AUTHOR> Yup... nothing like "news" but why's it down ? I'm seriously missing it...

<comment><USER2> Probably due to some SQL server hassles (<http://twitter.com/codinghorror/status/984941516>), although if they were downgrading I'd expect them to put up a 'closed' page.

</comment></comment></comment><comment><USER3> nooooooooo</comment>


Show HN: A Go implementation of TensorFlow's streaming quantiles estimator - <AUTHOR> https://github.com/axiomhq/quantiles <comment><USER2> How does it compare to [https://github.com/tdunning/t-digest](https://github.com/tdunning/t-digest)?

<comment><USER3> Aren't the goals of t-digest a little bit different?

T-digest seeks to have a bounded size and an error proportional to q*(1-q), hence it gives up quantile accuracy in the middle of the distribution when under load. This algorithm seems to provide total bounded error without small but unbounded size.

<comment><USER2> Could you elaborate on the differences a bit deeper? I'm really interested in understanding.

<comment><AUTHOR> [http://web.cs.ucla.edu/~weiwang/paper/SSDBM07_2.pdf](http://web.cs.ucla.edu/~weiwang/paper/SSDBM07_2.pdf) is the paper its mostly based on Figure 1. Actually describes how big the datastructure can get. It keeps getting bigger the more data you feed it.

</comment></comment></comment></comment><comment><USER4> TensorFlow's implementation is looking great - RAM usage is fantastic!!</comment>


Ask HN: Why HN is so quiet about those gun shootings in the weekend? - <AUTHOR> <comment><USER2> The shootings themselves are off-topic for HN; however articles discussing the tech related to the shootings appears to get flagged: [https://news.ycombinator.com/item?id=20608584](https://news.ycombinator.com/item?id=20608584)

<comment><USER3> That one was probably flagged because there was a large discussion about the topic just the day before: [https://news.ycombinator.com/item?id=20604595](https://news.ycombinator.com/item?id=20604595)

</comment></comment><comment><USER4> There are 40 homicides a _month_ in Chicago; they get even less media attention:

[https://graphics.suntimes.com/homicides/](https://graphics.suntimes.com/homicides/)

<comment><USER5> Neil Degrasse Tyson is catching quite a bit of flack for pointing out such things.

I do believe his point is that we obsessively turn specific events into front page news, while completely ignoring / normalizing other more common tragic numbers. Maybe if we dwelled equally on human excellence, we'd see a sudden rise in front page excellence.

</comment></comment><comment><USER6> What is there to say? It's kind of off-topic for Hacker News. If you want an article though, here you go: [https://archive.is/NBgoi](https://archive.is/NBgoi)

</comment><comment><USER5> Probably the only part relevant to HN is what happened with 8chan and statements from its founder. And that's already contained in other posts.</comment>


Humble Book Bundle: Forbidden Books Supporting Banned Books Week 2018 - <AUTHOR> https://www.humblebundle.com/books/forbidden-books-2018 <comment><USER2> > HUMBLE BOOK BUNDLE: FORBIDDEN BOOKS

> SUPPORTING BANNED BOOKS WEEK 2018

offer not available in your region

<comment><USER3> Maybe the books aren't banned enough in your region to qualify :)

</comment></comment><comment><USER4> "offer not available in your region", hmmm

<comment><USER5> Interesting, what region is it? Is it because of the banned books themselves, or does Humble just not operate in your area?

<comment><USER4> I see that only for a couple of books, I don't think we have banned books over here. It must be a publisher limitation.

</comment></comment></comment><comment><USER6> Lauren Myracle (author of _ttyl_ listed here) has an interesting essay on the subject of book banning: [https://www.huffingtonpost.com/lauren-myracle/im- with-the-ba...](https://www.huffingtonpost.com/lauren-myracle/im-with-the- banned_b_5113407.html)

Also, _Heartbreak Soup_ is excellent!

</comment><comment><USER7> Wait, someone banned Bone?

<comment><USER3> The explanation of who banned the book is linked in the description: [http://cbldf.org/banned-challenged-comics/case-study- bone/](http://cbldf.org/banned-challenged-comics/case-study-bone/)</comment></comment>


Cryptol – a statically typed functional language for cryptography - <AUTHOR> http://www.cryptol.net/ <comment><USER2> [https://news.ycombinator.com/item?id=9594702](https://news.ycombinator.com/item?id=9594702)</comment>


Ask HN: Fair equity split after prototype and First client? - d--b Hi, I am a dev, I have been working (slowly) on a side project by myself for 3 years. I have a working prototype (11k loc), and I am about to land a first paying client ($5k/year). I want to find a business person to help me take this from a techy project to a succesful startup. What's a right equity split at this stage? 50-50 doesn't sound right. I was thinking 75-25 was ok. Any idea, past experience? <comment><AUTHOR> What specifically do you want the business founder to do?

One way to think about this is to find an org chart for a company like the one you imagine creating. Then put your name on some roles and "new business guy" on some others. (The ones with no name will tell you what else you need to hire for.)

Regardless, whatever equity split you end up with, you'll want to do some sort of vesting. For example, a common deal is that they get their equity over 4 years (known as a four-year vest) but all equity for the first year is saved up and given once they've worked for the company for a year (known as a one- year cliff).

<comment> d--b I would oversee the product design and development, and the business guy would do marketing & sales, and we should work together on finance, hr (at least at first). Vesting is definitely on.</comment></comment>


Ask HN: Refactor Social Skills? - <AUTHOR>

Any suggestions on how I might go about refactoring my social skills?  I'm 35, maybe a bit Aspergers (have a clinical diagnosis, but still find people kind be kind of dismissive about it, like its no big deal and I should quit being so dramatic), but certainly I have issues with depression and/or social anxiety.
Honestly, I don't feel super lonely or anything like that...   I was fortunate enough to meet my wife at a young age and I have two sons, and I feel most comfortable with a small number of intimate relationships like I have.
But this creates a hardship when it comes to trying to support my family (among other things), and we are living in poverty.
How do I go about "fixing" my social skills so that I can get over my anxiety about social networks like Facebook, Twitter, and LinkedIn (even Github is social) and use them to get my career back on track.  Right now, I use oDesk to try and minimize social interaction, but I'm back to doing the same stuff (LAMP stack PHP dev work) I was doing 13 years ago for less money...  still the notion of networking and "selling myself" is completely overwhelming to me.
I'm working with my local Vocational Rehabilitation office to update my Java skills (through O'Reilly) with the hopes of getting a good job, but I have to figure this out because the idea of having to leave my house for 8+ hours a day and deal with the social demands of people is a huge mental block for me, and causing me to freeze up from making any progress in school...  Even this fear presupposes the fact that I will get a job offer, but at 4+ years since the last dot-com I worked for tanked, I feel like this isn't going to happen unless I radically change something.
Any suggestions?
Thanks in advance. <comment><USER2> You probably should be looking for a job rather than attempting to go through Odesk. The problem with making a living on anything but a W2 is that the level of difficulty goes way up. I imagine living in poverty while attempting to run a business is quite common, there is even a term for being modestly profitable - ramen profitable.

Most people in your same position probably don't want to do that. You need someone who can take care of the "running a business" parts. Maybe that isn't so easy these days though, I don't know.

You could do a search for posts by Patio11. He might even pop in as mentioning Odesk is the magical word to summon him. His posts are gold but they assume that you are actually into running a business.

It's hard for me to weigh in on your social issues as I don't have the same problem. You generally get better with practice though. Are there meetups that you can go to? Are there support groups for people who have the same sorts of issues? Maybe you could start out with social events for people who share your traits and then branch out from there.

ETA: I think most important is to be talking to people who share your condition. People who have been able to deal with it. Running a freelance / consulting business is hard enough. It's even more difficult when you add a condition like yours. The market right now (and possibly more so when you first got started) is such that its pretty easy to get development gigs, especially for those willing to work for cheap. That may not last forever though.

<comment><AUTHOR> Thank you for your thoughtfulness.

Reading blogs like Patio11's have always made me optimistic about being able to work for myself (when I looked him up and saw "Bingo Card Creator" I immediately remembered a post from years back that he wrote about bringing that product to market).

If I am marketing myself for a full time job or a freelance gig, it seems like I need some kind of public personal built on social media to back up a resume. I don't have that kind of footprint, and I feel like I need to change that.

If I tweet a bunch, ask/answer a bunch of questions on Stack Exchange, and create some useful library for a fashionable language on Github, does that solve this problem? Or is that a total simplification?

<comment><USER3> _it seems like I need some kind of public personal built on social media to back up a resume._

Absolutely not required. Many of the best engineers I know don't maintain any social media accounts at all. Many more lurk rather than e.g. writing 500k words a year in a publicly visible fashion.

Tweeting, answering questions on Stack Exchange, and creating a useful library does not cause engagements to magically offer themselves to you. Convincing people that you can create something which makes their business better is, generally, what gets one engagements. If one hypothetically wants to, one can create online artifacts which tend to widen the funnel for inbound interest, but then you still have to sell the inbound leads on working with you. Even if you have 500k+ words of fairly high quality online, you still might find yourself getting most actual consulting leads in meatspace. (This was true for me.)

Many folks have no substantial inbound interest from folks wanting them to work, and have to meet people in e.g. meetups, conferences, and the local community to get engagements. That's not the worse thing in the world. I personally rapidly lose capability to continue high-level interactions after the first hour or two, but luckily an hour or two is all you need to put up with for e.g. a client meeting or a meetup. If you can't do an hour, do thirty minutes and leave early. If you can't do thirty minutes, do ten minutes, and work your way up.

<comment><AUTHOR> Thank you for your reply and thank you for correcting me on this misconception. It seems I am putting too much energy into trying to fix a perceived problem instead of focusing on the more pressing concern of actual socialization.

Your time limit advice is solid. I can do an hour, maybe even 2 with fellow nerds before I get too overstimulated. I almost forgot I am capable of this, so thanks for the reminder. It makes me feel better about getting a job since I should have some time to recoup in my cube in between meetings if there aren't constant interrupts.

Maybe a job with constant interrupts and/or meetings I should just avoid.

</comment></comment></comment></comment><comment> dnt404-1 I don't know if this is a feasible step for you considering you have a family to support, but you can do what I did. I was starting age 24 when I dropped programming for over a year, and studied master's in counseling psychology plus sociology (2 degrees). 14 months later, today, I turned into an extrovert :) not permanently though. I can now turn into introvert/extrovert according to the situation and need. I am more adaptable and more sure of myself.

Programming jobs and the people it brings can be isolating at times, and if you are trying to improve your social skills, it is not a very effective environment, generally.

I turned not because of the degrees,but the people I met there in those programs. When you spent 3/5 hours a day discussing/debating/fighting/having- fun with another groups of human beings, you just change. I was not too isolated before I worked in programming to begin with though in my case; it was working in programming that slowly made me too isolated.

Being a total geek has its perks, but the rest of the people don't care about hackernews ;) Start from there.

<comment><AUTHOR> Yes I think the ability to be somewhat extroverted (given a short enough time interval) would be good for me... I remember taking the Briggs-Meyer test in 2005 when I was doing pretty good socially and moving up in my career, I wasn't extremely introverted at that time, just on the cusp.

Then, yes, I got more isolated. I moved away from the city where I grew up (Portland, OR) and had friends to a rural setting (to a small farm, which was I dream of mine)... After 5 years on the farm, I had to move out (and am still dealing with all the negative feelings of betrayal by my parents and siblings for how it happened), and I moved even further away.

</comment></comment><comment><USER4> I expect deliberate practice would also be of some help, as it is with many skills. I don't know whether it would be of _sufficient_ help, or really have any more specific recommendations, but it might be an area to explore. With limited resources, of course, there's a trade off between spending time and effort improving these skills, and spending time and effort structuring your life so as to be less reliant upon them.

</comment><comment><USER5> You can't refactor your social skills. Sure you can learn tricks such as "keep eye contact", "firm handshakes" and "smile more" but if you prefer solitary activities instead of people, no amount of refactoring will fix that. If you're 35 years old, your personality is unlikely to change very much, you just have to live with who you are. Maybe try for remote positions, work from home or part time work?

</comment><comment><USER6> Odesk is terrible for finding good work. It's better to go through craigslist.

<comment><AUTHOR> Ok, my problem is:

CL -> Resume -> Resume Screening -> Social Media Check (!?)

Which raises an exception in the hiring process because I don't look legit on social media. Am I wrong on this?

<comment><USER7> Yes. I would estimate that even among good developers, it's less than 1 in 10. You might be overly influenced by looking at HN type job listings -- they tend to ask for GitHub and possibly check Twitter, etc.

You can get a payroll job in a lot of companies being able to do enterprise web apps that will pay well and they wouldn't imagine that you need to have social media presence.

The resume screen is basically a keyword match -- the most important thing you need to do for the screen is write a good cover letter that directly addresses the job ad. For the interview, do a lot of research on the company and show interest in their specific position. Assuming you can pass the tech screen, that will put you in top 10%, because most people do 0 research and come to the interview acting like they never heard of the Internet.

Go on a couple of interviews where you aren't super interested in the job (but can definitely get through the resume screen) just to get some practice.

<comment><AUTHOR> Ok, thanks for the insight. I have definitely been influenced by HN and in particular a blog post on the Huffington Post[1] where the author states 80% of employers do this. I thought in tech, the rate would therefore be even higher. But now I think that's probably not the case, because of the personality of a lot of devs, the 80% statistic could be totally made up (can't believe I fell for that), and that I probably shouldn't be reading an AOL property for career advice at this point.

Thanks for the tips... I keep hearing how devs are so hard to find and how so many people can't even FizzBuzz, and if I can just get through to a technical interview, I should be OK. So far, that hasn't worked out, but it seems like the best plan.

[1] [http://www.huffingtonpost.com/susan-p-joyce/job-search- tips_...](http://www.huffingtonpost.com/susan-p-joyce/job-search- tips_b_4834361.html)

</comment></comment></comment></comment><comment><USER8> You are already an adult.A 35 year old adult. Just make more friends, and communicate with them a lot. You can overcome this issue by yourself</comment>


Tiny Flashlight Illuminates The Kindle Fire's Appstore Impact - <AUTHOR> http://techcrunch.com/2011/12/29/tiny-flashlight-illuminates-the-kindle-fires-appstore-impact/ <comment><USER2> I was left with too many questions after reading this post. It's not that the info is completely useless, but a stronger analysis would have been nice.

What's the point of including the speculation about the download numbers of the top three apps? Even if the top three publishers didn't want to share, maybe the author of the post could have gotten some more data from other top 30 publishers to make a more educated guess. The stats for one app can't magically result in the number 70,000. What are the other "observations" that are mentioned?

The author specifically talks about the big spike in downloads on Christmas day, but only the screenshot of the graph at the end shows the numbers after Christmas. They're dropping fast. When are those numbers going to level off? It would have been nice if the author waited a week before posting. At least then we could make better predictions about how well apps will do when everyone returns to their normal routine in the new year.

Finally, I wish that the post had included some data about paid apps. Was the spike on Christmas as dramatic for paid apps? We know that Android users are less likely to pay for apps overall than iOS users. Do Amazon Appstore users have the same behavior? If so, did the Kindle Fire Christmas gifts bring in new type of Android user that is more willing to fork over money for apps?

</comment><comment><USER3> Check my math, it's saying 33,000 out of "at least" 310,000 - so something like 10.6% of all downloads were on the Amazon Appstore right?</comment>


Ask HN: How do you monitor several servers? - <AUTHOR>

I'm notice that when I have more than 5 servers need to monitor, I'm periodically forgetting about updating each of them and checking them resources usage.
Seems that Canonical's landscape is pretty good for that, but canonical's support said that payment plans starts from 100 servers =/
If you have 5+ servers – does you use anything to monitor and update all of them? If use – what is it? <comment><USER2> Currently I just use pingdom to check availability, but I'm really interested on other people needs, so I'm more interested on a related set of questions:

What would your ideal monitoring system have? Would it be web based? terminal based? Zero install effort or full customizability? What would you like to monitor? Just monitoring? Alerting too? Just servers or also containers?

</comment><comment><USER3> Last night I grabbed a JavaScript text to speech script [http://responsivevoice.org/](http://responsivevoice.org/) and tossed it into my laptops Apache public directory and wrote a few lines for Ajax request to a script I tossed on each server that would just return some status info stuff like

exec('uptime',$response); echo $response;

In around 15 minutes I now have a siri like bot to take with me that will alert me to anything funky which is necessary after a week of some rogue processes.

</comment><comment> andrew-lucker Nagios is pretty standard for monitoring.

Administration is usually custom automation. There are a lot of tools for this, and they all have good and bad, so you should just go with what is most accessible to you.

<comment><AUTHOR> Yes, I know about Nagios, Zabbix, Munin, etc. But all of them like star ships control panel – has too many options for my needs.

Maybe, it is good way to use one of them, but it so hard to find day for configuration of all of this =)

<comment><USER4> Give munin another chance, I find it's the easiest to setup from the list.

</comment></comment></comment><comment><USER5> We use several things including custom scripts to monitor and alert when needed. However our main tool is ipMonitor. We monitor hundreds of servers in multiple environments (dev, test, prod) and the thing that I don't like is all the noise that gets created. It makes it hard to find the real important issues. I believe monitoring is great, but any alert should have an actionable items to perform.

</comment><comment><USER6> I just use terminator terminal, multi-terminal grid. One terminal per server showing htop via ssh.

[http://gnometerminator.blogspot.com.au/p/introduction.html](http://gnometerminator.blogspot.com.au/p/introduction.html)

[http://hisham.hm/htop/](http://hisham.hm/htop/)

</comment><comment><AUTHOR> [http://cloudstats.me/server-monitoring/](http://cloudstats.me/server- monitoring/) almost ideal, but has several pitfalls: closed source, $5 for server, and doesn't have package manager monitoring.

<comment><USER7> heya, thanks for your note, the agent is actually open source. in re package manager, do speak to us in skype, we are pretty open for anything ;)

</comment></comment><comment><USER8> [http://scoutapp.com](http://scoutapp.com)

Dead simple to install and use. Fancy graphs, lots of useful plugins for monitoring processes.

Using it for more than a year, no problems, responsive support. $15/server/month.

</comment><comment><USER9> If you're hosted on AWS by chance, check out their "CloudWatch" services. Monitors everything I usually need, sends alerts as-needed, etc.

</comment><comment><USER10> Nagios core.</comment>


Google Says Mysterious Wave of Unbootable Macs Is Their Bad - <AUTHOR> https://gizmodo.com/whoops-google-says-mysterious-wave-of-unbootable-macs-1838430057 <comment><USER2> [https://news.ycombinator.com/item?id=21082381](https://news.ycombinator.com/item?id=21082381)

[https://news.ycombinator.com/item?id=21073819](https://news.ycombinator.com/item?id=21073819)

[https://news.ycombinator.com/item?id=21064663](https://news.ycombinator.com/item?id=21064663)

</comment><comment><USER3> > disabling SIP is a requirement to run third-party graphics cards.

While Google may have contributed to this problem, disabling SIP to use some hardware seems like the actual issue here. If users have to frequently disable a feature then that feature simply doesn't work.

<comment><USER4> Yeah, on Windows you never had to click past these nasty dialogs warning you about unsigned drivers, and you certainly never had to disable Device Guard because a driver used Windows 3.1 era APIs. Except all the time, until Microsoft makes it impossible and forces the manufacturers hand. Unsigned drivers are already impossible to load and drivers that don't work with Device Guard are next.

<comment><USER3> I haven't had an unsigned driver problem since Win8.1. I have certainly never needed to disable WPS in any version of Windows [where it exists], even in the face of unsigned drivers.

</comment></comment></comment><comment><USER5> Anybody misread the title as Whoopi Goldberg?</comment>


Nintendo banning modified 3DSes from online - <AUTHOR> https://www.kotaku.com.au/2017/05/nintendo-bans-a-bunch-of-hacked-3dses/ <comment><USER2> If they want market control, and I do mean utter control, open source that thing (unrestricted) and the masses will flock to you, total market saturation</comment>