- Rust-ın yaranma tarixini və harada istifadə olunduğunu izah etmək
- Yaddaşın idarə olunmasının üç yanaşmasını müqayisə etmək: əl ilə, zibil yığıcı və sahiblik
- Rust-ı rustup ilə quraşdırmaq və
cargo new,cargo run,cargo buildəmrlərindən istifadə etmək println!makrosu ilə mətn və dəyişənləri ekrana çıxarmaq
Təsəvvür et ki, C++ qədər sürətli işləyən, amma yaddaşla bağlı səhv etməyə imkan verməyən bir dil var: səhvi proqram çökməzdən əvvəl kompilyatorun özü tapır. Microsoft və Google mühəndisləri bildirib ki, onların məhsullarındakı ciddi təhlükəsizlik boşluqlarının təxminən 70%-i məhz yaddaş xətalarından yaranır. Rust bu problemi həll etmək üçün yaradılıb və bu gün ən çox sevilən proqramlaşdırma dillərindən biridir.
Qısaca Rust haqqında
Rust sistem proqramlaşdırma dilidir: kod birbaşa maşın koduna kompilyasiya olunur, virtual maşın və ya interpretator lazım olmur. Onun üç əsas vədi var: sürət (C və C++ səviyyəsində), yaddaş təhlükəsizliyi (asılı qalmış göstəricilər, yaddaşın iki dəfə azad edilməsi və verilənlər yarışı kompilyasiya zamanı tutulur) və məhsuldarlıq (Cargo aləti, aydın xəta mesajları və güclü tip sistemi).
- 2006Şəxsi layihə kimi başlanğıc
Mozilla əməkdaşı Graydon Hoare Rust üzərində öz şəxsi layihəsi kimi işləməyə başlayır.
- 2009Mozilla-nın dəstəyi
Mozilla layihəni rəsmi olaraq maliyyələşdirməyə başlayır və onu brauzer texnologiyaları üçün inkişaf etdirir.
- 2015Rust 1.0
May ayında ilk stabil versiya çıxır. O vaxtdan bəri hər 6 həftədən bir yeni versiya buraxılır.
- 2021Rust Foundation
AWS, Google, Huawei, Microsoft və Mozilla dilin inkişafını dəstəkləyən müstəqil fondu yaradır.
- 2022Linux nüvəsində
Linux 6.1 versiyasına Rust dilində drayver yazmaq üçün ilkin dəstək əlavə olunur.
Rust harada istifadə olunur?
- Əməliyyat sistemləri — Linux nüvəsinin drayverləri, Windows-un bəzi komponentləri və Android-in yeni hissələri.
- Brauzerlər — Firefox-un bir sıra hissələri, məsələn, CSS üslublarını hesablayan Stylo mühərriki.
- WebAssembly — Rust kodu WebAssembly-yə kompilyasiya olunur və brauzerdə demək olar ki, maşın kodu sürətilə işləyir.
- Komanda sətri alətləri —
ripgrep,fd,batkimi sürətli alətlər; VS Code redaktorunda axtarışı məhzripgrepedir. - Serverlər və bulud — AWS-in Firecracker virtual maşınları, Cloudflare və Discord-un yüksək yüklü xidmətləri.
Zibil yığıcı olmadan yaddaş təhlükəsizliyi
Hər proqram işləyərkən yaddaş ayırır və sonra onu geri qaytarmalıdır. C və C++ dillərində bunu proqramçı əl ilə edir, səhv etsə, proqram çökür və ya təhlükəsizlik boşluğu yaranır. Java, Python və Go-da zibil yığıcı (garbage collector) istifadə olunmayan yaddaşı arxa planda təmizləyir, amma bunun üçün əlavə yaddaş və vaxt sərf olunur. Rust üçüncü yolu seçib: sahiblik qaydaları. Kompilyator hər dəyərin kimə məxsus olduğunu izləyir və yaddaşı lazım olan anda özü azad edir.
| Yanaşma | Dillər | Üstünlüyü | Çatışmazlığı |
|---|---|---|---|
| Əl ilə idarə | C, C++ | maksimal sürət və nəzarət | sızmalar, asılı qalmış göstəricilər |
| Zibil yığıcı | Java, C#, Python, Go | rahat və təhlükəsiz | fasilələr, əlavə yaddaş |
| Sahiblik və borc yoxlayıcısı | Rust | həm sürət, həm təhlükəsizlik | başlanğıcda öyrənmək çətindir |
rustup ilə quraşdırma
- 1Quraşdırıcını yüklə
Windows-da
rustup.rssaytındanrustup-init.exefaylını yüklə və işə sal. macOS və Linux-da terminalda aşağıdakıcurləmrini icra et. - 2Windows-da C++ alətləri
Windows-da Rust-a Microsoft-un Visual Studio C++ Build Tools paketi lazımdır. Quraşdırıcı onu özü təklif edir — standart seçimləri qəbul et.
- 3Quraşdırmanı yoxla
Yeni terminal aç və
rustc --versionvəcargo --versionyaz. Hər ikisi versiya nömrəsini göstərməlidir. - 4Vaxtaşırı yenilə
rustup updateəmri Rust-ı ən son stabil versiyaya yeniləyir.
# macOS / Linux
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# any OS: check the tools
rustc --version
cargo --versionrustc), Cargo-nu, rustfmt formatlayıcısını, clippy analizatorunu və standart kitabxananın sənədlərini quraşdırır.Cargo ilə ilk layihə
Cargo Rust-ın rəsmi qurma alətidir və paket meneceridir: layihə yaradır, kodu kompilyasiya edir, proqramı işə salır, testləri icra edir və kitabxanaları yükləyir. Yeni layihəni cargo new əmri yaradır:
cargo new hello
cd hello
cargo runhello/
├── Cargo.toml
├── .gitignore
└── src/
└── main.rsCargo.toml layihənin adını, versiyasını və asılılıqlarını saxlayır, kod isə src/main.rs faylındadır. Cargo həm də git deposu yaradır.[package]
name = "hello"
version = "0.1.0"
edition = "2024"
[dependencies]edition dilin buraxılışıdır (2015, 2018, 2021, 2024). Yeni layihələr ən sonuncunu alır; bu kursdakı kod həm 2021, həm də 2024 buraxılışında işləyir.fn main() {
println!("Hello, world!");
}Hello, world!
fn main()— proqramın giriş nöqtəsi; icra məhz buradan başlayır.println!funksiya deyil, makrosdur — Rust-da makroslar adın sonundakı!işarəsi ilə tanınır.- Mətn ikiqat dırnaqlarda yazılır, təlimat isə
;ilə bitir. Girinti üçün 4 boşluq istifadə olunur.
$ cargo run
Compiling hello v0.1.0 (/home/aysel/hello)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.61s
Running `target/debug/hello`
Hello, world!cargo run əvvəlcə kodu kompilyasiya edir (target/debug qovluğuna), sonra proqramı işə salır. Vaxt hər kompüterdə fərqli olacaq.Dəyişənləri çap etmək
println! mətnindəki {} yer tutucusudur: onun yerinə vergüldən sonra verilən qiymət qoyulur. Dəyişənin adını birbaşa mötərizənin içinə də yazmaq olar: {name}. Dəyişən let açar sözü ilə yaradılır — bu barədə növbəti dərsdə ətraflı danışacağıq.
fn main() {
let name = "Aysel";
let year = 2015;
println!("Hello, {name}!");
println!("Rust 1.0 was released in {}.", year);
println!("{} + {} = {}", 2, 3, 2 + 3);
}Hello, Aysel! Rust 1.0 was released in 2015. 2 + 3 = 5
| Əmr | Nə edir |
|---|---|
cargo new name | yeni layihə yaradır |
cargo run | kompilyasiya edib işə salır |
cargo build | target/debug qovluğuna qurur |
cargo build --release | optimallaşdırılmış versiyanı target/release-ə qurur |
cargo check | fayl yaratmadan yalnız xətaları yoxlayır — ən sürətlisi |
cargo fmt | kodu rəsmi üsluba salır |
cargo clippy | kodu analiz edib məsləhətlər verir |
fn main() {
let name = 'Aysel';
println("Hello, {name}!");
}fn main() {
let name = "Aysel";
println!("Hello, {name}!");
}char) üçündür, mətn isə ikiqat dırnaqda yazılır. println sonunda ! olmadan çağırılanda kompilyator E0423 xətasını verir və println! yazmağı məsləhət görür.Əsas fikirlər
- Rust sürəti, yaddaş təhlükəsizliyini və məhsuldarlığı birləşdirən kompilyasiya olunan sistem dilidir.
- Rust-da zibil yığıcı yoxdur: yaddaşı sahiblik qaydaları idarə edir, kompilyator onları yoxlayır.
- rustup Rust-ı quraşdırır və yeniləyir; Cargo layihə yaradır, qurur, işə salır və kitabxanaları yükləyir.
println!makrosdur;{}və ya{name}yer tutucuları qiymətləri mətnə yerləşdirir.- Sürət lazım olanda
cargo build --releaseilə optimallaşdırılmış versiya qur.
Özünü yoxla
10 sual. Hər düzgün cavab XP qazandırır.