Müasir dil
Siniflər, miras, interfeyslər, cəbri sadalamalar, naxış uyğunlaşdırma, qapanmalar, generatorlar, asinxron/gözlə, tədrici tiplər.
Alqor
Açar sözlər, xəta mesajları, sənədlər və IDE — hamısı ana dilimizdə. Bir dildə konsol proqramı, veb sayt, desktop tətbiq və brauzer kodu yazın.
əgərhər … üçünfunksiyasinifcəhd etgözlə
// Mətnin palindrom olub-olmadığını yoxlayır
funksiya palindromdur(söz: mətn) -> məntiq
dəyişən t = söz.kiçiyə().əvəz(" ", "")
qaytar t == t.tərs()
son
hər söz üçün ["Ana", "Alqor", "212"] içində
əgər palindromdur(söz) onda
yaz("{söz} → palindromdur ✓")
yoxsa
yaz("{söz} → palindrom deyil ✗")
son
son
Ana → palindromdur ✓
Alqor → palindrom deyil ✗
212 → palindromdur ✓
Doqquz yeni konstruksiya — Azərbaycan dilinin hal şəkilçilərindən ölçü vahidlərinə qədər. Hamısı Python, Rust və JavaScript hədəflərində eyni nəticəni verir və sınaqlarla yoxlanır.
Terminologiya Azərbaycan dilinə uyğunlaşdırıldı: sazlayıcı (alqor sazla), kod yoxlayıcısı, bayt kodu. VS Code genişlənməsi yeni sözləri rəngləyir.
// 2.5: dilə xas sintaksis
makro kvadrat(x) = x * x
yaz(kvadrat!(4)) // 16
yaz(5 km + 300 m) // 5.3 km
yaz((90 km/saat).çevir("m/san")) // 25.0 m/san
dəyişən adlar = ["Ali"]
"Vüqar" adlar-a əlavə et // adlar.əlavə("Vüqar")
hər i üçün 3-dən 1-ə qədər
yaz("geri sayım:", i)
son
yaz(sorğu hər x üçün [5, 2, 8, 1] içində
harada x > 1
sırala x azalan
seç x * 10
son) // [80, 50, 20]
funksiya böl(a, b)
tələb b != 0, "bölən sıfır ola bilməz"
qaytar a / b
son
sınaq "bölmə"
gözlənilir böl(9, 3) == 3
son
@qeydEt funksiya f()
Sənədlərdə bax →
02
makro kvadrat(x) = x * x
Sənədlərdə bax →
03
sorğu hər x üçün … seç … son
Sənədlərdə bax →
04
aktyor Hesab · Kanal()
Sənədlərdə bax →
05
5 km + 300 m → 5.3 km
Sənədlərdə bax →
06
Uğur(d) · Uğursuz(x) · ədədə(m)?
Sənədlərdə bax →
07
1-dən 10-a qədər
Sənədlərdə bax →
08
sınaq "ad" … son
Sənədlərdə bax →
09
tələb b != 0 · zəmanət
Sənədlərdə bax →
Dünyada milyonlarla insan proqramlaşdırmaya ingilis dilini öyrənməklə başlayır. Alqor bu maneəni aradan qaldırır: alqoritmi öz dilində düşün, yaz və kompüter sənə öz dilində cavab versin.
Siniflər, miras, interfeyslər, cəbri sadalamalar, naxış uyğunlaşdırma, qapanmalar, generatorlar, asinxron/gözlə, tədrici tiplər.
ı/İ qaydası ilə böyük-kiçik hərf, əlifba sırası ilə sıralama (ə e-dən sonra gəlir), 5.yazıyla() → beş.
Hər xəta Azərbaycanca, kodu ilə, səhvin yeri göstərilir və düzəliş təklif olunur.
«eger» yazsanız «əgər» kimi qəbul olunur — Azərbaycan klaviaturası olmayan kompüterdə də işləyir.
Konsol, veb server, desktop pəncərə və JavaScript (Node.js / brauzer) — eyni koddan.
IDE, paket meneceri, formatlayıcı, kod yoxlayıcısı, sınaq işlədicisi, sənəd yaradıcısı, LSP və sazlayıcı.
Eyni dildə yazdığınız kod dörd fərqli yerdə işləyir — Python icraçısı, veb server, yerli pəncərə və JavaScript.
Marşrutlar, JSON API, HTML şablonları — beş sətirdən başlayır.
veb.Server()s.al("/yol")veb.json()s.dinlə(8080) gətir veb
dəyişən s = yeni veb.Server()
s.al("/", (q) => veb.mətn("Alqor serveri işləyir"))
s.al("/salam/:ad", (q) =>
veb.html(<h1>Salam, {q.parametr("ad")}!</h1>))
s.al("/cəm/:a/:b", (q) => veb.json({
"nəticə": tamƏt(q.parametr("a")) + tamƏt(q.parametr("b"))
}))
s.dinlə(8080)
118 hazır vidjet; eyni komponent vebdə də işləyir.
komponentvəziyyətvidjet.sütun()göstər() gətir pəncərə
gətir vidjet
komponent Salamlama
vəziyyət ad: mətn = ""
göstər()
qaytar vidjet.sütun(boşluq: 12, məzmun: [
vidjet.başlıq(mətn: "Alqor ilə salam"),
vidjet.sahə(etiket: "Adınız", dəyər: özü.ad,
yazıldı: (d) => özü.ad = d),
vidjet.mətn(məzmun: əgər özü.ad == "" onda
"Adınızı yazın…"
yoxsa
"Xoş gəldin, {özü.ad}!" son)
])
son
son
dəyişən p = yeni pəncərə.Pəncərə("Salam", 360, 220)
p.məzmun(yeni Salamlama())
p.göstər()
pəncərə.işlət()
Python olmadan Node.js-də və ya brauzerdə işlət.
alqor işlət --jsalqor qur --hədəf vebalqor yerləşdir # Eyni koddan dörd hədəf — Python olmadan da:
alqor işlət --js proqram.alq # Node.js-də dərhal işlət
alqor qur --hədəf veb proqram.alq # → qurma/veb/index.html
alqor yerləşdir # → statik hostinq üçün qovluq
121 xəta kodu, hər biri Azərbaycanca izah, mənbə parçası və düzəliş təklifi ilə. Hətta səhv yazılmış üzv adını da tutur və düzgününü təklif edir.
dəyişən ədədlər = [5, 2, 8, 1]
yaz(ədədlər.sortla())
✖ ALQ-T006 ÜzvXətası
┌─ nümunə.alq:2:14
│
2│ yaz(ədədlər.sortla())
│ ───┬───
│ └── `siyahı[tam]` tipində `sortla` üzvü yoxdur
│
= kömək: `sırala` demək istəyirdiniz?
= siyahı metodları: sırala · sıralanmış · tərsinəÇevir
IDE-dən paket deposuna qədər hər şey daxildir.
alqorİşlətmək, layihə yaratmaq, qurmaq, sınaq, sənəd, REPLAlqor StudioIDE: redaktor, vizual dizayner, önbaxış, sazlamaalqorpm · alqorhubPaket meneceri və paket deposu serverialqorfmtKodu səliqəyə salır; ASCII açar sözləri düzəldiralqorlint35 qaydalı statik təhlil, avtomatik düzəlişləralqorls · dapLSP və sazlayıcı — VS Code, Neovim, HelixDilin bütün mənbə kodu — kompilyator, Rust icraçısı, Alqor Studio və sənədlər — GitHub-da MIT lisenziyası ilə paylaşılır.
İstifadə edin, öyrənin, dəyişdirin və öz layihələrinizdə sərbəst yayın.
git clone https://github.com/vugarfamiloglu/alqor.git
cd alqor
./alqor işlət numuneler/01-salam.alq # Linux / macOS
./alqor studio # Alqor Studio
cd alqor-rs && cargo build --release # Rust icraçısı
Layihəni bəyəndinizsə, GitHub-da ulduz verin — Alqor-u daha çox insan tapsın.
Problem tapdınız və ya fikriniz var? Issues bölməsində yazın — hər bildiriş oxunur.
Fork edin, dəyişiklik edin və pull request göndərin — hər töhfə dəyərlidir.
Öz Alqor kitabxananızı alqorpm ilə vuqar.pro/hub deposunda başqaları ilə bölüşün.
v2.5.1 hazırdır — Windows, Linux və macOS üçün. Platformanızı seçin və vuqar.pro/hub-dan yükləyin.
Quraşdırıcı Alqor Studio-nu, alqor əmrlərini daxili Python mühitini və sürətli Rust icraçısını özü ilə gətirir — əlavə heç nə qurmaq lazım deyil.
Quraşdırıcıları gözləmədən dili öyrənməyə başla — tam sənədləşmə saytda, Azərbaycan dilində.
Pulsuz yüklə və Azərbaycan dilində proqram yazmağa başla.