I'm one of the initial contributors to the language and went too far with a self-interpreter for Aheui [1] recently. This one is quite old, we have actually had the 10th anniversary event [2] in 2015 (with more than 30 participants)! It surely is a kind of Brainfuck [3] for Koreans.
"about 2.6 billion people (36% of the world population) use the Latin alphabet, about 1.3 billion people (18%) use the Chinese script, about 1 billion people (14%) use the Devanagari script (India)"[1]
It'll be interesting to see how the Latin alphabet preference in computer languages changes over time. I'm sure whole different paradigms may be possible in different scripts.
And people complain about the differences between java and python now... Imagine python vs Aheui or similar lol
I'm skeptical that programming languages in other scripts would "discover" new programming paradigms inaccessible to languages written with the latin alphabet. Programming languages hardly follow any rules of english grammar, despite most of them being in English.
I'm also skeptical. The "strong" claims of Whorfianism, that testable things like color perception depend on ones language, have mostly been falsified. I see no reason why programming of computers would be different.
Are some languages structured such that it's easier for its native speakers are better at certain programming tasks? Sure, that's plausible. I can imagine that e.g. German programmers would be better at keeping two-page goto-riddled DO loops in their heads. But would Spanish programmers find it impossible? Hardly.
>I'm also skeptical. The "strong" claims of Whorfianism, that testable things like color perception depend on ones language, have mostly been falsified.
That's not entirely settled, but even so, those to me are the least interesting (and least expected to be true) aspects of Whorfianism. The social aspects of language influence are much more interesting.
That said, I don't see programming languages in other, err, languages discovering any novel ways of programming. That's mostly because in the end they always should just translate to the underlying CPU model and CS concepts, and those are math, they don't change culturally.
> The social aspects of language influence are much more interesting.
Sure, but it's pretty much impossible to make a falsifiable hypothesis in this area that can actually be (ethically) tested. Like, how do you separate the effect of having Japanese as your primary language from the effect of growing up in a Japanese culture (whether actually in Japan or not)?
> [CS concepts] are math, they don't change culturally
>Like, how do you separate the effect of having Japanese as your primary language from the effect of growing up in a Japanese culture (whether actually in Japan or not)?
I guess by using people from bilingual societies, who speak one or the other language within the same culture.
For the case of Aheui, it is essentially a Hangul-branded version of Befunge [1] (or if you are interested in the history of esolangs, it is actually more like Orthogonal [2] but Aheui didn't really derive from it). Besides from the fact that Aheui's usage of Hangul is novel, I wouldn't consider it a fundamental paradigm shift.
You can swap the latin characters for other symbols, but I'm not sure how it will fundamentally change anything. Advances come from thinking of how to formulate abstract concepts differently, like procedural vs. functional programming. The letters themselves are just part of the specification.
Perhaps people whose language is radically different from romance languages will approach programming differently because of that, and invent something new.
It won't change because of tremendous legacy inertia. Everything from assembly to scripting languages are in Latin-English. All kernels are Latin-English. CS is taught around the globe as a 100% English major usually. Our first humanoid AI will almost certainly think in 'English' and speak English.
The language of science has shifted before; I don't think it's reasonable to assume it won't again.
Then again, English might stay around as a, well, legacy language. I could imagine someone a few hundred years from now studying archaic english, in preparation for a dive into the kernel or whatever. Then again, computer translation will probably have gotten good enough that it won't be necessary.
The language of science has shifted before; I don't think it's reasonable to assume it won't again.
The language of diplomacy used to be french. Some of the cultural remnants of this still remain today, even though the role that french used to play is now played by english. If it were to happen how long would it take for english to lose favor as a language of computers?
I have tried to explain to my non-technical friends how strange it is that computer programming language == english proficiency (usually) - because it seems like the large majority of discussion around programming and computers happens in english (open source communities, bug reports, documentation) - I wonder how that will work as the field of computers matures into it's 1st and 2nd centuries- how much and to what level will programming and programming languages fragment? What kinds of things will remain in english/latin and what will transition- what kinds of programming related things will only be in chinese or devanagari (india) script?
Even the act of typing is predicated to the idea of a latin alphabet, I wonder to what degree the languages will continue to change to adapt to that and to what degree the technology will adapt to compensate for the language.
Once you start thinking (as a native english speaker) how much of the world of computers is naturally biased towards latin/english it kind of blows your mind.
Thing is, switching the "world language" becomes a more expensive endeavor as more content exists in it, and more speakers understand it. Last time that happened - when French was replaced by English - the numbers were very different. Sure, many educated people spoke French, but nowhere near as many as there are English speakers today, even in proportion to world's population. And it was not nearly as dominant for content: science was mostly done in national languages, and so were books.
Two things changed the landscape a lot. First, universal school education, which in most countries includes at least some rudimentary English, vastly expanded the number of people proficient with it to some extent. And second, the amount of cultural and scientific interchange has skyrocketed, with both effectively standardizing on English as the common language.
So, short of some kind of near-extinction event that would unwind our progress a couple hundred years back, I don't see a high likelihood for change. It seems that we're in the beginning of the "common language" era, and English - or whatever it evolves into over time, anyway - is going to be that language.
Honestly, I doubt that it will, barring some civilization-scale catastrophe that resets global progress. I'm not being hyperbolic. As the world has shrunk, and intercommunication has increased, the benefits of being able to access the dominant languages have increased dramatically, and part of that process is fixing what is dominant.
English already has the unique distinction of having more ESL speakers than native ones, and has become the lingua franca of world commerce.
(And let's pause for a minute to enjoy the incorporation of the phrase 'lingua franca' in to the English corpus, too. I do love how English is completely shameless about taking whatever it wants from other languages to add to itself.)
>(And let's pause for a minute to enjoy the incorporation of the phrase 'lingua franca' in to the English corpus, too. I do love how English is completely shameless about taking whatever it wants from other languages to add to itself.)
The problem with defending the purity of the English language is that English is about as pure as a cribhouse whore. We don't just borrow words; on occasion, English has pursued other languages down alleyways to beat them unconscious and riffle their pockets for new vocabulary.
In general natural languages are horrible but nevertheless working messes. They always change and each language is subtly different from each others, if not massively different.
For example: Korean verb conjugations are massive [1] mainly because conjugations themselves are morphemes (or semi-words, if you don't know what it is) and not mutations or transformations thus the set of conjugations is essentially open. Native Korean speakers can probably easily list hundreds of different conjugations with different meanings.
My seat-of-the-pants take (which I could qualify linguistically, but I think it's fine to posit these concepts colloquially in this context) on this: Most successful human languages provide a similar complexity space within which to express oneself richly.
You need to be able to communicate mood, underrun expectations, frame or defy relationships ... in English, much of this is done by choice of words (especially adjectives and verbs) and word arrangement. In Korean, instead, while there's a giant repertoire of nouns, sentiment and relationships are more often injected via choice of grammar form and word choice is rather more straight-forward.
For example, Westerners make much of Korean's various speech levels ("politeness") which need to be used correctly depending on age or standing of addressor and addressee, and mostly (but not solely) take the shape of different verb endings. But of course English has a complex register system as well - but it's done via word choice and arrangement instead. It's the difference between "I'm sorry, I'm not able to help" and "F*ck off". In Korean, you can conceivably scale this difference by leaving off a word ending aimed at the wrong person combined with body language.
It's this difference - human interaction and the nature of eloquence remain the same in their essence, but the tools of expression have different mechanics - that's fascinating.
In many languages conjugations are defined by the fixed template (the template itself can be large). In Korean, Japanese and other agglutinative languages the template is virtually non-existent (Wikipedia seems to give a 7-part template [1] which looks quite absurd for native Koreans---it should be considered a "common" regularizable subset of what people actually say).
eh.... haber isn't really "to be" at all. "to be" is pretty well covered by estar and ser. The only case for haber to translate to "to be" is existential, and pretty much only conjugated in the third person when used that way. Otherwise it's just an auxiliary verb, where its usage parallels "to have" in english (but not indicating possession, which is tener). It's basically just a glue verb.
I thought that the Hangul characters were always written in a group of three, but they're actually grouped by syllables. Neat!
It's also fascinating how similar sounds are represented by similar characters.
Those blocks also quite often map to morphemes, so the grouping isn't just syllabic but also retains higher-level morphological information. The orthography prefers letter distributions over groups that keep the same morpheme spelled the same way across use in different words. This promotes morpheme re-use, which is great for context learning.
Letter shapes are featural rather than arbitrary, e.g. a consonant might visualize the tongue position used to make its sound. And yep letters graphically build on each other (normal to iotized vowels and normal to aspirated consonants are all formed the same way, respectively, by adding a stroke).
Hangul is a masterstroke of human cultural achievement. Had a lot to do with me emigrating to Korea! I agree with you that there's a lot of geeky audience appeal to it (including even its origin story of a bunch of smart people applying state of the art knowledge of the day to enable others by freely disseminating it).
Yep. A Korean friend taught me the alphabet in high school and without any practice I can still remember it and slowly (slowly!) pronounce Korean writing today — it's nice and straightforward.
If our field had settled on miminal syntaxes - such as the styles used by Forth, Lisp or even Smalltalk - it would be trivial to make programming languages for an audience that can't read or write English.
This is cool but I feel like it would have been even more awesome if it actually used korean language as keywords (which would have made the code actually readable and usable) instead of just mixing together characters.
I realize this is just for fun but I hope someone builds a completely functional language written in their own language. That would be really cool to see where that goes. That would be not just a technological innovation but interesting socially.
What makes it "esoteric"? It doesn't seem esoteric to want to program in your own language. I'm not saying it's not esoteric, I'm just curious what makes it so.
I've strongly considered writing a Spanish-based programming language--Spanish is spoken by more people than English, and Spanish is a first language a larger percentage of Spanish speakers, while for many English speakers it is their second language. It seems like a Spanish-based programming language could reduce cognitive barriers to entry to programming for a large portion of the world. Of course, if the tool chain isn't up to par it will eventually hold users back, but it's at least worth investigating.
I don't name my variables using Spanish and I wouldn't want to use a programming language where the keywords are Spanish-based. Spanish is a verbose, complicated language, which is why I think it's a poor fit for the task of programming. I surely prefer to use "userName" over "nombreDeUsuario", "database" over "baseDeDatos", "languageSelector" over "seleccionadorDeIdioma", "propertyToggle" over "conmutadorDePropiedad", and "wrapper" over..."envolvedor", I guess?
It gets worse with actions: "buttonClick" may, depending on who you ask, become one of these: "clickEnBotón", "clickEnBoton", "clickBoton", "botonClick"... (there isn't an obviously sensible choice, since all of them have their faults: 1 is tedious and long, 2 is slightly easier to type but incorrect, number 3 is incorrect Spanish, number 4 tries to mimic English and is thus incorrect too); "pageNavigationStarted" would be something like "navegaciónPáginaComenzó", which is long and incorrect according to this language (proper version would be "navegaciónEnPáginaComenzó", even longer).
You can't make verbs so easily, in English you can make a verb from any substantive, you can't do that as easily in Spanish.
In Spanish you have to use "filtrar", "filtra" and "filtro" (to filter, filter, filter), and to express "filterStarted" you'd have to choose between "filtradoComenzó", "filtradoComenzo", "filtroComenzó", "filtroComenzo", "filtrarComenzo", "filtrarComenzó".
> "buttonClick" may, depending on who you ask, become one of these: "clickEnBotón", "clickEnBoton", "clickBoton", "botonClick"...
Technically, `clic` is a noun in Spanish, not a verb, so, if you are talking about an action, the correct name for the variable would be `hacerClickEnBotón`.
At the same time, although more verbose, it would be interesting to see how a language in Spanish would work, once sensible conventions are set.
As a person who loves thinking about names, in your filter example I see that, just by changing one letter, one can be more precise in the exact meaning of the variable or method name.
Anyway, I am not saying that people should use Spanish when programming. Having English as the common language for our profession is a great advantage.
Pretty much everything you have said applies to Russian, as well. And, in my experience, most Russian coders (myself included) use English consistently for their identifiers etc.
English is really good as a language for code, because it is a (mostly) analytic language rather than a synthetic one. Indeed, it's the places where it is inflected that usually cause trouble, like singular/plural distinctions (think about how ActiveRecord handles this in mapping class names to tables).
Is there any reason you couldn't simply make a Spanish language by taking a well-established English one, e.g. Java, and simply translating the keywords individually using a syntax-aware translator? This transpilation approach is used by lots of esoteric programming languages, and since you wouldn't even be changing the syntax, this would be simpler than most.
I suspect the reason this hasn't caught on is that there just aren't that many keywords to learn, and that paying the ongoing tax of having to translate every code example on the web is worse than the one-time cost of just learning the keywords in English. This is for "real" programming use cases anyway; it might be a different consideration for educational languages.
> reduce cognitive barriers to entry to programming for a large portion of the world
Not really, consider most of the established code/programming materials is in English. Learning programming is far more than learning the syntax of one language.
English is much bigger than the population of its native speakers. Frankly speaking, if a project is not presented in English on github, I won't take it too seriously.
Looking at the github repository there is nothing fundamentally earth shuttering here. It is mostly the normal way of interpreters/compilers representing everything with number codes and then mapping to characters.
For example:
case 0: //ㄱ
case 1: //ㄲ
case 11: //ㅇ
case 13: //ㅉ
case 15: //ㅋ
If one goes back a good three decades plus and studies the source of Knuth's TeX, everything was represented by numbers and then all strings, even error messages resided in a TeX.Pool file.
It would be interesting to see a programming language based on Hungarian or Finnish. With myriads of suffices which change the ways verbs apply to nouns, it'd be quite a challenge to program in it for anyone not familiar with agglutinative languages :)
Similar, but not quite the same if you learned Korean more than 20 years ago. Evidently younger Koreans do not distinguish much between the two sounds.[1]
Even if these letters represented the exact same sound, Hangul would still be an alphabetic system, wouldn't it? There are plenty of combinations of glyphs which map to the same sounds in English, e.g. "ay" in "play" and "eigh" in "sleigh" or "weigh". (Although if you're making a point about only the second part of the quote — "each symbol represents separate phoneme" — then I apologize.)
I think the author was trying to distinguish between Hangul and, say, written Chinese or Japanese Kanji which are logographic. I've known lots of people in the US who assume the Korean written language functions similarly because "all Asian languages are like that".
> However, even before their first birthdays, babies begin to lose the ability to hear the distinctions among phonemes in languages other than their own.
I like the idea of using non-latin programming languages for latin based programs, you have a clearer picture of what is data and what is code. assuming you can differentiate the non-latin characters.
this isn't esoteric at all. We are discriminating against Korea when we do not accommodate their alphabet.
China and Japan obviously have to accommodate themselves as there is no possibility of having one key for each Kanji (or Chinese character). There was a nice documentary showing arcane Chinese characters or different descendants of the same Chinese characters.
Does this encode the font or merely the character (as an entity)?
As mentioned in sibling threads, it is esoteric in terms of programming languages. It's in the same page as Brainfuck and Befunge and the name "esoteric programming language" is well-established [1].
Huh? It's very easy to input Han Characters on modern systems. Most people type it a phonetic alphabet (eg, romanizations like Hanyu Pinyin, or indigenous phonetic alphabets like Zhuyin) and a little program pops up, giving you a list of matching characters, and you select them. Googles ones are very good (they even know regional varions in mandarin pronunciation).
It's entirely conceivable for a programming language to be made with Han Characters - because it's a solved problem to input Han Characters on keyboards.
Or Have I missed the point of what you wrote entirely?
[1] https://github.com/aheui/aheui.aheui/
[2] https://aheui.github.io/aheuicon
[3] I'm of course referring to https://esolangs.org/wiki/Brainfuck