Adakah kemungkinan bahwa seseorang yang telah mempelajari semua aspek kunci C ++ dan mengetahui dasar-dasar bahasa dengan sangat baik, akan mempelajari bahasa lain (seperti, Python, Perl, Java) lebih cepat dan lebih mudah?
Adakah kemungkinan bahwa seseorang yang telah mempelajari semua aspek kunci C ++ dan mengetahui dasar-dasar bahasa dengan sangat baik, akan mempelajari bahasa lain (seperti, Python, Perl, Java) lebih cepat dan lebih mudah?
Jawaban:
Pengetahuan yang mendalam tentang bahasa pemrograman apa pun kemungkinan akan membantu Anda lebih cepat mempelajari bahasa lain. Itu sebagian karena pemrograman adalah cara berpikir lebih daripada belajar sintaksis. Sebagian besar praktik pemrograman akan berlaku untuk sebagian besar bahasa pemrograman lainnya. Itu sebabnya orang mengatakan bahwa Anda selalu belajar bahasa pemrograman kedua lebih cepat daripada yang pertama.
C ++ adalah bahasa yang memungkinkan untuk 'kontrol' yang jauh lebih besar daripada bahasa lain. Ini bisa baik dan buruk. Misalnya pistol asli lebih baik daripada pistol udara ketika Anda pergi di hutan (karena Anda benar-benar dapat menembak sesuatu dengan itu), tetapi juga lebih berbahaya bagi Anda dan orang-orang di sekitar Anda. C ++ memiliki konsep seperti manajemen memori, yang tidak perlu Anda khawatirkan di sebagian besar bahasa lain. Namun, memiliki pemahaman yang kuat tentang konsep-konsep ini jauh dari sia-sia bahkan ketika bekerja dengan bahasa manajemen memori otomatis. Anda juga dapat melakukan operasi bitwise dan jauh lebih rendah ke 'logam' dengan bahasa seperti C ++. Bahkan pemahaman dasar dalam bidang-bidang itu dapat banyak membantu Anda sebagai programmer dalam bahasa apa pun.
Saya pribadi belajar Java terlebih dahulu selama hampir 3 tahun sebelum belajar C ++, dan saya harus mengatakan bahwa saya agak menyesalinya (tentu saja ...). Ini membuat belajar C ++ (saya masih belajar - jauh dari pengetahuan 'mendalam': D) tidak semudah yang saya inginkan. Jika saya melakukannya sebaliknya saya akan mengatakan bahwa itu akan jauh lebih mudah bagi saya. Terutama ketika Anda tahu MENGAPA sesuatu dilakukan dengan cara tertentu, dan tidak hanya yakin pada keajaiban-otomatis bahasa. Jika saya diizinkan untuk memberikan pendapat, saya akan menyarankan: C (untuk paradigma pemrograman dasar dan universal) -> C ++ (untuk pemahaman dasar tentang OOP bersama dengan manajemen memori) -> Kemudian Anda dapat masuk ke bahasa OOP 'nyata' apa pun dengan dasar yang baik atau Anda dapat melanjutkan dengan topik yang lebih maju di C ++, semua tergantung pada apa yang Anda
OR
danAND
Sayangnya tidak ada. Ini sebenarnya masalah besar ketika mengajar C ++ di kelas pemrograman, terutama kelas tingkat pemula: Anda bisa belajar prinsip-prinsip pemrograman, atau Anda bisa belajar bahasa C ++, tetapi bahasa C ++ memiliki terlalu banyak jebakan dan gotcha bodoh untuk belajar keduanya secara efektif di dalam ruang lingkup kelas satu semester!
Ada banyak hal yang dicoba di C ++ dan akhirnya menjadi idiomatis dalam bahasa melalui inersia belaka, yang cukup banyak setiap bahasa lain sejak telah melihat dan menolak karena ternyata menjadi kesalahan besar. Yang utama adalah Template C ++ dan model objek C ++ (objek sebagai tipe nilai tidak pernah merupakan hal yang baik, karena ia merusak substitusi Liskov dan thous OOP itu sendiri.)
Jadi, jika Anda mendapatkan pengetahuan yang mendalam tentang C ++ terlebih dahulu, dan kemudian Anda ingin mempelajari bahasa pemrograman lain, akan ada banyak hal yang berbahaya dan kontraproduktif yang harus Anda hapus untuk menjadi efektif di bahasa pemrograman lain.
Tidak. Mengetahui C ++ dengan baik akan membuatnya lebih mudah untuk belajar bahasa lain seperti C ++. Tapi itu akan membosankan. Mengapa Anda ingin tahu dua bahasa yang sama? Itu tidak membelikanmu apa-apa. (Perhatikan bahwa ini tidak spesifik untuk C ++. Ini berlaku untuk bahasa apa pun. Bandingkan dengan bahasa alami: belajar bahasa Italia tidak akan membuatnya lebih mudah untuk belajar bahasa lain. Ini akan membuatnya lebih mudah untuk belajar bahasa Spanyol, Prancis atau Portugis, dan belajar tiga dari mereka akan membuatnya lebih mudah untuk belajar yang keempat, tetapi bahkan mempelajari semua bahasa Roman tidak akan membantu Anda sedikitpun belajar Bahasa Finlandia, Cina, Hindi, Ibrani, Arab, Pashtu, Yunani, dll.)
Bahasa pemrograman menerapkan paradigma. Peter van Roy telah mengumpulkan poster 34 paradigma pemrograman utama .
Paradigma, pada gilirannya, terdiri dari konsep. Poster itu mencantumkan sekitar 18 konsep.
Semua paradigma (atau setidaknya yang ada di poster) disusun dari konsep-konsep itu. Semua bahasa menerapkan satu atau lebih paradigma yang terdiri dari konsep-konsep itu. Jadi, jika Anda mempelajari konsep-konsep itu, Anda akan (dalam beberapa hal) mempelajari setiap bahasa pemrograman sekaligus.
Tentu saja masih banyak quirks khusus bahasa (sintaks di antara mereka). Juga, poster itu benar-benar mengabaikan pengetikan, dan tentu saja ada perbedaan yang signifikan antara Sistem F <: ω sistem tipe-gaya, sistem tipe-gaya Scala, atau sistem tipe bebek-dinamis, apalagi sistem tipe dependen à la Idris, Agda, Coq, Guru, atau ATS.
Saya akan mengatakan bahwa mengetahui setiap bahasa pemrograman secara mendalam akan membantu dengan belajar orang lain, setidaknya bahasa lain dalam keluarga yang sama. Misalnya, pengetahuan C ++ tidak akan banyak membantu dengan LISP atau Haskell, tetapi untuk bahasa prosedural berorientasi objek, itu akan. Pendekatan saya adalah mencoba dan belajar bahasa dari masing-masing keluarga yang berbeda (prosedural, fungsional, berorientasi objek, dll.) Dari bahasa dengan baik, maka pengetahuan itu dapat terbawa ke bahasa lain dalam keluarga itu. Di sisi lain, pengetahuan yang mendalam tentang APL tidak akan membantu dengan hal lain ...
Saya akan mengambil interpretasi yang berbeda di sini.
C ++ adalah bahasa yang baik untuk belajar tentang memori dan struktur data, karena itu memaksa Anda untuk berpikir dengan hati-hati tentang konsep-konsep seperti kepemilikan objek dan umur. Dan belajar tentang memori dan struktur data adalah salah satu bagian penting dari kurikulum rekayasa perangkat lunak.
Tetapi Anda harus belajar tentang struktur data. Jika Anda hanya "belajar C ++," Anda tidak akan benar-benar mendapatkan banyak, dan itu mungkin memperlambat proses belajar bahasa lain dalam jangka pendek.
Ketika saya masih di perguruan tinggi, Struktur Data adalah kursus tingkat mahasiswa baru yang diperlukan, diambil setelah CS1 (yang setidaknya setengah dari kelas telah ditempatkan). Itu sulit. Format kursus pada dasarnya adalah "Berikut adalah struktur data yang belum pernah Anda lihat sebelumnya [misalnya tumpukan kiri ]. Terapkan dalam C ++ dalam seminggu dan buat output Anda sesuai dengan hasil yang kami harapkan dengan tepat, byte-untuk-byte, jadi kami dapat menilai secara otomatis. " Lalu, minggu depan Anda akan mendapatkan struktur data baru dan tugas baru. Saya mungkin belajar lebih banyak dalam satu kursus itu daripada gabungan semua kursus saya yang lain.
Itulah jenis pembelajaran yang perlu Anda lakukan agar C ++ berharga.
Setiap bahasa yang Anda pelajari membuat bahasa berikutnya lebih mudah dipelajari, terutama dalam paradigma yang sama. Mereka saling meminjam satu sama lain, dan setelah beberapa saat Anda sampai pada titik di mana bahasa baru tampak seperti sekumpulan fitur dari bahasa lain, dengan beberapa tikungan unik.
Saya tidak berpikir C ++ lebih baik atau lebih buruk daripada bahasa lain dalam hal itu. Ini adalah salah satu yang lebih verbose bahasa yang saya tahu, dan membuat beberapa hal sulit yang mudah dalam kebanyakan bahasa lain, tapi itu tidak perlu diterjemahkan ke dalam membuat bahasa berikutnya lebih mudah untuk belajar . Namun, ini biasanya membuat bahasa berikutnya terasa lebih mudah digunakan . Ada perbedaan.
No Sebuah pengetahuan yang mendalam tentang C , atau subset dari C ++ yang "pada dasarnya C", akan membantu ketika belajar bahasa lain, setidaknya ketika membayangkan apa implementasi mereka harus lakukan. Pengetahuan mendalam tentang C ++ , di sisi lain, sebagian besar akan menjadi informasi yang membingungkan atau tidak relevan ketika belajar bahasa lain; jika Anda mempelajari orientasi objek C ++ lebih dari level permukaan, misalnya, saat Anda beralih ke Perl / Python / Ruby Anda akan menghabiskan lebih banyak waktu untuk tidak mempelajari apa yang Anda ketahui daripada menggunakannya, karena objek dalam bahasa tersebut diimplementasikan dalam cara yang sama sekali berbedadaripada di C ++. Hal yang sama berlaku pada tingkat yang lebih besar atau lebih kecil untuk sebagian besar bahasa lain, dan untuk fitur bahasa lainnya (misalnya, template C ++ dan polimorfisme Haskell pada dasarnya adalah fitur yang sama, dengan, sekali lagi, implementasi yang sama sekali berbeda). Jadi pengetahuan yang mendalam tentang C ++ sebagian besar akan menjadi spesifik C ++.