Java vs C# C++ C

Soketçi

Sudan Çıkmış
En iyi cevaplar
0
Kolaylık ve kullanıcı dostu olan tabi ki Java ve C#'tır lakin sadece ufak projelerde. Kaç tane Java ile yapılmış oyun biliyorsunuz, veya işletim sistemi. Veya C# ile yapılmış bir işletim sistemi. Kendi kendinize sorun, o kadar basit diller varken neden C++, C seçilmiş. Hatta ufak ve ince işleri Assembly ile yazılmış diye. Popülerlik veya kolaylık demek bir dilin iyi olduğunu kesinlikle göstermez.
Unity ile yapılmış pek çok oyun var, Unreal ve CryEngine'da da Mono üzerinden C# yazabiliyorsunuz. Ayrıca "C# Cosmos" diye bir google'la c#'la nasıl işletim sistemi yazabileceğini gör. Popülerlik ve kolaylık bir dilin iyi olduğunu göstermez evet, ben de zaten dilin YAPABİLDİKLERİNDEN bahsediyorum. Otur C++ ile bir multi-threading yaz da göreyim seni. C#'ta thread sayısına bile ellemeden async-await keyword'leri ve Task<T>'ler kullanarak gayet yüksek performans, asenktron sistemler yazabiliyorsun. Ayrıca emin ol C#'la C++'tan daha geniş projeler de geliştirebilirsin. Bizim ülkemizde üniversitede C# dersi diye Windows Forms öğretiliyor olması C#'ın büyük projelerde kullanılamadığını göstermez, Türkiye'de kullananın fazla olmadığını çünkü o derece dili bilenin olmadığını (veya cesaret etmediklerini) gösterir. Bunları bilmeyip yine de C/C++'ı savunman da senin C#'ı ne kadar az bildiğini gösterir.
 

KRHN

Yazılımcı Beyefendi
En iyi cevaplar
0
Unity ile yapılmış pek çok oyun var, Unreal ve CryEngine'da da Mono üzerinden C# yazabiliyorsunuz. Ayrıca "C# Cosmos" diye bir google'la c#'la nasıl işletim sistemi yazabileceğini gör. Popülerlik ve kolaylık bir dilin iyi olduğunu göstermez evet, ben de zaten dilin YAPABİLDİKLERİNDEN bahsediyorum. Otur C++ ile bir multi-threading yaz da göreyim seni. C#'ta thread sayısına bile ellemeden async-await keyword'leri ve Task<T>'ler kullanarak gayet yüksek performans, asenktron sistemler yazabiliyorsun. Ayrıca emin ol C#'la C++'tan daha geniş projeler de geliştirebilirsin. Bizim ülkemizde üniversitede C# dersi diye Windows Forms öğretiliyor olması C#'ın büyük projelerde kullanılamadığını göstermez, Türkiye'de kullananın fazla olmadığını çünkü o derece dili bilenin olmadığını (veya cesaret etmediklerini) gösterir. Bunları bilmeyip yine de C/C++'ı savunman da senin C#'ı ne kadar az bildiğini gösterir.
Peki oyun motorlarını neyle kodlanıyor, C# ile mi, Java ile mi.
 

Soketçi

Sudan Çıkmış
En iyi cevaplar
0
Unity/Unreal/CryEngine C++ ile kodlandı (Core'ları) fakat Unity arabirim olarak C# kullanıyor (Mono, IL2CPP). Paradox, WAVE, Delta gibi C#'la kodlanan motorlar da var. Ben de C'de OpenGL ve GLSL kullanarak belli başlı kütüphanelerle 3D motor geliştirmiştim. Fakat bunları örneklendirmeden önce yine önceki post'umu hatırlatıyorum. Eğer low-level yazman gerekirse ve bunlara da motor/fw core'larını da eklemiştim, bu gibi durumlarda C/C++ kullanırsın. Ben şahsen C'de low-level işlemlerimin hepsini yapıyorum fakat ileri derece OOP isteyen C++ kullanabiliyor. Asıl işin püf noktası şurada, CryEngine'da kodlarken C++ yazıyorsun fakat CryEngine Unity'ye göre çok daha kapalı bir scripting'e sahip. Aynı şekilde Unreal'da da böyle (nispeten CryEngine'dan daha özgür Unreal'ın scripting'i ama bir Unity değil). Bu da senin "low-level daha özgürdür" tezini çürütüyor. Unity hepsinden daha özgür bir platform sağlıyor ve daha productive bir yapısı var. "Neden C++ kullanıyorlar?"'ın cevabı da şöyledir: low-level yazıp immediate control yapmak isterler bunun da ilk örneği memory management'tır, lightweight footprint'tir falandır filandır, ayrıca OOP'a ihtiyaçları oluyor o zaman C++ kullanıyorlar. Ancak yine de en yüksek sistem gereksinimi yine Unreal ve CryEngine'da, hiç de öyle yüksek performans falan değil yani C++ kullanmalarının sebebi, daha detaylı müdahaleler ve optimizasyonlar (immediate control). Unity5'in grafik kalitesi de gayet iyi. Ha şunu da eklemek isterim, jMonkeyEngine diye tamamen Java (native) ile yazılmış motor da mevcut fakat C# daha çok tercih edildiği için örneği daha çok.

Yani senin anlayacağın, dil seçimleri soruna/projeye göre yapılıyor. O dilin fanatizmine göre falan değil. Yine papağan gibi tekrar edecek olursam da, günümüzde oluşan sorun/proje/ihtiyaçlar çoğunlukla high-level olduğu için de Java/C# daha çok tercih edilen (popüler) diller. Java vs C# da başka bir başlık tabi...
 

KRHN

Yazılımcı Beyefendi
En iyi cevaplar
0
Unity/Unreal/CryEngine C++ ile kodlandı (Core'ları) fakat Unity arabirim olarak C# kullanıyor (Mono, IL2CPP). Paradox, WAVE, Delta gibi C#'la kodlanan motorlar da var. Ben de C'de OpenGL ve GLSL kullanarak belli başlı kütüphanelerle 3D motor geliştirmiştim. Fakat bunları örneklendirmeden önce yine önceki post'umu hatırlatıyorum. Eğer low-level yazman gerekirse ve bunlara da motor/fw core'larını da eklemiştim, bu gibi durumlarda C/C++ kullanırsın. Ben şahsen C'de low-level işlemlerimin hepsini yapıyorum fakat ileri derece OOP isteyen C++ kullanabiliyor. Asıl işin püf noktası şurada, CryEngine'da kodlarken C++ yazıyorsun fakat CryEngine Unity'ye göre çok daha kapalı bir scripting'e sahip. Aynı şekilde Unreal'da da böyle (nispeten CryEngine'dan daha özgür Unreal'ın scripting'i ama bir Unity değil). Bu da senin "low-level daha özgürdür" tezini çürütüyor. Unity hepsinden daha özgür bir platform sağlıyor ve daha productive bir yapısı var. "Neden C++ kullanıyorlar?"'ın cevabı da şöyledir: low-level yazıp immediate control yapmak isterler bunun da ilk örneği memory management'tır, lightweight footprint'tir falandır filandır, ayrıca OOP'a ihtiyaçları oluyor o zaman C++ kullanıyorlar. Ancak yine de en yüksek sistem gereksinimi yine Unreal ve CryEngine'da, hiç de öyle yüksek performans falan değil yani C++ kullanmalarının sebebi, daha detaylı müdahaleler ve optimizasyonlar (immediate control). Unity5'in grafik kalitesi de gayet iyi. Ha şunu da eklemek isterim, jMonkeyEngine diye tamamen Java (native) ile yazılmış motor da mevcut fakat C# daha çok tercih edildiği için örneği daha çok.

Yani senin anlayacağın, dil seçimleri soruna/projeye göre yapılıyor. O dilin fanatizmine göre falan değil. Yine papağan gibi tekrar edecek olursam da, günümüzde oluşan sorun/proje/ihtiyaçlar çoğunlukla high-level olduğu için de Java/C# daha çok tercih edilen (popüler) diller. Java vs C# da başka bir başlık tabi...
Bende diyorum ki bu üçü arasından bir seçim yapmak gerekirse kesinlikle C belki de C++ denilmesi gerekir çünkü seninde dediğin gibi bu dil low-level kesinlikle daha özgürdür, biz burada işletim sistemlerini değil dilleri karşılaştırıyoruz yazan kişi öyle yazmış istese farklı bir şekilde de yazabilirmiş. C++ ve C'nin, hatta Assembly'nin bile ince işlerde tercih edilmesi avantajlarından dolayıdır. Sen C/C++'yı istersen low-level'da istersen high-level gibi kullanabilirsin. Fakat aynı şey C# veya Java için söylenemez.
 

Soketçi

Sudan Çıkmış
En iyi cevaplar
0
@KRHN Yok sen anlamak istemiyorsun yada anlamakta güçlük çekiyorsun. Ben bir önceki postta Unity/C#'un Unreal/CryEngine/C++'tan daha özgür olduğunu, Unity'nin daha az gereksinime sahip olduğunu, C++'ın o programlarda performans için değil immediate control için kullanıldığını söyledim fakat yine de sen anlamak istediğin gibi anladın, öyle yorumladın. C#'ta unsafe'le pointer da kullanırsın, anlık memory management da yaparsın her aklına gelen low-level işlemi de yaparsın. Sadece C#'ın embedded desteği yoktur, ama Java'nın embedded desteği de vardır. Artık bu noktada seni kendi haline bırakıyorum. Anlamak istemiyorsan veya anlamakta güçlük çekiyorsan, güzel bir araştırma yap öyle konuşalım. Tartışmanın başında C#'la işletim sistemi yazılacağına, daha kullanışlı/daha productive olduğuna, geniş çaplı projeler üretileceğine inanmıyordun, bunları anlatmaya çalıştım umarım bunları kabul etmişsindir. Şimdi de halen low-level yazılmaz C#'la diyorsan bunu da anlamanı, bunlardan anlamıyorsan da araştırmanı bekliyorum. Tabi ki hiçkimse C#'la gidip işletim sistemi kodlama, onu da yazdım eğer okumuşsan, çok fazla uğraşması gerekir bunun için de C/C++ geçer fakat bu çok nadir bir durumdur. Kimse kalkıp işletim sistemi kodlamıyor günümüzde ama isteyen varsa da C#'ı da kullanabilir. C# şu an en geniş yelpazeye sahip olan dil, en iyi library topluluğuna (.Net) sahip olan dil, ayrıca cross-platform + open-source da oldu yani önünde hiçbir engel yok. Service kodlayacaksam C#, konsol kodlayacaksam C#, Forms kodlayacaksam C#, oyun yazacaksam C#, web kodlayacamsam C# (asp.net), firewall rule yazacaksam C# yani pek çok şeyde C# dururken neden C/C++ kullanayım hemde C++'la bunları yapmak C#'a oranla 6-7 kat daha zor ve uzun süreliyken?

Yine bir özetle şunları söylemem gerek, bu C#/C++ tartışmasını yapabilmek için veya dahil olabilmek için kişinin iki dili de (en az!) iyi derece biliyor olması, bu dillerde projeler yapmış olması ve eğer performans falan filan diye laf edecekse de performans gerektiren şeylerle uğraşmış olması gerekir. Hani ne socket yazdığını, ne multi-threading/multi-tasking yaptığını ne de 3d oyun motoru yazdığını sanmıyorum. Bu nedenle senin sorularını cevaplayıp merakını gidermekten başka bir şey yapmıyorum. Bu konuları tartışacak, savunacak veya dahil olacka seviyede bilgin olduğunu düşünmüyorum, hiç kusura bakma kardeşim. Önce git projelerini yap, kendini geliştir, birşeyleri test et ve ondan sonra işin içinden birisi olarak ne demek istediğimi anla. Öyle dışardan bakıldığı gibi olmuyor işin iç yüzü. Birşeyi yapamayan vardır, yaptığını sanan vardır, yaptığını söyleyen vardır ve yapan vardır. Senin durumun bunlardan "yaptığını zanneden ve yaptığını söyleyen" kısmına giriyor ki en tehlikeli nokta bu. Hepimiz bu yollardan geçtik fakat böyle bilsek de bilmesek de savunmadık. Bu nedenle sorular sor fakat biliyormuş veya sanki denemiş işin içinde birşeyler yapmış gibi çıkarımlarda bulunma. Bu insanları yanlış yönlendirmene ve yanlış bildiğin şeyleri millete de aktarmana sebep olur. İşi ehline veriniz kısacası. Bakın benim daha önce forumda 1 post'um bile yokken bu durumu gördüm müdahale etmek istedim. Beni forumda tanıyan yok, reklam-ego gibi bir derdim de yok ama gözünüzü seveyim işinize bakın, kendinizi geliştirin. Bugün söylediğin şeyi yarın savunamayacak duruma düşebilirsin. Umarım sende güzel şeyler yapabilirsin ve hedeflediğin projeleri hayata geçirebilirsin kardeşim :)
 
Son düzenleme:
Üst