Sekolah saya memulai kurikulum ilmu komputer dengan kursus pemrograman C ++, yang berarti ini adalah bahasa pertama yang dipelajari banyak siswa.
Saya telah melihat bahwa banyak orang tidak suka C ++, dan saya telah membaca berbagai alasan mengapa. Tampaknya hampir menjadi pendapat umum bahwa C ++ bukan bahasa yang sangat baik. Saya mendapat kesan itu tidak terlalu disukai berdasarkan beberapa pertanyaan di StackExchange serta posting seperti:
http://damienkatz.net/2004/08/why-c-sucks.html
http://blogs.kde.org/ node / 2298
http://blogs.cio.com/esther_schindler/linus_torvalds_why_c_sucks
http://www.dacris.com/blog/2010/02/16/why-c-sucks-part-2/
dll.
(Catatan: Ini bukan pendapat saya bahwa C ++ adalah bahasa yang buruk. Bahkan, itu adalah bahasa utama yang saya gunakan. Namun, internet dan juga beberapa profesor telah memberi saya kesan bahwa itu bukan bahasa yang sangat disukai banyak orang. , salah satu profesor saya terus-menerus berpakaian C ++, namun itu masih bahasa awal di kampus saya!)
Dengan mengingat hal itu, mengapa ini bahasa pertama yang diajarkan di banyak sekolah? Apa alasan untuk memulai kurikulum pemrograman dengan C ++?
Catatan: Pertanyaan ini mirip dengan "Apakah C ++ cocok sebagai bahasa pertama", tetapi sedikit berbeda karena saya tidak tertarik pada apakah itu cocok, tetapi mengapa itu dipilih.
Jawaban:
Setiap bahasa memiliki kultus pengikut dan pembenci yang sama; ini berlaku untuk C ++, Java, C #, Haskell, Objective-C, apa pun.
Ada banyak alasan yang sah untuk menyukai atau tidak menyukai suatu bahasa.
Pada akhirnya, ada beberapa alasan mengapa C ++ sebagian besar diajarkan di universitas:
Itu dibangun di atas C; oleh karena itu, transisi dari C ke C ++ tidak terlalu menyakitkan. Beberapa universitas mengajarkan C sebelum C ++ (yang membuat banyak akal IMO).
Ini adalah salah satu bahasa paling populer di industri ini (yang mulai berubah dengan Java, pengembangan seluler, pengembangan web, dll. Tetapi masih ada di sana)
Ini adalah bahasa yang ditulis oleh seorang akademisi, untuk tujuan akademik (yaitu penelitian) ; oleh karena itu banyak profesor menggunakannya setiap hari dan sangat akrab dengannya, yang membuatnya menjadi pilihan yang jelas untuk konten program studi mereka.
Jangan terlalu tergesa-gesa menganggapnya sebagai bahasa "buruk"; Saya sarankan Anda menyelam ke dalamnya, benar-benar mempelajarinya, membangun beberapa proyek berukuran sedang hingga besar menggunakannya. Kemudian lakukan hal yang sama dengan bahasa lain; pada saat itu Anda akan memiliki cukup pengalaman dan wawasan untuk mengatakan "Saya pikir C ++ buruk karena X, Y, Z" atau "Saya pikir C ++ baik karena A, B, C yang tidak dimiliki Java".
Anda masih harus banyak belajar, belalang muda.
sumber
Sederhananya, itu adalah bahasa pengajaran yang sangat baik karena tidak memegang tangan Anda. Orang yang belajar mengemudi dengan transmisi manual hampir tidak mengalami kesulitan saat pertama kali secara otomatis, tetapi kebalikannya tidak benar. Butuh waktu lebih lama untuk belajar, tetapi di perguruan tinggi Anda memiliki 4 tahun program mainan untuk berlatih sebelum Anda harus membuat sesuatu yang berguna.
sumber
Apa yang diajarkan di sekolah biasanya didorong oleh apa yang diketahui oleh profesor, dan apa yang digunakan di industri dan populer pada saat itu.
Pikirkan sekolah sebagai kapsul waktu ke masa lalu. :)
Saya benar-benar berharap itu sebaliknya.
sumber
Bahasa Inggris juga telah digambarkan sebagai bahasa yang benar-benar buruk, diretas bersama, tidak konsisten, tetapi karena begitu banyak orang di sini mengetahuinya, orang tua dan guru saya memutuskan itu adalah ide yang baik untuk mengajarkannya kepada saya.
Saya pikir itu sama dengan C ++. Ini adalah bahasa yang banyak orang tahu, jadi ini bermanfaat untuk kelancaran dasar.
Ini juga memiliki keuntungan karena level yang cukup rendah untuk benar-benar memberi Anda perasaan untuk apa yang terjadi di tingkat perangkat keras.
Akhirnya, ia tidak memiliki masalah "komersial" yang dimiliki beberapa bahasa lain (seperti Java-Oracle atau .NET-MS). Saya tahu banyak universitas tidak ingin dituduh mengajar satu produk perusahaan tertentu daripada yang lain.
sumber
Jika C ++ sangat buruk, bagaimana Anda menjelaskan bahwa sebagian besar produk perangkat lunak yang Anda gunakan dalam kehidupan sehari-hari Anda ditulis dalam C ++?
Mungkin ada beberapa alasan untuk belajar C ++ di perguruan tinggi sejak tahun pertama:
Ini sebagian besar digunakan. Basis kode yang ada hanya besar, dan bahkan sekarang ada bahasa seperti Ruby, Python atau C #, C ++ masih banyak digunakan bahkan ketika membuat aplikasi dari awal, termasuk untuk situs web. Dalam hal ini, belajar C ++ adalah pilihan yang baik. Setidaknya yang lebih baik daripada menghabiskan dua tahun belajar Ada, yaitu sesuatu yang tidak akan pernah Anda gunakan dalam hidup Anda, kecuali jika Anda mengembangkan aplikasi untuk pesawat ruang angkasa.
Itu tidak terlalu abstrak. Misalnya, bagaimana Anda bisa menjelaskan kepada siswa apa petunjuk jika mereka hanya belajar C # atau Java?
Cukup sulit dibandingkan dengan, katakanlah, PHP. Ini berarti bahwa siswa yang tidak dibuat untuk pemrograman akan segera pergi, yang tidak terlalu buruk dan menghindari siswa untuk membuang dua atau tiga tahun sebelum memahami bahwa pengembangan perangkat lunak bukan untuknya.
Ini membuat C ++ lebih cocok daripada Ada, Java atau PHP.
sumber
Secara umum, jika Anda bisa belajar dan menguasai C ++, Anda bisa belajar dan menguasai hampir semua bahasa lain di luar sana. Alasan itu tidak disukai adalah karena, agar mahir di dalamnya dan memiliki waktu rilis yang cepat, Anda harus sangat terbiasa dengan bahasa dan perpustakaan standar.
Namun, dalam bahasa seperti Java, Anda dapat memiliki waktu penggunaan yang cepat dengan hanya beberapa pengetahuan lanjutan seluk beluk bahasa / perpustakaan standar. Sial, saya hanya tahu lima hal dari perpustakaan standar Jawa dengan hati (selain dari hal-hal dasar seperti koleksi tentu saja).
Oleh karena itu, C ++ masih merupakan bahasa yang banyak digunakan karena kombinasi yang hebat antara kecepatan dan metodologi berorientasi objek. Sementara banyak orang percaya itu bukan OOP penuh, saya percaya itu memberi Anda sebagian besar fleksibilitas OOP tanpa memaksa Anda untuk menjadi fanatik total. Sebagian besar penyusun bahkan memungkinkan Anda untuk menulis C. murni
Jika saya punya pilihan, saya akan mengambil C ++ di Jawa kapan saja, tapi itu hanya saya yang menjadi fanboy. Secara umum, Java berguna karena akan berjalan pada hampir semua arsitektur yang memiliki interpreter Java yang dibangun untuk itu. Jadi untuk aplikasi klien yang perlu didukung pada banyak platform, itu dianggap sebagai alat terbaik untuk pekerjaan itu dan sebagian besar aplikasi baru yang ditulis adalah berbasis web.
sumber
Seperti yang dikatakan beberapa profesor saya, lebih mudah untuk memulai dari bawah, atau tingkat rendah, dan kemudian naik ke atas. Bahasa seperti C ++ memberi Anda pengantar tentang apa yang sebenarnya menjadi ilmuwan komputer. Ini mungkin bukan bahasa yang glamor seperti Java, Python, Ruby, dll ... tetapi ini memungkinkan Anda untuk mendapatkan pemahaman inti tentang fitur-fitur program penting seperti pointer dan manajemen memori. Bahkan jika itu bukan bahasa yang Anda rencanakan atau ingin Anda gunakan untuk sisa hidup Anda, Anda akan menghargai di tahun-tahun mendatang ketika Anda mulai menemukan jalur pemrograman yang Anda inginkan.
sumber
C ++ dapat menjadi salah satu bahasa paling sederhana untuk program konsol tingkat pemula. Tentu bahasanya kompleks, tetapi Anda dapat fokus pada subset prosedural. Anda dapat mengabaikan keberadaan pointer cukup lama. Anda bisa mulai dari yang sederhana, lalu membangun.
Ada sedikit sintaks "fluff" untuk menjalankan dan menjalankan program "hello world" awal dibandingkan dengan java atau C #. Haruskah seorang pemula harus melihat kata "statis" untuk aplikasi hello world? Dalam java / C # yang mereka lakukan.
sumber
Ketika saya belajar ilmu komputer, Java pertama kali, tetapi universitas saya sekarang mengajarkan dua bahasa kepada kita ahli bahasa komputasi: Prolog pertama dan kemudian C ++.
C ++ diajarkan untuk (setidaknya) alasan berikut:
Ini adalah bahasa tujuan umum, Anda dapat menulis perangkat lunak untuk sistem operasi apa pun dengan itu (karena ada banyak kompiler). Ini dirancang untuk menjadi bahasa produksi yang baik, membuatnya mudah untuk menggunakan kembali bagian-bagian program, berinteroperasi dengan perangkat keras dan perangkat lunak dunia nyata, dll.
Sangat cepat. Anda tidak dapat menggunakan Python atau Skema atau Prolog untuk memproses kumpulan data besar , yang umum terjadi saat ini. Pikirkan algoritma grafik dengan jutaan node. (Itu juga sebabnya permainan komputer biasanya ditulis dalam C ++.)
Siswa dapat mempelajari apa yang dilakukan oleh kompiler. Sebenarnya, selama saya hanya belajar Java (mulai dari sekolah menengah), pekerjaan kompiler selalu tampak seperti keajaiban bagi saya. Anda hanya tidak belajar tentang tumpukan dan tumpukan, seluruh hal menghubungkan statis vs dinamis, dll sebagai pemula Java. C ++ menghapus mistifikasi seluruh komputer.
Untuk apa yang bisa dilakukan, itu baik dalam waktu belajar (meskipun mungkin salah satu bahasa yang paling rumit jika Anda benar-benar menggali ke dalamnya). Ini menawarkan perpustakaan yang bagus yang membantu dengan kurva belajar yang lancar. (Namun, ada beberapa pendekatan berbeda untuk itu. Di universitas saya, kami diajari cara menulis kelas string dan pointer pintar kami sebelum diizinkan menggunakan perpustakaan; Bjarne Stroustrup, penemu C ++, mendorong urutan yang berlawanan.)
sumber
C / C ++ sebenarnya bahasa yang lebih baik daripada kebanyakan orang lain, pertama karena tidak menambah rasa aman yang salah. Kedua karena Anda tahu apa yang Anda lakukan.
Saya benar-benar menyukai bahasa ini, dan saya menganggapnya lebih unggul daripada kebanyakan alternatif.
Ini juga sama produktifnya dengan kebanyakan bahasa lain, dan bukan "crash" jika Anda tahu apa yang Anda lakukan, dan pikirkan sebelum Anda menyalin-paste kode acak.
Juga bacaan yang bagus - http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
Namun, beberapa hal dalam C ++ sebenarnya buruk, misalnya pengecualian, dan overhead tidak intuitif dalam beberapa kasus. Inilah alasannya, saya kira, mengapa Linus sangat negatif tentang hal itu dalam pos yang Anda kutip.
Bacaan yang bagus untuk menyentuh salah satu topik terkait - http://blogs.msdn.com/b/oldnewthing/archive/2004/04/22/118161.aspx
sumber
sumber
Sebelumnya ada Pascal, sebelumnya Pascal ada sesuatu yang mirip Basic. Bagian yang menarik adalah - apa selanjutnya? Mungkin tidak ada. Saya memiliki pemikiran tentang "mengapa c ++". Karena itu sulit tetapi tidak terlalu sulit. Tidak, saya benar-benar mengerti bahwa C ++ adalah bahasa yang baik untuk pemrograman sistem, saya tahu bahwa ada banyak proyek yang dikodekan pada C ++ dan ada banyak perpustakaan sehingga para siswa dapat membuat semuanya dengan itu. Tetapi kita berbicara tentang siswa dan kemungkinan mereka untuk membuat logika dan memahami sistem. Anda tidak bisa menjadi pembuat kode C ++ yang baik jika Anda tidak dapat membuat logika sederhana dan memahami cara kerja sistem dan itulah alasan utama menurut saya. Dan ya, alasan sederhana lainnya adalah awal karier yang stabil.
sumber