Dalam bab satu dari "Programmer Pragmatis" tujuan pembelajaran pertama adalah:
Pelajari setidaknya satu bahasa baru setiap tahun. Bahasa yang berbeda menyelesaikan masalah yang sama dengan cara yang berbeda. Dengan mempelajari beberapa pendekatan yang berbeda, Anda dapat membantu memperluas pemikiran Anda dan menghindari gangguan dalam kebiasaan. [...]
Untuk mencapai ini selama karir, daftar bahasa cenderung menjadi sangat panjang (terutama jika Anda tidak ingin "maju" ke manajemen). Jelas pendidikan seorang programmer (atau bentuk apa pun) akan membantu Anda memulai dengan inti bahasa yang berguna secara komersial (daftar yang biasa dari posting pekerjaan: C, C ++, Ruby, Python, JavaScript, C #, Java, VB, .. .). Selain itu program pembelajaran formal atau informal kemungkinan telah mencakup pendekatan fungsional (melalui sesuatu seperti Haskell, LISP atau bahasa yang diturunkan ML)
Tetapi begitu suatu subset yang masuk akal dari daftar itu dipelajari - apa selanjutnya, dan mengapa ?
sumber
Jawaban:
Buat itu menarik dan habiskan setiap tahun menulis juru bahasa atau kompiler untuk bahasa pemrograman Anda sendiri yang mengisi ceruk yang belum pernah Anda gunakan untuk bahasa pemrograman. Setiap tahun, tulis kompiler / juru bahasa Anda berikutnya menggunakan bahasa yang Anda tulis tahun sebelumnya.
sumber
Anda harus memaksimalkan "relevansi marjinal", yaitu selalu menjelajah ke area baru yang belum Anda kuasai. Variasikan bahasa pemrograman dan konsepnya . Jika Anda tidak tahu bahasa berorientasi objek apa pun, coba Java dan beberapa kerangka kerja abstraksi tinggi seperti Hibernate. Kemudian tulis beberapa hal administrasi sistem dalam bahasa skrip seperti Python atau Perl. Kemudian mengambil beberapa keterampilan tingkat rendah dalam C atau C ++, menulis kode server multithreaded kinerja tinggi. Jika Anda tidak tahu pemrograman fungsional, cobalah Haskell dengan beberapa masalah teori grafik seperti memecahkan Peg Solitaire , dll. Sangat layak untuk melakukannya sehingga semua yang Anda pelajari memiliki nilai pasar langsung, sampai Anda mencapai masalah ilmiah atau keperluan khusus seperti sebagai keamanan objek-kemampuan ,Prolog atau VHDL .
Olah raga yang bagus! Ini akan mengajarkan Anda untuk berpikir secara lateral dan membayangkan masalah dalam istilah agnostik bahasa, alih-alih mengandalkan terlalu sedikit teknik spesifik platform. Misalnya, setelah Anda menguasai persamaan dan perbedaan dalam pengiriman metode virtual antara C ++ dan Python, Anda akan cukup banyak "mendapatkannya" secara instan untuk bahasa lain.
sumber
Bahasa yang tidak memengaruhi cara Anda berpikir tentang pemrograman, tidak perlu diketahui. - Alan Perlis
Karena beberapa jawaban lain telah menyentuh, jika Anda belajar satu bahasa baru per tahun, mengapa? adalah untuk memperluas kemampuan Anda sebagai seorang programmer. Bagaimana? adalah dengan mempelajari bahasa dengan paradigma yang berbeda dari bahasa yang sudah Anda kenal, dan mempelajari paradigma yang sudah Anda ketahui menentukan bahasa apa yang akan dipelajari selanjutnya.
Apa paradigma ini? Buku lanjutan Konsep, Teknik, dan Model Pemrograman Komputer memberikan gambaran yang sangat baik dengan peta grafis .
Jadi, jika Anda hanya tahu bahasa imperatif seperti C, maka mempelajari Skema / Lisp sangat berguna. Jika Anda sudah tahu bahasa imperatif dan fungsional, maka mempelajari Prolog akan bermanfaat, dll.
Buku terbaru yang mencoba mengajarkan berbagai bahasa dan paradigma adalah Seven Languages in Seven Weeks . Tentu saja, Anda tidak akan lancar dalam setiap bahasa setelah satu minggu belajar, tetapi hal itu tampaknya memberikan perspektif multi-paradigma yang dapat didekati dan berorientasi pada praktisi.
Ketika Anda melakukan grok paradigma lain, itu benar-benar momen Zen; beralih dari keharusan ke pemrograman fungsional membuat saya melihat dunia komputasi dalam cahaya yang sama sekali baru. Selamat belajar!
sumber
C - sebagai penting, "mendasari segalanya", bahasa pemrograman sistem
Lisp (Skema) - bahasa-bahasa yang aneh tapi sangat kuat yang menurut peretas hebat
Smalltalk - karena inilah yang dimaksudkan OO
Erlang (atau bahasa Aktor lainnya) untuk memahami Aktor
Haskell - untuk memahami Monads
Javascript - karena ini ada di mana-mana dan penting untuk membuat skrip browser
Salah satu dari Python / Ruby / Perl (tapi itu benar-benar tidak masalah yang mana) - jadi Anda tahu seperti apa bahasa scripting yang populer, modern, tingkat tinggi dengan dukungan perpustakaan yang baik rasanya
SQL - sehingga Anda dapat berbicara dengan basis data relasional
Prolog - karena Anda masih perlu meledakkan pikiran Anda
sumber
sumber
1) Prolog: Ini benar-benar berbeda dengan semua bahasa penting yang telah Anda gunakan sejauh ini, dan itu akan mengubah cara Anda berpikir tentang masalah
2) Lisp: tanpanya, Anda mungkin menggunakan Vi
3) Erlang: Sekali lagi, ini benar-benar berbeda, juga, tampaknya cukup modis.
4) Sesuatu dari Turing Tarpit (misalnya Brainfuck), dan mungkin menulis kompiler atau juru bahasa untuk itu: Saya tidak bisa memikirkan alasan untuk melakukan ini, tetapi rasanya ide yang bagus.
sumber
Selain yang Anda daftarkan,
Haskell, F #, Clojure, OCaml, Lua, Go, D, Erlang, Objective C.
sumber
Meskipun saya setuju bahwa belajar bahasa baru itu baik (dan bahkan sangat penting melalui karier yang panjang), saya pikir satu tahun terlalu banyak melewati lima-sepuluh tahun pertama. Yang saya lebih suka lihat adalah seseorang dengan tingkat pengalaman belajar hal-hal baru tentang bahasa yang sudah mereka ketahui. Pada titik tertentu Anda membutuhkan pengetahuan yang mendalam dan luas. Jadi, Anda dapat menulis konstruk If dalam 12 bahasa, wah. Saya lebih suka melihat seseorang yang benar-benar menggali dan menjadi ahli dalam setidaknya satu hal. Dan kemudian beberapa tahun berikutnya menjadi ahli dalam hal lain. Lebih dari 30 + tahun karir, saya ingin seseorang memiliki pengetahuan mendalam bukan hanya dasar-dasar dalam banyak hal.
sumber