Programowanie to dziedzina na wskroś przesiąknięta językiem angielskim. Nazwy słów kluczowych, funkcji wbudowanych i wszelkich bytów definiowanych przez użytkownika zazwyczaj zapisuje się właśnie w tym języku. Niektórzy żartują, że porządnie napisany kod powinno czytać się tak jak dobrą książkę. I chyba wszyscy wiemy, że chodzi o książkę właśnie po angielsku.
Oczywiście tu również zdarzają się wyjątki. Wyjątki w postaci języków programowania, w których nie koduje się po angielsku. Czasami ze względu na zaszłości historyczne (za przykład może posłużyć tu polski SAKO, o którym kiedyś pisałem), innym razem chodzi jedynie o poczucie humoru lub chęć poeksperymentowania (jak w przypadku modułu Lingua::Romana::Perligata, który pozwala na pisanie w Perlu po łacinie), a niekiedy w grę wchodzi czynnik edukacyjny (mowa np. o AC-LOGO).
Tego typu języki, chociaż niszowe, raczej nie budzą wielkiego zdumienia. Jeśli spojrzymy na normalnie sformatowany kod napisany przy użyciu takiej technologii, to raczej, nawet mimo nieznajomości danego języka obcego, nie będziemy mieli wątpliwości, że jest to kod źródłowy. Zerknijmy np. na taki oto fragment w islandzkim języku Fjölnir [1]:
1 2 3 4 5 6 7 8 9 10 11 |
"hello" < main { main -> stef(;) stofn skrifastreng(;"Hello, world!"), stofnlok } * "GRUNNUR" ; |
Chociaż znaczenie poszczególnych słów kluczowych i nazw funkcji może być dla nas zagadką (pewnie podobną jak dla początkującego programisty C wyrazy pokroju strtod
lub atoi
. :D), to użycie alfabetu łacińskiego sprawia, że nie czujemy się zbyt wyobcowani, a nasze oczy sprawnie potrafiłyby dostrzec np. kilkukrotne użycie tej samej funkcji. Ale czy to samo uczucie będzie nam towarzyszyć, gdy przed naszymi oczami pojawi się któryś z poniższych fragmentów [2][3][4]?
1 2 3 4 5 |
かめ太=タートル!作る。 カメ=タートル! 作る。 時計=タイマー! 作る 0.1秒 間隔 500回 回数。 時計! 「かめ太! 10 歩く」 実行。 左=ボタン!”左”作る。 左:動作=「かめ太! 20 左回り」。 右=ボタン!”右”作る。 右:動作=「かめ太! 10 右回り」。 |
1 2 3 4 |
ألف # (دالة كلمة ترحيب (كلمة اسم رجوع " أهال بك " + اسم نهاية ترحيب |
1 2 3 4 5 |
@( எண் < யூகிக்க) ஆனால் பதிப்பி "உங்கள் உள்ளீடு அதிகமாக உள்ளது" இல்லை பதிப்பி "உங்கள் உள்ளீடு குறைத்து உள்ளது" முடி |
Hmm, myślę, że tylko po części. Oczywiście pewne wnioski można wysnuć, np., że na ostatnim listingu znajduje się konstrukcja będąca zapewne czymś w stylu IF-ELSE
, jednak fakt użycia alfabetów niełacińskich sprawia, że przeciętnemu europejczykowi trudniej odnaleźć się w tym gąszczu krzaczków i wężyków.
Tymczasem okazuje się, że liczba języków programowania, które używają alfabetów innych niż łaciński wcale nie jest taka mała i na dodatek wciąż rośnie (informacje dotyczące niektórych z nich można znaleźć np. w Wikipedii). Zwłaszcza technologie wywodzące się z Azji, przeznaczone dla osób posługujących się językami takimi jak chiński, japoński czy koreański, rosną w siłę. Czy możemy się zatem obawiać, że już za jakiś czas tego typu języki programowania wkroczą do mainstreamu, a wśród topowych frameworków znajdziemy takie, które będą pisane w sposób kompletnie dla nas niezrozumiały?
Spis treści
Idealne do nauki
Wszystko wskazuje na to, że ten scenariusz póki co bynajmniej nas nie czeka. Wśród powodów, dla których tworzone są omawiane technologie, zdecydowanie dominuje aspekt edukacyjny. Chodzi o to, aby umiejętności programistyczne mogły rozwijać również osoby, które nie tylko po prostu nie znają angielskiego, ale na dodatek ich ojczysty język używa całkiem innego alfabetu, przez co przyswojenie klasycznych języków programowania stanowi na tyle duże wyzwanie, że nie każdy jest gotów się go podjąć.
W tym momencie zapewne podniosą się głosy, że przecież profesjonalne programowanie bez angielskiego i tak jest praktycznie niemożliwe, więc po co utrwalać złe nawyki, pozwalając na kodowanie w innych językach. No niby tak, ale jednak nie do końca. Użytkownikami edukacyjnych języków programowania są często dzieci i młodzież, a dla nich zrozumienie na czym polega programowanie jest ważne z kilku względów. Poszerza hozyronty, uczy abstrakcyjnego myślenia, może zaszczepić prawdziwą pasję (która wtedy w sposób nieunikniony doprowadzi do poważnych języków programowania). Patrząc z tej perspektywy, technologie pokroju arabskiego języka programowania Alif albo chińskiego Pythona (przykład z Githuba poniżej), wydają się mieć naprawdę dużo sensu.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
定義 飲料單生成器(): """ 產生飲料價目單 """ 取 料 自 配料.鍵列表(): # 迴圈 取 茶 自 茶種.鍵列表(): 標價 = 茶種[茶] + 配料[料] 印出 料+茶, 標價, 取 糖 自 糖量: 印出 糖, 取 冰 自 冰量: 印出 冰, 印出 '' |
Dobre do pracy?
Chociaż, jak wspomniałem, sporo języków programowania, bazujących na wschodnich alfabetach, służy do nauki programowania, istnieją też takie, które nastawione są na profesjonalne zastosowanie i produkcję normalnego oprogramowania. W różnych wypowiedziach dotyczących tego typu technologii dosyć często przewija się Easy Programming Language (chin. 易语言). Według niektórych źródeł przykładem użycia tego języka jest jeden z popularniejszych na chińskim rynku programów do wykrywania malware – 360Safe – którego fragmenty zostały napisane właśnie w EPL [5].
Jakie są jednak dokładne powody, by używać takiego języka do rozwijania poważnych aplikacji? Tego nie wiem, ale pewne światło na tę kwestię może rzucić np. wpis Jona Hancocka zawierający obserwacje dotyczące lokalnych społeczności programistów w Chinach. Na kanwie dyskusji o chińskim klonie StackOverflow, Jon opisuje eventy, podczas których wystąpienia wygłaszane w lokalnym języku wzbudzały znacznie więcej dyskusji niż te, gdzie prelegenci używali angielskiego.
A na koniec moja odezwa: jeśli macie jakieś doświadczenia z językami programowania bazującymi na alfabetach niełacińskich, koniecznie się nimi podzielcie! 🙂
Źródła
- Wikipedia: Fjölnir (programming language).
- Wikipedia: Dolittle (programming language).
- Alif – Arabic Programming Language.
- Wikipedia: Ezhil (programming language).
- Hacker News: Chinese Python: “Translating a programming language”.
- Easy Programming Language – oficjalna strona.
- Chiński Python: ZhPy.