Life Hunter
Lapis Toplayıcısı
- En iyi cevaplar
- 0
Merhaba bugün size C# programlama dilinin avantajlarından bahsedeceğim. Tarihsel bilgilerde var. Yazının sonlarına doğru Java hakkındaki düşüncelerimi bir kaç cümle ile dile getirdim.
C programlama dili olaya taşınabilirlik katınca herkes tarafından kullanılan bir dil oldu. Ayrıca C düşük seviye dillerin yapabildiklerinide yapıyordu. Hemde inline asm falan destekliyordu. Ayrıca anahtar kelimeleri olsun, yerleşik standart kütüphaneleri olsun, geliştiricilere pek çok kolaylık sağlıyordu. Halen C düşük seviyenin gözdesi, sistem programlamanın vaz geçilmezidir. C hatta pek çok dilin sözdizimi ve anahtar kelime refaransıdır.
Sonra geliştiriciler OO(Object Orianted)'ya ihtiyaç duydu. Yani yazdıkları kodu tek sefer yazıp koddan kod türetmeye. İnstance'lara falan ihtiyaç duydular. OO'nun temelleri C++ ile atılmadı. Eiffel vb de vardı. Delphi falan da vardı. Yani tam olarak OO C++ ile başlamadı. Ama C++'ın OOP(Object Orianted Programming)'si hiçbir dilde yoktu çıktığında.
C++ C üstüne inşa edildiği için de, C kullananlar C++'a geçtiler. Fakat C++ OOP'un ardından STL geliştirmeye başladı.STL artık C'yi OOP kullanmaktan öte birşeydi. Pek çok yeni şey içeriyordu.
O nedenle C++'ı kullanan 2 tür geliştirici vardır:
C kafası ile kullanan ve STL üstüne kullananlar.
Günümüzde STL işi teknik anlamda ilerletse de, asıl C++'ın ayakta kalması daha çok C'ciler sayesinde olmuştur.
Tabi STL'cilerin oyun motorları geliştirmesi vb. de farklı bir nokta. Ama C++'ın ayakta kalmasını sağlayan C'ciler sayesindedir.
İlerleyen zamanlarda geliştiriciler şunu gördüler, OOP iyi güzel ama, C++ ile OOP yazarken proje çok büyüyor, binlerce satır kod ortaya çıkıyor ve bellek yönetimi, istisnalar vb. şeyler geliştiricinin çok da ilgilenmesi gerekmeyen kısımlar geliştirme sürecinde çok yer kaplıyordu. Ayrıca C/C++ direk makine üstünde çalıştığı için derin çökmeler makineye zarar veriyordu. Bunun gibi birkaç sorun daha toplandı ve Java ortaya çıktı. Otomatik bellek yönetimi, wrapped exceptions, VM environment. Geliştiricilerde
C++'tan direk Javaya geçtiler. Çünkü yazdıkları kod makinede değil VM(Sanal Makine) de çalışıyordu. Ayrıca C++ STL de bazı sistemler işlemci seçiyordu. En basitinden OS bazlı farklılıkar ortaya çıkıyordu. Java bunu da yine VM(FW) sayesinde çözdü.
Tam da bu noktada projesi geniş olanlar Java'ya geçti, Eski C kafasındakileri etkilemedi. Çünkü C kafasındaki geliştiriciler yapacakları şeyi C de de yapabiliyorları. C++'a ihtiyaç yoktu onlar için. Ardından Microsoft'un geliştirme ortamına ilk girişleri başladı. Visual Basic dilini çıkardı, onun peşine IDE olarak Visual Studio yu çıkardılar.(Visual Studio'nun eski sürümlerinde Java desteği vardır)
Microsoft Javayı Windows'a bazı ek özellikler ile geliştirmek istedi. Fakat Sun Micro Systems Java'yı özgür ve kendi taraflarında tutacaklarını söyledi.
Microsoft bu durumun üzerine .Net platformunu halka açtı. Yani Microsoft Java ile anlaşamayınca .Net'i yayınladı.
Ardından Delphi geliştiricilerinden bir adama neredeyse Java kopyası bir dil yazdırdı. Adam zaten dil geliştiricisi olduğu için, Microsoft o adamı iyi çalıştırdı.
Ve ortaya hepimizin bildiği, son zamanların en popüler dillerinden biri olan C# çıktı.
İlk başta C# Java nın kopyasıydı. Ama sonrasında C# kendini geliştirdi. Microsoft tüm ürünlerinde C#/.Net kullanmaya başladı. C# Microsoft'un hem kendi ürünlerinde, hem de geliştiricilere sunduğu hizmetlerde teknolojinin birincil dili oldu.
LINQ müthiş bir şeydir. .Net çok stabil ve birbiriyle uyumlu yapılar içeren bir kütüphanedir. .Net de bir şey geliştirirken sürekli yeni şeyler ortaya çıkmaz. Arkaplandaki kodları değişir. Bu major versiyonlarda olur, minor versiyonlarda olmaz. Bazı method'lara yeni parametreler gelir. Çok gerekli ise yeni namespace ve sınıflar eklenir. Ayrıca dökümantasyonu harikadır .Net'in.
Her class'tan, parametreden, exception'dan, herşeyden dökümantasyon fırlar. Yapısı birbiriyle komple tutarlıdır. C#/.Net de çok az bir kısımda kullanılmayan sınıflar, kodlar vardır. Onlar da genelde ya zorunluluktan yada şuanki genel geliştirici kitlesinin halen onlara başvurmasından olayı tutulur.
Ayrıca .Net piyasada görebileceğiniz en mature kütüphanelerdendir..Net 2.0'da yazılan kodlar .Net 4.6'da bile çalışır. Ancak .Net 4.6'da onun yerini daha kolay ve kısa method'lar alabilir. Ayrıca C#'ta keyword'ler sadece veri türlerini işaret etmez, async-await asynchronous programming'i muhteşem derecede kısaltan bir keyword ikilisidir.
Bunun dışında TPL(task parallelism libray) multithreading uygulamaları otomatik yönetir.
thread açıp işlem yapmak yerine, direk QueueUserWorkItem denir. O thread'leri kendisi açar, kuyruklamayı kendisi yapar.
şu an hem asynchronous, hem multi-threaded, hem multi-tasking tek bir yöntemle yapılıyor Async Task'larla.
Yani öyle thread'lerle uğraşmak falan artık hiç de baş ağrıtmıyor, sistemin tutarlı çalışması da buna göre çok iyi oluyor. Thread'ler birbirlerini kaynaklarına erişip erişmeyeceklerini seçiyor. Siz sadece prototip task'ler yazıyorsunuz. Ortak veya ayrı kullanılması vb optimizasyonlar .Net'e ait.
Sonuç:
Yani C# şu an piyasa kullanabileceğiniz language featrues bakımından en geniş dildir. Yapı olarak da çok tutarlı bir kodlaması var. .Net piyasa da görebileceğiniz en stabil çalışan, en mature kütüphanelerdendir.
Java 3-4 senedir ölen bir dildir. Ama kısa sürede ölmez. Rahat bir 10 yıl gene popüler kalır, ama sonradan işi bitmeye başlar. Neden Java yazayımki demeye başlar geliştiriciler. C# çoğu konuda Java dan daha üstün şu an. Eğer C# bu gidişle giderse Java nın yerini alacak. Ama bu gidişe devam edebilir ise, hiçbir şey kesin değil.
@CrafterMan24 @ProgramlamaİleİlgilenenHerkes
C programlama dili olaya taşınabilirlik katınca herkes tarafından kullanılan bir dil oldu. Ayrıca C düşük seviye dillerin yapabildiklerinide yapıyordu. Hemde inline asm falan destekliyordu. Ayrıca anahtar kelimeleri olsun, yerleşik standart kütüphaneleri olsun, geliştiricilere pek çok kolaylık sağlıyordu. Halen C düşük seviyenin gözdesi, sistem programlamanın vaz geçilmezidir. C hatta pek çok dilin sözdizimi ve anahtar kelime refaransıdır.
Sonra geliştiriciler OO(Object Orianted)'ya ihtiyaç duydu. Yani yazdıkları kodu tek sefer yazıp koddan kod türetmeye. İnstance'lara falan ihtiyaç duydular. OO'nun temelleri C++ ile atılmadı. Eiffel vb de vardı. Delphi falan da vardı. Yani tam olarak OO C++ ile başlamadı. Ama C++'ın OOP(Object Orianted Programming)'si hiçbir dilde yoktu çıktığında.
C++ C üstüne inşa edildiği için de, C kullananlar C++'a geçtiler. Fakat C++ OOP'un ardından STL geliştirmeye başladı.STL artık C'yi OOP kullanmaktan öte birşeydi. Pek çok yeni şey içeriyordu.
O nedenle C++'ı kullanan 2 tür geliştirici vardır:
C kafası ile kullanan ve STL üstüne kullananlar.
Günümüzde STL işi teknik anlamda ilerletse de, asıl C++'ın ayakta kalması daha çok C'ciler sayesinde olmuştur.
Tabi STL'cilerin oyun motorları geliştirmesi vb. de farklı bir nokta. Ama C++'ın ayakta kalmasını sağlayan C'ciler sayesindedir.
İlerleyen zamanlarda geliştiriciler şunu gördüler, OOP iyi güzel ama, C++ ile OOP yazarken proje çok büyüyor, binlerce satır kod ortaya çıkıyor ve bellek yönetimi, istisnalar vb. şeyler geliştiricinin çok da ilgilenmesi gerekmeyen kısımlar geliştirme sürecinde çok yer kaplıyordu. Ayrıca C/C++ direk makine üstünde çalıştığı için derin çökmeler makineye zarar veriyordu. Bunun gibi birkaç sorun daha toplandı ve Java ortaya çıktı. Otomatik bellek yönetimi, wrapped exceptions, VM environment. Geliştiricilerde
C++'tan direk Javaya geçtiler. Çünkü yazdıkları kod makinede değil VM(Sanal Makine) de çalışıyordu. Ayrıca C++ STL de bazı sistemler işlemci seçiyordu. En basitinden OS bazlı farklılıkar ortaya çıkıyordu. Java bunu da yine VM(FW) sayesinde çözdü.
Tam da bu noktada projesi geniş olanlar Java'ya geçti, Eski C kafasındakileri etkilemedi. Çünkü C kafasındaki geliştiriciler yapacakları şeyi C de de yapabiliyorları. C++'a ihtiyaç yoktu onlar için. Ardından Microsoft'un geliştirme ortamına ilk girişleri başladı. Visual Basic dilini çıkardı, onun peşine IDE olarak Visual Studio yu çıkardılar.(Visual Studio'nun eski sürümlerinde Java desteği vardır)
Microsoft Javayı Windows'a bazı ek özellikler ile geliştirmek istedi. Fakat Sun Micro Systems Java'yı özgür ve kendi taraflarında tutacaklarını söyledi.
Microsoft bu durumun üzerine .Net platformunu halka açtı. Yani Microsoft Java ile anlaşamayınca .Net'i yayınladı.
Ardından Delphi geliştiricilerinden bir adama neredeyse Java kopyası bir dil yazdırdı. Adam zaten dil geliştiricisi olduğu için, Microsoft o adamı iyi çalıştırdı.
Ve ortaya hepimizin bildiği, son zamanların en popüler dillerinden biri olan C# çıktı.
İlk başta C# Java nın kopyasıydı. Ama sonrasında C# kendini geliştirdi. Microsoft tüm ürünlerinde C#/.Net kullanmaya başladı. C# Microsoft'un hem kendi ürünlerinde, hem de geliştiricilere sunduğu hizmetlerde teknolojinin birincil dili oldu.
LINQ müthiş bir şeydir. .Net çok stabil ve birbiriyle uyumlu yapılar içeren bir kütüphanedir. .Net de bir şey geliştirirken sürekli yeni şeyler ortaya çıkmaz. Arkaplandaki kodları değişir. Bu major versiyonlarda olur, minor versiyonlarda olmaz. Bazı method'lara yeni parametreler gelir. Çok gerekli ise yeni namespace ve sınıflar eklenir. Ayrıca dökümantasyonu harikadır .Net'in.
Her class'tan, parametreden, exception'dan, herşeyden dökümantasyon fırlar. Yapısı birbiriyle komple tutarlıdır. C#/.Net de çok az bir kısımda kullanılmayan sınıflar, kodlar vardır. Onlar da genelde ya zorunluluktan yada şuanki genel geliştirici kitlesinin halen onlara başvurmasından olayı tutulur.
Ayrıca .Net piyasada görebileceğiniz en mature kütüphanelerdendir..Net 2.0'da yazılan kodlar .Net 4.6'da bile çalışır. Ancak .Net 4.6'da onun yerini daha kolay ve kısa method'lar alabilir. Ayrıca C#'ta keyword'ler sadece veri türlerini işaret etmez, async-await asynchronous programming'i muhteşem derecede kısaltan bir keyword ikilisidir.
Bunun dışında TPL(task parallelism libray) multithreading uygulamaları otomatik yönetir.
thread açıp işlem yapmak yerine, direk QueueUserWorkItem denir. O thread'leri kendisi açar, kuyruklamayı kendisi yapar.
şu an hem asynchronous, hem multi-threaded, hem multi-tasking tek bir yöntemle yapılıyor Async Task'larla.
Yani öyle thread'lerle uğraşmak falan artık hiç de baş ağrıtmıyor, sistemin tutarlı çalışması da buna göre çok iyi oluyor. Thread'ler birbirlerini kaynaklarına erişip erişmeyeceklerini seçiyor. Siz sadece prototip task'ler yazıyorsunuz. Ortak veya ayrı kullanılması vb optimizasyonlar .Net'e ait.
Sonuç:
Yani C# şu an piyasa kullanabileceğiniz language featrues bakımından en geniş dildir. Yapı olarak da çok tutarlı bir kodlaması var. .Net piyasa da görebileceğiniz en stabil çalışan, en mature kütüphanelerdendir.
Java 3-4 senedir ölen bir dildir. Ama kısa sürede ölmez. Rahat bir 10 yıl gene popüler kalır, ama sonradan işi bitmeye başlar. Neden Java yazayımki demeye başlar geliştiriciler. C# çoğu konuda Java dan daha üstün şu an. Eğer C# bu gidişle giderse Java nın yerini alacak. Ama bu gidişe devam edebilir ise, hiçbir şey kesin değil.
@CrafterMan24 @ProgramlamaİleİlgilenenHerkes