Tekrardan bana göre; (Dillerin çok bir öneminin olduğunu düşünmüyorum sadece C dilleri yapısının Syntax'den bağımsız bir öğreti altyapısı var.)
İlk olarak, C dilleri bilgisayarların düşük seviyede nasıl çalıştığına dair temel bir altyapı sağlar. Bellek yönetimi, pointerlar, kaynak tahsisi gibi genellikle üst düzey dillerde soyutlanan kavramları kafana vura vura içine entegre eder. Sadece bu temeller bile problem çözme becerisi kazandırır. Yazılımın donanımla nasıl etkileşime geçtiğini kavrarsın. Optimize kod yazma becerini güçlendirir. Temiz kod yazmanın önemini anlarsın ve temiz koda alışırsın. Kütüphane yönetimi vs. vs.
Konfor alanına direkt dalmadığın için hata ayıklama sürecini çok daha iyi kavrarsın. (Bak şu yanılgıya düşme high levellarda bunlar olamaz demiyorum.) C'lerde özellikle de C'de bir şey yazarken metodik olarak çok iyi bir planlama yapman lazım. Çünkü bellek sızıntısını manuel olarak tabiri caiz ise bantlaman gerekiyor. İster istemez bu durum şahsa program yazma sürecinde disiplin katıyor ve bunu bana göre high levellara göre daha efektif yapıyor çünkü yapmak zorundasın. Daha sonrasında C'den farklı bir dile geçsen bile o dilde en basitinden manuel bellek yönetimi olmasa bile C'de edindiğin tecrübe belleği veya diğer donanım elemanlarını hesaba katmayan birinin çok önünde olacak.
Ayrıca çevremdeki ve bendeki durum şunu ortaya koyuyor ki C öğrendikten sonra herhangi bir dile geçiş sürecin hızlı tamamlanıyor. Syntax'i bir kenara koyarsak zaten en derin programlama mekaniklerine sahipsin. Sözdizimini ezberleyip çok hızlı şekilde adapte oluyorsun.
Yazdığın her kodun bir amacı ve istenen bir sonucu var. Bu bazen high levellarda öne çıkamıyor.
Algoritmaları sıfırdan kurarsın, veri yapılarını sıfırdan tasarlarsın. Bunlar zorluğun aksine farkındalıktır. Optimizasyon mantığını kavrarsın.
Ya da çok gelişirsen ve C'nin bu zorlu(!) yapısından sıkılırsan kendi ihtiyaçlarına göre high level dilini yazarsın. Kim bilir?
Yol gösterirken çok keskin cümleler kuruyorsun. Bence kaçınman lazım bundan.
Söylediğin şeylerinin kişiyi programlamadan soğutmama ihtimali yalnızca üniversitede öğrenilirse var ya da aşırı disiplinli bir şekilde öğrenirse var. Günümüzde parası iyi diye veya geçici heves ile oyun yapayım vb. diye girişiliyor maalesef.
Ya da farklı bir açıdan bakarsak kişinin bilgisayar mühendisi veya bilgisayar bilimcisi olmasına gerek yok. İlk dil olarak bu yüzden de önermiyorum.
Yol gösterirken kesin cümleler kurmamın sebebi kendi tecrübelerime göre kendi düşüncelerimi aktarmamdan kaynaklanıyor. Herkes kendi yolunu çizer. Benim yoluma kulak asmak kişiye kalmış.
Söylediğin şeylerinin kişiyi programlamadan soğutmama ihtimali yalnızca üniversitede öğrenilirse var ya da aşırı disiplinli bir şekilde öğrenirse var. Günümüzde parası iyi diye veya geçici heves ile oyun yapayım vb. diye girişiliyor maalesef.
Ya da farklı bir açıdan bakarsak kişinin bilgisayar mühendisi veya bilgisayar bilimcisi olmasına gerek yok. İlk dil olarak bu yüzden de önermiyorum.
Yol gösterirken kesin cümleler kurmamın sebebi kendi tecrübelerime göre kendi düşüncelerimi aktarmamdan kaynaklanıyor. Herkes kendi yolunu çizer. Benim yoluma kulak asmak kişiye kalmış.
En basitinden donanımı hesaba katmayan biri optimize bir oyun yapamaz bu bağlantıyı öğrenmeli ki bunu high levellarda da yapabilir ama C++'de mecbur yapıyorsun (Oyun optimizasyonu ile aralarında kesin bir bağ olmayabilir emin değilim). Eğlenmek ve hobi için yapıyorsa eyvallah. Ki high level ile başlamak da yanlış denilebilecek bir şey değil kişi istediğini yapar. Nasıl eğleniyor ve konforlu hissediyorsa ona devam eder.
Ancak amaç gelecek için iyiyi bulmaksa Low level işin bir yerinden sana el sallayacak. Kişi zaten C yazarken programlamadan soğuyacaksa hiç başlamasın bana göre. Bu da benim kesin cümlem
Dediğim gibi herhangi bir dil herhangi bir sebepten dolayı önerilebilir. Olay C'ye gereksiz ağır denmesiydi sadece. Ancak C çok ağır bir dil değil bence bu da farklı bir tartışmanın konusu olsun. Bu arada haklısın birazcık mühendis kafasıyla yaklaşıyor | yaklaşmaya çalışıyor olabilirim.
Ben Python ile başladım ancak galiba öğrendim dediğim an CS50 kursundaki C ile olmuştu. C bana göre muazzam bir öğretici. Ancak Python'la (Buraya her şeyi koy Java, C++, C#, JS, cart, curt) öğrenmek isteyen onunla da öğrenir. İşin özünde soğutacak mesele yine aynı olacak. Çünkü finalde zaten yaptığın şey farklı değil ki?
Kör testere ve kör balta ile odun kesmeye kalk ne balta ile kesebilirsin ne testere ile.
@Özgün Deniz
Fikirlerimiz aynı olmasa da ikimizin de geçerli noktalar sunduğu konusunda hemfikir olduğumuzu düşünüyorum. CS50 çok güzel bir kurs ve David Malan çok iyi bir öğretmen. Size saygım buradan ta uzaya kadar. Bilgi alışverişi için çok teşekkür ederim.
Üşenilmeyecek bir zaman için bunu halen saklı tutuyorum.
En basitinden donanımı hesaba katmayan biri optimize bir oyun yapamaz bu bağlantıyı öğrenmeli ki bunu high levellarda da yapabilir ama C++'de mecbur yapıyorsun (Oyun optimizasyonu ile aralarında kesin bir bağ olmayabilir emin değilim)
Katmadıkları zaman ortaya çıkan abominationlar ortada... High level diller ile oyun yapmak en başından beri iyi bir fikir değildi. Ancak daha hızlı üretebilmek adına tercih ediliyorlar. Bu yüzden optimizasyon işinde, maksimum level olarak Engine yada Dil seviyesinde kısıtlılar. Bunun negatif etkilerini sabaha kadar anlatabilirim. Özellikle library üstüne library birikmesinin ve tek bir iş için 10 layer fonskiyon çağrısının nasıl döngü sayısını etkilediğini ve gereğinden fazla yük biriktirdiğini.
Konuyu çok dağıtmayayım. Görünce eklemek istedim. Diğer iki konuda da fikrine katılıyorum. C/C++ ile bir şeyler öğrenmenin daha öğretici olduğunu düşünüyorum.
Community driven, articles, resources, guides, interview questions, quizzes for android development. Learn to become a modern Android developer by following the steps, skills, resources and guides listed in this roadmap.
Ya hocam gerçekten samimi olarak söylüyorum çok iyisiniz çok hoşsunuz çok da haklısınız. Lütfen kişisel algılamayın. Haklısınız da:
Artık katmaya gerek yok 2024'de yaşıyoruz. Oyun motoru hesaba katıyor zaten. Demezler mi Indie stüdyolar ne yapsın? veya yeni öğrenenleri bu kadar yoğun bir şeye maruz bırakmak doğru mu? Android Studio ve aynı zamanda Xcode/Swift ortamında derlenen cross-platform oyun motoru mu geliştirecek herkes oyun yapmak için? Mobil bambaşka bir olay. High-level dliler motor optimizeyse gayet de mantıklı oluyor. Günümüzde Desktop'da bile oyun geliştirsen Unreal Engine'den daha verimli bir motoru (oyunun çekirdeği olan motor) kaç kişilik ekiple yapacaksınız? Burada istediğimiz şey programlamaya yeni başlayan kişiyi işçi gibi yetiştirmek mi? Üzerine mühendislik konularını birden yıkmak mı? Onu "terim" cehenneminde boğmak mı? Adam öğrendiği high-level ortam ile kendi başına boğulmadan pratik projeler yapabiliyor ve programlamanın temellerini çok da iyi oturtuyor çünkü learning curve daha düz.
Mobil oyun sektörünü Unity domine ederken ve bu kadar oturmuş bir oyun motoru olmasına rağmen, çıkan basit hypercasual oyunlarda kaç tane memory leak veya bug vardır sizce? Sıfırdan bahsettiğim motoru/çekirdeği geliştirmek kaç yıl sürer peki? Mobil sektör günümüzde saçma sapan bir sektör halini aldı zaten. Adam 10 bin dolar reklam geliri alayım veya günlük 5-10 dolar bıraksın yeter diyor. Programlama öğrenmek isteyen kişilerin ana motivasyonunun maalesef para olduğunu da unutmayalım. Ve:
Community driven, articles, resources, guides, interview questions, quizzes for android development. Learn to become a modern Android developer by following the steps, skills, resources and guides listed in this roadmap.
Ve şu roadmap bile işi özetliyor. Bunlarda uzmanlaşmak ve ortaya projeler çıkarmak en az 1.5 - 2 yıl zaten. Bu roadmap çok iyi temellerle işi başlatabilir, ama maalesef aynı oyunu iOS'a çıkarmak için 180 derece ayrı ortamlar öğrenmek gerekiyor. Benim önerdiğim React Native yolu da var mış mesela bu sitede. Daha doğru düzgün HTML CSS temelleriyle başlatıyor.
Mobil oyun sektörünü Unity domine ederken ve bu kadar oturmuş bir oyun motoru olmasına rağmen, çıkan basit hypercasual oyunlarda kaç tane memory leak veya bug vardır sizce? Sıfırdan bahsettiğim motoru/çekirdeği geliştirmek kaç yıl sürer peki? Mobil sektör günümüzde saçma sapan bir sektör halini aldı zaten. Adam 10 bin dolar reklam geliri alayım veya günlük 5-10 dolar bıraksın yeter diyor. Programlama öğrenmek isteyen kişilerin ana motivasyonunun maalesef para olduğunu da unutmayalım. Ve:
Çok ele alınası bir konu ve alt detayları var ama genel olarak bizim optimize etmemiz gerekir.
Memory leak konusunda gereksiz nesne üretmininde kaçınılmalıdır. Garbage collector var ve bir de bağımlıkları Unity otomatik devralıyor.
Ben 2D oyunlar için en iyi HTML5 oyun motorlarından biri olan Construct'ı kullandığımda olabildiğince optimize çalışıyorum. Webview altında çalışan oyunun runtime'ı maksimum 5 MB. Profiler kullanarak neyin ne kadar CPU GPU yediğine bakıyorum. Her tikte çalışan işlem sayısını optimize ediyorum, GPU RAM'inde gereksiz grafik ögesi bırakmamaya çalışıyorum. Yani ben bunlara (unuttuğum diğer şeylere de) dikkat ettikten sonra 15+ yıllık her şeyi oturmuş oyun motoru bir sorun yaratmaz diye düşünüyorum.
Oyunun optimazsyonunu oyun motorunda yapmak lazımdır. Tabii her kasma nedeni memory leak değil. Grafik ayarları, LoD, assestler falan birçok durum var.
Çok ele alınası bir konu ve alt detayları var ama genel olarak bizim optimize etmemiz gerekir.
Memory leak konusunda gereksiz nesne üretmininde kaçınılmalıdır. Garbage collector var ve birde bağımlıkları Unity otomatik devralıyor.
Ben 2D oyunlar için en iyi HTML5 oyun motorlarından biri olan Construct'ı kullandığımda olabildiğince optimize çalışıyorum. Webview altında çalışan oyunun runtime'ı maksimum 5 MB. Profiler kullanarak neyin ne kadar CPU GPU yediğine bakıyorum. Her tikte çalışan işlem sayısını optimize ediyorum, GPU RAM'inde gereksiz grafik ögesi bırakmamaya çalışıyorum. Yani ben bunlara (unuttuğum diğer şeylere de) dikkat ettikten sonra 15+ yıllık her şeyi oturmuş oyun motoru bir sorun yaratmaz diye düşünüyorum.
Sıfırdan motor yazmak istesem direkt intihar. Windows'da oyun yaptığımda da DirectX ve OpenGL yazmak zorunda olsam sinirden monitörü ısırırım. Gerek yok.
Aynen aşko işte gerisi motoru yapanların optimizasyonu onlar da bi zahmet yapsınlar milyon dolarlık proje yapsak ona göre biz de motor yaparız boş adam olduğumuzdan değil.