Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, Alper Çelik tarafından sunulan "Darknet Temelleri" eğitim serisinin ilk bölümüdür ve programlama dilleri hakkında bilgi veren eğitici bir içeriktir.
- Video, .NET programının çalışma mantığını açıklayarak başlıyor ve .NET'in taşınabilirlik ve otomatik hafıza yönetimi gibi avantajlarını ele alıyor. Ardından CLR (Common Language Runtime) katmanı ve assembly dosyalarının nasıl oluşturulduğu örneklerle açıklanıyor. İkinci bölümde ise C# programlama dilindeki yapı ile Java programlama dilindeki benzerlikler vurgulanıyor.
- Videoda ayrıca .NET'in desteklediği programlama dilleri (Visual Basic, C, C++, J#) ve bu dillerin ürettiği kod türleri (manage code ve native code) hakkında bilgiler veriliyor. C#'daki Java Virtual Machine ve C# kodunun Java'daki karşılığı olan bytecode arasındaki benzerlikler de açıklanıyor.
- 00:02.NET Öncesi Programların Çalışma Mantığı
- .NET öncesi programlar VB6, C++ gibi dillerle geliştirilir ve compile edildiğinde DLL veya EXE uzantılı assembly dosyaları üretilir.
- Assembly dosyaları native code (machine code veya object code) formatında olabilir ve işletim sistemi sadece 0-9 rakamlarından anlar, yüksek seviyeli dillerle doğrudan iletişim kuramaz.
- .NET öncesi uygulamaların en büyük sorunu taşınabilirlik sorunuydu; native code işletim sistemine özgü çalışır ve işlemci mimarisine göre farklılık gösterir.
- 03:20.NET Ortamının Çalışma Prensibi
- .NET farklı programlama dillerini destekler ve kaynak kodu compile ederek IL (Intermediate Language) formatında bir dosya üretir.
- IL kodu doğrudan çalıştırılamaz, bu nedenle Common Language Runtime (CLR) katmanı aracılığıyla native code'a dönüştürülür.
- .NET uygulamalarının yaşam döngüsü iki aşamada gerçekleşir: kaynak kodun IL'e dönüştürülmesi ve IL'in JIT compiler vasıtasıyla native code'a dönüştürülmesi.
- 05:34.NET'in Avantajları
- .NET uygulamalarının taşınabilirlik sorunu ortadan kalkar; Windows üzerinde geliştirilen uygulamalar Linux veya Unix'te .NET Framework yüklü ise çalışabilir.
- Otomatik hafıza yönetimi (garbage collector) sayesinde geliştiriciler kullanılmayan nesneleri temizlemekten kurtulur.
- .NET farklı programlama dillerini destekler; C++ haricindeki diller sadece IL kodu üretirken, C++ hem IL hem de native code üretir.
- 08:27Assembly Dosyaları ve Çalışma Süreci
- .NET uygulamalarında kaynak kod build edildiğinde assembly dosyası üretilir ve bu dosya .NET ortamında çalıştırılır.
- Konsol uygulamaları için EXE dosyası, class kütüphaneleri için DLL dosyası üretilir.
- Assembly dosyası çalıştırıldığında CLR tarafından native code'a dönüştürülür ve bu native kod hafızada tutulur; program sonlandırıldığında kendiliğinden yok olur.
- 13:32.NET'in Dezavantajları
- .NET uygulamalarının ilk çalıştırıldığında yavaşlık yaşanabilir, ancak tekrar çalıştırıldığında daha hızlı çalışır.
- Uygulamayı yavaşlatan etken CLR içerisindeki JIT compiler'dır.
- .NET öncesi uygulamalarda böyle bir yapı olmadığı için uygulamaların daha hızlı çalıştığı söylenebilir.
- 14:14Java ve C# Karşılaştırması
- Java tarafında da benzer bir yapı bulunmaktadır.
- C#'ın Java karşılığı Java Virtual Machine'dir.
- C# kodunun Java'daki karşılığı bytecode'dur ve çalışma prensibi aynıdır.