Java atau C ++ untuk kursus CS universitas?

11

Saya sedang dalam kesulitan untuk mendaftarkan diri di sekolah untuk mendapatkan gelar CS. Sekolah yang saya cari sebenarnya menawarkan Java dan C ++ - berbasis untuk kursus pengembangan perangkat lunak pengantar (pemrograman berorientasi objek, pola desain, hal semacam itu). Ini adalah pilihan siswa jalur mana yang harus diikuti, tetapi hanya ada waktu untuk mengikuti.

Mengetahui apa yang Anda ketahui sekarang, jika Anda punya pilihan, apakah Anda akan meletakkan dasar kurikulum CS Anda di Jawa atau C ++?

Debat saya saat ini terlihat seperti ini:

Seorang teman yang baik (yang memiliki gelar PhD di bidang AI) sedang menggembar-gemborkan Jawa sebagai pilihan yang lebih baik terlepas dari apa yang saya lakukan, jika hanya untuk membuka lebih banyak kesempatan kerja nanti, meskipun ia mungkin bias karena semua pekerjaannya telah di Jawa (dia menyukainya). Saya tinggal di daerah Boston, MA, USA dan saya melihat jumlah pekerjaan Java dan C yang sama.

Di sisi lain, meskipun saya belum sepenuhnya memutuskan apa yang ingin saya lakukan dengan tingkat ketika saya selesai, preferensi saya adalah untuk mengembangkan untuk Mac, yang saya lakukan sekarang meskipun dalam kapasitas terbatas. Untuk itu, saya sudah mendapatkan beberapa eksposur terbatas ke C ++, tapi saya belum punya dengan Java, dan melihat proyek saya di pekerjaan saya, saya tidak melihat kebutuhan untuk menggunakannya dalam waktu dekat, "segera" diukur setidaknya dua tahun.

Saya mungkin harus mencatat bahwa saya orang dewasa akan kembali ke sekolah setelah 20 tahun (saat ini saya tidak memiliki gelar apa pun) jadi saya mencari untuk memaksimalkan kesempatan dan waktu yang dihabiskan sebaik mungkin. Saya agak condong ke C ++ tapi saya masih ambivalen, dan beberapa saran objektif dari luar akan membantu di sini.

Atau aku bisa berpikir terlalu keras tentang itu.

UPDATE: Ternyata pilihan bahasa tidak begitu jelas seperti yang saya duga sebelumnya. Sementara beberapa mata kuliah inti berfokus pada Jawa, beberapa mata kuliah inti lainnya bekerja terutama di C dan Jawa, tetapi juga beberapa mata kuliah lain dilemparkan untuk mengukur dengan baik. Bahkan, sisa semester saya akan berada di Objective-C setelah menghabiskan waktu di Jawa dan Javascript. Semester terakhir adalah C, Javascript, dan PHP, ditambah beberapa lainnya dilemparkan sebagai tugas yang diperlukan. Karena semuanya terbagi menjadi menengah secara keseluruhan, dan saya masih mendapatkan jawaban untuk hal ini, saya sekarang mencoba untuk mengerjakan kurikulum saya sehingga saya memenuhi semua persyaratan untuk gelar tersebut tetapi untuk menyerap sebanyak mungkin bahasa yang bisa saya tangani secara wajar . Sejauh ini, nilaiku belum menderita saat mencoba melakukan ini.

Philip Regan
sumber
1
Semua orang di lingkungan penelitian akademik sedang menggembar-gemborkan java sekarang. Juga, terlepas dari bahasa yang Anda butuhkan untuk belajar dari universitas bagaimana mempelajari bahasa baru. C ++ ada di sekitar seperti java tetapi tidak ada pernyataan mereka akan dalam 5 tahun. Bahasa / teknologi baru selalu datang sehingga Anda harus siap untuk mengambilnya dan menjadi mahir dengan cepat.
Chris
1
@ Chris: Itulah sebabnya rekomendasi saya adalah untuk mempelajari sesuatu yang memfasilitasi pembelajaran lebih lanjut, daripada sesuatu yang populer sekarang. Saya akan merekomendasikan C ++ atau Python daripada Java (jelas karena berbagai alasan).
David Thornley
Bukan bahasa itu yang penting. Ini konsep abstrak. Dapatkan konsep yang benar, sehingga siswa dapat dengan mudah mempelajari apa pun di kemudian hari.
J-16 SDiZ
1
Saya dalam situasi yang sama (menakutkan): kembali ke sekolah untuk CS setelah 20 tahun jauh dari sekolah. Sekolah saya juga memiliki trek split Java / C ++. Setelah membaca semuanya di sini, dan bahkan memberi +1 ke jawaban teratas, saya masih akan pergi dengan Java, dan inilah mengapa, kalau-kalau itu membantu Anda: Saya datang dari pengembangan web (Javascript, PHP, Python) , jadi dukungan perpustakaan Java adalah nilai tambah. Dengan asumsi saya juga meluangkan waktu untuk benar-benar menangkap prinsip-prinsip OOP, saya tidak berpikir pindah ke C ++ (jika perlu) akan sulit. Java adalah jalan tengah antara skrip dan kompilasi.
be hollenbeck
2
Saya pikir saya tidak setuju dengan setiap jawaban. Itu tidak masalah . Anda akan mempelajari konsep yang sama dalam kedua bahasa, dan Anda akan belajar bahasa lain yang tidak Anda pilih dan juga orang lain melalui studi dan karier Anda.
Matsemann

Jawaban:

51

Saya pribadi akan menggunakan C ++ karena ini akan memberi Anda wawasan tentang bagaimana bagian-bagian Java bekerja di bawah tenda (Pointer misalnya). Pindah ke Java dari C ++ cukup sepele, sedangkan bergerak sebaliknya mungkin lebih sulit.

Hal yang benar-benar sulit tentang ekosistem Jawa adalah banyaknya kerangka kerja, perpustakaan, dan lain-lain - semuanya tidak mungkin mencakup semua itu di Universitas.

Pada akhir hari itu tidak akan peduli bahwa banyak bahasa apa yang Anda pilih, selama Anda mempelajari prinsip-prinsip.

JUG saya akan membunuh saya karena mendukung C ++ ;-)

Martijn Verburg
sumber
1
+1 untuk poin luar biasa tentang ukuran sistem eco Java dan penjelasan transisi.
Jas
1
Masalah dengan mempelajari eko-sistem besar di universitas adalah bahwa itu tidak akan berguna sepanjang karier profesional Anda. Anda lebih baik mempelajari lebih sedikit perpustakaan dan mempelajari konsep atau membiasakan diri dengan fitur bahasa aktual.
David Thornley
2
Satu lompatan lebih lanjut untuk C ++ adalah bahwa Anda kemudian dapat melakukan C ++ yang dikelola pada .NET Framework, memberi Anda petunjuk untuk mempelajari C #, F #, dan bahasa lain apa pun pada runtime itu. Java juga memiliki keunggulan dalam JVM, dan bahasa seperti Scala, tetapi tidak ada JVM C ++ yang saya tahu.
CodexArcanum
Sebagai seseorang yang suka berpikir dia cukup baik dalam C ++ (dan Java), saya tidak berpikir kursus pemrograman pengantar modern harus dalam C ++. Itu terlalu sulit. Jika universitas tidak mengajarkan C ++ sama sekali, tetaplah bergerak, tentu saja, tetapi untuk perkenalan saya akan pergi dengan sesuatu yang lebih sederhana dan lebih cantik seperti Jawa. Mungkin jika saya tidak berpikir mereka semua jahat, saya bahkan mungkin merekomendasikan bahasa yang diketik secara dinamis.
Dukeling
Kembali di beberapa hari kami sebelum Jawa, kami tidak memiliki pilihan ini dan kami semua belajar C ++, jadi saya tidak melihat masalah dengan orang yang masih belajar C ++ terlebih dahulu. Saya kira intro di Jawa lebih baik daripada intro di Turbo Pascal.
Awal
18

Saya harus tidak setuju dengan kebanyakan orang yang menganjurkan Jawa di sini. Belajar C ++, bahkan jika Anda belum mempelajari arsitektur komputer dan mikroprosesor, memberi Anda begitu banyak wawasan berharga tentang cara program komputer bekerja dan beroperasi.

Nota bene, saya TIDAK menganjurkan Anda tidak harus belajar Java (lebih baik lagi, C #) karena ini adalah modern, pengembangan aplikasi cepat dan kerangka kerja besar telah dibangun di sekitar mereka memberi Anda akses ke banyak fungsi "gratis", seperti akses file yang diabstraksikan dan yang serupa, namun insinyur perangkat lunak sejati harus tahu setidaknya beberapa C ++, C atau setidaknya assembler, karena itulah yang memisahkan Anda dari jenis script-kiddie.

Setelah Anda cukup mahir dengan C ++, percaya diri dengan manajemen memori dan STL, mengambil Java / C # akan sangat mudah.

Jas
sumber
Setuju, saya yakin bahwa mempelajari Java jika Anda sudah mahir dengan C ++ akan jauh lebih mudah daripada belajar C ++ jika Anda sudah mahir dengan Java.
Carson63000
Masalah dengan menjadi "cukup mahir dengan C ++" adalah bahwa hal itu akan memakan waktu bertahun-tahun dan Anda hanya akan belajar sebagian kecil dari OOP.
Henry
Java bukan bahasa pengembangan aplikasi yang cepat. Levelnya mungkin sedikit lebih tinggi daripada C ++, tetapi tidak mendekati level abstraksi Python, Ruby, Perl, atau Visual Basic.
Evan Kroske
@ Evan - Ya, Java adalah bahasa pengembangan "cepat" jika tidak ada yang lain untuk pustaka yang sangat luas (Biasanya dikatakan bahwa pengembang Java mana pun memiliki dokumen Java API yang terbuka saat sedang bekerja) serta tidak harus melakukan manajemen memori manual. Dan orang yang mendesain Java, mendesainnya karena dia tidak dapat menggunakan C ++. Ditambah banyaknya aplikasi Java yang digunakan saat ini (entry barrier yang lebih rendah) adalah argumen lain untuk "kecepatannya".
Jas
9

Sekolah dan cendekiawan yang mengadvokasi Jawa sebagai pilihan pertama harus diperiksa kepala mereka (atau hanya mendapatkan pekerjaan nyata di luar sana). Saya mengatakan ini sebagai orang yang telah melakukan pengembangan aplikasi dan sistem di Jawa selama 12 tahun terakhir. Jawa adalah bahasa yang mengerikan untuk mengajar.

Alasannya adalah sebagai berikut: kecuali yang berbakat, sebagian besar siswa dapat (dan kemungkinan besar tidak akan pernah) memahami orientasi objek tanpa memahami pemrograman modular. Dan mereka tidak dapat memahami pemrograman modular tanpa terlebih dahulu memahami pemrograman terstruktur dalam bahasa prosedural. Polos dan sederhana. Bukti dari ini (antara lain) adalah bahwa meskipun kita telah mengenal OO selama 3-4 dekade sekarang, orang-orang masih menulis hyper-spaghetti dalam praktiknya.

Selain itu, seseorang yang hanya mengandalkan bahasa berbasis gc (baik itu Java atau .NET) tidak pernah bisa benar-benar dekat dengan perangkat keras. Kecuali jika seluruh ambisi Anda adalah membuat halaman web yang dinamis, coba tebak? Anda harus merasa nyaman dengan dekat dengan bahasa.

Anda pergi ke sekolah CS untuk menjadi ilmuwan dan programmer komputer yang berpengetahuan luas (mudah-mudahan dengan beberapa jam kredit praktik pemrograman langsung dalam banyak bahasa pemrograman). Jika Anda semua yang Anda kenal adalah Java (atau .NET atau C atau Python apa pun) maka Anda adalah "programmer Java" (bukan programmer yang dapat bekerja di Jawa, tetapi "programmer Java"). Dan itu sama masuk akal dengan mengatakan bahwa Anda adalah "tukang kayu palu" atau "mekanik driver sekrup Phillip", bukan.

Sekolah yang bagus akan memaparkan Anda pada C (atau bahasa prosedural lainnya seperti Pascal atau Ada), kemudian C ++ dan sebuah majelis, membuat Anda belajar Java sendiri saat Anda melanjutkan kursus batu penjuru proyek pada tahun junior / senior Anda. Selain itu, harus memberi Anda paparan bahasa fungsional sehingga Anda memahami konsep melewati blok komputasi sebagai argumen, perhitungan efek samping bebas, transparansi lokasi dan sejenisnya (yang memiliki aplikasi praktis nyata, bahkan di web.)

Anda perlu tahu apa itu segfault. Anda perlu tahu apa paging, memori virtual dan semua omong kosong itu artinya. Anda perlu tahu cara menguraikan masalah dalam modul (baik itu berbasis prosedural dan OO). Anda perlu tahu bagaimana sistem OO benar-benar diimplementasikan di bawah tenda (sehingga Anda tahu biaya.) Anda perlu tahu di mana abstraksi OO rusak (dan mereka lakukan karena dunia dan masalah kompleks tidak selalu berorientasi objek.)

Anda perlu mengetahui semua hal itu sehingga Anda menjadi ilmuwan komputer yang berpengetahuan luas yang mampu bekerja baik pada perusahaan atau pada level yang sangat rendah dalam mengimplementasikan hal-hal tingkat sistem, baik untuk sektor komersial maupun sektor publik, baik skala besar maupun kecil. skala.

Para akademisi yang mendorong Jawa sebagai bahasa satu-satunya untuk memerintah mereka semua sama sekali tidak tahu apa yang sebenarnya dibutuhkan industri ini. Tidak mengerti Tidak mengerti yang tidak bisa dimaafkan. Itulah yang terjadi ketika mereka bekerja di menara gading melihat industri dari kejauhan.

Mereka telah mengubah departemen Ilmu Komputer menjadi sekolah kejuruan 4-tahun yang mahal yang menghasilkan kuda-kuda trik satu bahasa pemrograman. Dan itu bisa dimaafkan jika mereka setidaknya bisa mengajarkan siswa keterampilan bisnis / perusahaan / organisasi dasar (yaitu, meninggalkan fasad CS dan mengadopsi kurikulum MIS.) Tetapi mereka bahkan tidak melakukan itu, yang saya pikir itu sangat merugikan untuk industri, ekonomi dan pada akhirnya para siswa.

Saya sarankan Anda membaca karya Joel Spolsky di "Java Schools".

http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

Singkatnya, jika mereka tidak mengajari Anda bahasa pemrograman prosedural (baik itu bahasa industri seperti C atau Ada atau yang cukup baik untuk mengajar seperti Pascal), dan mereka memberi Anda jika C ++ (jika Anda beruntung) atau Java / C # (jika Anda beruntung), saya akan mencari sekolah lain. Polos dan sederhana, dari seorang lelaki yang telah menggunakan Java untuk hidup di dunia nyata selama beberapa waktu.

luis.espinal
sumber
Dari seseorang yang mengenal Java, C dan C ++ dengan cukup baik dan yang belum lulus terlalu lama, saya harus tidak setuju. C (atau C ++) VS Java - Java adalah cara yang 'lebih mudah'. Mungkin jika saya mulai dengan C ++ (yang saya pikir cukup mengagumkan (tapi tidak mudah) btw) (bukan (Delphi (eww) +) Java) sangat mungkin bahwa saya akan kehilangan motivasi, menyerah dan tidak menjadi programmer (meskipun mungkin kami hanya memiliki guru C ++ yang buruk). Tapi ya, belajar C ++ untuk memahami internal Jawa benar-benar tak ternilai. Dan saya kira sekitar 95% programmer hari ini "tidak pernah benar-benar dekat dengan perangkat keras".
Dukeling
" C (atau C ++) VS Java - Java adalah cara yang 'lebih mudah' " - yah, itu yang terkenal. Saya tidak yakin apa hubungannya dengan posting saya, meskipun (?????)
luis.espinal
Lebih mudah dipahami, lebih mudah untuk diajar, lebih mudah dipelajari, jadi saya tidak setuju bahwa "Jawa adalah bahasa yang mengerikan untuk mengajar" dan bahwa Anda harus belajar C terlebih dahulu (mungkin bahasa prosedural yang lebih mudah baik-baik saja). Saya juga mengatakan C atau C ++ baik untuk diketahui, tetapi tidak untuk memulainya, karena dalam hal ini Anda cenderung menakuti semua kecuali programmer yang paling hardcore, karena saya yakin hanya itu yang akan selamat dari pengenalan pemrograman melalui C ++. Bukannya saya keberatan dengan dunia programmer yang keras, tetapi orang lain mungkin. Ya, Anda yang mengatakan akan baik-bulat, tapi saya katakan memimpin dengan Java atau serupa.
Dukeling
Lebih mudah untuk memahami dan mengajar tidak harus diterjemahkan sebagai bahasa yang memadai untuk tujuan pedagogis. Setelah 12 tahun bekerja dengan Jawa, saya yakin akan hal ini. Bahasa pedagogis yang jauh lebih baik yang lebih mudah daripada C atau C ++ adalah Python, misalnya ... atau bahasa apa pun yang tidak memaksa setiap metode berada di kelas, yaitu, bahasa yang benar-benar multi-paradigma sebagai lawan dari Java di mana semuanya "seharusnya" merupakan objek, di mana tidak ada alternatif yang baik untuk melakukan pelingkupan di luar kelas dan paket, dan seterusnya dan seterusnya. Ini membatasi kemampuan untuk mengajar pemodelan yang tepat.
luis.espinal
Java, dengan memaksa Anda mempelajari pemrograman dalam mode benda yang berorientasi benda, sebagai objek, ia memberikan metafora pemodelan yang buruk untuk paradigma lain yang lebih cocok untuk pemodelan dunia nyata. Pengembang profesional dari parit dapat mengatasi keterbatasan itu. Mahasiswa tidak, dan memaafkan saya, tetapi sangat sedikit profesor perguruan tinggi yang memiliki pengalaman dari-parit untuk mengetahui perbedaannya. Saya akan memilih Python atau Ruby (atau sebenarnya Lisp atau BASIC) di atas Java jika C / C ++ terlalu hardcore.
luis.espinal
4

Saya pikir banyak tergantung pada kepribadian Anda. Setidaknya dari sudut pandang saya, Java dan C ++ memiliki orientasi yang sangat berbeda yang menarik bagi orang-orang yang secara substansial berbeda.

Ketika Anda turun ke sana, Java benar-benar sebagian besar perpustakaan kelas besar, dengan cukup bahasa untuk dapat instantiate objek dan memanggil metode dari perpustakaan itu. "Learning Java" terdiri, sebagian besar penghafalan (atau setidaknya menjadi sadar) apa yang ada di perpustakaan dan bagaimana itu diatur, sehingga Anda dapat menemukan hal-hal yang Anda inginkan ketika Anda menginginkannya.

C ++ menempatkan penekanan yang jauh lebih sedikit pada penyediaan kode pra-tertulis. Meskipun tidak termasuk perpustakaan (STL 1 ), perpustakaan itu kurang tentang kode yang disertakan daripada tentang gaya dan serangkaian prinsip. Sangat mungkin untuk menulis kode yang secara jelas dan mudah dikenali sebagai kode "STL", meskipun hanya sedikit atau bahkan tidak ada sama sekali kode yang sudah ditulis sebelumnya.

Ada juga perbedaan yang cukup besar dalam bagaimana bahasa digunakan. Java telah menempatkan penekanan besar pada menjaga bahasa sederhana. Ini membuatnya mudah untuk membangun alat yang memanipulasi kode Java dengan berbagai cara (misalnya, untuk refactoring). Ini juga berarti bahwa Anda cenderung memerlukan alat yang dapat melakukannya, karena refactoring sering melibatkan perubahan yang cukup besar pada sejumlah besar kode.

C ++ adalah jauh bahasa yang lebih kompleks, yang berarti (antara lain) bahwa alat bangunan untuk memanipulasi C ++ source code sangat lebih sulit daripada untuk Java. Keseimbangannya adalah bahwa itu jauh lebih tidak perlu - pekerjaan refactoring yang mungkin melibatkan ratusan perubahan pada puluhan file di Jawa mungkin dapat diselesaikan dengan (misalnya) mengubah parameter templat tunggal di C ++.

Jawa lebih menekankan pada mudah dipelajari. C ++ menempatkan lebih banyak penekanan pada mudah digunakan - tetapi (sayangnya) hanya jika Anda benar-benar tahu apa yang Anda lakukan.

Saya tidak akan membela satu atau yang lain. Pendapat saya tentang bahasa jauh kurang relevan daripada Anda memiliki beberapa gagasan tentang apa yang diharapkan dari masing-masing, dan melihat diri Anda dengan jujur ​​untuk mencari tahu mana yang mungkin lebih cocok untuk Anda.

1 Ya, saya tahu itu tidak terlalu akurat, tetapi saya mencoba untuk tidak mengubahnya menjadi buku ...

Jerry Coffin
sumber
3

Saya tidak percaya orang menganjurkan C ++ sebagai bahasa pertama! Anda akan menghabiskan sebagian besar waktu Anda menulis piring ketel dan mencoba untuk mengatasi keterbatasan dan kait ikan dalam bahasa daripada benar-benar belajar bagaimana memprogram.

Java adalah bahasa yang jauh lebih sederhana dan tidak akan menghalangi pembelajaran Anda.

Jika Anda harus mempelajari C ++, pelajari konsep-konsepnya dengan Java dan kemudian buka C ++, atau lebih baik lagi, OBJ-C jika Anda ingin menulis perangkat lunak Mac. Java dan OBJ-C tidak terlalu berbeda.

FYI Saya telah menghabiskan 10 tahun sebagai pengembang C ++ komersial.

Henry
sumber
Ini bukan bahasa pertama saya. Saya seorang programmer sekarang akan kembali ke sekolah untuk benar-benar mendapatkan gelar. Pengalaman saya dengan C ++ dan Java terbatas, tapi saya punya pengalaman dengan C dan Objective-C. Tetapi terima kasih telah meluangkan waktu untuk menjawab.
Philip Regan
3
Java akan menghalangi pembelajaran Anda. Ini akan mengajarkan Anda total non-kebenaran tentang konsep bahasa-independen.
DeadMG
2

Saya akan merekomendasikan C ++. Saya memiliki beberapa kelas di Jawa, dan beberapa di C ++ di perguruan tinggi, dan keterampilan khusus bahasa yang saya pelajari dari C ++ telah membantu saya lebih banyak ketika belajar bahasa tambahan nanti. Selain itu, meskipun saya melihat lebih banyak Java daripada lowongan pekerjaan C ++, kebanyakan mencari tumpukan Java penuh, seperti:

  • EJB 1.x / 2.0, JNDI, JMS, JTA / JTS, RMI, JDBC, Servlets, JSP, SAX / DOM, Layanan Web, SABUN, WSDL, UDDI, JAXB, JavaMail, WAP, WML, HTML
  • Tomcat, Apache Xalan, Apache Xerces, Jserv, JRun, JBuilder, TogetherJ, Web Logic 5.x / 6.x, Websphere 3.5 / 4

Dan kemungkinan kurikulum berbasis Java tidak akan mempersiapkan Anda jauh lebih baik daripada kurikulum berbasis C ++ terhadap daftar seperti itu.

Chris
sumber
1
Saya akan menambahkan bahwa (setidaknya di daerah saya) pekerjaan C ++ juga membayar sedikit lebih baik daripada pekerjaan Java (objektif) dan umumnya lebih menarik (subjektif).
Cercerilla
2

Ini sulit karena Java tidak dapat disangkal lebih mudah untuk dipelajari. Anda akan melakukan lebih cepat dengan Java.

C ++ adalah bahasa yang jauh lebih sulit untuk digunakan. Pointer dan manajemen memori sulit secara konseptual dan praktis untuk dikerjakan. C ++ tidak menawarkan Anda jaring pengaman.

Dalam jangka panjang akan sangat berguna untuk memahami semua hal yang diajarkan C ++ kepada Anda. Juga transisi dari C ++ ke Java jauh lebih mudah daripada arah lainnya.

Tapi saya bertanya-tanya apakah ketika memulai dan selama banyak proyek gelar overhead tambahan dan debugging yang harus Anda lakukan untuk mendapatkan sesuatu yang bekerja di C ++ benar-benar akan membuat proyek Anda lebih sulit, tenggat waktu Anda lebih sulit untuk dipenuhi dan hidup Anda jauh lebih membuat frustrasi . Untuk mencapai hal yang sama di C ++ dan Java saya akan mengatakan bahwa dalam hampir setiap kasus Anda akan menyelesaikan pekerjaan lebih cepat di Jawa dan mengalami lebih sedikit masalah yang mengganggu. Itu bisa menjadi masalah yang sangat besar ketika Anda berada di akhir semester dan memiliki lima program yang membutuhkan proyek akhir pada hari yang sama.

Sisi lain dari itu adalah bahwa jika percobaan tersebut tidak menyebabkan Anda menyerah, mereka akan membuat Anda menjadi programmer yang lebih baik jika Anda telah menguasai C ++. Dan jika karir Anda adalah dengan C # atau Java atau python dan Anda tidak perlu menyentuh pointer lain dalam hidup Anda, Anda akan menghargainya lebih banyak lagi ...

glenatron
sumber
2

C ++ lebih fleksibel dan menawarkan pemahaman yang lebih dalam. Tidak diragukan lagi, Anda akan mendapatkan lebih banyak dari C ++ daripada dari Jawa. C ++ juga lebih sulit, karena lebih kompleks.

Yang mengatakan, pekerjaan C ++ hampir tidak biasa seperti pekerjaan Java.

Java dan turunannya, C #, adalah solusi standar untuk ruang pengkodean perusahaan-perusahaan besar. Saya sangat merekomendasikan belajar salah satu dari keduanya di tahun kedua Anda dan menjadi sangat nyaman dengan yang itu pada saat Anda menyelesaikan gelar Anda. Ini akan membuat Anda mendapatkan pekerjaan lebih mudah. Itu tidak berarti saya pikir pekerjaan itu rata-rata memiliki minat intelektual yang signifikan. Saya membuat melewati pekerjaan perangkat lunak craigslist di Pegunungan Rocky baru-baru ini dan sebagian besar pekerjaan adalah C # / Java dan terkait dengan apa yang disebut perangkat lunak " CRUD "; IMO itu sangat membosankan.

Paul Nathan
sumber
1

Setelah mengajar C ++ dan Java di tingkat perguruan tinggi, saya akan sangat merekomendasikan Java .

Java membantu dalam proses pembelajaran, dan mendorong perilaku pemrograman yang baik. Pustaka bawaan untuk Java bermanfaat dan mudah tersedia di setiap pemasangan. Mampu membuat aplikasi GUI dalam satu kalimat, menggunakan pustaka bawaan yang tersedia di setiap instalasi Java dan yang cocok dengan semua tutorial yang ditemukan siswa dalam pencarian Google, sangat penting untuk membantu siswa melampaui bahasa dan mulai memahami konsep pemrograman .

IDE untuk Java menyediakan dukungan untuk siswa yang baru mulai dan yang melanjutkan. Membawa alat refactoring yang kuat ke dalam percakapan lebih awal (saat membahas OOP, misalnya) akan membantu siswa belajar menulis kode yang bisa dipelihara.

Sementara C ++ adalah bahasa yang berguna untuk diketahui, konsep tambahan yang dipelajari dalam C ++ tidak benar-benar sepadan dengan upaya ekstra dari bahasa secara keseluruhan. Ada satu set ekstra besar "gotcha" yang harus diajarkan di sekitar yang dapat diperkenalkan di lain waktu (masalah manajemen memori dan buffer overflows untuk menyebutkan pasangan). Meminta siswa untuk memahami ini sebelum beralih ke konsep seperti kompleksitas algoritme dan pewarisan memperlambat Anda, cara yang mengharuskan pengemudi untuk memahami tekanan ban sebelum mengemudi akan memperlambat Driver's Ed. Tentu, Anda harus mengetahuinya. Tetapi Anda hanya perlu mengetahuinya sebagai sesuatu yang Anda akan keliru suatu hari nanti, bukan sebagai blok bangunan dari konsep yang lebih besar.

Alex Feinman
sumber
2
Jika Anda mengalami masalah serius dengan buffer overflows dan manajemen memori, Anda salah mengajari C ++. Yang mana dari kontainer standar yang bisa meluap seperti buffer?
David Thornley
Array? Saya mungkin, pada kenyataannya, telah mengajarkan C ++ salah; ini lebih dari satu dekade yang lalu.
Alex Feinman
0

Saya pikir pertanyaan yang lebih besar untuk ditanyakan pada diri sendiri adalah apakah Anda ingin menjadi programmer yang baik atau fokus pada ilmu komputer. Jika CS adalah tujuan Anda dan Anda ingin berada di rute PHD maka mungkin Jawa adalah jalan yang harus ditempuh. Java menyediakan kelas koleksi Java, yang memiliki banyak struktur dan algoritma data premade. Keuntungannya ada dua: Pertama, Anda harus bermain-main dengan struktur data dan algoritma untuk melihat apa yang mereka lakukan sebelum mengkhawatirkan bagaimana mereka dibangun. Kedua, ini memberikan lebih banyak kesempatan kepada profesor untuk mengajarkan prinsip-prinsip CS yang menggunakan struktur data tanpa harus khawatir tentang seluk beluk. Kemudian mereka dapat kembali dan meminta siswa mereka membuat struktur dari awal.

C ++ di sisi lain adalah bahasa level yang lebih rendah. Ini memaksa Anda untuk mempertimbangkan pointer dan pengumpulan sampah. Kurva belajar sedikit lebih curam tetapi pada akhirnya ketika Anda menemukan diri Anda di jalan pemrograman dengan kerangka kerja eksternal Anda akan merasa kurang seperti Anda hanya mengandalkan sihir tersembunyi. Selain itu, banyak perusahaan besar masih menggunakan C ++. Lebih sulit untuk beralih dari Java ke C ++ daripada C ++ ke Java.

Kavet Kerek
sumber
Saat ini, tujuan saya adalah memasuki pengembangan perangkat lunak, jadi jadilah programmer yang lebih baik. Saya memiliki sedikit minat dalam pengejaran akademik yang luas pada saat ini.
Philip Regan