Първичният код е за всички –
доколкото говорите английски

П

Тази година Световната мрежа отбелязва своята 30-годишнина, така че се проляха доста пиксели по нейните „първоначални обещания“, едно от които беше идеята да можете да изберете в менюто на всяка страница “View Source” („виж източника“) и лесно да проумеете каква е причината да виждате това. Тук е първата уебстраница, възпроизведена в чест на годишнината от приятелски настроения към самоуките програмисти сайт „Glitch“ с цел да се покаже, че ако превключите на “source code” (“изходен код”), ще видите, че някои части са маркирани с <title> и <body>, и <p> (може би се досещате, че “p” идва от „параграф“). Изглежда доста лесно, само дето го четете на английски сайт, от гледната точка на англоговорещ.

Сега си представете, че това е първата уебстраница, която изобщо виждате, и че сте развълнувани да надникнете под капака и да разберете как работи. Но вместо с етикетите, представляващи познати ви думи, се сблъсквате с тази версия, която съм създала аз и която е напълно идентична с оригинала, само дето изходният код е базиран на руски, а не на английски. Аз не говоря руски и ако приемем, че и вие също не говорите, дали етикетите <заголовок>, <тело> и <п> все още ще изглеждат като нещо, в което ви се иска да бърникате?

На теория можете да съставите език за програмиране от всякакви символи. На компютъра не му пука. Компютърът вече е включил една невидима програма (компилатор), за да преведе тези ваши IF или <body> в единици и нули, с които той оперира. Той би функционирал също толкова ефективно и ако ползвате емоджи наместо IF и малко известния кирилически символ от XV век мултиокулярно O наместо <body>. Фактът, че езиците за програмиране често наподобяват английски думи, като body и if, е удобство за нашите хилави, тленни човешки мозъци, които са много по-добри в помненето на команди, напомнящи думи, които вече знаем.

Но само някои разбират тези команди: тези от нас, които говорят английски. „Първоначалното обещание на web“ е обещание само към нейните англоговорещи потребители, все едно дали по рождение или такива с достъп до елитно образование, даващо гладък втори говорим език английски на територии, в които английският не доминира.

Вярно е, че софтуерните програми и социалните медии сега често са достъпни на 30 и дори на 100 езика, но какво да кажем за инструментите, които ни правят създатели, а не просто консуматори? Дори не призовавам към създаване на програми на малки, рядко срещани езици (въпреки че това би било много яко). И огромни езици с широка литературна традиция, ползвани като езици за регионална търговия, като китайски, испански, хинди и арабски, все още не се ползват като езици за писане на код.

Известни са ми четири езика за програмиране, широко достъпни и в многоезични версии. Не 400. Четири (4).

Два от тези четири езика са специално проектирани да учат децата как да кодират: Скреч (Scratch) и Блокли (Blockly). От Скреч даже са провели изследване, доказващо, че децата, които се учат да кодират на програмни езици, базирани на техния роден език, учат по-бързо от тези, които са се забили да учат друг език. Какво се случва, когато тези деца пораснат?

Възрастните, за които не може да се каже, че обичат да учат езици, имат избор измежду два други, добре локализирани програмни езика: формулите на Excel и Wiki-кода.

Да, вие можете да правите електронни таблици с формули, базирани на кой да е език, предвиден за интерфейса на вашата програма. И в Excel, и в GoogleSheets вие можете да напишете например =IF (condition, value_if_true, value_if_false), но също така и испанския еквивалент =SI (prueba_lógica, valor_si_es_verdadero, valor_si_es_falso), и същото на дузина други езици.

[Може би дори и на български: АКО (условие, стойност_ако_истина, стойност_ако_лъжа.), бел. пр.]

Това може и да не е първото нещо, за което се сещате, докато мислите за кодиране, но една таблица може по принцип да бъде ползвана за Тюрингова машина и такова приложение на местните версии може да бъде икономически обосновано.

Също така можете да редактирате Wikipedia и други wiki сайтове благодарение на това, че wiki кодът е достъпен на много други езици. Базовите команди на wiki кода са езиково неутрални (например, когато [препратките] се слагат в квадратни скоби), но в по-сложните команди се ползват думи на родния език. Например, ако правите таблица с информация за някоя личност, в английската уикипедия има параметри като „name = “ и „birth_place = „, а в българската „име = “ и „родно_място = “ [на български в оригинала, бел.ред.].

В добавка към тези четири широко достъпни, многоезични програмни езици има и няколко дузини, може би дори стотина, които са достъпни и на два други езика, освен английския, като Qalb (арабски), китайски Python, farsinet (персийски), системата за програмиране Hindawi (бенгалски, гуджарати и хинди) и дори Perl версия на латински. Няколко неанглийски програмни езика дори отпращат обратно към ерата на държавно спонсорираните мегакомпютри с размери на стая, каквито са някои съветски програмни езици, основани на руския, а също и многоезичните ALGOL 68 (1960) и 4th Dimension (1980). Но много по-нови езици, като Python, Ruby и Lua, идват от неанглийски говорещи държави (Нидерландия, Япония и Бразилия) и пак ползват ключови думи възоснова на английския. Първоначалното обещание на web за много хора звучи повече като заплаха — или говори английски, или напускай мрежата.

Тези езици съществуват, защото преводът от един на друг не е труден. Има изобилие от езикови конвертери – можете да хвърлите в конвертора един пасаж на JavaScript и да получите версия на Python, или да метнете пасаж на Markdown и да получите версия на HTML. Те не са особено трудни за създаване. Програмните езици имат ограничени, добре детерминирани вокабулари, без нееднозначностите или културните нюанси, които объркват автоматичния машинен превод от естествените езици. Знаейки еквивалентите на стотина команди, вие можете автоматично да съпоставите едно произволно парче код с друго.

Толкова е лесно превеждането на програмни езици всъщност, че някои периодично го правят просто така, с артистична или хумористична цел, приятен тип многознайковщина един вид под формата на езотерично програмиране. LOLCODE, например, е моделиран на основата на мема lolcats, така че ти почваш програмата с HAI (изопачено HI – „здравей“) и приключваш с KTHXBAI (съкратено OKAY, THANKS, BYE – “добре, благодаря, довиждане“), a Whitespace („празнота“) е напълно невидим за човешко око, понеже е направен от непечатими знаци: интервали, табулации, разделители. Има даже Pikachu, програмен език, състоящ се единствено от думите pi, pika и pikachu, така че покемонът Пикачу може – съвсем хипотетично – да се отърве от тези проклети треньори на покемони и да се уреди с високо платена работа като програмист.

Да превеждате код на езика на покемоните звучи абсурдно. Да превеждате код на езиците на милиарди хора в света, които не говорят английски, значи достъп до високоплатени работни места и възможност за работа от вкъщи, която вече не е хипотетична. Фактът, че кодът зависи от английския език, блокира възможностите на доста хора по причини, които са изцяло нетехнологични.

Но програмният език, това не е само неговото техническо осъществяване – това е също така и човешка общност. Четирите широко разпространени многоезични програмни езици са имали по-добър късмет дотук с насърчаването на тази общност, отколкото отделните езици, базирани на неанглийски, но те са критично малко. Нали трябва да намирате и разни полезни ресурси, когато почнете да търсите в гугъл съобщенията за грешка. И, по дяволите, първо ще трябва да си изясните как да ползвате този език на компютъра си. Ето затова е толкова важно вашият първи web браузър да ви позволи да редактирате, а не просто да гледате уебсайтовете, затова и „Glitch“ така настоява ползвателят да може да редактира изходния код направо в прозореца на браузъра си и при случай лесно да потърси помощ. Но къде е „Glitch“ за неанглийски говорещия свят? Как да направим web още по-гостоприемен за ровичкане, отколкото е бил за най-ранните пришълци, за онези, които сега се присъединяват или които са го ползвали само като консуматори през последното десетилетие?

Ето затова аз все още не губя надежда. В Средновековна Европа, ако сте искали достъп до технология на писане, трябвало е да научите и един нов език в същото време. Разбирайте латински. Писането на майчини езици, на езици, които хората вече говорят, е било едно безпросветно, маргинално странично занимание. Защо ли бихте искали изобщо да се учите да пишете на английски или френски? Няма нищо за четене на тези езици, докато латинският дава достъп до интелектуалната традиция на цялата лингва франка.

Ние сме склонни да гледаме назад към тази историческа ера, чудейки се защо хората са се мъчили с всичкия този латински, когато са могли да пишат на езиците, които вече говорят. Навремето усвояването на латински с цел да се научите как се пише е било така логично, както да учите английски днес, за да можете да кодирате, макар и да е ясно, че децата се учат да четат много по-бързо, ако започнат първо на своя майчин език. Аргументите за английски базирания код, който аз виждам на сайтове като Stack Overflow, са почти същите: защо просто да не учим английски? Той дава достъп до цялата технологична традиция.

Ние знаем, че латинската доминация в писането е приключила. Технологията на писане се е разпространила и към други езици. Технологията на кодиране не е по-неразривно обвързана с английския, отколкото технологията на писането е била обвързана с латинския. Аз предлагам да започнем с коригиране на начина, по който говорим за програмните езици, когато те съдържат думи на човешки. Първият уебсайт не е бил написан на HTML – той е бил написан на английски HTML. Парчето код, което се появява в дъното на сайта, възпроизведен от Glitch? Това не е JavaScript, това е английски JavaScript. Когато ние назоваваме английския по подразбиране, става все по-очевидно, че можем да го поставяме под въпрос – ние можем да започнем да си представяме свят, в който има руски HTML или суахили JavaScript, свят, в който някои няма да имат незаслуженото предимство да кодират на своя роден език, който се е случил да е английски.

Този свят не съществува. Може би в следващите 30 години ние ще го създадем.

Гречен Макълох

Wired, 8 април 2019 г.

Превод от английски Райна Маркова

Гречен Макълох е резидентен лингвист на WIRED. Тя е един от създателите на Lingthusiasm, подкаст за ентусиасти в лингвистиката. Книгата й „Because Internet: Understanding the New Rules of Language” („Защото Интернет: Разбиране на новите правила на езика”) ще излезе на 23 юли 2019 г. в издателство Riverhead (Penguin).

За автора

Из чуждата преса

Категории