Mengapa C ++ sering merupakan bahasa pertama yang diajarkan di perguruan tinggi? [Tutup]

12

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.

Casey Patton
sumber
6
Sekolah mana & dimana? Semua yang ada di dekat saya (3 di kota, dan beberapa lainnya dalam beberapa jam perjalanan) mengajarkan Jawa sebagai bahasa pertama. C ++ hadir dalam satu atau dua tahun terakhir (tergantung pada kursus yang diambil siswa). Sudah seperti itu setidaknya selama 10 tahun terakhir.
FrustratedWithFormsDesigner
7
Profesor seperti programmer lain hanya memiliki suka dan tidak suka cukup rasional. Pada saat yang sama, mereka seperti siswa yang kekurangan pengalaman.
Mike Dunlavey
@Casey Anda mungkin akan mengalami beberapa gesekan dengan pengguna lain di sini, karena Anda hanya memberikan klaim bahwa C ++ tidak disukai tetapi tidak ada pembenaran untuk itu. Jika fokus Anda hanya untuk mengetahui mengapa C ++ dipilih di universitas, saya sangat menyarankan Anda mengedit referensi apa pun yang disukai atau tidak disukai karena sebagian besar tidak relevan dengan pertanyaan Anda yang sebenarnya.
Adam Lear
4
Pada tahun pertama, ini semua tentang memisahkan gandum dari sekam.
Steven Evers
2
Ini akan menarik untuk memiliki beberapa statistik tentang berapa perguruan tinggi / universitas menggunakan apa bahasa untuk kursus pengantar mereka.
Jerry Coffin

Jawaban:

25

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.

Bitgarden
sumber
2
Ini mungkin bukan bahasa "buruk" jika Anda naik ke filsafat "buruk adalah subjektif", tetapi untuk hampir semua kombinasi masalah teknis, ada bahasa yang lebih produktif dan lebih aman. Menurut pendapat saya, alasan C ++ diajarkan adalah karena itulah yang digunakan orang, dan itu yang digunakan orang karena itu yang diketahui orang, dan itu yang diketahui orang karena itulah yang diajarkan universitas. Selain dari popularitas, C ++ tidak memiliki kelebihan substansial yang dapat saya lihat, dan saya memprogramnya secara profesional.
weberc2
13

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.

Karl Bielefeldt
sumber
9
Saya khawatir dengan fakta bahwa analogi palsu ini telah mengumpulkan begitu banyak upvotes. Ini bukan cara belajar bekerja. Salah satu dari banyak kesalahpahaman tentang didaktik.
Konrad Rudolph
12
C++ isn't that bad. 

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.

programmer debu
sumber
titik yang sangat masuk akal! Saya tidak diberi latihan tentang petunjuk pintar atau RTTI atau RAII di perguruan tinggi. WTF!
Chani
12

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.

Scott Whitlock
sumber
1
+1 untuk c ++ tidak menjadi bahasa komersial. Adalah baik untuk belajar bahasa tanpa khawatir dengan politik dan taktik bisnis. <menginstal Java7 di Linux misalnya>
Chani
5

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.

Arseni Mourzenko
sumber
1
Sepertinya C akan lebih baik untuk dua poin kedua Anda. Apakah ada sekolah yang mengajarkan Ada? Saya pasti akan mengambil alih C ++ tapi sekali lagi saya aneh!
Jetti
C ++ dipilih untuk produk komersial karena itu yang diketahui lebih banyak orang, bukan karena masalah teknis. C ++ adalah bahasa yang tidak aman, sulit digunakan dibandingkan dengan banyak bahasa modern. Bahasa tidak dipilih berdasarkan kemampuan mereka tetapi karena mereka populer.
weberc2
Selain itu, saya tidak dapat memikirkan banyak hal yang dilakukan Ada lebih buruk daripada C ++, dan saya lebih suka menggunakannya daripada C ++ (kode saya akan lebih sederhana dan lebih aman), dan saya memprogram dalam C ++ secara profesional! Dan untuk mengajar siswa tentang petunjuk, selalu ada Ada, Go, atau sejumlah bahasa yang waras. Dan mengenai poin terakhir Anda, C ++ tentu saja sulit. Banyak masalah yang dihadapi programmer C ++ tidak ada hubungannya dengan pemrograman, tetapi dengan mengatasi C ++. Pemrograman pada level apa pun cukup mudah dalam bahasa yang waras.
weberc2
5

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.

pengguna32288
sumber
Ini mungkin tidak berlaku untuk kode objek, tetapi janji bahasa C termasuk C ++ pada masa itu adalah bahwa ada kompiler untuk hampir setiap platform sehingga kode sumber yang sama dapat digunakan untuk mengkompilasi aplikasi untuk berbagai platform.
JohnFx
Sebenarnya itu benar. Sebagian besar * platform NIX telah dibangun di kompiler dan yang cenderung memiliki efek psikologis pada kebanyakan orang dalam bentuk "Tentu, saya bisa mengunduh kompilasi ITU, tapi yang ini datang dengan OS saya jadi pasti itu yang terbaik".
Anda harus mencoba bahasa lain selain Jawa - ada alternatif yang merupakan yang terbaik dari kedua dunia. Go misalnya menawarkan kecepatan, portabilitas, dan kesederhanaan dan itu membuat konkurensi menjadi mudah.
weberc2
4

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.

mikrofon
sumber
Ini terdengar seperti argumen untuk Ada, bukan C ++ ...
weberc2
3

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.

jojo
sumber
3

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.)

Felix Dombek
sumber
Ini tidak menjelaskan mengapa Ada, misalnya, tidak diajarkan sebagai bahasa pertama.
weberc2
2

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

Coder
sumber
3
Jawaban ini benar-benar salah. Pertama dan terutama karena tidak ada bahasa yang disebut "C / C ++".
Konrad Rudolph
1
  1. Profesor tidak suka mempersiapkan kursus baru dan ada batasan berapa banyak yang dapat Anda tawarkan.
  2. Bahasa datang dan pergi, jadi mereka menyerah berusaha untuk tetap berada di ujung tombak (Lihat # 1)
  3. Itu adalah universitas dan bukan sekolah teknik. Lebih fokus pada penyediaan fondasi daripada pelatihan kerja.
  4. Mencakup berbagai pemrograman yang cukup luas: server, desktop, tertanam, UNIX, Windows.
  5. Mereka menggunakannya sebagai jalan keluar. Setiap bidang studi utama memiliki setidaknya satu.
JeffO
sumber
1

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.

cnd
sumber