• Yapay zekadan makale özeti

    • Bu video, Sakarya Üniversitesi Bilgisayar Mühendisliği son sınıf öğrencisi Ahmet Akan Aksoy tarafından sunulan bir Rust programlama dili eğitim içeriğidir.
    • Video, Rust'un 2011'de Mozilla ekibi tarafından geliştirilen modern bir programlama dilinin temel özelliklerini ve avantajlarını kapsamlı şekilde ele almaktadır. İçerik, Rust'un tarihçesi, temel kavramları (ownship, borrowing, referanslar), derleme süreci, Cargo proje yapısı, değişkenler, fonksiyonlar, döngüler, hata yönetimi ve bellek yönetimi gibi konuları kod örnekleriyle açıklamaktadır. Ayrıca Rust'un diğer dillere göre avantajları ve büyük şirketlerdeki kullanım alanları da anlatılmaktadır.
    • Sunum, Rust'un güvenli ve verimli paralel programlama imkanları sunduğu, sürekli güncellenmesi gerektirmeyen bir yapıya sahip olduğu ve özellikle büyük projelerde ve paralel yapılar için tercih edildiği vurgulanmaktadır. Video, teorik bilgilerin yanı sıra pratik kod örnekleri ve diğer programlama dilleriyle karşılaştırmalarla desteklenmektedir.
    Sunum ve Rust Dili Hakkında Giriş
    • Konuşmacı Ahmet Akan Aksoy, Sakarya Üniversitesi Bilgisayar Mühendisliği'nde son sınıf öğrencisi.
    • Rust programlama dili, 2011'de ortaya çıkmış ve daha önceki yazılım dillerinin sahip olduğu negatif özellikleri deneyim yoluyla halletmek için geliştirilmiş.
    • Rust, son dört senedir üst üste Stack Overflow anketlerinde en sevilen dil olarak seçilmiş.
    01:31Rust'un Popülerliği
    • Rust, en çok kullanılan dil kategorisinde ilk on'da olmasa da, en sevilen dil kategorisinde birinci olmuş.
    • 2018'de %78.90 oranında en sevilen dil seçilmiş ve bu oran 2018-2019 arasında %78'den %83'e çıkmış.
    • Rust, kullanıcıların dili kullanırken zevk aldıkları ve diğer dillerde yaşadıkları zorlukları ortadan kaldırdığı için ilgi çekici bir dil.
    01:57Rust'un Modern Olmasının Sebepleri
    • Rust'un modern olması için üç farklı sebep sayılabilir, bunlardan biri Moore Yasası ile ilgili teknik bir sebep.
    • Moore Yasası, yaklaşık iki senede bir işlemcilerin hızlarının iki katına çıkacağını tahmin eden bir yasa olup, son yıllarda geçerliliğini yitirmeye başlamış.
    • İşlemcilerin hızları normalde arttığı hızda artmadığı için, daha hızlı işlemciler üretmekten çok multi-core (birden fazla çekirdek) programlama paradigması tercih ediliyor.
    03:00Paralel Programlama ve Rust
    • Modern dillerin çoğu kendisine paralelliği entegre etmiş durumda, özellikle JavaScript 6'dan sonra asenkron programlama felsefesi ortaya atılmış.
    • Rust ve Go, yaklaşık aynı dönemlerde ortaya çıkan ve paralel programlama için tasarlanmış diller.
    • Rust, Mozilla Firefox'u yazan ekip tarafından desteklenen ve zekice tasarlanmış bir dil.
    03:23Rust'un Avantajları
    • Rust, C++'da olduğu gibi manuel olarak memory saffeti yapmamız gerektiği için, geliştiricilerin memory saffeti tasarımının önemini daha iyi anlamalarına yardımcı oluyor.
    • Rust, eski dillerdeki birçok sıkıntıyı ortadan kaldırıyor ve Mozilla gibi kurumlar tarafından destekleniyor.
    • Bazı eski diller kendilerini güncelleyerek sıkıntılardan kurtulabilir, ancak bazen yeni bir dil yazmak daha tercih ediliyor.
    04:32Rust Dilinin Özellikleri ve Tarihi
    • Rust dilinin en önemli özellikleri arasında "ownship" kavramı bulunuyor, bu kavram sistem programlama dilinde garbaş kullanamazken, Rust'ta entegre olarak kullanılabiliyor.
    • Garbaş kolektörü sistemi yavaşlatır ve özellikle tarayıcılar gibi hızlı çalışan uygulamalarda kullanılamaz, bu nedenle Rust'ta "ownship" kavramı ortaya çıkmıştır.
    • Rust Mozilla ekibi tarafından geliştirilmiş, temelde Firefox'un paralel çalışma sorunlarını çözmek için tasarlanmış ve şu anda Firefox'un yaklaşık %6'sı Rust ile yazılmış durumda.
    05:33Paralel Kod Yazmanın Zorlukları
    • Firefox gibi milyonlarca satır kod içeren büyük projelerde paralel kod yazmanın yan etkilerini tahmin etmek çok zordur.
    • Mozilla'nın yedi yıl önce açılmış bir CSS parting hatası örneğinde, paralel çalışması için düzeltilmesi gereken bir sorunun çözülmesi için büyük çaba gerektirmektedir.
    • Paralel select matching işlemi gibi basit bir iş bile paralelleştirildiğinde son derece kompleks sonuçlara yol açabilir.
    07:35Rust'un Güvenlik Özellikleri
    • Rust güvenli bir dil olarak tasarlanmış, güvenli olmayan kod yazmak için özel makroları aktifleştirmek gerekiyor.
    • Rust derleyicisi hata gibi görünmeyen, ancak ileride potansiyel olarak hata olabilecek kodları da engelliyor.
    • Rust'un kurulumu oldukça basit, sadece iki komutla sisteme kurulabiliyor.
    08:31Cargo ve Rust'un Dökümantasyonu
    • Cargo, Rust'un paket yöneticisi olup, paket yöneticisi kavramını ileriye taşıyor ve projenin yönetimi ile ilgili her şeyi kontrol ediyor.
    • Cargo, build tool, test, dökümantasyon oluşturma ve paket yayınlayıcı gibi birçok özelliği sunuyor.
    • Rust'un dökümantasyonu çok iyi, sıfırdan başlayıp ileri seviyeye kadar anlatır ve rustup-docs komutu ile bilgisayarda sunucu çalıştırılarak erişilebilir.
    10:29Rust Programlama Dili Temelleri
    • Rust programlama dilinde "Hello World" örneği, sistem programlama dillerinde yaygın olan "main" fonksiyonu ile başlar ve ekrana yazdırmak için "println!" makrosu kullanılır.
    • Rust'un makroları C++'daki makrolardan daha güçlüdür ve dilin fonksiyonel yapısı nedeniyle makro kavramı daha önemlidir.
    • Derleme ve çalıştırma işlemi için "cargo" aracı kullanılır ve "cargo new" komutu ile proje oluşturulduğunda otomatik olarak gerekli klasör yapısı oluşturulur.
    12:28Değişkenler ve Immutable Kavramı
    • Rust'ta değişkenler "let" ifadesiyle tanımlanır ve "println!" fonksiyonu standart ekrana yazdırma işlemi için kullanılır.
    • Rust'ta "immutable" (değişmez) kavramı vardır; bir değişken tanımlandıktan sonra değeri değiştirilemez.
    • Rust'un hata mesajları son derece açıklayıcıdır ve sorunun nasıl çözülebileceği hakkında bilgi verir.
    15:23Immutable ve Mutable Değişkenler
    • Immutable değişkenler, değiştirilmemesi gereken veriler için kullanılır ve bu güvenlik açısından avantaj sağlar.
    • Mutable değişkenler değiştirilebilir olsa da, Rust'un ownership sistemi üzerinden belli sınırlamalar getirilmiştir.
    • Fonksiyonlar oldukça basit bir yapıya sahiptir ve dönüş değeri "=>" operatörü ile belirtilir.
    17:54Koşullu İfadeler ve Veri Yapıları
    • Koşullu ifadelerde "if" ve "match" gibi yapılar kullanılır ve her ifade bir değer döndürür.
    • Diziler sabit veri yapılarıdır, yeni eleman eklenemez ancak içindeki veriler değiştirilebilir.
    • Vektörler daha esnek ve gelişmiş veri yapılarıdır, yeni elemanlar eklenebilir ve çıkarılabilir.
    21:11Python'da İterasyon ve Döngüler
    • İyi bir tasarım varsa yeni şeyler üretmeye gerek yok, expression kullanılarak 1'den 9'a kadar sayıları yazdırabiliriz.
    • İteratörler (iterable değişkenler) Python'da da mevcuttur; liste oluşturup iter fonksiyonuyla içindeki elemanlar üzerinde iteration işlemi yapılabilir.
    • Var döngüleri de mevcuttur ve sonsuz döngü oluşturur, break komutu görmeden devam eder.
    22:58Fonksiyonel Programlama Kavramları
    • İteratör kavramı fonksiyonel programlamada kullanılır ve Java, JavaScript gibi birçok dile sonradan eklendi.
    • Filtreleme işlemi yaparken belirli bir şart sağlandığında değişken döndürülür, sağlamadığında döndürülmez.
    • Haritalama işlemi ile belirli bir aralıkta sayıların kareleri alınabilir.
    24:18Null Pointer Hatası ve Rust'un Çözümü
    • Null pointer hatası, ilk geliştiren adam tarafından son derece pişmanlık duyulan bir hata türüdür ve milyarlarca dolarlık zarara sebep olmuştur.
    • Rust, null yerine "Option" adlı bir veri tipi kullanır ve bu tip iki durumu içerir: Some ve None.
    • Option kullanırken mutlaka paket edip açmak gerekiyor, bu da hata yönetimi için zorunlu olur.
    27:09Rust'un Hata Yönetimi ve String Türleri
    • Rust'ta "Result" ifadesi, hata yönetimi için kullanılır ve hata durumunda "Err", hata olmadan değer döndürür.
    • Rust'ta iki farklı string tipi vardır: "String" (dinamik, büyüyebilir) ve "str" (sabit, daha az özellik).
    • Rust derleyici, mantık dışı kodları tespit edip uyarı verir ve nasıl düzeltilmesi gerektiğini belirtir.
    29:46Rust'un Hafıza Yönetimi
    • Rust, garbage collector barındırmaz ve bunu çözmek için iki kuraldan oluşan bir sistem kullanır.
    • İlk kurala göre, hafızadaki bir kaynağın sahibi, onu temizlemek için sorumludur.
    • İkinci kurala göre, bir değişken kapsam dışına çıktığında otomatik olarak temizlenir.
    33:09Rust Dilinde Kollektör Kullanımı
    • Rust dilinde kollektör kullanımı, bir değişkenin aynı anda iki referansın olmasına izin vermemesi sayesinde paralel çalışmaya ve hiperlekli kaynakları kontrol etme üzerine birçok avantaj sağlıyor.
    • Rust'da bir değişkeni başka bir değişkene atamak için "copy trade" dediğimiz bir özellik kullanmak gerekiyor, bu manuel olarak yapılması gereken bir işlem.
    • Rust'da referanslar "bowing" kavramı sayesinde fonksiyonlarda mülkiyeti alır ve bu özellik, değişkenlerin paralel çalışmasını engeller.
    34:27Rust Fonksiyonları ve Mülkiyet Kavramı
    • Rust'da fonksiyonlarda mülkiyet kavramı önemlidir; bir fonksiyona verilen değişken, o fonksiyonun kullanımından sonra geri verilir.
    • Rust'da bir değişkeni fonksiyona verdiğinizde, o değişkene erişimi başka fonksiyonlar veya değişkenlerden kısıtlar.
    • Bu özellik, trt işlemlerinde karşımıza çıkabilecek bir sürü sıkıntının temel kaynağını ortadan kaldırıyor.
    41:45Rust'un Gelişim Süreci ve Özellikleri
    • Rust'un gelişmesinde en önemli etkenlerden biri, yaklaşık bir ay önce yapılan bir sürümüzdür.
    • Rust, C++'dan birçok özelliği kendi içine almıştır, örneğin "unique pointer" kavramı.
    • Rust'un en sevilen özellikleri arasında "immutable data" (değiştirilemeyen veri) tercih etme prensibi bulunmaktadır.
    45:36Rust Komünitesi ve Kaynaklar
    • Rust'un kişisel bir topluluğu vardır ve bu topluluk oldukça dinamiktir.
    • Rust için "disc" adlı bir site bulunmaktadır ve bu site haftalık bülten gibi bir şekilde güncellenmektedir.
    • Rust geliştiricileri Discord üzerinden doğrudan iletişim kurulabilmekte ve sorular cevaplanabilmektedir.
    47:40Değişken Tanımlama ve Kullanımı
    • Değişkenler tanımlandığında, sahibi dışında diğerlerinin nasıl davranacağı ilgili değildir.
    • Bir değişken tanımlandığında, o değişken o değere sahip olur ve bunu başkasına aktarana kadar bu şekilde kalır.
    • Değişkenler birlikte tanımlanırken, kimin ne olacağı tam olarak net bir şekilde belli edilmesi gerekir.
    49:01Rastla Dili Kullanım Alanları
    • Rastla dili yeni olduğu için henüz geniş bir kitlesi yoktur, ancak özellikle senliye yöneliyor.
    • Rastla, em sistemlerde kullanmak yerine daha güvenli tasarımsal olarak tercih edilebilir.
    • Dili modül tanımlamak, paralel yapı tasarlamak ve büyük projeler için kullanmak için tercih edebilirsiniz.
    50:18Rastla Dili İçin Özel Programlar
    • Rastla dili için yazılmış "rgg" adlı program, dosyaları çok daha hızlı arama imkanı sunar.
    • Bu program, milyonlarca dosyayı saniyeler içinde arayabilmektedir.
    • Rastla dili, çıktısını renkli vermek gibi kullanıcı dostu özellikler sunmaktadır.
    52:14Rastla Dili Kullanıcıları
    • Digital Ocean, Rastla dili ile paralel işlemleri ve sunuculardaki paylaşımları yapmaktadır.
    • Microsoft, Pops, Wat Company ve Samsung gibi büyük şirketler Rastla dili kullanmaktadır.
    • Reddit, Rastla dili ile geliştirilen bir sayfasına sahiptir ve resmi olarak Rastla developer aramaktadır.
    55:34Rastla Dili Özellikleri
    • Rastla dili, akademik bir dil olmasına rağmen son kullanıcıya hitap etmeyi göz önünde bulunduruyor.
    • Derleyicinin değerleme sırasında bazı sorunları çözebiliyor olması gerekiyor.
    • Rastla dili, yeni bir dil olduğu için hatalar tespit edildiğinde değişiklik yapabilir, eskiler bunu yapamaz çünkü çok fazla kullanıcı altyapısı var.
    59:01Fonksiyonel Özellikler
    • Rastla dilinde isimsiz fonksiyonlar (lamba fonksiyonları) kullanılabilir.
    • Fonksiyonlar içinde karmaşık işlemler yapılabilir.
    • Derleme sürelerini optimize etmeye çalışıyorlar, bu nedenle derleme süresi uzun olabilir.
    1:00:59Programlama Dilleri ve Sistem Programcılığı
    • Sistem programcılığı için ownership kavramı sayesinde sorunların çözümü ve geliştirme süreci daha iyi hale getirilmiş gibi görünüyor.
    • Günümüzde yazılım ve yazılımcılar çok önemli olduğu için, bir ürünün ne kadar sürede geliştirildiği daha çok önem kazanmış durumda.
    • Bir ayda veya bir senede yazılan bir ürünün sistem programcılığı ile ilgili olup olmadığı önemli bir tercih kriteri olabilir.
    1:02:02Go ve Python Karşılaştırması
    • Go ve Python, aynı döneme çıkan ve başarılı olan iki programlama dilidir.
    • Python'un syntaxına benzeyen bir C diline benzetilebilir.
    • Go ve Python arasındaki farklar çok büyük olmasa da, Go daha tercih edilmektedir.
    1:03:14C ve C++ Dillerinin Kısıtlamaları
    • C ve C++ yazanlar modern olmayan bu dilleri tercih etmektedirler.
    • Bu dillerin modern olmamasının sebebi, büyük projelerde kullanılmasının uygun olmadığıdır.
    • Özellikle "mut" değişkeni gibi konular, büyük projelerde birden fazla fonksiyon tarafından etkilenirse sorunlara yol açmaktadır.
    1:04:17Programlama Dillerindeki Özellikler
    • Programlama dillerindeki kısaltmaların özel bir sebebi olabilir, ancak açıklayıcı olduğu için çok zarar vermemektedir.
    • Bazı dillerde aynı şeyin çok farklı şekillerde yapılabilmesi bir dezavantaj olarak görülebilir.
    • Örneğin, "Hello World" programı 30 farklı şekilde yazılabilir.
    1:05:11Test ve Projeler
    • Kargo dilinin kendi entegre test framework'i vardır ve bu sayede kodun kontrol edilmesi sağlanır.
    • Konuşmacı büyük projelerle Kargo ve Rastla ile çalışmadığını belirtmiştir.
    • Yeni versiyonlarla birlikte başarı ölçüsü olarak bazı geliştirmeler yapılmaktadır.

    Yanıtı değerlendir

  • Yazeka sinir ağı makaleleri veya videoları özetliyor