Open for new projects

Alqor documentation

Official documentation — from zero to your first web and desktop program.

1What is Alqor?

Alqor is a programming language written entirely in Azerbaijani. Keywords, error messages and documentation are all in the native language.

There is not a single English word in the code below — əgər instead of if, yaz instead of print. And the letters ə, ı, ş work fully.

salam.alq alqor
yaz("Adınızı daxil edin:")
dəyişən ad = oxu()

yaz("Yaşınızı daxil edin:")
dəyişən yaş = oxuTam()

əgər yaş >= 18 onda
    yaz("{ad}, siz yetkinsiniz.")
yoxsa
    yaz("{ad}, siz hələ yetkin deyilsiniz.")
son

With Alqor you can write console programs, websites and APIs, desktop apps and libraries — all in one language, one syntax.

Download Alqor from vuqar.pro/hub (Windows, Linux, macOS), or start learning the language with this guide.

2Your first program

Create a file named salam.alq and write:

salam.alq alqor
yaz("Salam, dünya!")

Then run it:

terminal bash
alqor işlət salam.alq
nəticə output
Salam, dünya!

To try without creating a file there is an interactive mode (REPL):

terminal bash
alqor söhbət
Azerbaijani letters: in Alqor Studio just type ASCII — type eger and it becomes əgər. Or use the ;e → ə, ;s → ş compose keys.

3Variables and types

tiplər.alq alqor
dəyişən ad = "Aysel"          // mətn
dəyişən yaş = 24              // tam ədəd
dəyişən boy = 1.68            // onluq ədəd
dəyişən tələbədir = doğru     // məntiqi
dəyişən heçnə = boş           // dəyər yoxdur

sabit Pİ = 3.14159            // dəyişməz

If you want to declare the type explicitly:

tiplər.alq alqor
dəyişən say: tam = 0
dəyişən qiymət: onluq = 9.99
dəyişən adlar: siyahı[mətn] = []
TypeExample
tam42, -7, 1000000
onluq3.14, -0.5
mətn"Salam"
məntiqdoğru, yanlış
siyahı[T][1, 2, 3]
lüğət[A,D]{"ad": "Aysel"}

4Conditions and selection

sert.alq alqor
əgər yaş >= 18 onda
    yaz("Yetkin")
yoxsa əgər yaş >= 13 onda
    yaz("Yeniyetmə")
yoxsa
    yaz("Uşaq")
son

For many options, use seç (select):

sec.alq alqor
seç gün
    hal "B.e", "Ç.a" → yaz("İş günü")
    hal "Ş", "B" → yaz("İstirahət")
    hal 1..5 → yaz("Rəqəm")
    digər hallarda → yaz("Naməlum")
son

5Loops

dovr.alq alqor
// 1-dən 5-ə qədər
hər i üçün 1..5 içində
    yaz("Rəqəm: {i}")
son

// Siyahı üzərində
dəyişən meyvələr = ["alma", "armud", "üzüm"]
hər m üçün meyvələr içində
    yaz(m)
son

// Şərtli dövr
dəyişən i = 0
nə qədər ki i < 5
    yaz(i)
    i += 1
son

// Sayla təkrar
təkrarla 3 dəfə
    yaz("Salam")
son

6Functions

funksiya.alq alqor
funksiya salamla(ad: mətn)
    yaz("Salam, {ad}!")
son

funksiya topla(a: tam, b: tam) -> tam
    qaytar a + b
son

salamla("Aysel")
yaz(topla(3, 4))              // 7

// Qısa (lambda) funksiya
dəyişən ikiqat = (x) => x * 2
yaz(ikiqat(21))              // 42

7Lists and dictionaries

siyahı.alq alqor
dəyişən s = [3, 1, 4, 1, 5]

s.əlavə(9)                    // sona əlavə
yaz(s[0])                     // 3
yaz(uzunluq(s))               // 6
yaz(s.sıralanmış())           // [1, 1, 3, 4, 5, 9]
yaz(s.cəm())                  // 23
yaz(s.filtr((x) => x > 3))    // [4, 5, 9]
yaz(s.çevir((x) => x * 10))   // [30, 10, 40, 10, 50]

A dictionary for key–value pairs:

lüğət.alq alqor
dəyişən yaşlar = {"Aysel": 24, "Rəşad": 31}

yaz(yaşlar["Aysel"])          // 24
yaşlar["Nigar"] = 28

hər ad, yaş üçün yaşlar içində
    yaz("{ad}: {yaş}")
son

8Classes

sinif.alq alqor
sinif İnsan
    xassə ad: mətn
    xassə yaş: tam

    qurucu(ad: mətn, yaş: tam)
        özü.ad = ad
        özü.yaş = yaş
    son

    metod təqdim()
        yaz("Mən {özü.ad}, {özü.yaş} yaşım var.")
    son
son

dəyişən a = yeni İnsan("Aysel", 24)
a.təqdim()

Inheritance and method overriding:

teleb.alq alqor
sinif Tələbə miras İnsan
    xassə universitet: mətn

    qurucu(ad: mətn, yaş: tam, universitet: mətn)
        üst(ad, yaş)
        özü.universitet = universitet
    son

    əvəz et metod təqdim()
        yaz("Mən {özü.ad}, {özü.universitet} tələbəsiyəm.")
    son
son

9Error handling

xeta.alq alqor
cəhd et
    dəyişən n = tamƏt(oxu("Ədəd: "))
    yaz("İki qatı: {n * 2}")
tut (x: ÇevrilməXətası)
    yaz("Bu ədəd deyil!")
son

Raising your own error and checking a condition:

bol.alq alqor
funksiya böl(a: onluq, b: onluq) -> onluq
    təmin b != 0 yoxsa
        at BölməXətası("Sıfıra bölmək olmaz")
    son
    qaytar a / b
son

10Web server

A web server that works in just five lines:

server.alq alqor
gətir veb

dəyişən s = yeni veb.Server()
s.al("/", (sorğu) => veb.mətn("Salam, dünya!"))
s.dinlə(8080)

Route parameters and a JSON response:

server.alq alqor
s.al("/salam/:ad", (q) =>
    veb.html(<h1>Salam, {q.parametr("ad")}!</h1>))

s.al("/api/vaxt", (q) => veb.json({
    "saat": vaxt.indi().saat,
    "dəqiqə": vaxt.indi().dəqiqə
}))

11Desktop app

pencere.alq alqor
gətir pəncərə

dəyişən p = yeni pəncərə.Pəncərə("Mənim Proqramım", 800, 600)
p.məzmun(<h1>Salam, dünya!</h1>)
p.göstər()
pəncərə.işlət()

A stateful component — the same code also runs on the web:

saygac.alq alqor
gətir vidjet

komponent Sayğac
    vəziyyət say: tam = 0
    göstər()
        qaytar <button klik={() => özü.say += 1}>
            Basıldı: {özü.say}</button>
    son
son

12Tools and commands

CommandWhat it does
alqor işlət [fayl]Runs the program
alqor söhbətInteractive mode (REPL)
alqor yeni <ad>Creates a new project
alqor sınaRuns the tests
alqor yoxlaFinds errors (without running)
alqor format .Formats the code
alqor studioAlqor Studio IDE
alqor köməkAll commands

New project templates:

terminal bash
alqor yeni mənim-saytım --şablon veb
alqor yeni mənim-tətbiqim --şablon desktop
alqor yeni mənim-kitabxanam --şablon kitabxana