Skip to content

cloudy-kz/QazaqScript

Repository files navigation

QazaqScript

Қазақ тіліндегі бағдарламалау тілі. Кодты ойлағаныңдай — қазақша — жаз, ол браузерде бірден JavaScript-ке аударылып орындалады.

Демо

CI License: MIT Version Dependencies PRs Welcome

Жазба алаңын қазір сынап көру →

баға 85 болсын.

егер баға 90-нан кіші емес болса.
  "Үздік" жаз.
әйтпесе егер баға 75-тен кіші емес болса.
  "Жақсы" жаз.
әйтпесе.
  "Қанағаттанарлық" жаз.
соңы.

Шығыс: Жақсы

QazaqScript — толық қазақ тілінде жазылатын, браузерде жұмыс істейтін бағдарламалау тілі. Кілт сөздер де, қате хабарламалары да, тұтас оқыту платформасы да — түгел қазақша. Артында JavaScript-ке айналдыратын өз компиляторы (лексер → парсер → генератор) тұр, бірақ ол пайдаланушыдан жасырылмайды: аударылған кодты сол жерде, қатар көресіз.

Жоба екі бөліктен тұрады: компилятор (lib/qazaqscript.js, тәуелсіз бір файл, Node.js-те де жұмыс істейді) және оқыту платформасы (жазба алаңы, 10 қадамдық сабақ, дайын мысалдар кітапханасы). Орнатудың қажеті жоқ — сілтемені ашасыз да, кодты қазақша жаза бастайсыз.


Мазмұны


Неге QazaqScript?

  • Ана тіліңде. Түйінді сөздер қазақ тілінің грамматикасына сай: болсын, егер … болса, әрбір … ішінде, қайтар.
  • Орнатусыз. Барлығы браузерде жұмыс істейді. Тәуелділік — нөл.
  • Мөлдір. Аударылған JavaScript кодын қатар көресіз — «сиқыр» жоқ, тек түсінікті аударма.
  • Толық курс. 10 қадамдық интерактивті сабақ, автотексерумен.
  • Латын жазуын қолдайды. жаз = jaz, болсын = bolsyn — қос жазуда да жұмыс істейді.
  • Ендіруге дайын. Компилятор — бір тәуелсіз файл (lib/qazaqscript.js), Node.js-те де жұмыс істейді.

Жылдам бастау

Нұсқа 1 — жай ашу

index.html файлын браузерде ашыңыз. Болды.

Нұсқа 2 — жергілікті сервер (ұсынылады)

Кодты сілтемемен бөлісу секілді кейбір функциялар сервер арқылы толық жұмыс істейді:

python -m http.server 8000
# немесе
npm run serve

Содан кейін ашыңыз: http://localhost:8000

Windows (PowerShell): алдымен қалтаға өтіңіз — cd C:\жол\QazaqScript, содан кейін команданы жазыңыз.

Жазба алаңы (playground) мүмкіндіктері

Редактор — CodeMirror 6 негізінде (CDN арқылы жүктеледі), QazaqScript-ке арналған меншікті тіл режимімен. Ескерту: сол себепті жазба алаңы бірінші ашылғанда интернет байланысын қажет етеді (компилятордың өзі — lib/qazaqscript.js — толықтай жергілікті, интернетсіз де жұмыс істейді).

  • Синтаксисті түстеу: кілт сөздер, жолдар, сандар, түсініктемелер және стандартты функциялар түрлі-түсті боп көрінеді; аударма коды үшін JavaScript-тің өз подсветкасы қолданылады.
  • Автотолықтыру: кілт сөзді немесе функция атын жаза бастасаңыз, кеңестер тізімі шығады. Бос жерде де Ctrl+Space арқылы толық тізімді шақыруға болады.
  • Жолдар нөмірі, жақша сәйкестігі, undo/redo, код бүктеу — CodeMirror-дың дайын мүмкіндіктері, қосымша жазусыз.
  • Өлшемін өзгерту: код/аударма/шығыс қалталарының арасындағы жолақты тінтуірмен сүйреп, ендерін не биіктіктерін өзгертуге болады.
  • Қате жолды белгілеу: "Іске қосу" басқанда қате шыққан жол(дар) редакторда қызыл жолақпен көрсетіледі.
  • Адаптивті: мобильді экранда қалталар бір бағанға тізіліп орналасады.
  • Файлға сақтау / жүктеу: "Сақтау" кодты .qzs файлы ретінде компьютерге жүктейді, "Ашу" компьютерден файл таңдап, кодты қайта жазба алаңына салады.
  • Ctrl+Enter: тінтуірді басу керек емес — кодты пернетақтадан тікелей іске қосуға болады.
  • Автосақтау: соңғы жазған кодыңыз браузерде сақталады да, бетті жаңартқанда қайта пайда болады.

Тіл шолуы

Негіздер

Мақсат Синтаксис
Экранға шығару "Сәлем" жаз.
Айнымалы аты "Айгүл" болсын.
Түсініктеме // осылай, # осылай немесе көп жолды /* осылай */

Әрбір сөйлем нүктемен (.) аяқталады.

Операторлар

QazaqScript Мағынасы QazaqScript Мағынасы
a b үлкен a > b a b тең емес a != b
a b кіші a < b a b үлкен емес a <= b
a b тең a == b a b кіші емес a >= b

Логика: және (&&), немесе (\|\|). Арифметика: + - * / %.

Басқару құрылымдары

// Шарт
егер жасы 18-ден кіші емес болса.
  "Ересек" жаз.
әйтпесе.
  "Бала" жаз.
соңы.

// Шартты цикл
i 0 болсын.
әзірге i 3-тен кіші болса.
  i жаз.
  i i + 1 болсын.
соңы.

// Тізім бойынша цикл
әрбір сан ішінде [1, 2, 3].
  сан жаз.
соңы.

// Сан диапазоны бойынша цикл
әрбір i 1-ден 5-ке дейін.
  i жаз.
соңы.

// N рет қайталау
3 рет қайтала.
  "Сәлем" жаз.
соңы.

// Арттыру / кеміту
есеп 0 болсын.
есеп арттыр.        // есеп += 1
есеп 5-ке арттыр.   // есеп += 5

// Тізім индексіне жазу
тізім [1, 2, 3] болсын.
тізім[0] 99 болсын.

// Сөздік (кілт-мән)
адам {аты: "Аян", жасы: 20} болсын.
адам["жасы"] 21 болсын.
адам["аты"] жаз.

// Бірнеше мәнді бір жолда шығару
адам["аты"], "-", адам["жасы"] жаз.

// Функция
қосу функциясы.
  a қабылда.
  b қабылда.
  a + b қайтар.
соңы.
қосу(7, 3) жаз.   // 10

// Салыстыру — толыққанды өрнек (қайтар/айнымалы/аргумент ретінде де жұмыс істейді)
ересек_пе функциясы.
  жасы қабылда.
  жасы 18-ден кіші емес қайтар.
соңы.
ересек_пе(20) жаз.   // шын

// Жоғары дәрежелі функциялар: сәйкестір (map), сүзгі (filter), қорытынды (reduce)
екіге функциясы.
  н қабылда.
  н * 2 қайтар.
соңы.
сандар [1, 2, 3] болсын.
сәйкестір(сандар, екіге) жаз.   // [2, 4, 6]

// Қатені өңдеу
байқа.
  сан 5 болсын.
  сан() жаз.
қате.
  "Қате шықты: " + қатехабар жаз.
соңы.

// Таңдау (switch) — көп «әйтпесе егер» тізбегінің орнына
таңда күн.
  жағдай 1.
    "Дүйсенбі" жаз.
  жағдай 2.
    "Сейсенбі" жаз.
  болмаса.
    "Белгісіз күн" жаз.
соңы.

// Атаусыз функция (лямбда) — жоғары дәрежелі функцияға тікелей аргумент ретінде
сандар [1, 2, 3, 4, 5, 6] болсын.
сүзгі(сандар, функция(х) х % 2 0-ге тең қайтар. соңы) жаз.   // [2, 4, 6]

// Жол интерполяциясы — "+" арқылы қосудың орнына
аты "Айгүл" болсын.
"Сәлем, {аты}!" жаз.   // Сәлем, Айгүл!

// Сөздік бойынша кілт-мән жұбымен аралау
баға_тізімі {"нан": 90, "сүт": 350} болсын.
әрбір атауы, баға ішінде баға_тізімі.
  "{атауы}: {баға} тг" жаз.
соңы.

// Өз қатеңді тудыру — байқа/қате арқылы ұсталады
бөлу функциясы.
  а қабылда.
  б қабылда.
  егер б 0-ге тең болса.
    "Нөлге бөлуге болмайды" лақтыр.
  соңы.
  а / б қайтар.
соңы.

Циклден ерте шығу — тоқта., ағымдағы қадамды өткізу — жалғастыр.. Толық сипаттама: docs.html (Тіл анықтамасы).


Стандартты кітапхана

Дайын функциялар қосымша сипаттаусыз қолжетімді:

Функция Не істейді Функция Не істейді
жол(x) Мәтінге айналдыру дәреже(x, y) x-тің y дәрежесі
сан(x) Санға айналдыру мин(…) / макс(…) Ең кіші / үлкен
дөңгелек(x) Дөңгелектеу ұзындық(x) Тізім/жол ұзындығы
бүтін(x) Бөлшекті алып тастау кездейсоқ() 0–1 кездейсоқ сан
абс(x) Модуль кездейсоқсан(a, b) a–b бүтін сан
түбір(x) Квадрат түбір пи π константасы
синус(x) / косинус(x) Тригонометрия логарифм(x, [негіз]) Логарифм

Тізіммен: қос(тізім, мән) (push), ал(тізім) (pop), сұрыпта(тізім), сұрыпта_бойынша(тізім, fn) (кілт функциясы бойынша), кері(тізім), құрамында(x, y), индексі(x, y), бірегей(тізім).

Жолмен: үлкенәріп(x), кішіәріп(x), кесінді(x, a, b), бөл(x, бөлгіш), біріктір(тізім, бөлгіш), алмастыр(x, ескі, жаңа), қайталажол(x, n), тазала(x), басталады(x, y), аяқталады(x, y).

Сөздікпен: кілттер(x) (Object.keys), мәндер(x) (Object.values).

Жоғары дәрежелі: сәйкестір(тізім, fn) (map), сүзгі(тізім, fn) (filter), қорытынды(тізім, fn, бастапқы) (reduce) — fn орнына кез келген өз функцияңыздың атын бересіз.

Басқа: дөңгелектеу(x, орын) (ондық орынға дейін дөңгелектеу), оқы(сұрақ) (пайдаланушыдан мәтін сұрау, тек браузерде).

Күн/уақыт: бүгін() ("2026-07-04"), сағат() ("14:05:09"), қазір() (уақыт белгісі, миллисекунд).


Толық мысал

FizzBuzz — бағдарламашылардың классикалық есебі, қазақша:

сан 1 болсын.
әзірге сан 16-дан кіші болса.
  қалдық3 сан % 3 болсын.
  қалдық5 сан % 5 болсын.
  егер қалдық3 0-ге тең және қалдық5 0-ге тең болса.
    "FizzBuzz" жаз.
  әйтпесе егер қалдық3 0-ге тең болса.
    "Fizz" жаз.
  әйтпесе егер қалдық5 0-ге тең болса.
    "Buzz" жаз.
  әйтпесе.
    сан жаз.
  соңы.
  сан сан + 1 болсын.
соңы.

Тағы да: калькулятор, Фибоначчи, кубик лақтыру, орташа баға — Мысалдар бөлімінде.


Кітапхана ретінде қолдану

lib/qazaqscript.js — тәуелсіз файл. Кез келген HTML-ге немесе Node.js жобасына қосуға болады.

Браузерде:

<script src="lib/qazaqscript.js"></script>
<script>
  // Тек аудару:
  const нәтиже = QazaqScript.compile('"Сәлем" жаз.');
  console.log(нәтиже.js);      // console.log("Сәлем")

  // Аудару + орындау:
  const қорытынды = QazaqScript.run('(2 + 2) жаз.');
  console.log(қорытынды.logs); // ["4"]
</script>

Node.js-те:

const QazaqScript = require('./lib/qazaqscript.js');
console.log(QazaqScript.run('түбір(144) жаз.').logs); // ["12"]
Әдіс Қайтарады
compile(source) { js, errors }
run(source) { js, logs, errors }
tokenize(source) { tokens, errors }

errors — әр элемент { message, line, column } түрінде.


Жоба құрылымы

QazaqScript/
├── index.html              # Басты бет
├── playground.html         # Жазба алаңы
├── lessons.html            # Қадамдық сабақтар
├── examples.html           # Мысалдар кітапханасы
├── docs.html               # Тіл анықтамасы
├── lib/
│   └── qazaqscript.js      # Компилятор (лексер + парсер + генератор + орындау)
├── assets/
│   ├── app.js              # Жазба алаңы мен сабақтар логикасы
│   ├── nav.js              # Навигация және түбір бөлім
│   ├── content.js          # Мысалдар мен сабақтар мазмұны
│   ├── style.css           # Қосымша стильдер
│   └── tailwind-config.js  # Тақырып баптаулары
├── tests/
│   └── run.js              # Тест жинағы (Node.js)
├── .github/workflows/ci.yml # Үздіксіз интеграция
├── package.json
├── LICENSE                 # MIT
├── CONTRIBUTING.md
├── CHANGELOG.md
└── README.md

Тестілеу

Компилятордың 136 тесті бар (тәуелсіз, тек Node.js). Іске қосу:

npm test
# немесе
node tests/run.js

Әр push пен pull request GitHub Actions арқылы автоматты тексеріледі.


Үлес қосу

Үлес қосқыңыз келсе — қош келдіңіз. Жаңа мысал, сабақ, тіл мүмкіндігі немесе қате түзету — бәрі құнды. Толық нұсқаулық: CONTRIBUTING.md.

Қысқаша:

  • Жаңа мысал/сабақassets/content.js (EXAMPLES / LESSONS массивтері)
  • Жаңа синтаксисlib/qazaqscript.js + tests/run.js-ке тест
  • Өзгертуден кейін npm test жасаңыз.

Мүмкіндіктер / жол картасы

Тіл толық: айнымалылар мен барлық негізгі типтер, барлық басқару құрылымдары (егер/әзірге/әрбір/таңда/рет қайтала), функциялар (рекурсия, лямбда, closure), жоғары дәрежелі функциялар (сәйкестір/сүзгі/қорытынды), қатені өңдеу (байқа/қате/ақыры/лақтыр), жол интерполяциясы, сөздіктер мен теріс индекс, толық стандартты кітапхана. Жазба алаңы — CodeMirror 6 негізінде: синтаксисті түстеу, автотолықтыру, қате жолды белгілеу, файлға сақтау/жүктеу, автосақтау.

Толық өзгерістер тарихы — CHANGELOG.md.

Әдейі қосылмаған/кейінге қалдырылған:

  • Класс/ООП кілт сөзі — сөздік + closure-лямбда арқылы объект жасау (нағыз класс синтаксисінсіз) қазірдің өзінде көп жағдайды жабады; толыққанды синтаксис салмақты грамматикалық шешім талап етеді.
  • Модульдер (әкел) — бір файлдық браузер ойын алаңы үшін әзірше басымдық емес.
  • Тернарлық өрнекболса/әйтпесе егер-мен коллизия жасайтындықтан әдейі қосылмады.

Лицензия

MIT — еркін пайдаланыңыз, өзгертіңіз, бөлісіңіз.


Ана тіліңде код жаз.

About

Қазақ тілінде бағдарламалауды үйрену платформасы - жазба алаңы, 10 сабақ, дайын мысалдар

Resources

License

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors