Қазақ тіліндегі бағдарламалау тілі. Кодты ойлағаныңдай — қазақша — жаз, ол браузерде бірден JavaScript-ке аударылып орындалады.
баға 85 болсын.
егер баға 90-нан кіші емес болса.
"Үздік" жаз.
әйтпесе егер баға 75-тен кіші емес болса.
"Жақсы" жаз.
әйтпесе.
"Қанағаттанарлық" жаз.
соңы.
Шығыс:
Жақсы
QazaqScript — толық қазақ тілінде жазылатын, браузерде жұмыс істейтін бағдарламалау тілі. Кілт сөздер де, қате хабарламалары да, тұтас оқыту платформасы да — түгел қазақша. Артында JavaScript-ке айналдыратын өз компиляторы (лексер → парсер → генератор) тұр, бірақ ол пайдаланушыдан жасырылмайды: аударылған кодты сол жерде, қатар көресіз.
Жоба екі бөліктен тұрады: компилятор (lib/qazaqscript.js, тәуелсіз бір файл, Node.js-те де жұмыс істейді) және оқыту платформасы (жазба алаңы, 10 қадамдық сабақ, дайын мысалдар кітапханасы). Орнатудың қажеті жоқ — сілтемені ашасыз да, кодты қазақша жаза бастайсыз.
- Неге QazaqScript?
- Жылдам бастау
- Тіл шолуы
- Стандартты кітапхана
- Толық мысал
- Кітапхана ретінде қолдану
- Жоба құрылымы
- Тестілеу
- Үлес қосу
- Мүмкіндіктер / жол картасы
- Лицензия
- Ана тіліңде. Түйінді сөздер қазақ тілінің грамматикасына сай:
болсын,егер … болса,әрбір … ішінде,қайтар. - Орнатусыз. Барлығы браузерде жұмыс істейді. Тәуелділік — нөл.
- Мөлдір. Аударылған JavaScript кодын қатар көресіз — «сиқыр» жоқ, тек түсінікті аударма.
- Толық курс. 10 қадамдық интерактивті сабақ, автотексерумен.
- Латын жазуын қолдайды.
жаз=jaz,болсын=bolsyn— қос жазуда да жұмыс істейді. - Ендіруге дайын. Компилятор — бір тәуелсіз файл (
lib/qazaqscript.js), Node.js-те де жұмыс істейді.
index.html файлын браузерде ашыңыз. Болды.
Кодты сілтемемен бөлісу секілді кейбір функциялар сервер арқылы толық жұмыс істейді:
python -m http.server 8000
# немесе
npm run serveСодан кейін ашыңыз: http://localhost:8000
Windows (PowerShell): алдымен қалтаға өтіңіз —
cd C:\жол\QazaqScript, содан кейін команданы жазыңыз.
Редактор — 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 — еркін пайдаланыңыз, өзгертіңіз, бөлісіңіз.
Ана тіліңде код жаз.