The Latino Programming Language
lenguajelatino.org
lenguajelatino.org
Presumably the use of Greek letters in traditional mathematics doesn't present an insurmountable barrier to non-Greek speakers.
The "for" loop comes from ALGOL[0]. In ALGOL, the FOR statement supports syntax like "FOR V:= AEXP1, AEXP2,... DO". That's like the higher-level iterator syntax, except it's assigning V via iteration over a sequence of expressions (AEXP N) that is fixed at compile time. That's the context where FOR makes sense as a term. (Step 1: thesis)
Now, ALGOL also happens to support a FOR-STEP-WHILE format, which works the same way as the C for-loop[0]. That makes less sense from a mathematical nomenclature perspective, but it is justified through analogy to the original FOR definition.
When C, which was based in part on ALGOL, implemented for, it dropped the original meaning and kept the special case meaning because the latter was more useful, being dynamic instead of fixed at compile time. Hence, the for loop. (Step 2: antithesis)
Eventually other languages implemented for with iterators, returning to the original ALGOL meaning of for, but synthesizing it with the dynamism of the C for loop. (Step 3: synthesis)
[0] https://public.support.unisys.com/aseries/docs/clearpath-mcp...
Disclaimer: references to the Hegelian dialectic are for entertainment purposes only.
It was added in C++11 so it looks recent there. But the syntax was in Perl 4 back in 1991. And someone who knows programming history can probably find older examples still in other languages.
while guessing == true:
...
if is _correct(answer):
guessing = false // This stops execution and jumps out of the loop, right?
answer = next_guess()
...
// answer should be correct now
print('Correct answer is %s' % answer)
The program says this block of code executes "while" guessing is true. How does it make sense that code inside the loop is still executing after guessing is set to false? For you and me, since our brains have been molded to the the imperative model of programming (execute this line, then this line, then this line,) we understand that "while guessing == true:" is a line of code that only has effect at specific times, "when the program gets to it." That is not what "while" means in ordinary language, so it's confusing for a beginner until the imperative model is really locked into their heads.Okay, but what about error messages? A good error message tries to convey the nature of the error in a complete sentence or sentence fragment. Comments are often written in English. Documentation is often only available in English. Tooling suffers the same issue. Non English speakers are forced to learn English if they want mastery of the programming language, and this goes beyond mere symbol mappings.
That's a fair point. I think I saw some compilers with translated error messages, which would solve that problem. But it was a long time ago, so I'm not sure. However, that is an issue external to the programming language per se.
> Comments are often written in English. Documentation is often only available in English.
When you get a programming book translated to Polish, comments are going to be written in Polish. Manpages have translations into many languages. As for library documentation, it's long past the point of an introductory programming course.
> Tooling suffers the same issue. Non English speakers are forced to learn English if they want mastery of the programming language, and this goes beyond mere symbol mappings.
True. However, I think it pays off big time. I think a world where people are forced to learn a language that everybody speaks is a much better world than one where different regions of the world have siloed repositories of knowledge, and collaboration can only happen on short distances. I think too often people complain that they need to learn A, in order to do B, even when A dramatically broadens their horizons and lifts the ceiling on what they can achieve. It's similar to the common antipathy towards being required to learn maths, if you want to do game engine programming, physics, etc. Without grasping a good chunk of maths, you're not going to be a good game engine developer or physicist. Same with English. Without it you're not going to be able to efficiently collaborate with others. Documentation is just one instance. There is also the usual asking questions on forums, reading blog posts, research papers. Those things may sound like restrictions to some, when in fact they're the opposite.
GCC has translated error messages and its horrible as it impossible to look up the errors onine and makes the errors useless when you seek support from someone who does not speak your language.
I also find it frustrating, when comments or variable/function names are in anything but English. KDE, I look at you (even though I can read German just fine)!
Allowing anything but ASCII in a programming language is just inviting disaster. I'm not looking forward to find Chinese characters in source code ...
Perhaps we'll have some day an automated translation tool for source code, much like we have today for code-beutifiers.
I too prefer having function, variable and keywords in ascii as there is generally little to no ambiguity about what the character is or how it’s typed, but not being able to assign strings meaningful values in source code or add comments with meaningful and readable text for the domain of your program is an unnecessary burden.
I pissed myself off quite a bit when my logical expression of something like "IF B<50 AND B>100" didn't work. Then my mother, who was also a programmer helped that I indeed needed an OR. I learned it, but it didn't make sense, because that's not what how I would have said it in (any!) natural language.
Later on I've figured out that my misunderstanding was caused by the fact that while I've written "IF B<50 AND B>100" I meant "IF B<50 AND IF B>100", or more precisely "WHEN B<50 AND WHEN B>100".
I also remember the surprise when learning that PEEK and POKE (two keywords in BASIC) actually both mean something and not just made up pair of words.
While i would choose a latin-derived language to write poetry, speech or a novel because the expressivity, at least in those contexts are unparalleled, for clean, honest and even scientific terms, if there's a need for a human language, the english language, at least for me, is what suit those the best.
Apart from that its also a question of chance and historical events.. This sort of tool is great to teach younger kids to program and thinking in programming terms. But just like math, its reduced to a more symbolic level, so the word you are using to define things its not that relevant and giving that property, its a good thing that its more universal, just like in math.
I started learning BASIC when I was 3 or 4, way before I even understood English was a thing. If I could grasp what GOTO did, anyone can.
Then I see no issue translating from this to an "english" programming language, so there would be no extra layer of mental translation.
As far as languages being useless, there's lots of other useless language a person could be learning. That doesn't discredit the raison d'être of these languages.
(Of course this doesn't apply to learners, I don't know about that.)
I think a lot in words and about words. When I'm writing a for loop I usually sound out the whole thing, even if just mentally, "for ecks equals one to ten do" or "for whye in the range". I don't think I'm the only one who does this, so offering pronounceable things to other people in their own language might help.
But as I'm doing these things, I'm often muttering to myself as well, and I may do it in Spanish or English.
But very early on I started writing identifiers and comments in English, and I think this is critical if you want your work to go anywhere. Say you write a piece of code and put it in Github, with Spanish identifiers and comments. You've just massively increased the barrier of entry to most collaborators in the world (have you ever come across code commented in Russian or Chinese? Not fun).
And this is just identifiers and comments, not keywords. I imagine using an entire programming language in anything but English can only make things worse :(
I think the value this will bring isn't very high. I personally believe that early programming has less to do with reading the code as natural language and more to do with understanding what the individual constructs achieve. This is purely anecdotal, but I taught programming to a few students in French and the presence of English never came up as a blocker.
Fun story : for the hell of it, I once tried to code an entire project with some friends in French exclusively (that is, mainly variable/method/class names etc). As much as I love my mother tongue, its not always very concise. The whole thing became super bloated. We ended up reverting back to English.
GOSUB, RETURN, FOR, DIM, PRINT, PEEK, POKE, etc. were just abstract words that we just accepted without fully understanding their English roots. They might as well have been CALLBACK, THROW, ITER, FOO, BAR, etc., and we would have used them just as well. We reasoned in Spanish, then coded our reasoning in the abstraction that was BASIC. When reading code, it was like reading math, not a story.
More so, with the meme culture nowadays, even kids know enough English words to understand the roots of many tokens in programming languages.
Maybe programming with tokens rooted in your native language actually provides something I wasn't able to enjoy, but programming for me feels very different from speaking English, I'd bet the two don't even use the same brain regions, unless you're forcing yourself to comment in English.
Let's see what comes out of Latino. Hopefully they'll add Unicode identifiers later, because writing "funcion" instead of "función" is still bad Spanish.
Most of your programs will not be keywords, i.e. symbols from the programming language, but the identifiers you define. Now you could use your native Spanish (or Russian or Hungarian, etc.) for those, but even that is not very useful. When you think about the program, you think with the constructs of the language (and also, as you get better, with the patterns you have learned). Then you express those thoughts with the language and the constructs you have created.
The only place I can imagine this making sense is a scratch-like block language. But I'd say that even then it just hinders learning and development. Sooner or later you'll have to switch and the later you do the harder it will be.
Also, this can be a great motivation to actually learn English. For me, at least, it was.
Windows error messages and the command line on Linux are particularly big offenders here.
This is probably because many of them studied CS and spent comparatively more time with computers and less time consuming foreign language materials as students.
I learned programming when I was five or six, way before I knew any foreign language, but my experience is no excuse for gatekeeping. Making programming accessible to a wider audience is unequivocally good.
Many programming languages especially more terse, modern ones (I'm looking at you, Rust) -- the symbols don't mean anything in English either. Does "for" or "fn" or "impl" mean anything to average English speakers? This feels more like a bunch of extra symbols like "==" and "!" rather than the anglosphere enforcing its dominance.
There's plenty of room in the programming languages space for this one, to be sure -- I've nothing against it. It almost feels like ergonomics and writability are reduced in this language to make it more like Spanish than a modern functional programming language is like English. It almost goes out of its way to replace symbols with words. More like a Spanish AppleScript.
Feels more like it's making a point than solving a problem, but I'd love to get more perspective from Spanish speakers.
In math, if I see an unfamiliar symbol I immediately know I don’t know what it means. If it were English instead I’d automatically try to fill in a meaning. (Of course there is also a problem of overloaded symbols...)
Yes, they do. When I was learning Rust it was obvious that "fn" was function. "impl" is a little trickier, but I read it as "implements" or "implementation of". "dyn" is "dynamic implementation of" or something like that. And "for" is the same in all the other programming languages I know.
Realistically, what's far more important than the language of the keywords is the language of the rest of the identifiers. I've typed a lot more distinct function and variable names than keywords.
[0] Jogged my memory: https://news.ycombinator.com/item?id=26809211
Exactly. Or the doc.
Having a standard library with a localized doc would probably help out learners way more than localizing some keywords. As one gets further and further away from the standard library, the doc increasingly won't be localized but by then the reader should know enough "engineering English" to get by.
This whole thing needs to be condemned, we get it - its fun to do something about your local language and be proud of your culture - everyone is. You should be. But, trying to peddle this into mainstream is a monumentally catastrophic. I don't want the world to be fragmented - we need to get together and build better tools.
If anyone who has worked on Chinese datasheets, oh boy, you know the pain.
Think of English not in the context of cultural importance/language but more formally as a de facto standard. A professional would follow the standards. This is why we have IETF. It is unquestionable and indisputable that standardization improves the world.
That said, comments are probably fine in local language.
However,
> No son validas las letras acentuadas u otros caracteres como la ñ.
["Accented letters or other characters such as ñ are not valid." sez deepl]
https://manual.lenguajelatino.org/es/stable/sintaxis/Variabl...
Looks like it doesn't support accented characters in variable names. I wonder what their reason for excluding those is?
https://en.wikipedia.org/wiki/Non-English-based_programming_...
I know that in the case of Lua that was one of the main reasons. ICU by itself would be larger than the rest of the interpreter.
In fact it should be "función", that way it would not matter whether you are writing code or documentation.
#! /usr/local/bin/perl -w
use Lingua::Romana::Perligata;
maximum inquementum tum biguttam egresso scribe.
meo maximo vestibulo perlegamentum da.
da duo tum maximum conscribementa meis listis.
dum listis decapitamentum damentum nexto
fac sic
nextum tum novumversum scribe egresso.
lista sic hoc recidementum nextum cis vannementa da listis.
cis.
[1] http://users.monash.edu/~damian/papers/HTML/Perligata.html setxkbmap us -variant intl -option compose:rwin]
Press altgr or right win key + [aeiou] or n.(That said, it's one that's so common it's worth learning the keyboard shortcut for. On a Mac it's "opt-n, n".)
Even if the argument of lowering the entry bar to non-English speakers was valid (I don’t think it is) the individual would be severely limited when it comes to collaborating/GitHub/external libraries/learning new programming languages.
A big advantage of learning a programming language is that once you understand what a “loop” or a “if” you can easily transfer that knowledge to another language.
Learning this language as your first language will leave you with very little transferable knowledge without much “translation” needed (pun intended)
While I agree simple keywords in a programming language aren't that big of a deal to learn as they are essentially symbols; things get a lot more complicated in a real project if a contributor is not a native speaker. Identifiers and comments - which are used for source code documentation - are in a single language and can't be translated easily.
If the presentation and representation were split such that the presentation (still text mind you) is just a rendering of the representation then it could go through a translation process in the same way web pages do. Of course there would be an added project overhead of maintaining translations so maybe it wouldn't be worth it.
This might be somewhat of a moot point as English is quickly becoming the lingua franca. Things such as issue tracking also require some common language outside of the source code itself.
I commented on another thread about being hype about this, and people pushed back, commenting that it's really beneficial to have English as the lingua franca of software development.
It strikes me that lowering the barrier to entry by not forcing someone to learn programming and English is positive. But fragmenting standard communication language harms software as a whole. Plus, learn English and you get access to millions upon millions of man hours in libraries and documentation.
Maybe it's not really an either/or here; better for people to have choices.
All of that said, "Latino" seems like a particularly terrible name for a programming language: it should probably be hispanohablantes for correctness.
Now I'm not sure who you think python is for...
Latino, on the other hand, seems to have a little more overlap: it's very close to Latin, an actual language, and also refers to the latinoamericano cultural identity, which is largely defined in relation to language. Thus the possibilities for confusion seem a bit greater (I think OP's suggestion of "hispanohablantes" would also cause a lot of confusion).
Latin@ is a little bit less of an USAism, but I'm not sure if that's a pro or con in the maximal confusion department.
I wrote my first line of code before I wrote my first word in English, the status-quo doesn't really require you to learn English beyond a couple trivial tokens.
I agree choices are good and I hope the project succeeds, but it must be stressed that learning English isn't really optional anyway, it's a hard requirement for any IT-related job worldwide.
But even then I feel that in that case non-english speakers might have a bit of an advantage as they don't assume things about SQL because it doesn't look like their native language.
IIRC AppleScript used to support French, but it's an unpopular variant of an unpopular language, so I'm not really sure how many people actually used it.
> But even then I feel that in that case non-english speakers might have a bit of an advantage as they don't assume things about SQL because it doesn't look like their native language.
Yeah, the sooner you realize it's the abstract and not the concrete syntax you're actually manipulating, the better. IME (natural) language is just not a barrier at all.
In my country's technology courses, students are often introduced to programming through a language called Portugol which is essentially a translated Pascal. There's no compiler, no interpreter or anything. For months on end students have to write procedural code on paper with this useless language.
The more serious problem is when teachers uses it as a hammer to every nail and teach advanced concepts using it, so students are forced to reason about fine syntax of a fictional language.
There's nothing particularly political about being from South america
It obligated the US to enfranchise Mexican citizens living in the seceded lands of Alta California.
This immediately threw a wrench in antebellum politics which only allowed "white people" the vote. Eventually the US invented a racial category based on speaking Spanish...well actually two, one black, one non-black.
Fundamentally the identity of people with cultural affiliation to Spanish speaking cultures is complicated by the sanctioned narratives of US history which do not allow for the US to consider its Latin American heritage.
You could sleep in a hotel in Santa Fe and eat in a restaurant when the Pilgrims came ashore at Plymouth Rock. And when "fulfilled manifest destiny" reached the California coast, there were churches there where people went on Sunday...and chattel slavery had been banned for two hundred years.
If instead you need to know Spanish, or don't need to know any one specific langauge, it challenges or changes the power structure and is thus political.
Science would collapse and politics would reign supreme.
https://hn.algolia.com/?q=non%2Denglish%20programming%20lang...
* there's already an immense body of scientific work written in languages like Chinese and French that the English-speaking world lacks access to,
* the main goal of this language is clearly not for international collaboration or anything like that,
* not everything non-English is "political", and
* sometimes people just want to teach kids programming without having to teach them words in an unfamilar language, too,
your comment comes across as thoroughly nonsensical.
The Python community is not committed to multi-language documentation. And it has the ideology of "unpythonic" as an excuse for denigrating anyone who might be.
“List comprehension” is English. “Object” is English. “Keywords” too. As well as “benevolent dictator for life.”
Python doesn’t embrace non-English efforts. That’s the nature of it as a community...not encouraging second ways of doing things is its dogma.
Yes, you're still talking to the same person. But your comment is even more confusing. Are you arguing that "list comprehensions" are part of the language because we have a nice pairing of English words for that thing and that core programming concepts are missing because we don't have English words for them? It seems like an absurd stance, especially because we're talking about Spanish where it's basically a meme to add "a" or "o" to the end of the English word. Almost all programming concepts are words that I'd never use in daily conversation. Again, my root argument is that if you want to serve the Spanish community, forking the <any established language> project and translating everything seems like more payoff for less effort than creating a brand new language. It doesn't really matter what the original community thinks.
As an educator, specifically to South Americans learning programming and data science, the biggest hurdle I encounter is understanding concepts not that the words are in English. Logistic regression, L1 regularization, OLS, for loop, Simpson's paradox, none of the hard parts in teaching those are the fact they contain English words.
Then, a bunch of the keywords in the programming language itself don’t make a lot of sense - “for” maps to “desde”, not “para” - so I have to remember an arbitrary term that doesn’t do what it means or mean what it does. At that point I might as well learn “for”, right?
Remembering that “si” is “if” doesn’t seem like a huge burden. The fact that “si” in Spanish is used as both a conditional and affirmative (“yes”) can actually lead to more confusion and ambiguity.
Overall it doesn’t feel like a very well-designed language nor does it feel natural as a Spanish speaker which defeats the point.
> El desarrollo y administración del lenguaje Latino para que escuelas, universidades, maestros, estudiantes y profesionales encuentre en Latino una herramienta para resolver los problemas del día a día.
The development and administration of the Latino language so that schools, universities, teachers, students, and professionals find a tool to solve day to day problems.
It seems to be targeting teaching and learning as well as some simple business use. Interesting idea, I wonder if it will catch on.
I know some early versions of BASIC would save your source in a "tokenized" format, i.e. instead of literally storing "PRINT $FOO" they would store some bytecode that represented PRINT instead. One could possibly implement a polyglot programming language using a similar mechanism, and translate localized versions of keywords into (human) language-independent bytecodes. You'd have to pick one human language to be the canonical representation though, or have some sort of language declaration at the beginning of the file, or commit to having the canonical representation of your source code not be plain text - all of which seem suboptimal for different reasons. It also seems like it would be tough to extend that approach to code outside the standard library of the theoretical polyglot language.
So if there were a huge demand for this kind of thing, we'd probably see a lot of it.
There are other professions which require the use of foreign terminology: lawyers use Latin, doctors use Greek & Latin, chefs use French. Sure, it makes things a little difficult at first, but it's probably not any more difficult than learning technical jargon in you native tongue. In fact, in some ways, it might be easier because the literal translation of "echo" might not actually make much sense to a Japanese speaker in the context of programming, whereas, with English you can teach a Japanese student that "echo" means to put characters on the screen.
I remember reading about an effort Britain had to make the law more "accessible" by using English instead of Latin, and it just made things more difficult because instead of seeing words you had no idea the meaning of, now one knew what the statement said, but it would mean something completely different than they would expect.
I'm stretching it here, but assembly would tick all boxes here.
For example: I read r/IWantOut, as well as some CS career-related subs, and I myself am an American coder in Germany. Based on my own experience, as well as my reading and hearing from others, programming is probably the best overall career choice if you want the option of living in various different countries, in terms of how accessible it is as well as having decent pay. A big part of that accessibility is English, that you can find a significant number of jobs in many countries that don't require you to already know the local language.
Excel also supports localized formulas and cell references.
HyperCard also supported localized versions of HyperTalk, but I think only a French sample localization was ever provided.
principal
inicio
entero x, y;
leer (x);
leer (y);
si (x > 0) entonces
si (y > 0) entonces
imprimir (1);
is
si (y == 0) entonces
imprimir (0);
is
si (y < 0) entonces
imprimir (2);
is
is
si (x == 0) entonces
imprimir (0);
is
si (x < 0) entonces
si (y > 0) entonces
imprimir (4);
is
si (y == 0) entonces
imprimir (0);
is
si (y < 0) entonces
imprimir (3);
is
is
finComo un ejercisio tecnico, les aplaudo. Pero no es un `Lisp`, y asi, no es para mi
The tricky thing about this, is we search based on language all the time. It's harder to search for an operator if you don't already know what that operator is called.
Maybe you could build this into the tooling of the symbolic language? E.g. provide a semantic name for a given std lib function in your chosen language, and get intellisense in your language.
Tienes razon que hay aplicación en el sistema de educación. Pero mi respuesta es esta: no sería mas eficiente hacer un tutorial de las palabras ingleses, y luego usar nombres españoles para las variables y funciones?
Fuera de tema: He leido HN los últimos tres años y creo que es el primer comentario en español que he visto. Solo dato curioso.
No debería ser requisito riguroso hablar inglés para poder participar en la creación de software. Y no lo es, en general, salvo por algunas palabras clave en lenguajes de programación. Si es posible reducir esta barrera... ¿por qué no?
La gente habla de que esto fragmentará más a la comunidad. Fragmentados ya estamos. Hay mucha gente que no puede entender con facilidad las respuestas en Stack Overflow. Si fomentamos y propiciamos más el uso de otros idiomas, seguramente podríamos acercarnos más a mucha más gente que podría ser nuestros futuros colaboradores.
> Pero los novatos y aprendices que nunca han programado y que no hablan inglés, quizás podrían aprender mejor con un lenguaje en su idioma.
Es mi opiñon que el pueblo (hispanohablante) que esten aprendiendo la programacion traslape mucho con el pueblo que por lo menos conoce un poco de ingles. Asi, las palabras comunes como `print`, `if`, y `return` son muy faciles aprender.
Yo estoy de acuerdo con tus comentarios sobre la fragmentacion; el problema que tengo yo con este idea de lenguajes de programacion en otras lenguas es que el vocabulario no es interoperable. Si una persona empieza aqui, está empezando con una desventaja. Está condenada a usar esta lenguaje - que quizás no sirve para la aplicacion deseada.
Con todo esto, quiero decir que es una victoria cada novato que empieze aprender la programacion. Solo que el lenguaje en español puede ser una trampa - ya dijiste tú en cómo: por ejemplo, no se puede comunicar en StackOverflow para buscar ayuda.
Mucho gusto comunicarme contigo, el español es una de mis lenguas pero no es la primaria. Saludos
Para reducir esta barrera la mejor y más fácil solución es aprender inglés. En la programación normalmente hay que aprender muchos lenguajes, diría que aprender otro idioma (lenguaje natural) no es tan diferente y el haber tenido que hacerlo nos hace mejores programadores.
Por otro lado, no creo que esté mal aprender a programar usando lenguajes que luego no vayas a usar; así que si Latino sí facilita el aprendizaje para hispanohablantes, en comparación a otros lenguajes usados en la educación (Java, Python, JS), pero que están en inglés, diría que no es un mal proyecto.
Pero si por mí fuera, hubiera preferido aprender a programar, no con un lenguaje en español, sino con un Lisp (Scheme o Racket).
Hace rato estaba leyendo sobre https://en.wikipedia.org/wiki/William_Tyndale y su traducción de la Biblia del latín al inglés. Supongo que en ese caso, fue más fácil (digo fácil, pero spoiler alert lo mataron) traducir la Biblia que hacer que toda la población inglesa aprendiera latín. Lo menciono porque pensé: «he aquí un caso en el que traducir fue la mejor opción». Y eso que ambos idiomas tienen el mismo alfabeto.
Supongo que sí puede ser una barrera, hasta cierto punto, que las palabras clave no estén en tu lengua natal, pero un mayor problema es que los recursos de aprendizaje suelen ser ininteligibles si no sabes —y a veces aun sabiendo— inglés.
For instance, you can see this in north-american films, where the mexicans are hired to play Brazilians, where we (brazilians) can spot right-away they dont look like any type of average looking brazilian. But im pretty sure it make sense for the crew of the film and people watching it, even when they speak spanish.
Just to give you a glimpse of famous brazilians north-americans may know: Rodrigo Santoro, Morena Bacarin, Alice Braga, Gisele Bundchen, Alessandra Ambrosio, Jordana Brewster, Camilla Belle, Kaya Scodelario, Wagner Moura.
The thing is, i've just give you this sample, so you can see how they don't have any resemblance between each other or homogeneous look. The ones that speak perfect english can perfectly act in roles not meant for "latinos" and nobody notice it.
I think nowadays is right to use this term in the same sense as you use for Europe to define France or Italy as part of Europe. Albeit is even wrong to use in the sense of a continent giving America is just one continent, with north and south.
Anyway if you dig down and look to all the inconsistencies of the term it boils down to some sort of racial profiling thing, because it makes no sense in any other way you look at it except for labeling it as "not white".
> Albeit is even wrong to use in the sense of a continent giving America is just one continent, with north and south.
To make matters even worse, we're taught in school is that North America is a distinct continent by itself, as is South America, and that there is no continent named "America". This leads some North American "patriots" to get upset at the idea of a single continent, hence the insistence that the word "America" and "Americans" only refer to the USA.
I say this because here we have this too, as in any other part in the world, the only difference is that the targets are others.
Remember the obsession of those folks to measure and document people turning this into some sort of science where you could classify people objectively giving some properties drawing hard lines that would not be crossed. Once they defined what was the superior type it would be a matter of marginalize and eliminate the weaker to achieve the super race.
We all still do this here and there, but is much more organic, subtle and disguised as something else.
Anyway is funny to think that in US (and Brazil), the last wave of immigrants arriving were considered the low people and only with subsequent waves of immigrants the old "dirty ones" got some sort of social upgrade.
As irish in the US were marginalized and later the jews, polish and italians replace them as people with less value.
Here for instance, japaneses and italians were treated pretty badly in the beginning of the 20th century. (It was even worse for black people).
Its funny to see how people don't learn with history. There's no nobility by birth, at most it was the parents passing education and culture to their children. Leave a human alone in the forest and if he manage to survive it will behave like an animal.
I've lived in both countries (US and Brazil) and another comparison I've heard made is between internal immigrants in Brazil such as from the Northeast, and Hispanic immigrants in the US (some internal, some external). A lot of it is economic. As an example, very similar economic & climate pressures that caused Northeasterners of Brazil to journey to SP, RJ, etc, caused many farmers in the dry lands of northern Mexico to move north (and seek jobs in the US as nannies & housekeepers, construction, large farms with horrible labor practices, etc).
One huge difference is language. I know many Brazilians I've chatted with were surprised to learn that ~15% of the US speaks Spanish. The US is very much a linguistically-segregated country, as much of it was once ruled by the Spanish Empire or successor states, and thus regions of it have never traditionally spoken English (and still don't). Puerto Rico of course is entirely Spanish-speaking and always has been, and areas of different states are majority Spanish-speaking, and most cities in the US have at least one or two neighborhoods that are primarily Spanish.
First, "latin" generally means romance language, i.e., languages descended from latin, including French, Italian, Romanian, Portuguese, Catalan, and so on. Using this word to refer exclusively to Spanish makes sense only from the point of view of the USA, where the largest group of latin people are Spanish speakers. Thus, imposing this usage in an international context reeks of U.S. cultural imperialism.
Second, "latin america" was originally defined by the French in opposition to "anglo america", to designate specifically Québec, part of Louisiana, Mexico, etc; the areas of the Americas where latin languages are spoken. This excludes large swaths of the americas in Bolivia, Peru, Brasil, Mexico, where other languages are spoken (Guarani, Aymara, etc).
I consider latin or latino myself, but I wouldn't touch this US-assumption-infested "Latino Programming Language" with a ten foot pole.
Edit: Food for thought regarding reserved keywords...
[0] https://en.wikipedia.org/wiki/Non-English-based_programming_...
It does seem like it should be trivial for every programming language to have a localization file for keywords to be rendered in a local version on the user's machine. Though then you still have to deal with variables and comments.
No, the real problem is the reading material. If you need to debug/read doc/google stuff, anything worth something (except a few exceptions like samemax.com and so on) will be in English.
I've seen French professionals being perfectly capable programmers, but because their English sucked, their struggled to solve some problems that were a Stackoverflow post away.
https://en.wikipedia.org/wiki/Easy_Programming_Language is a terse page explaining it but I guess any actual document would be in Chinese.
From my understanding this language is very popular in amount people writing game cheating tools and other malware. https://manalyzer.org/report/03b2253bcbb611502eba5b43df3e1dc... is one such example.
EDIT: Example EPL code https://gitee.com/yyman001/RightHand/raw/master/%E5%8F%B3%E9... presumably this is in GKB encoding so it's mostly garbage characters.
EDIT: https://www.hexacorn.com/blog/2019/02/13/pe-files-and-the-ea... someone wrote reverse engineering an EPL executable.
Wasn't a bad language btw. Support for pretty large numbers (up to 2^1016) out of the box, for example. Flexible data types (e.g. sets, tuples, structures, etc.). Optional typing. Not too bad for early 80s.
As a non native speaker, I have seen my friends struggle with english in grad school when they were taught math and science in their native tongue. This is a different programming language not just python with spanish variables. Translating to english and then having to translate the code later on, is going to be a huge barrier.
* PSeInt (http://pseint.sourceforge.net/)
* Pauscal (http://www.pauscal.com.ar/
* IIRC, Logo has some Spanish interpreters
I’ll have to say I prefer the idea of educational site that explains and talks about the idea of programming and what not.
I started coding when I was a kid of 12 and certainly not (yet) good at English. If anything, my computer hobby helped me pick up more English just by the way, than I would have without it at that age.
English keywords in languages aren't an impediment.
The impediment to learning programming is the conceptual load of what the keyword means, not the language. You're already learning a new language with new "words" (e.g. BASIC), what does it matter if it's LOAD or CARGAR, RUN or EJECUTAR, PRINT or IMPRIMIR?
The real impediment for Spanish-speakers learning programming is that the vast majority of articles on cutting-edge tech are written in English. This is changing, but back when I started about 99% of articles/manuals were written in English. It only helped me learn English faster, though. (Videogames -- text adventures and the like -- were the other motivation).
People forget that there is the English internet, which is wholly different than the other languages.
The idea of a lingua franca in science and business is a net positive to be able to unify and communicate effectively. If anything we need to teach this idea better.
How do you tell someone they are in a smaller fish tank than they currently perceive?
Not just that, but given that many inventions and concepts are American (mostly), they have to use “retornar” instead of “return”. Again, not a big leap even for a young kid in Buenos Aires.
Good luck searching for online documentation and StackOverflow answers in your new bespoke language. You'll probably need an interpreter that translates your search queries back into the base language syntax.
The keywords would display in different languages.
That said, why can't other languages be internationalized, maybe in the editor?
I think it would be fun to program in spanish.
siesta(5);- Typos: "cabezera", "al rededor", lots of tildes missing in general
- Google "translade" [sic] allowed - Why even ask for translators in the first place then?
- Filler text still present ("esto de prueba")
English is the world most used programming language, just learn it. Or perish.
https://en.wikipedia.org/wiki/Non-English-based_programming_...
A lot of these start as passion projects by native speakers and don't gain much traction. Actually, here's one that was posted just over the weekend, so maybe didn't get a lot of attention: https://news.ycombinator.com/item?id=26771369
It always just seemed a bit weird to me, there are more native Spanish speakers then English speakers...why has English become the lingua-franca for a base of programming languages? Is it as simple as "Apple, IBM, and Microsoft started in the US"?
But it's hard to say, there are a lot of cultural elements at play. We see one right here in this very language that is trying to escape the English domain -- it doesn't have support for character accents native to the language it's trying to support. This limitation probably derives from the days when bytes were highly expensive, so character encodings had to be frugal with their use of memory. With one byte you can encode enough characters for the English alphabet, numbers, symbols, and control characters, but you're not going to have enough for all the combinations of accents. Just look at what went into the extended ASCII table: they made room for some common accented characters from western nations, but also allocated precious space for copyrights, trademarks, fractions, legal symbols, more mathematical operators, and currency symbols of the largest nations. More than a purely technical decision, this is a statement of priorities.
Again you see programming-as-math/science playing a role here; character encodings for mathematical symbols were given priority, but characters that could be used for communicating in other languages were disregarded. This is likely because the kinds of applications people were looking to use programming languages for were based in math/science, so those symbols were viewed as indispensable. I'm not saying this was wrong, btw, I'm just saying that's the way these things evolved.
This very early (circa 1960) decision still has rippling consequences even today, so it's clear momentum of early choices in computing plays a large role here.
When you use a non latin keyboard I guess having a language matching your keyboard might be more important.
I know it's a dick move, but I stand by it. :p
As long as you don't support COBOL, it should be pretty straightforward.
Edit: Maybe not so straightforward!
Otherwise, you'll run into issues when someone is using Language X but has identifiers that happen to coincide with Language Y's keywords. You wouldn't want to error out here, and you don't want Language X writers to be forced to be aware of the many hundreds of extra keywords that are now required knowledge to avoid collisions and permit universal translation.
For instance, in a programming language which uses `and` as a keyword in English for the logical operation, this would be translated into Spanish as `y`. Well, in graphical applications `y` is a perfectly natural variable name for the English speaker (and probably the Spanish speaker, but their dialect of the language wouldn't permit it). Now the English program can't be translated properly into Spanish unless the syntax is such that variables and keywords are always unambiguous so that this can be legal in the Spanish version:
y < 0 y x > 10
y < 0 and x > 10
Of course, switching to a language which prefers symbols over keywords would help to minimize this issue (as in C where `and` is not a keyword, in contrast with Ada where `and` is a keyword).https://github.com/lenguaje-latino/latino/tree/master/ejempl...
Well, yeah....
I learned programming with such a "localized" version of simplified FORTRAN, but I didn't find it intuitive or conducive to learning how to program. Later, I read a study (can't cite it; lost the details) that found interference from programming language keywords in English speakers, but not in others, and they suggested it might actually be easier to learn programming with English keywords.
If you're a German company that wants to also be able to hire coders from France and Italy and Romania, requiring German proficiency is going to drastically cut down the potential international labor pool you can draw on. And that's for one of the biggest European languages -- imagine what the calculus is if you're a company in Denmark or Slovenia.
Plus, let's say you start with the local language, but then your company gets big. At some point, you may want to open up offices in other countries...but what do you do then? Have German source code from your German devs, and French source code from your French devs?
Latin America, for example, isn’t the same.
As an aside: I guess the fact that k only uses symbols makes it a very inclusive language :)
When I was a kid I played a Captain Tsubasa NES game that was completely in japanese. I have no idea of the meaning of the Kanji characters I choose but I know pretty well what I was doing in short time. I could play the game through trial and error. So no, you don't need to know actual english to code.
Now, you and me were invested. We want to code and we were willing to learn how to code even without knowing what was the meaning of the english words we use. Just like the way I played that game. A lot of people is learning how to code like they learn basic math. They are not invested. They know is useful however didn't want to learn it. This tool is good for them.
I still don't like the name and also don't like they don't allow tildes and ñ. I also think scratch.mit.edu is a better tool for people starting to learn how to code.
It wasn't clear from the website.
Localized keywords don't translate well to a later experience with programming languages at large.