C / C ++ kodumun seviyesini artırma


16

Şu anda 3-4 yıldır programlıyorum ve artık acemi olarak adlandırılamayacağımı hissediyorum, ancak bu sitede bazı soruları okudum ve WTF'den bahsediyorlar mı? Bugünlerde kitap programlama yaparken de aynı şekilde hissediyorum.

Bazıları C / C ++ 'da, bazıları ise oyun hakkında birkaç başlangıç ​​programı kitabı okudum. Çok temel AI, seri ve TCP / IP arayüzü gibi daha karmaşık şeyler yazdım.

Bir oyun programcısı olmayı planlıyorum, ancak son zamanlarda, üzerinde çalışma şansına sahip olduktan sonra (seri arayüz) gömülü sistemlerle biraz ilgilenmeye başladım.

Bulabildiğim ara C ++ kitapları olmadığı için, giriş ve başlangıç ​​kitaplarını tamamladıktan sonra öğrenmeye devam etmek için materyal bulmak çok zor buldum.

Bilgi ve becerilerimi geliştirmek ve geliştirmek için ne tavsiye edersiniz? Belirli kaynaklar çok takdir edilecektir.


C ++ kitapları için şu soruya bakın: stackoverflow.com/questions/388242/…
Naveen

Yanıtlar:


10

C / C ++ hakkında konuşuyorsanız, kesinlikle ekstra bir deneyim kullanabilirsiniz. Size vereceğim ilk ipucu, C ve C ++ 'nın tamamen farklı diller olması . C ++ öğrenmek için en iyi kaynak StackOverflow'dur - orada çok miktarda deneyim ve bilgi sahibi olan birçok insan vardır.

Yapılacak bir sonraki şey, DirectX gibi düşük seviyeli bir API'ye 3D grafik motoru yazmaya çalışmak gibi büyük bir projeye başlamaktır ve tasarımınız tüm ilk projelerin yaptığı gibi sefil bir şekilde başarısız olduğunda, programlamak.

C ++ öğrenmek için iyi kitapların büyük bir listesi için StackOverflow'daki bu bağlantıyı kontrol edebilirsiniz .


3
Hayır, C ++ öğrenmek için en iyi kaynak iyi bir kitap veya tercihen kitaptır.
Neil Butterworth

+1 Büyük bir projeye başlamak için. Bir 3D grafik motoruyla mücadele etmekten bir kitapta okuduğum her şeyden daha fazla şey öğrendim. Sizi çözmek için araştırma gerektiren alışılmadık durumlara girmeye zorlar. Güzel değil, verimli değil, ama bir şeyler öğreneceksiniz.
SC Ghost

+1 için "C / C ++ hakkında konuşuyorsanız, kesinlikle ekstra bir deneyim kullanabilirsiniz." -1 "C ++ öğrenmek için en iyi kaynak StackOverflow", bu yüzden oy yok.
Residuum

5

Her şeyden önce, henüz bilmediğiniz her şeyde temel teorik arka planınızı artırın. Teoriyi inceleyin ve birkaç kısa örnek yazın.

Örnek temel teorik altyapı şunları içerir:

  • Algoritmalar ve Veri Yapıları
  • Yazılım tasarımı (UML, tasarım modelleri, OOP)
  • İşletim Sistemleri ve Paralel Programlama

Ardından, ek bir dil (örneğin Java veya C #) öğrenmeyi düşünün. - Ek dilleri öğrenmek, kullandığınız dilin artıları ve eksileri altında daha iyi yardımcı olur ve farkında olmadığınız en iyi uygulamaları öğrenmenize yardımcı olur.

Ardından yeni bir alan seçin (web programlama, bilgisayar grafikleri, görüntü işleme, bilgisayarla görme, veri erişimi, ...). Teoriyi inceleyin ve birkaç kısa örnek yazın.

Ardından, veri erişimini, kullanıcı arayüzünü ve seçtiğiniz belirli bir alanı işleyen çok katmanlı bir uygulamayı kapsüle eden büyük bir örnek oluşturun. Uygulamanın mimarisine vurgu yapın (parçalarının mümkün olduğunca gevşek bağlandığından emin olun).

Umarım, yeni yaklaşımları ve teknolojileri nasıl öğreneceğinizi ve bunları iyi bir mimariyle nasıl bütünleştireceğinizi öğreneceksiniz.


Özellikle oyun programlaması için aşağıdaki alanları / teknolojileri seçmenizi öneririm:

  • Görüntü İşleme ile ilgili temel bilgiler
  • Herhangi bir özel UI teknolojisi
  • Bilgisayar Grafikleri ile ilgili temel bilgiler
  • Herhangi bir özel grafik motoru (örn. DirectX, OpenGL, OGRE, ODG, Java3D, ...)
  • Mekanik Fiziğin Temelleri
  • Herhangi bir özel fizik motoru (örn. PhysX, ...)
  • Herhangi bir özel oyun motoru (örneğin, XNA, ...)
  • Çok iş parçacıklı programlama
  • Dağıtık programlama


Düzenle:

Nasıl ögrenilir:

  • CodeProject örneklerini okuyun ve çalıştırın.
  • Bir kitap / e-kitap kütüphanesindeki birkaç kitaba göz atın veya beğendiğiniz (okuma tarzınıza uyan + okumak istediğiniz konuları kapsayan) birkaç kitap bulana kadar saklayın.
  • Blogları okuyun.
  • Bir şeyler deneyin ve takıldığınızda StackOverlow'a sorun.

Doğrudan x biliyorum. İkincisi, bunu düşündüm ama temelin ötesinde herhangi bir kaynak bulamıyorum, şeyleri NASIL öğrenmek için tavsiyeniz var mı?
Skeith

2
Örnekler yazarak - deneme yanılma en iyi yoldur. Ayrıca, bkz. Düzenleme.
Danny Varod

1

C ++ 'ı (C ile birlikte) kullanmak, konuştukları WTF'yi anlamayı öğrenmek için daha fazlasına sahip olacağınızı varsayalım. C ++ birkaç dildir, aynı yerde yaşayan birkaç soyutlama katmanıdır ve hepsini bir kez keşfetmek, daha sonra ne gördüğünüzü anlamak çok zaman alır.

Sizin durumunuzdayım ve hala bu dilleri öğreniyorum. Ayrıca gömülü sistemler üzerinde çalışan çok şey öğreniyorum.

İşte tavsiyem:

  • Şu kitapları okuyun: /programming/388242/the-definitive-c-book-guide-and-list -> Başlangıçta olduğunuzu hissediyorsanız bile tanıtım kitaplarıyla başlayın, çünkü devam etmeden önce temel bilginizi çok güçlendirmek için. Ardından şablon meta programlaması ve gömülü sistem kısıtlamaları hakkında bilgi edinin.
  • Çok pratik yapın: öğrendiklerinizi ne kadar çok uygularsanız, o kadar çok anlarsınız. Bu noktada, yapmamın yolu, küçük test projelerinde dillerin ve bağlamların herhangi bir köşesini test etmektir. Ayrıca her şeyin kontrolünde olduğum "büyük" ev projelerim var ve yeni teknikler uyguluyorum ve kırılıncaya kadar itiyorum.

Programlama hakkında zaten çok şey bildiğinizi varsaymayın. Çoğu geliştirici, farklı bağlam ve tür projeler, platformlar vb.Ile 10 yıldan fazla gerçek dünya pratiğinden sonra programlamada olgunlaşır.

Sadece yolculuğunuza başlıyorsunuz.


3
"Olgun" u kullandığınızdan bahsetmemek gerekirse, "öğrenecek hiçbir şey kalmadan" uzaktır. Ne kadar çok öğrenirsen, bilmediğini bildiğin daha çok şey.
David Thornley

0

Gömülü programlama ve oyunlardaki ilgi alanlarınıza dayanarak, aşağıdakileri de öneriyorum - tüm bu konularda iyi bir kaynak malzemesi bulmak için yukarıdaki yayınlardan gelen kitap listelerini inceleyebilirsiniz. Gerekli bulduğum bir kitap C ++ Standart Kütüphanesi: Bir Eğitim ve Referans

  • OOP'nin temellerinden memnun değilseniz - önce bunları öğrenin. Kalıtım ve kapsülleme ile ilgili temel bilgileri kavrar. Sanal, genel / korumalı ve özel ve statik anahtar kelimelerin nasıl davrandığını bilin.

  • İşaretçileri ve referansları kullanarak rahat olun (ve genellikle referansları tercih edin). "Otomajik" bellek yönetimi elde etmek için smart_ptr <> yapısını öğrenin ve kullanın.

  • Başlangıçta kapsayıcı veri türleri olarak C ++ şablonlarının nasıl kullanılacağını öğrenin. Meta-programlama yoluyla C ++ şablonlarının gerçekleştirebileceği yeni ve daha güçlü teknikleri sürekli keşfedeceksiniz.

  • STL'yi öğrenin: string, iostream, istisnalar ve kapsayıcı sınıflarını kullanın ve bunları pratik olduğunda alt düzey char *, FILE * ve char [] veri türlerine tercih edin.

  • Boost kütüphanesinin parçalarını kullanmaya başlayın - İlgi alanlarınıza göre öncelikle asio ve thread kütüphanelerini öğrenmenizi tavsiye ederim. Bu, aynı zamanda taşınabilir yüksek kaliteli kod yazmanıza olanak tanıyan çok güçlü, açık kaynaklı, çapraz platformlu bir C ++ kaynak tabandır. (Çekirdek C ++ standardına birçok ekleme, Boost katkılarından kaynaklanmıştır)

  • İyi eğlenceler! Ciddi - kodlamak için bazı evcil hayvan projeleri seçin. Gömülü programlama projelerini seviyorsanız belki Arduino kartlarıyla tamircilik yapın.

  • Biraz deneyim kazanın - yalnızca Windows / Visual Studio C ++ kullandıysanız, Linux / g ++ veya OS X / XCode için bir kod yazmayı deneyin (Mac'te C ++ kodlayabilirsiniz veya ufuklarınızı gerçekten genişletebilir ve Objective-C için, OOP dillerinin başka bir dalının şeylerle nasıl başa çıktığını görmek için!)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.