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.