Saya mengunjungi hari buka departemen Ilmu Komputer universitas hari ini dan dalam tur lab kami duduk untuk bermain dengan beberapa proyek tahun terakhir dari mahasiswa sarjana. Salah satunya sangat bagus - semacam permainan asteroid FPS. Saya memutuskan untuk mengintip di src
direktori untuk menemukannya dilakukan di C ++ (sebagian besar proyek lainnya adalah aplikasi Java 3D).
Saya belum pernah melakukan C sebelumnya tetapi saya telah melihat-lihat beberapa kode C sebelumnya. Dari apa yang saya lihat di kode .cpp di game ini tidak terlihat jauh berbeda.
Saya tertarik mempelajari C atau C ++, tetapi mungkin akan mempelajari yang lain nanti. Apakah ada keuntungan bagi saya belajar satu sebelum yang lain dan jika ya, yang mana?
Jawaban:
Tidak perlu mempelajari C sebelum mempelajari C ++.
Mereka adalah bahasa yang berbeda . Ini adalah kesalahpahaman umum bahwa C ++ dalam beberapa hal bergantung pada C dan bukan bahasa yang ditentukan sepenuhnya sendiri.
Hanya karena C ++ memiliki banyak sintaks yang sama dan banyak semantik yang sama, tidak berarti Anda perlu mempelajari C terlebih dahulu.
Jika Anda mempelajari C ++, pada akhirnya Anda akan mempelajari sebagian besar C dengan beberapa perbedaan antara bahasa yang akan Anda pelajari seiring waktu. Faktanya, menulis C ++ yang tepat adalah hal yang sangat sulit karena programmer C ++ perantara cenderung menulis C / C ++. Itu benar apakah Anda memulai dengan C atau memulai dengan C ++ atau tidak.
Jika Anda tahu C terlebih dahulu, itu bagus plus untuk mempelajari C ++. Anda akan mulai dengan mengetahui sebagian besar bahasa. Jika Anda tidak tahu C terlebih dahulu maka tidak ada gunanya berfokus pada bahasa yang berbeda. Ada banyak buku dan tutorial bagus yang tersedia yang membuat Anda tidak tahu apa-apa dan akan mencakup apa pun yang akan Anda pelajari dari C yang juga berlaku untuk C ++.
Silakan lihat alasan lebih lanjut dalam jawaban ini .
sumber
Saya suka pertanyaan ini - ini seperti menanyakan "apa yang harus saya pelajari dulu, snowboarding atau ski"? Saya pikir itu tergantung apakah Anda ingin snowboard atau ski. Jika Anda ingin melakukan keduanya, Anda harus mempelajari keduanya.
Dalam kedua olahraga tersebut, Anda meluncur menuruni bukit di atas salju menggunakan perangkat yang cukup mirip untuk memancing pertanyaan ini. Namun, mereka juga cukup berbeda sehingga mempelajari yang satu tidak banyak membantu Anda dengan yang lain. Sama halnya dengan C dan C ++. Meskipun tampaknya bahasa yang cukup mirip dalam sintaks, pola pikir yang Anda perlukan untuk menulis kode OO vs kode prosedural cukup berbeda sehingga Anda harus mulai dari awal, bahasa apa pun yang Anda pelajari kedua.
sumber
Saya belajar C dulu, dan saya mengambil kursus struktur data yang menggunakan C, sebelum saya belajar C ++. Ini berhasil dengan baik untuk saya. Kursus struktur data dalam bahasa C memberi saya pemahaman yang kuat tentang petunjuk dan manajemen memori. Itu juga memperjelas manfaat dari paradigma berorientasi objek, setelah saya mempelajari apa itu.
Di sisi lain, dengan mempelajari C terlebih dahulu, saya telah mengembangkan beberapa kebiasaan yang awalnya menyebabkan saya menulis kode C ++ yang buruk, seperti penggunaan pointer yang berlebihan (ketika referensi C ++ akan dilakukan) dan preprocessor.
C ++ benar-benar bahasa yang sangat kompleks dengan banyak fitur. Ini sebenarnya bukan superset dari C. Sebaliknya ada subset dari C ++ yang terdiri dari konstruksi pemrograman prosedural dasar (loop, if, dan fungsi), yang sangat mirip dengan C. Dalam kasus Anda, saya akan mulai dengan itu, dan kemudian melanjutkan ke konsep yang lebih maju seperti kelas dan template.
Hal terpenting, IMHO, adalah dihadapkan pada paradigma pemrograman yang berbeda, seperti prosedural, berorientasi objek, fungsional, dan logis, sejak dini, sebelum otak Anda membeku menjadi salah satu cara memandang dunia. Kebetulan, saya juga sangat menyarankan Anda mempelajari bahasa pemrograman fungsional, seperti Skema. Ini benar-benar akan memperluas wawasan Anda.
sumber
Jika Anda memutuskan untuk mempelajari keduanya (dan seperti yang telah disebutkan orang lain, tidak ada kebutuhan eksplisit untuk mempelajari keduanya), pelajari C terlebih dahulu. Beralih dari C ke C ++ terasa seperti perkembangan alami; pergi ke arah lain terasa seperti sengaja mengikat satu tangan ke belakang punggung Anda. :-)
sumber
Saya pikir Anda harus belajar C dulu, karena saya belajar C dulu. C memberi saya pemahaman yang baik tentang sintaksis dan gotcha dengan hal-hal seperti pointer, yang semuanya mengalir ke C ++.
Saya pikir C ++ membuatnya mudah untuk membungkus semua gotcha itu (membutuhkan array yang tidak akan meluap ketika Anda menggunakan operator [] dan indeks yang cerdik? Tentu, buat kelas array yang melakukan pemeriksaan batas) tetapi Anda perlu tahu apa mereka dan digigit oleh mereka sebelum Anda memahami mengapa sesuatu dilakukan dengan cara tertentu.
Ketika semua dikatakan dan dilakukan, cara C ++ biasanya diajarkan adalah "C ++ adalah C dengan objek, ini C dan inilah cara kerja semua OO", jadi Anda cenderung mempelajari C dasar sebelum C ++ nyata jika Anda tetap ikuti sebagian besar teks.
sumber
Saya tidak setuju dengan mayoritas di sini. Saya pikir Anda harus mempelajari C sebelum mempelajari C ++. Ini jelas tidak perlu, tapi menurut saya itu membuat belajar C ++ jauh lebih mudah. C adalah inti dari C ++. Apa pun yang Anda pelajari tentang C dapat diterapkan ke C ++, tetapi C jauh lebih kecil dan lebih mudah dipelajari.
Ambil K&R dan baca itu. Ini singkat dan akan memberi Anda pemahaman bahasa yang memadai. Setelah Anda memiliki dasar-dasar pointer dan panggilan fungsi, Anda dapat beralih ke C ++ sedikit lebih mudah.
sumber
static
, templat (dan kesalahan templat yang sangat mengintimidasi yangDalam proses mempelajari C ++, Anda akan mempelajari sebagian besar C juga. Namun perlu diingat banyak kode C ++ tidak valid C. C ++ dirancang agar kompatibel dengan kode C, jadi saya akan mengatakan belajar C ++ dulu. Brian menulis jawaban yang bagus tentang ini.
sumber
Seperti jawaban atas banyak pertanyaan lain dalam hidup, itu tergantung. Itu tergantung pada apa minat dan tujuan pemrograman Anda. Jika Anda ingin memprogram aplikasi desktop, mungkin dengan GUI, maka C ++ (dan OOP) mungkin adalah cara yang lebih baik. Jika Anda tertarik dengan pemrograman perangkat keras pada sesuatu selain chipset x86, maka C seringkali merupakan pilihan yang lebih baik, biasanya untuk kecepatannya. Jika Anda ingin membuat pemutar media baru atau menulis aplikasi bisnis, saya akan memilih C ++. Jika Anda ingin melakukan simulasi ilmiah tentang tabrakan galaksi atau dinamika fluida, lihatlah kekuatan C.
sumber
restrict
C tidak memiliki konstruksi sintaksis / semantik terkait kinerja selain yang dimiliki C ++, mengapa tepatnya menurut Anda kode C ++, dengan sintaksnya yang lebih kaya dan misalnya pemrograman meta harus menghasilkan kode yang lebih lambat? Apakah Anda tahu template ekspresi?restrict
, yang bagaimanapun semua compiler C ++ utama disediakan sebagai ekstensi). Dan apakah Anda benar-benar berpikir bahwa, dengan kode yang sama, akan ada perbedaan dalam performa antara C ++ dan C, dengan kompiler yang sama? [...]Mempelajari C memaksa Anda untuk berpikir lebih keras tentang beberapa masalah seperti manajemen memori eksplisit dan implisit atau ukuran penyimpanan tipe data dasar pada saat Anda menulis kode.
Setelah Anda mencapai titik di mana Anda merasa nyaman dengan fitur C dan kesalahan fungsi , Anda mungkin tidak akan kesulitan belajar dan menulis dalam C ++.
Sangat mungkin bahwa kode C ++ yang Anda lihat tidak terlihat jauh berbeda dari C standar, tetapi itu mungkin karena kode tersebut tidak berorientasi objek dan tidak menggunakan pengecualian, orientasi objek, templat, atau fitur lanjutan lainnya.
sumber
Saya pikir mempelajari C terlebih dahulu adalah ide yang bagus.
Ada alasan mengapa kursus komputer masih menggunakan C.
Menurut pendapat saya ini untuk menghindari semua "keramaian" dari subjek kewajiban untuk meminta OOP membawa.
Saya pikir pemrograman prosedural adalah cara paling alami untuk mempelajari pemrograman terlebih dahulu. Saya pikir itu benar karena pada akhirnya itu yang Anda miliki: baris kode yang dieksekusi satu demi satu.
Banyak teks saat ini yang mendorong pendekatan "mengutamakan objek" dan mulai berbicara tentang mobil dan perpindahan gigi sebelum memperkenalkan array.
sumber
Tidak.
Biasanya lebih berguna mempelajari C ++ karena lebih mirip dengan bahasa berbasis OO paling modern, seperti Eiffel atau C #.
Jika tujuan Anda adalah mempelajari C ++, pelajari C ++ standar modern terlebih dahulu. Tinggalkan mallocs di samping.
Tapi Steve Rowe ada benarnya ...
sumber
Setelah mengamati orang-orang, yang telah mempelajari Java terlebih dahulu, berjuang dengan konsep pointer dan manajemen memori dalam C ++, saya akan mengatakan bahwa mempelajari C terlebih dahulu adalah ide yang bagus, untuk memahami kedua konsep ini, yang terisolasi dari kompleksitas C ++ lainnya fitur.
sumber
Dua sen saya:
Saya sarankan untuk belajar C dulu, karena:
sumber
Saya pikir c adalah bahasa pemrograman yang sangat bagus, kompak dan agak mudah dipelajari. tetapi jika Anda hanya ingin mempelajari c ++, mulailah dengan c ++. tetapi saya menyarankan Anda untuk mempelajari keduanya. dan jika Anda ingin melakukan itu; Saya pikir lebih baik memulai dengan c. seperti yang dikatakan sebelumnya: ini kecil dan agak mudah dipelajari. mungkin langkah yang bagus untuk bahasa pemrograman yang lebih kompleks seperti c ++. (karena c memberi Anda beberapa dasar)
semoga berhasil.
sumber