Rust Programlama Dili


Kursumuza ön kayıt yaptırmak için bu bağlantıyı kullanabilirsiniz.

Kursun süresi: 250 Saat
Eğitmen : Kaan Aslan

Giriş

  • Programlama Dillerine Genel Bakış
  • Programlama Dillerinin Tarihsel Gelişimi
  • Rust Programlama Dilinin Doğuşu ve Gelişimi
  • Rust Programlama Dilinin Kullanım Alanları
  • Rust Programlama Dilinin Tasarımsal Özellikleri
  • Sistem Programlama Dili Olarak Rust
  • Rust Dökümanları
  • Yardımcı Kaynaklar ve Kitaplar

Rust Geliştirme Sisteminin Kurulumu ve Kullanımı

  • Rust Geliştirme Araçlarının Windows, Linux ve macOS Sistemlerinde Kurulumu
  • Rust Programlarının Derlenmesi ve Çalıştırılması
  • Rust’ta “Merhaba Dünya” Programı
  • Cargo Paket Yöneticisinin kullanımı
  • Rust Kaynak Dosyalarının Organizasyonu
  • Rust’ta Atomlara Ayırma ve Yazım Kuralı

Rust’ta Temel Türler ve Değişken Bildirimleri

  • Statik ve Dinamik Tür Sistemine Sahip Programlama Dilleri
  • Rust’ta Tür Sistemi ve Rust’taki Temel (Skaler) Türler
  • Değişkenlerin Bildirimleri
  • Değişkenlere İlkdeğer Verilmesi
  • Değişkenlerde Değiştirilebilirlik (Mutability)
  • Sabit İfadeleri ve const Bildirimleri
  • Değişkenlerin Gölgelenmesi

Sabitler (Literals)

  • Tamsayı Sabitleri
  • Gerçek Sayı Sabitleri
  • Karakter ve Byte Sabitleri
  • String Sabitleri
  • Ham String Sabitleri
  • Byte String Sabitleri
  • Ham Byte String Sabitleri
  • C String Sabitleri
  • Byte C String Sabitleri
  • Bool Sabitler

Demetler, Diziler ve Dilimler

  • Demetlerin (Tuples) Bildirimleri
  • Demet Elemanlarına Erişim
  • Demetlerin Açılması
  • Dizi Bildirimleri
  • Dizilere İlkdeğer Verilmesi
  • Dizi Elemanlarına Erişim
  • Demetlerle ve Dizilerle İşlemler
  • Dilimlerin (Slices) Oluşturulması
  • Dilimlerde Elemanlara Erişim

Fonksiyonların Tanımlanması ve Çağrılması

  • Fonksiyon Tanımlanması
  • Fonksiyonların Parametreleri
  • Fonksiyonların Geri Dönüş Değerleri
  • Fonksiyonların Çağrılması

Temel Operatörler ve Operatör Öncelikleri

  • Aritmetik Operatörler
  • Karşılaştırma Operatörleri
  • Mantıksal Operatörler
  • Bit Operatörleri
  • Özel Amaçlı Operatörler
  • Rust’ta Operatör Öncelikleri

Tür Dönüştürmeleri

  • Programlama Dillerinde Kuvvetli ve Zayıf Tür Kontrolleri
  • Otomatik Dönüştürme Kavramı ve Rust’ın Katı Tür Kontrolü
  • as Operatörü
  • From ve Into Trait’leri
  • TryFrom ve TryInto Trait’leri

Deyimler

  • Rust Deyimlerine Genel Bakış
  • Rust Deyimlerinin Diğer Dillerdeki Deyimlerle Karşılaştırılması
  • Rust’ta Deyimler de İfade Gibidir
  • Rust’ta Deyimlerin Sınıflandırılması
  • let Deyimi
  • İfadesel Deyimler (Expression Statements)
  • Bloklu İfadeler (Expression With Block)
  • Bloksuz İfadeler (Expression Without Block)
  • Blok İfadeleri
  • Etiketki Blok İfadeleri
  • if ve if let İfadeleri
  • while ve while let İfadeleri
  • for İfadesi
  • İteratörlü for İfadesi
  • loop İfadesi
  • Range İfadesi
  • break İfadesi
  • continue İfadesi
  • match İfadesi
  • match Kalıpları
  • Rust Deyimlerinin C, C++, Java ve C# Deyimleriyle Karşılaştırılması, Benzerlikler ve Farklılıklar

Değişkenlerin Faaliyet Alanları (Scopes) ve Ömürleri

  • Modül Faaliyet Alanı (Item Scope)
  • Kalıp Bağlama Faaliyet Alanı (Pattern Binding Scope)
  • Blok İçerisinde Bildirilen Değişkenlerin Faaliyet Alanları
  • if, for, while, match Gibi Deyimlerde Bildirilen Değişkenlerin Faaliyet Alanları
  • Döngü Etiketlerinin Faaliyet Alanları (Loop Label Scopes)
  • Başlangıç Faaliyet Alanı (Prelude Scope)
  • Değişken Bildirimlerinde Gölgeleme ve Derleyici Optimizasyonu
  • static Değişkenler
  • Rust’taki Faaliyet Alanlarının C, C++, C# Dillerindeki Faaliyet Alanlarıyla Karşılaştırılması, Benzerlikler ve Farklılıklar

Referanslar ve Göstericiler

  • Referans Bildirimleri
  • Referansların Kullanımları
  • Gösterici Bildirimleri
  • Göstericilerin Kullanımları
  • Değiştirilebilir (Mutubale) Referanslar ve Göstericiler
  • Güvenli Olmayan Kod Blokları
  • & ve * Operatörleri
  • Göstericilerin Artırılması ve Eksiltilmesi
  • Referanslar ve Göstericilerle İlgili Tür Uyuşumları
  • Dizilerin Fonksiyonlara Parametre Referans Yoluyla Aktarılması
  • Dizilerin Fonksiyonlara Dilimleme Yoluyla Aktarılması
  • Dizilerin Fonksiyonlara Gösterici Yoluyla Aktarılması
  • Rust’taki Göstericilerin ve Referansların C’deki Göstericilerden ve C++’taki Referanslardan Farklılıkları

Yapılar

  • Yapıların Bildirimleri
  • Yapı Elemanları
  • Yapı Türünden Nesnelerinin Bildirilmesi
  • Yapı Elemanlarına Erişim
  • Yapıların İliştirilmiş (Associated) Fonksiyonları
  • İliştirilmiş Fonksiyonların Tanımlanması ve Kullanımı
  • Yapıların Demet Biçiminde Bildirilmesi
  • Yapı Elemanlarında Görünürlük
  • Yapı Elemanlarının Başka Bir Yapı Türünden Olması Durumu
  • Yapı Türünden Göstericiler ve Referanslar
  • Yapıların Fonksiyonlara Referans Yoluyla Aktarılması
  • Yapıların Fonksiyonlara Gösterici Yoluyla Aktarılması
  • Rust’taki Yapılarla C’deki Yapıların ve C++’taki Sınıfların Karşılaştırılması

Sahiplik ve Ödünç Alma

  • Nesnelerinin Sahipliği
  • Nesnelerinin Sahipliğinin Devredilmesi ve Taşıma Süreci
  • Nesnelerin Ödünç Alınması
  • Değiştirilebilen Nesnelerin Ödünç Alınması
  • Nesnelerin Taşınmasının ve Ödünç Alınmasının Anlamı ve Rust İçin Önemi,
  • Nesnelerin Kopyalanması
  • Nesnelerin Taşınması ve Kopyalanmasının C++’taki Nesnelerin Kopyalanması ve Taşınması İle İlgisi

enum Bildirimi ve enum Sabitleri

  • enum Bildirimi
  • enum Sabitlerinin Kullanımı
  • enum Sabitlerine Tür İliştirilmesi

Modüller

  • Modüllerin Tanımlanması
  • Modül Öğelerine Erişim
  • Modül Öğelerinin Görünürlüğü
  • use Bildirimi

Trait’ler

  • Trait’lerin Tanımlanması
  • Trait’lerin Gerçekleştirilmesi
  • Default Trait Metotları
  • Fonksiyonlarda Trait Bağlaması (Trait Bound)
  • Trait’lerle Java ve C# Gibi Dillerdeki Arayüzlerin Karşılaştırılması

Makrolar ve Inline Fonksiyonlar

  • Makro Kavramı, Makrolara Neden Gereksinim Duyulmaktadır?
  • Dekleratif Makrolar
  • Prosedürel Makrolar
  • Metaprogramlama Kavramı ve Metaprogramlamaya İlişkin Temel Örnekler
  • Inline Fonkisyonlar
  • C’nin Önişlemcisi İle Rust Makrolarının Karşılaştırılması
  • C’nin ve C++’ın Inline Fonksiyonlarıyla Rust’ın Inline Fonksiyonlarının Karşılaştırılması

Genelleştirilmiş (Generic) Fonksiyonlar, Yapılar ve Trait’ler

  • Genelleştirilmiş Fonkiyonlar
  • Genelleştirilmiş Yapılar
  • Genelleştirilmiş Trait’ler
  • Genelleştirilmiş Trait’lerde Bağlama (Trait Bound)
  • Genelleştirilmiş enum Türleri

Öznitelikler (Attributes)

  • Öznitelik Nedir?
  • Rust’ta Özniteliklerin Oluşturulması
  • Çok Kullanılan Standart Özniteliker ve İşlevleri
  • Prosedürel Makrolarla Öznitelikler Oluşturma

Rust ve Nesne Yönelimlilik

  • Rust Nesne Yönelimli Bir Dil Midir?
  • Rust Nesne Tabanlı bir Dil Midir?
  • Rust ve Nesne İlişkisi
  • Rust’ın Nesne Yönelimlilik Bakımından Diğer Dillerle Karşılaştırılması
  • İliştirilmiş Fonksiyonlar ve Trait’lerin Diğer Dillerdeki Benzerleri

Akıllı Göstericiler

  • Box<T> Kullanımı
  • Rc<T> Kullanımı
  • Arc<T> Kullanımı
  • Cell<T> Kullanımı
  • RefCell<T> Kullanımı
  • Weak<<T> Kullanımı

Rust’ta Çok Kullanılan Nesne Tutan Yapılar

  • String Yapısı
  • Vec<T>Yapısı ve Kullanımı
  • VecDeque<T> Yapısı ve Kullanımı
  • HashMap<K, V> Yapısı ve Kullanımı
  • HashSet<T> Yapısı ve Kullanımı
  • LinkedList<T> Yapısı ve Kullanımı

Dosya İşlemleri

  • Dosya Kavramı ve Temel Bilgiler
  • File Yapısı
  • Dosyaların Açılması ve Kapatılması
  • Dosyalardan Okuma Yapılması ve Dosyalara Yazma Yapılması
  • BufReader ve BufWriter Yapıları Kullanılarak Okuma Yazma İşlemleri
  • Dosyalar Üzerinde Diğer Temel İşlemler

Rust’ın Standart Kütüphanesinin Genel Tanıtımı

  • Standart Kütüphanenin Genel Kapsamı ve İçeriği
  • Kütüphane Öğelerinin Kod İçerisinden Kullanılması

Tarih ve Zaman İşlemleri

  • Geçen Zamanın Temsili ve Duration Yapısı
  • Sistem Zamanının Elde Edilmesi ve Değiştirilmesi
  • Zamansal İşlemler
  • Tarihlerle işlemler ve chrono Kütüphanesi

Dosya Sistemine İlişkin İşlemler

  • Dosyaların Silinmesi, Kopyalanması, İsimlerinin Değiştirilmesi
  • Dizinlerin yaratılması ve Silinmesi
  • Dizin Girişlerinin Elde Edilmesi
  • Diğer Önemli Dosya ve Dizin İşlemleri

Kütüphanedeki Nesne Tutan Diğer Önemli Yapılar

  • BTreeMap ve BTreeSet Yapıları
  • BinaryHeap Yapısı

İteratörler ve İteratörlerin Kullanımı

  • Iterator Trait’i
  • for Döngüsünün Iteratör Karşılığı
  • İteratör Türleri
  • Iteratör Trait’ini Destekleyen Yapıların Yazılması
  • Nesne Tutan Yapıların İteratör Yoluyla Dolaşılması
  • İteratör Yoluyla Geriye Doğru Dolaşım
  • String Nesnelerinin İteratör Yoluyla Dolaşılması
  • Dosya İşlemlerinde İteratör Kullanımı
  • Özel İteratör Türleri

Rust’ta Asenkron Programlama Modeli

  • İşbirliği İle Birlikte Çalışma (Coopertaive Multitasking)
  • async/await Modeli
  • async/await Modelinin Gerçekleştirimleri
  • Asenkron Akım İşlemleri

Prosesler İle İlgili İşlemler

  • Proses Kavramı
  • Proseslerin Exit Kodları
  • Proseslerin Çevre Değişkenlerinin Elde Edilmesi ve Oluşturulması
  • Proseslerin Çalışma Dizinlerinin Elde Edilmesi ve Değiştirilmesi
  • Proseslerin Yaratılması (Başka Bir Programın Çalıştırılması)

Thread’ler ve Thread Senkronizasyonu

  • Thread Kavramı, Thread’lere Neden Gereksinim Duyulmaktadır?
  • Thread’lerin Yaratılması
  • Temel Thread İşlemleri
  • Thread Senkronizasyonu ve Önemli Senkronizasyon Kalıpları
  • Thread Havuzları
  • Rust’ta Thread Güvenliliği
  • Çok Thread’li Uygulamalarda Dikkat Edilmesi Gereken Durumlar
  • Rust’ta Paralel Programlama

Soket Programlama ve Ağ Üzerinde İşlem Yapan Kütüphane Öğeleri

  • Ağ Haberleşmesinin Tarihçesi ve OSI Katmanları
  • IP Protokol Ailesi
  • Soket Kütüphaneleri
  • TCP/IP Programlama
  • Server ve Client Programların Yazımı
  • Çok Client’lı Server Uygulamaları
  • UDP/IP Programlama
  • UDP Server ve UDP Client Programların Yazılması
  • Blokeli ve Blokesiz Soket İşlemleri
  • Çok Client’lı Uygulamalarda Performans İyileştirmeleri

Rust’ın Standart Makroları

  • Assert Makroları
  • Debug Makroları
  • Print ve Format Makroları
  • Diğer Önemli Standart Makrolar

Rust Ekosistemi

  • Cargo Build Sistemi ve Paket Yöneticisi
  • Önemli Rust Araçları
  • crates.io Merkezi Paket Deposu
  • Ekosistemdeki Önemli Kütüphaneler

Rust’ın C İle Entegrasyonu

  • C’de Yazılmış OLan Fonksiyonların Rust’tan Kullanılması
  • Rust’ta Yazılmış Olan Fonksiyonların C’den Kullanılması

Ön Koşul: Daha önce herhangi bir programlama dilinde uygulamalı çalışma yapmış olmak ya da C ve Sistem Programcıları Derneğinde “Programlamaya Giriş” kursuna katılmış olmak.

Kursumuza ön kayıt yaptırmak için bu bağlantıyı kullanabilirsiniz.

 Kurs ücreti duyuru sayfasında belirtilmektedir.

Bu kurs C ve Sistem Programcıları Derneği ve Sistem Bilgisayar işbirliği ile düzenlenmektedir.