By the way, there's one Cyrillic programming language still in wide use today. It's part of 1С (1S), an ERP system that's absolutely everywhere in Russia.
The language itself is quite similar to Visual Basic. It's awkward to write with a regular Russian keyboard layout, but I was told that there exist special layouts just for it.
This Soviet project developed two Russian-language PLs: Robic[1] and Rapira[2]. Robic was similar to Logo, but unlike Logo, which had only one actor - a turtle, Robik had several: a Train, an Ant, a Painter, and so on
Rapira was more like SETL + Python. It was a dynamic interpreted PL with a rich set of compound data types, such as sets, records (associative arrays), and so on. Compared to the contemporary BASIC, it was ADVANCED
Like Logo, Robik was used to teach programming to kindergarthen-age children, while Rapira was aimed at high school students
In my school we had a Logo-like PL where you controlled a kangaroo and a more complex one where you сontrolled a robot arm with an internal stack that worked on a rectangular array of items. I remember the robot blowing up when you triggered a logical error like going out of bounds or a stack over/underflow.
I wish the Soviets had focused more on developing an independent computer industry and their own distinct flavors of programming languages.
Imagine the thrill of studying languages built to run on completely separate hardware architectures, featuring entirely novel paradigms and structures.
This would be the closest thing to experience reverse-engineering a computer from an alien spaceship.
In the West, while the military industry initially pushed computer development, private companies quickly adapted those technologies for the consumer market. Over time, the Western consumer market became vastly larger than the military one.
In the USSR, this cross-pollination wasn't possible because anything that even touched the military was immediately classified as a state secret. This obsession with secrecy even affected civilian infrastructure like nuclear power plants. Plant operators weren't fully trained on how the systems worked under extreme conditions, and they were kept completely in the dark about inherent design flaws—because in the Soviet system, everything was by definition perfect and superior to the West.
Furthermore, because the consumer market was strictly controlled by the government and the party, the Soviet economy lacked any organic market signals regarding what people actually wanted or needed. Apparatchiks had to look elsewhere for data, so they resorted to copying Western solutions—sometimes just copying the basic concept (like a radio where users could choose their own stations), and sometimes cloning the entire machine.
While Soviet scientists had some highly innovative and interesting ideas in the beginning, central planners eventually decided it was faster and easier to copy a Western solution that was already 5, 10, or 15 years ahead in mass production.
USSR just wasn't rich enough to afford experimentation and innovation. Resources (including human brain power) were quite limited. So they had to copy proven solutions. Simple as that.
It's easy to judge them in the retrospective. But they had to make decisions, using the information the had at the moment, weighing risks as they saw them at that moment.
The first is corruption. When the Iron Curtain fell, every country behind it suffered from corruption. The Russian word for how it worked was блат, pronounced blat. When the official way of doing things doesn't work, the way that works is informal favor trading. I have a friend, who knows a friend, etc. This acts as grit in the economic system, and makes everyone less productive.
The second was the pressure to not stand out too much. One proverb is Инициатива наказуема, pronounced initsiativa nakazuema. It translates to, "Initiative is punishable."
Why? Well, imagine that you're a middle manager. It's a dog eat dog world. You know that everyone below you, wants your job. Everyone above you, knows that you want their job. You got your role by sucking up to the people above you. Those below you, got theirs by sucking up to you. You don't want your employees to be utterly incompetent - then you won't be able to look good. But you also don't want any of them to shine - then your boss might think that they should have your job. This encourages bland mediocracy. Everyone strives to be just good enough for their job, while sucking up well enough to keep it.
The result is a kind of learned incompetence. But a nation filled with this kind of incompetence, will be unable to sustain innovation.
The third is alcoholism. Russia is basically a very large, very dysfunctional, alcoholic family. It is hard to overstate how true that is. The most popular vodka at the end of the Soviet era came in 750 ml bottles, that did not have a resealable cap. Because no true Russian would leave a bottle half-full. Anyone who didn't drink, was odd. A group that got together without drinking might be suspected of plotting revolution. This is yet another drag on Russian society.
There'd be other interesting implications as well, socialist systems were more open to the idea of cybernetics and with a proper computer industry the Soviets might have had more room to explore it.
Mind you I still think it would have likely been impossible for political reasons, there were many structural incentives to falsify economic data in the USSR due to the high degree of corruption and patronage among the nomenklatura. The whole point of cybernetics is to treat economic problems as systems problems and expose data transparently, and given the USSR was structurally dependent on falsifying this data suddenly having an accurate picture might have actually been destabilising kind of like how Glasnost turned out to be.
Another interesting 'Soviets had decent computers' counterfactual is that the Chernobyl disaster might have been prevented, since the Kurchartov Institute would have been better able to characterise the processes in the bottom of the fatally flawed RBMK in low power regimes before it was put into mass production. Again this might not have actually helped, the overconfidence the Soviet system had in its scientific and technical institutions was high and genuinely really interesting.
КНЦ = end (конец in russian is end). However, in bulgarian in means 'thread' (as in sewing thread) and it has lots its meaning of end, aside from 'from needle to thread' expression where it means from the tip of the needle to the end of the thread.
Also 'ALL' (и все = it's over/that's all), which should be 'end' as in begin/end in pascal.
Since I know russian well, here's a proper translation for y'all
FUNC FACT (N);
NAMES: P; (* variable names *)
1 -> P;
FOR I FROM 1 TO N ::
P * I -> P
DONE (* endif *)
RET: P (* return value *)
END; (* end of function *)
FOR N FROM 0 TO 6 ::
? "FACT(", N, ") = ", FACT(Н) (* print *)
DONE;
The acronyms are because it was originally russified by substituting character codes in Pascal binary. Thus VAR became ИМЯ, END became КНЦ and so on. Same reason JOB hilariously became ЗАД in the liberated OS/360.
Everyone's happy, head of development celebrates his 3rd degree Lenin's premium.
There is also an independent open-source interpreter for 1C language (which is to this day reported to be extensively used in Russian enterprise) implemented in C#. I haven't tried it myself, but just though that it's also worth mentioning here as the project seems to be actively worked on:
https://github.com/evilbeaver/onescript
In an alternate universe where Soviets won the Cold War, we would be writing in Russian on новостихакеров.рф and arguing which vacuum tubes make the best computers.
By the way, there's one Cyrillic programming language still in wide use today. It's part of 1С (1S), an ERP system that's absolutely everywhere in Russia.
The language itself is quite similar to Visual Basic. It's awkward to write with a regular Russian keyboard layout, but I was told that there exist special layouts just for it.
There's also Kumir, which is an educational programming language used in Russian schools
Hm. That must be new, I was taught Turbo Pascal
2 replies →
This Soviet project developed two Russian-language PLs: Robic[1] and Rapira[2]. Robic was similar to Logo, but unlike Logo, which had only one actor - a turtle, Robik had several: a Train, an Ant, a Painter, and so on
Rapira was more like SETL + Python. It was a dynamic interpreted PL with a rich set of compound data types, such as sets, records (associative arrays), and so on. Compared to the contemporary BASIC, it was ADVANCED
Like Logo, Robik was used to teach programming to kindergarthen-age children, while Rapira was aimed at high school students
---
1. https://en.wikipedia.org/wiki/Robic / https://ru.wikipedia.org/wiki/%D0%A0%D0%BE%D0%B1%D0%B8%D0%BA
2. https://en.wikipedia.org/wiki/Rapira / https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%BF%D0%B8%D1%80...
In my school we had a Logo-like PL where you controlled a kangaroo and a more complex one where you сontrolled a robot arm with an internal stack that worked on a rectangular array of items. I remember the robot blowing up when you triggered a logical error like going out of bounds or a stack over/underflow.
UPD: The PLs were called "Roo&Robby" and written by https://en.wikipedia.org/wiki/Mark_Sapir before he emigrated to the US.
I wish the Soviets had focused more on developing an independent computer industry and their own distinct flavors of programming languages.
Imagine the thrill of studying languages built to run on completely separate hardware architectures, featuring entirely novel paradigms and structures.
This would be the closest thing to experience reverse-engineering a computer from an alien spaceship.
But they simply weren't able to sustain it.
In the West, while the military industry initially pushed computer development, private companies quickly adapted those technologies for the consumer market. Over time, the Western consumer market became vastly larger than the military one.
In the USSR, this cross-pollination wasn't possible because anything that even touched the military was immediately classified as a state secret. This obsession with secrecy even affected civilian infrastructure like nuclear power plants. Plant operators weren't fully trained on how the systems worked under extreme conditions, and they were kept completely in the dark about inherent design flaws—because in the Soviet system, everything was by definition perfect and superior to the West.
Furthermore, because the consumer market was strictly controlled by the government and the party, the Soviet economy lacked any organic market signals regarding what people actually wanted or needed. Apparatchiks had to look elsewhere for data, so they resorted to copying Western solutions—sometimes just copying the basic concept (like a radio where users could choose their own stations), and sometimes cloning the entire machine.
While Soviet scientists had some highly innovative and interesting ideas in the beginning, central planners eventually decided it was faster and easier to copy a Western solution that was already 5, 10, or 15 years ahead in mass production.
I think it's a bit different.
USSR just wasn't rich enough to afford experimentation and innovation. Resources (including human brain power) were quite limited. So they had to copy proven solutions. Simple as that.
It's easy to judge them in the retrospective. But they had to make decisions, using the information the had at the moment, weighing risks as they saw them at that moment.
6 replies →
Three more factors matter a lot, and get missed.
The first is corruption. When the Iron Curtain fell, every country behind it suffered from corruption. The Russian word for how it worked was блат, pronounced blat. When the official way of doing things doesn't work, the way that works is informal favor trading. I have a friend, who knows a friend, etc. This acts as grit in the economic system, and makes everyone less productive.
The second was the pressure to not stand out too much. One proverb is Инициатива наказуема, pronounced initsiativa nakazuema. It translates to, "Initiative is punishable."
Why? Well, imagine that you're a middle manager. It's a dog eat dog world. You know that everyone below you, wants your job. Everyone above you, knows that you want their job. You got your role by sucking up to the people above you. Those below you, got theirs by sucking up to you. You don't want your employees to be utterly incompetent - then you won't be able to look good. But you also don't want any of them to shine - then your boss might think that they should have your job. This encourages bland mediocracy. Everyone strives to be just good enough for their job, while sucking up well enough to keep it.
The result is a kind of learned incompetence. But a nation filled with this kind of incompetence, will be unable to sustain innovation.
The third is alcoholism. Russia is basically a very large, very dysfunctional, alcoholic family. It is hard to overstate how true that is. The most popular vodka at the end of the Soviet era came in 750 ml bottles, that did not have a resealable cap. Because no true Russian would leave a bottle half-full. Anyone who didn't drink, was odd. A group that got together without drinking might be suspected of plotting revolution. This is yet another drag on Russian society.
1 reply →
There'd be other interesting implications as well, socialist systems were more open to the idea of cybernetics and with a proper computer industry the Soviets might have had more room to explore it.
Mind you I still think it would have likely been impossible for political reasons, there were many structural incentives to falsify economic data in the USSR due to the high degree of corruption and patronage among the nomenklatura. The whole point of cybernetics is to treat economic problems as systems problems and expose data transparently, and given the USSR was structurally dependent on falsifying this data suddenly having an accurate picture might have actually been destabilising kind of like how Glasnost turned out to be.
Another interesting 'Soviets had decent computers' counterfactual is that the Chernobyl disaster might have been prevented, since the Kurchartov Institute would have been better able to characterise the processes in the bottom of the fatally flawed RBMK in low power regimes before it was put into mass production. Again this might not have actually helped, the overconfidence the Soviet system had in its scientific and technical institutions was high and genuinely really interesting.
That was my feeling when I first heard about Lisp Machines. It's unfortunate that I never got to see or use one in person.
Refal is an interesting functional programming language https://en.wikipedia.org/wiki/Refal
It feels like Pascal in Cyrillic. Autotranslation, with a little manual correction, but I can't fix КНЦ (autotranlated to KNC):
Few fixes:
1. "ИМЕНА" is plural, so instead of "NAME:" it's a bit more appropriate to use "NAMES:". Probably should be "VARIABLES" or "VARS" in modern context.
2. You've got few typos mixing "R" and "P". Should be "R" everywhere.
3. Instead of "ALL" you should use "DONE".
4. Instead of "KNC" you should use "END".
So it would look like this:
>It feels like Pascal in Cyrillic
replace cyrillic w/ russian and it'd be ok.
КНЦ = end (конец in russian is end). However, in bulgarian in means 'thread' (as in sewing thread) and it has lots its meaning of end, aside from 'from needle to thread' expression where it means from the tip of the needle to the end of the thread.
Also 'ALL' (и все = it's over/that's all), which should be 'end' as in begin/end in pascal.
The main point still stands - it's Pascal.
Being Serbian, I also find equalising Cyrillic with Russian mildly annoying. Or even worse, when people call it "Russian letters".
With that being said, I do think it's harder to make a clear programming language based on is a Slavic language, due to all the case and gender forms.
> However, in bulgarian in means 'thread'
You can use "конец" for "end" in Bulgarian too, even though it's antiquated.
3 replies →
Since I know russian well, here's a proper translation for y'all
I would read «КНЦ» as «КОНЕЦ», literally “an end” or “the end” (Russian does not have anything resembling articles). Who needs vowels, anyway.
Also, «ВСЕ» feels like «ВСЁ» in this context, I’d translate that as “that’s all”.
The acronyms are because it was originally russified by substituting character codes in Pascal binary. Thus VAR became ИМЯ, END became КНЦ and so on. Same reason JOB hilariously became ЗАД in the liberated OS/360.
Everyone's happy, head of development celebrates his 3rd degree Lenin's premium.
1 reply →
[flagged]
https://news.ycombinator.com/newsguidelines.html
> Don't post generated comments or AI-edited comments. HN is for conversation between humans.
The playground on [demin.ws/rapira](https://demin.ws/rapira/) feels well made.
This is a pretty cool historical artifact.
Does anyone use "native language" programming languages in education or day to day?
1C is widely used in Russia as part of 1C:Enterprise (https://en.wikipedia.org/wiki/1C:Enterprise think sap/abap)
UPD: 1C can be used in both Russian and English. And I'm pretty sure it can be used outside of 1C:Enterprise.
It also has BSL Language Server and IDEA\VSCode extensions.
I dont use any of them, but here's a list of non-english programming languages that some people probably use day-to-day
https://en.wikipedia.org/wiki/Non-English-based_programming_...
There is also an independent open-source interpreter for 1C language (which is to this day reported to be extensively used in Russian enterprise) implemented in C#. I haven't tried it myself, but just though that it's also worth mentioning here as the project seems to be actively worked on: https://github.com/evilbeaver/onescript
Missed opportunity to make all variables global and public.
In an alternate universe where Soviets won the Cold War, we would be writing in Russian on новостихакеров.рф and arguing which vacuum tubes make the best computers.
it remembers to me https://en.wikipedia.org/wiki/DRAKON a powerful flow chart (from the USSR) .
I need one for Japanese
I could be wrong, but I believe the name is in reference to the Divine Rapier, an item in Dota 2, which is very popular among Russian speakers.
https://en.wikipedia.org/wiki/Rapira
> 1982
Rapira appears to be a direct latinisation of the name of the language.