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.
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.
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.
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 :(
(Of course this doesn't apply to learners, I don't know about that.)
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.
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.
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.
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...)
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.
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.
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.
Then I see no issue translating from this to an "english" programming language, so there would be no extra layer of mental translation.
Windows error messages and the command line on Linux are particularly big offenders here.
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.
Presumably the use of Greek letters in traditional mathematics doesn't present an insurmountable barrier to non-Greek speakers.
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.
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.
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_...
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.htmlComo un ejercisio tecnico, les aplaudo. Pero no es un `Lisp`, y asi, no es para mi
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.
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).
> 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
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.
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.
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.
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.
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).
* 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.
Science would collapse and politics would reign supreme.
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.
https://hn.algolia.com/?q=non%2Denglish%20programming%20lang...
I’ll have to say I prefer the idea of educational site that explains and talks about the idea of programming and what not.
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).
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.
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.
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.
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.
I'm stretching it here, but assembly would tick all boxes here.
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.
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.
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"?
When you use a non latin keyboard I guess having a language matching your keyboard might be more important.
https://github.com/lenguaje-latino/latino/tree/master/ejempl...
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.
Well, yeah....
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).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.
Localized keywords don't translate well to a later experience with programming languages at large.
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.
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.
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.
- 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")
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.
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
finEdit: Food for thought regarding reserved keywords...
[0] https://en.wikipedia.org/wiki/Non-English-based_programming_...
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.
* PSeInt (http://pseint.sourceforge.net/)
* Pauscal (http://www.pauscal.com.ar/
* IIRC, Logo has some Spanish interpreters
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);English is the world most used programming language, just learn it. Or perish.
I know it's a dick move, but I stand by it. :p
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.