Бұл жазба автоматты түрде орыс тілінен аударылған. Russian
Бұл жаңа қазақстандық бағдарламалау тілін құру туралы цикліміздің екінші бөлігі. Бірінші мақалада біз оның негізінде жатқан философиялық идея туралы айттық.
Сонымен, біз тіліміздің негізінде командалар емес, тілдің тереңдігінен алынған бейнелер жатыр деп шештік. Бірақ бұл суреттерді компьютер түсінетін нәрсеге қалай айналдыруға болады? Бізге алфавит керек болды.
Бірінші және айқын жол-бар латын әліпбиін пайдалану. Бұл практикалық, ыңғайлы және барлық құралдар дайын. Бірақ бұл жол біздің бүкіл философиямызға қайшы келді. Латын-бұл Рим империясының мұрасы, оны біздің тұжырымдамамыз Бостандық әлемі мен тілдің антагонисті ретінде қарастырады. Оны пайдалану біреудің іргетасына жаңа үй салуды білдіреді.
Сондықтан біз батыл, күрделі, бірақ тұжырымдамалық тұрғыдан таза шешім қабылдадық: нөлден жаңа руникалық алфавит құру.
Бұл тек таңбалар жиынтығы ғана емес, әр руна әріп те, сурет те, ұғым да болатын жүйе болуы керек.
Біз Ай/Күн жұбынан қасиетті мағына мен екілік логика арасындағы көпірді таптық деп айттық. Біз бұл дуализмді алфавиттің өзегіне енгіздік:
- I (Ай) — Ай. Пассивті күй, деректер, ақпарат, жалған белгісі. Бұл біздің жүйенің "0".
- Q (Күн) — Күн. Белсенді күй, әрекет, энергия, шын символы. Бұл біздің жүйенің "1".
Бұл екілік бәріне енеді. Айнымалылар (деректер) және функциялар (әрекеттер), "өшіру" және "қосу" күйі, деректер және метадеректер.
Екінші кілтті бізге қазақ тілінің фонетикасы — сингармонизм заңы, дауысты дыбыстардың үйлесімділігі ұсынды. Біз бұл принципті типтік жүйеге ауыстырдық:
- Қатты дыбыстар (жуан: а, о, у) нақты, мағыналы деректер түрлерін (value types) белгілей бастады: бүтін сан, жол. "Салмағы" бар нәрсе.
- Жұмсақ дыбыстар (жеңіске: ә, ө, ү) дерексіз, анықтамалық деректер түрлерін (reference types) белгілей бастады: көрсеткіштер, интерфейстер. Деректерге "шағылысу" немесе "жол" деген не.
Мұны көрнекі түрде көрсету үшін біз жұптасқан рундарды жасадық, олардың біреуі екіншісінің айнасы немесе өзгертілген көрінісі.
- Қатты түрі [a] (Асқар — тау шыңы) -> Руна а.тұрақтылықтың символы.
- Жұмсақ тип [æ] (Әлем — ғалам) -> Руна ∀. Сол руна, бірақ төңкерілген. "Рефлексия" символы, абстракция.
Осы принциптерге сүйене отырып, біз жұмыс атауын алған Әліпбиімізді кристалдай бастадық"?». Ондағы әрбір руна бағдарламалаудың негізгі тұжырымдамасы үшін идеалды бейнені ұзақ іздеудің нәтижесі болып табылады.
Міне, біздің жаңа тіліміздің бірнеше негізгі "сөздері":
Руна | Кілт сөз (Мағынасы) | Жап-дағы қағидат | Түсіндіру |
Λ | Тау (Тау) | Тұрақты (өзгермейтіндік) | Таудың символы, мызғымастық. Біржола орнатылған нәрсе. |
— | Дала (Дала) | Айнымалы (өзгергіштік) | Бәрі өзгеруі мүмкін кеңістіктің, жазықтың символы. |
Π | Бас (Басталуы, Қақпасы) | Функция / файл тақырыбы | Біз жаңа Код блогына кіретін қақпа немесе арка белгісі. |
Y | Шешімм (Шешім) | Шартты оператор (if) | Шанышқы үшін тамаша графика, екі жолдың бірін таңдау: күн (Q) немесе ай (I) жолдары. |
↻ | Айналым (Цикл, Айналу) | Цикл операторы | Қайталау мен жаңартудың интуитивті белгісі. |
→ | Нәтиже (Нәтиже, Нәтиже) | Функциядан мәнді қайтару | Функцияның жұмысынан "ағып жатқанын" көрсететін көрсеткі. |
⁞ | Із (Із) | Деректерді шығару, логтау | Із, нүктелі сызық, жазба белгісі. Бағдарламаның орындалуының "ізін" қалдырыңыз. |
Көріп отырғаныңыздай, біз философия, фонетика, графика және логика біртұтас, ажырамас тұтас болатын жүйеге ұмтыламыз. Біздің тілдегі Код тек мәтін емес. Бұл формула, өрнек, қасиетті жазба, мұнда әр таңба өз орнында және терең мағынаға ие.
Келесі мақалада біз бұл рундардың алғашқы "сөйлемдерге"қалай қосылатынын көрсетеміз. Біз тілдің негізгі синтаксисін көрсетеміз және оның "миы" қалай жұмыс істейтінін түсіндіреміз — машинаны біздің кодты түсінуге үйрететін үш "шебер" (Лексер, талдаушы және орындаушы).
Осы сапарда бізбен бірге болғаныңыз үшін рахмет.
Это вторая часть нашего цикла о создании нового казахстанского языка программирования. В первой статье мы рассказали о философской идее, лежащей в его основе.
Привет, Hub!
Итак, мы остановились на том, что в основе нашего языка лежат не команды, а образы, извлеченные из глубин праязыка. Но как превратить эти образы в то, что поймет компьютер? Нам нужен был алфавит.
Первый и самый очевидный путь — использовать существующую латиницу. Это практично, удобно, и все инструменты к этому готовы. Но этот путь противоречил всей нашей философии. Латиница — это наследие Римской империи, которую наша концепция рассматривает как антагониста мира свободы и праязыка. Использовать ее — значило бы строить новый дом на чужом фундаменте.
Поэтому мы приняли смелое, сложное, но концептуально чистое решение: создать с нуля новый рунический алфавит.
Это должен быть не просто набор символов, а система, где каждая руна является одновременно и буквой, и образом, и концепцией.
Принцип №1: Двоичность (Ай/Күн)
Мы уже говорили, что нашли мост между сакральным смыслом и двоичной логикой в паре Луна/Солнце. Мы заложили этот дуализм в ядро нашего алфавита:
- I (Ай) — Луна. Символ пассивного состояния, данных, информации, false. Это «0» нашей системы.
- Q (Күн) — Солнце. Символ активного состояния, действия, энергии, true. Это «1» нашей системы.
Эта двоичность пронизывает всё. Переменные (данные) и функции (действия), состояние "выключено" и "включено", данные и метаданные.
Принцип №2: Гармония (Твердость/Мягкость)
Второй ключ нам подсказала фонетика самого казахского языка — закон сингармонизма, гармония гласных. Мы перенесли этот принцип на систему типов:
- Твердые звуки (жуан: а, о, ұ) стали обозначать конкретные, значимые типы данных (value types): целое число, строка. То, что имеет «вес».
- Мягкие звуки (жіңішке: ә, ө, ү) стали обозначать абстрактные, ссылочные типы данных (reference types): указатели, интерфейсы. То, что является «отражением» или «путем» к данным.
Чтобы визуально отразить это, мы создали парные руны, где одна является зеркальным или измененным отражением другой.
- Твердый тип [a] (Асқар — Пик горы) -> Руна A. Символ устойчивости.
- Мягкий тип [æ] (Әлем — Вселенная) -> Руна ∀. Та же руна, но перевернутая. Символ «отражения», абстракции.
Складывая алфавит: Образ и Функция
Основываясь на этих принципах, мы начали кристаллизовать наш алфавит, который получил рабочее название «?». Каждая руна в нем — это результат долгого поиска идеального образа для фундаментального понятия программирования.
Вот несколько ключевых «слов» нашего нового языка:
Руна | Ключевое слово (Смысл) | Принцип в ЯП | Объяснение |
Λ | Тау (Гора) | Константа (неизменяемость) | Символ горы, незыблемости. То, что установлено раз и навсегда. |
— | Дала (Степь) | Переменная (изменяемость) | Символ простора, равнины, где все может измениться. |
Π | Бас (Начало, Врата) | Заголовок функции/файла | Символ врат или арки, через которые мы входим в новый блок кода. |
Y | Шешім (Решение) | Условный оператор (if) | Идеальная графика для развилки, выбора одного из двух путей: пути Солнца (Q) или пути Луны (I). |
↻ | Айналым (Цикл, Вращение) | Оператор цикла | Интуитивно понятный символ повторения и обновления. |
→ | Нәтиже (Результат, Следствие) | Возврат значения из функции | Стрелка, указывающая на то, что «вытекает» из работы функции. |
⁞ | Із (След) | Вывод данных, логирование | Символ следа, пунктирной линии, записи. Оставить «след» исполнения программы. |
Что дальше?
Как вы видите, мы стремимся к системе, где философия, фонетика, графика и логика являются единым, неразрывным целым. Код на нашем языке — это не просто текст. Это формула, узор, священная запись, где каждый символ находится на своем месте и имеет глубокий смысл.
В следующей статье мы покажем, как эти руны-смыслы складываются в первые «предложения». Мы продемонстрируем базовый синтаксис языка и объясним, как работает его «мозг» — три «мастера» (Лексер, Парсер и Исполнитель), которые учат машину понимать наш код.
Спасибо, что остаетесь с нами в этом путешествии.