Meningkatkan level kode C / C ++ saya

16

Saya telah memprogram selama 3-4 tahun sekarang dan merasa saya tidak bisa lagi disebut pemula, tetapi saya membaca beberapa pertanyaan di situs ini dan berpikir WTF yang mereka bicarakan? Saya merasakan hal yang sama ketika saya mengambil buku pemrograman saat ini.

Saya telah membaca beberapa buku pemrograman awal, beberapa di C / C ++ dan yang lainnya di game. Saya telah menulis beberapa hal yang lebih kompleks seperti AI yang sangat mendasar, serial dan antarmuka TCP / IP.

Saya berencana untuk menjadi programmer game, tetapi saya baru-baru ini menjadi agak tertarik pada sistem embedded setelah memiliki kesempatan untuk bekerja pada mereka (antarmuka serial).

Saya merasa sangat sulit untuk menemukan bahan untuk melanjutkan pembelajaran saya setelah menyelesaikan buku pendahuluan dan pemula karena tidak ada buku C ++ menengah yang dapat saya temukan.

Apa saran yang akan Anda berikan untuk tumbuh dan meningkatkan pengetahuan dan keterampilan saya? Sumber daya spesifik akan sangat dihargai.

Skeith
sumber
Untuk buku C ++ lihat pertanyaan ini: stackoverflow.com/questions/388242/…
Naveen

Jawaban:

10

Jika Anda berbicara tentang C / C ++, maka Anda pasti bisa menggunakan beberapa pengalaman ekstra. Petunjuk pertama yang akan saya berikan adalah C dan C ++ adalah bahasa yang sama sekali berbeda . Sumber daya terbaik untuk belajar C ++ adalah StackOverflow- ada banyak orang di sana yang memiliki banyak pengalaman dan pengetahuan.

Hal berikutnya yang harus dilakukan adalah memulai proyek besar, seperti mencoba menulis mesin grafik 3D dalam API tingkat rendah seperti DirectX, dan ketika desain Anda gagal total seperti semua proyek pertama, maka Anda akan belajar sesuatu tentang bagaimana tidak untuk memprogram.

Anda dapat memeriksa tautan ini di StackOverflow untuk daftar besar buku bagus untuk belajar C ++.

DeadMG
sumber
3
Tidak, sumber terbaik untuk belajar C ++ adalah buku yang bagus, atau lebih disukai buku.
Neil Butterworth
+1 Untuk memulai proyek besar. Saya telah belajar lebih banyak dari berjuang melalui mesin grafis 3D daripada apa pun yang saya baca di buku. Ini memaksa Anda untuk masuk ke situasi asing yang memerlukan penelitian untuk diselesaikan. Itu tidak cantik, tidak efisien, tetapi Anda akan belajar sesuatu.
SC Ghost
+1 untuk "Jika Anda berbicara tentang C / C ++, maka Anda pasti dapat menggunakan beberapa pengalaman ekstra." -1 untuk "Sumber daya terbaik untuk mempelajari C ++ adalah StackOverflow", jadi jangan pilih.
Residuum
5

Pertama-tama, tingkatkan latar belakang teori dasar Anda dalam apa pun yang belum Anda ketahui. Pelajari teorinya dan tulis beberapa contoh singkat.

Contoh latar belakang teori dasar meliputi:

  • Algoritma dan Datastruktur
  • Desain perangkat lunak (UML, pola desain, OOP)
  • Sistem Operasi dan Pemrograman Paralel

Kemudian, pertimbangkan untuk belajar bahasa tambahan (misalnya Java atau C #). - Mempelajari bahasa tambahan membantu lebih baik di bawah pro dan kontra bahasa apa pun yang Anda gunakan dan membantu Anda mempelajari praktik terbaik yang mungkin tidak Anda sadari.

Selanjutnya pilih domain baru (pemrograman web, grafik komputer, pemrosesan gambar, visi komputer, akses data, ...). Pelajari teorinya dan tulis beberapa contoh singkat.

Selanjutnya buat contoh besar, yang merangkum aplikasi berlapis-lapis, menangani akses data, UI, dan domain tertentu yang telah Anda pilih. Beri penekanan pada arsitektur aplikasi (pastikan bagian-bagiannya digabungkan seringan mungkin).

Semoga, Anda akan belajar cara mempelajari pendekatan dan teknologi baru dan mengintegrasikannya dengan arsitektur yang baik.


Khusus untuk pemrograman game, saya sarankan memilih domain / teknologi berikut:

  • Dasar-dasar Pemrosesan Gambar
  • Setiap teknologi UI spesifik
  • Dasar-dasar Grafik Komputer
  • Setiap mesin grafis tertentu (misalnya DirectX, OpenGL, OGRE, ODG, Java3D, ...)
  • Dasar-dasar Fisika Mekanik
  • Setiap mesin fisika spesifik (mis. PhysX, ...)
  • Mesin permainan tertentu (mis. XNA, ...)
  • Pemrograman multi-utas
  • Pemrograman terdistribusi


Edit:

Cara belajar:

  • Baca dan jalankan contoh dari CodeProject.
  • Jelajahi beberapa buku di perpustakaan buku / ebook atau simpan hingga Anda menemukan beberapa buku yang Anda sukai (yang sesuai dengan gaya membaca Anda + mencakup topik-topik yang ingin Anda baca).
  • Baca blog.
  • Cobalah hal-hal dan tanyakan pada StackOverlow ketika Anda mengalami kesulitan.
Danny Varod
sumber
Saya tahu langsung x. kedua saya telah memikirkan hal ini tetapi tidak dapat menemukan sumber daya di luar dasar-dasar yang sangat, apakah Anda punya saran tentang BAGAIMANA untuk mempelajari hal-hal?
Skeith
2
Dengan menulis contoh - coba-coba adalah cara terbaik. Juga, lihat edit.
Danny Varod
1

Menggunakan C ++ (dalam kombinasi dengan C) misalkan Anda akan memiliki lebih banyak untuk belajar memahami WTF yang mereka bicarakan. C ++ adalah beberapa bahasa, beberapa lapis abstraksi yang hidup di tempat yang sama dan butuh banyak waktu untuk menjelajahinya sekali, lalu memahami apa yang baru saja Anda lihat.

Saya sudah menangani Anda dan saya masih belajar tentang bahasa-bahasa itu. Saya juga belajar banyak bekerja pada sistem embedded.

Ini saran saya:

  • Baca buku-buku itu: /programming/388242/the-definitive-c-book-guide-and-list -> Mulai dengan buku pengantar, bahkan jika Anda merasa Anda bukan pemula, karena Anda memiliki untuk melipatgandakan pengetahuan dasar Anda sebelum melanjutkan. Kemudian pelajari tentang metaprogramming template dan pembatasan sistem yang disematkan.
  • Berlatih banyak: semakin banyak Anda menerapkan apa yang Anda pelajari, semakin Anda memahaminya. Pada titik ini, cara saya melakukan adalah menguji sudut bahasa apa pun dan konteks dalam proyek uji kecil. Saya juga memiliki proyek rumah "besar" di mana saya mengendalikan segalanya dan saya mempraktikkan teknik baru dan mendorong mereka sampai mereka rusak.

Jangan menganggap Anda sudah tahu banyak tentang pemrograman. Kebanyakan pengembang mulai matang dalam pemrograman hanya setelah lebih dari 10 tahun berlatih di dunia nyata, dengan berbagai konteks dan jenis proyek, platform dll.

Anda baru memulai perjalanan Anda.

Klaim
sumber
3
Belum lagi "dewasa", seperti yang Anda gunakan, jauh dari "tidak ada yang tersisa untuk dipelajari". Semakin banyak Anda belajar, semakin banyak hal yang Anda tahu tidak Anda ketahui.
David Thornley
0

Berdasarkan minat Anda pada pemrograman dan permainan yang disematkan, saya juga akan merekomendasikan yang berikut ini - Anda dapat membaca dengan teliti daftar buku dari posting di atas untuk menemukan bahan sumber yang bagus tentang semua subjek ini. Satu buku yang saya temukan penting adalah The C ++ Standard Library: A Tutorial and Reference

  • Jika Anda tidak nyaman dengan dasar-dasar OOP - pelajari terlebih dahulu. Memahami dasar-dasar pewarisan dan enkapsulasi. Ketahui bagaimana berperilaku kata kunci virtual, publik / terlindungi dan pribadi, dan statis.

  • Nyaman menggunakan pointer dan referensi (dan umumnya lebih suka referensi). Pelajari dan gunakan konstruksi smart_ptr <> untuk mencapai manajemen memori "automagical".

  • Pelajari cara menggunakan templat C ++ - awalnya hanya sebagai tipe data wadah. Anda akan terus menemukan teknik baru dan lebih kuat yang dapat dilakukan templat C ++ melalui meta-pemrograman.

  • Pelajari STL: gunakan string, iostream, pengecualian, dan kelas-kelas penampung, dan pilih mereka daripada tipe data char *, FILE *, dan char [] level rendah kapan pun praktis.

  • Mulailah menggunakan bagian dari perpustakaan Boost - Saya sarankan Anda mempelajari pustaka asio dan utas mereka terlebih dahulu, mengingat minat Anda. Ini adalah basis sumber C ++ sumber terbuka yang sangat kuat, sumber terbuka, lintas platform yang memungkinkan Anda menulis kode berkualitas tinggi yang juga portabel. (Banyak tambahan pada standar inti C ++ berasal dari kontribusi Peningkatan)

  • Selamat bersenang-senang! Serius - pilih beberapa proyek hewan peliharaan untuk didaftar. Mungkin bermain-main dengan papan Arduino jika Anda suka proyek pemrograman tertanam.

  • Dapatkan pengalaman yang luas - jika Anda hanya menggunakan Windows / Visual Studio C ++, coba tulis beberapa kode untuk Linux / g ++, atau OS X / XCode (Anda dapat kode C ++ di Mac, atau Anda benar-benar dapat memperluas cakrawala dan pergi untuk Objective-C, untuk melihat bagaimana cabang lain dari bahasa OOP menangani hal-hal!)

holtavolt
sumber