Apakah terlalu dini untuk belajar bahasa baru? [Tutup]

11

Konteks pribadi: Saya telah belajar C ++ secara resmi 6 bulan terakhir di universitas. Sebelum ini saya mencoba-coba JavaScript selama setahun. Sekarang saya sedang mempertimbangkan belajar Python selama satu bulan libur sekolah.

Dengan memecah fokus saya di awal proses pembelajaran, apakah saya menurunkan efisiensi pembelajaran saya? Haruskah saya menghabiskan bulan itu melanjutkan C ++? Atau tidak pernah terlalu dini untuk belajar bahasa baru?

Antisipasi
sumber
6
Jika Anda memahami pemrograman secara umum maka mempelajari bahasa baru akan membantu Anda menjadi programmer yang lebih baik. Jika Anda baru mengenal pemrograman dan belum memahami hal-hal seperti flow control, tipe data, fungsi / metode dll, maka saya akan menunggu untuk belajar bahasa lain.
The Muffin Man
Saya cukup nyaman di C ++ dengan semua yang Anda sebutkan.
Antisipasi
1
Saya akan menempatkan pertanyaan Anda ke dalam perspektif. Dalam 6 bulan pertama berada di sebuah universitas saya sudah diperkenalkan ke 5 bahasa pemrograman yang berbeda. Assembly (saya lupa platform Moto persisnya), C, C ++, Visual Basic 6, dan Java. Saya kemudian melanjutkan untuk belajar Basic, C #, Visual Basic .NET, x86 Assembly. Setelah lulus, saya telah belajar setidaknya 5 bahasa pemrograman tambahan dalam 2 tahun pertama.
Ramhound
2
Jika Anda dapat melakukan banyak tugas dan memprioritaskan dan memiliki pendekatan yang disiplin untuk belajar, maka silakan lanjutkan dan pelajari bahasa kedua. Biasanya yang terbaik untuk fokus dan menguasai bahasa pertama. Namun, penting juga untuk mempelajari berbagai paradigma pemrograman. Baca bagian pemrograman tautan berikut untuk mengetahui apa yang saya maksud: Apa yang Harus Diketahui Setiap Ilmu Komputer dan Matriks Kompetensi Programmer
Anthony

Jawaban:

8

Pengalaman saya dengan Python terbatas pada beberapa kode permainan hanya sedikit lebih kompleks daripada hello world, jadi ini tidak akan menjadi jawaban yang sangat mendalam untuk python secara khusus, tetapi saya dapat memberitahu Anda ini:

Perbedaan antara bahasa dalam rincian seperti sintaks dan spesifik bahasa tertentu akan berbeda (seperti cara kesalahan yang berbeda ditangani, kemampuan I / O dan bagaimana kompiler mengubah input Anda menjadi sesuatu yang dapat dieksekusi), tetapi C ++ dan Python keduanya menawarkan hal yang sama paradigma, sehingga pemecahan masalah dapat dilakukan dengan cara yang hampir sama dengan kedua bahasa. Baik C ++ dan Python keduanya Imperatif dan Berorientasi Objek, jadi Anda mungkin akan mengambil python dengan cukup cepat jika Anda merasa nyaman dengan C ++ setelah Anda menguasai sintaks baru menggunakan teknik pemecahan masalah yang Anda ambil dengan C ++. Jika Anda mau, Anda bisa menggunakan Python untuk pemrograman fungsional juga, tapi saya belum pernah menyentuh bagian itu, jadi saya tidak bisa memberi tahu Anda banyak tentang hal itu.

Apakah ini terlalu dini? Saya tidak bisa benar-benar menceritakan kisah Anda dalam jawaban ya atau tidak. Apakah Anda sudah cukup percaya diri untuk menulis aplikasi lengkap (GUI) dengan C ++? (Yaitu menggunakan perpustakaan, fitur bahasa yang lebih kompleks seperti generik dan / atau templating dll.) Saya pikir belajar paradigma bahasa baru jauh lebih sulit daripada belajar bahasa baru dalam keluarga paradigma yang sama. Ketika Anda melangkah keluar ke wilayah paradigma baru, Anda harus menghabiskan lebih banyak waktu untuk mendapatkan ide bagus tentang bagaimana menyelesaikan masalah dengan paradigma itu. Antara bahasa OO ada perbedaan tentang bagaimana warisan ditangani, dan bagaimana data dilewatkan dalam memori ketika Anda melewatkan parameter / argumen ke fungsi yang mempengaruhi kinerja. Tetapi untuk memulai ini biasanya menjadi perhatian kecil pada awalnya.

Dugaan saya adalah bahwa jika Anda cukup percaya diri dengan C ++ untuk melakukan sesuatu yang lebih dari halo dunia dengan cara yang mewah, Anda boleh meluncurkan. Mempelajari banyak bahasa secara dangkal akan membantu Anda memahami sampel kode terlepas dari bahasa yang digunakan, tetapi membuat kode Anda sendiri memerlukan sedikit lebih banyak pemahaman tentang bagaimana bahasa bekerja dan bagaimana mereka berbeda satu sama lain.

PS Ketika saya ingin belajar bagaimana menggunakan bahasa baru secara dangkal, saya biasanya akan mencoba hal-hal berikut untuk merasakan sintaks bahasa dan cara kerja yang dangkal:

  • Halo dunia (Teks di layar)
  • Halo dunia ditulis ke file (mengajarkan Anda dasar-dasar pada file I / O untuk bahasa itu, dan sangat sering jenis I / O lainnya juga)
  • Melakukan beberapa perhitungan standar dengan basis yang berbeda (10, hex, oktal), bilangan bulat dan mengambang. (Mengajari Anda tentang pemotongan dan notasi angka)
  • Cobalah menggunakan beberapa pustaka grafis untuk menampilkan hello world dalam dialog mewah. (mengajari Anda cara menggunakan perpustakaan dan kode eksternal)
Onno
sumber
Kata penutup dalam paragraf terakhir sangat bagus. Meskipun saya tidak cukup untuk aplikasi penuh di C ++ saya menghargai argumen Anda tentang memperluas ruang lingkup apa yang saya kenal, bahkan jika itu hanya dangkal.
Antisipasi
6

Ya tentu saja.

Tidak ada keraguan tentang itu, kadang-kadang terlalu dini untuk belajar bahasa pemrograman baru.

Kasus paling sederhana adalah jika bahasa el-stinko keluar dan sebelum ada yang menunjukkan ketidakcocokan, dengan mempelajarinya Anda merusak otak Anda. Pasangan yang datang ke pikiran termasuk BASIC, FORTH, dan APL.

Untuk kasus yang lebih rumit, salah satu ilmuwan komputer yang hebat telah menggambarkan masalah ini yang secara singkat dinyatakan adalah bahwa praktik menjadi permanen, dan ada banyak disiplin ilmu yang harus dipelajari sebelum mempelajari bahasa komputer sehingga bahasa tersebut tidak mengubah pemahaman yang lebih mendasar. . Dalam kata-katanya:

Alat yang kita gunakan memiliki pengaruh mendalam dan licik pada kebiasaan berpikir kita, dan oleh karena itu pada kemampuan berpikir kita.

Lawan baru terjun ke pemrograman bernama Edsger Dijkstra dan dia memiliki karir yang sangat terkenal. Dia dianugerahi ACM Turing Award dengan kutipan berikut:

Untuk kontribusi mendasar pada pemrograman sebagai tantangan intelektual yang tinggi; untuk desakan yang fasih dan peragaan praktis bahwa program harus disusun dengan benar, tidak hanya diperhitungkan dengan benar; untuk menerangi persepsi masalah di dasar-dasar desain program.

Makalah di mana ia meluncurkan pembelajaran prematur bahasa pemrograman adalah:

"Tentang Kekejaman yang Benar-Benar Mengajar Ilmu Komputer" http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF

Juga, tolong jangan nyalakan saya, saya hanya pembawa pesan.

Pengembang Don
sumber
"Saya mulai dengan BASIC dan telah rusak seumur hidup" - bukankah itu semacam membantah pendapat Anda? Jika Anda telah diperkenalkan ke bahasa pemrograman lain sejak awal, BASIC tidak akan membuat dampak yang kuat?
tdammers
Kurasa aku butuh emoticon. Jika itu membantu, saya telah menghapus kalimat itu.
PengembangDon
3

Apakah terlalu dini untuk belajar bahasa baru?

Saya akan mengatakan ya. Jika Anda masih menggunakan konsep bahwa komputer mungkin benar-benar melakukan apa yang Anda katakan, maka mempelajari bahasa kedua mungkin hanya akan membingungkan Anda.

Tetapi jika Anda melewati titik di mana Anda menyadari bahwa komputer melakukan persis apa yang Anda katakan, tidak peduli seberapa bodohnya itu, maka kemungkinan besar Anda memiliki pemahaman yang cukup masuk akal tentang bahasa pertama Anda yang melihat detik (dan ketiga) !) Bahasa tidak merusak fokus Anda.

Joachim Sauer
sumber
2

Tidak bisakah kalian melakukan keduanya ?? Saya akan melakukan proyek dalam C ++ dan belajar bit Python (hanya karena sangat mengagumkan), Anda bisa menyelesaikan masalah di ProjectEuler.net menggunakan Python

Secara umum, saya pikir itu ide yang buruk untuk belajar bahasa, tinggalkan dan mulai belajar yang baru. Seseorang harus fleksibel bekerja dengan paradigma yang berbeda pada tahap awal. Tapi itulah yang saya pikirkan.

nischayn22
sumber
ProjectEuler.net terlihat luar biasa! Terima kasih untuk rekomendasinya.
Antisipasi
2

Bagi seorang programmer yang mempraktikkannya, saya dengan tegas mengatakan bahwa belajar bahasa baru hampir tidak pernah merupakan ide yang buruk. Untuk seorang mahasiswa, saya akan sedikit mengingatkan, tergantung pada kelas apa yang akan datang. Alasannya adalah, dalam ujian sekolah Anda sering harus membaca detail bahasa tanpa memanfaatkan lingkungan kompilasi / eksekusi yang akan dengan mudah menunjukkan kesalahan Anda.

Terutama ketika Anda hanya memiliki pengalaman beberapa bulan, sangat mudah untuk menggabungkan rincian dalam pikiran Anda. Jika Anda peduli dengan nilai Anda dan mengikuti kelas dengan ujian seperti itu, saya akan berhati-hati. Di dunia nyata, itu bukan masalah.

sunting : Saya awalnya mengatakan sintaksis, tetapi detail non-sintaksis sama pentingnya bagi para profesor, dan ada lebih banyak dari itu.

Karl Bielefeldt
sumber
Jika sebagai siswa Anda tidak dapat mengingat perbedaan antara sintaksis antar bahasa Anda memiliki masalah. Anda tidak akan selalu memiliki kompiler untuk memeriksa sintaks Anda, ada beberapa situasi yang sangat nyata di bidang ini, di mana Anda harus dapat mengingat sintaksis di tempat.
Ramhound
Saya tidak mengatakan itu tidak mungkin untuk diingat, hanya saja itu membuat lebih sulit bagi seorang pemula. Perbedaan sintaksis besar cukup mudah, tetapi profesor bisa pilih-pilih tentang rincian sepertiappend() vs. push_back()untuk suatu daftar, yang merupakan sesuatu yang bahkan harus diprogram oleh pemrogram berpengalaman jika mereka belum menggunakan fitur tertentu dalam bahasa tertentu untuk sementara waktu. Mampu mengingat sintaksis di tempat tidak diragukan lagi membantu, tetapi untuk sebagian besar pekerjaan itu tidak pernah diperlukan .
Karl Bielefeldt