Saya cukup mahir dengan Java, C / C ++, JavaScript / jQuery dan cukup bagus di Objective-C. Saya cukup produktif dengan bahasa dan kerangka kerja yang sesuai juga dan menghasilkan sistem tingkat perusahaan (dan juga skala kecil) dengan cukup mudah sambil menjaga kode 'bersih' dan dapat dipelihara (ya, saya dapat membaca kode saya sendiri setelah enam bulan :)
Kecuali diamanatkan oleh platform (iPhone, iPad, dll.) Atau oleh klien / organisasi pelaksana, "mengapa" saya harus belajar bahasa pemrograman baru? Hanya untuk bersenang-senang"? Dan lakukan apa dengan kesenangan itu jika saya tidak akan melakukan sesuatu yang berharga dengan itu?
Banyak teman saya siap untuk belajar "hal baru berikutnya / bahasa" dan biasanya Python, Ruby atau PHP (hanya menyebutkan beberapa yang populer). Sekarang, hanya mengetahui bahasa itu sendiri adalah IMHO yang sia-sia. Anda juga perlu mengetahui kerangka kerjanya, mempelajari penggunaannya / API serta 'praktik implementasi yang baik', dll.
Jadi dari pengertian 'ekonomi', apakah ada manfaat dalam mempelajari bahasa pemrograman baru? Jika bahasanya dipelajari dengan cepat dan kotor, bahasa itu mungkin juga akan digunakan untuk pembuatan prototipe / implementasi yang cepat dan kotor - tetapi saya tidak menganggap ITU sebagai investasi waktu / upaya yang dapat dibenarkan.
Jadi hanya MENGAPA saya (atau siapa pun dalam hal ini) belajar bahasa pemrograman baru selain "itu menyenangkan jadi mari kita coba" - jika investasi waktu mungkin tidak sepadan dalam jangka panjang?
Jawaban:
Dari The Pragmatic Programmer , Tip # 8 "Berinvestasilah secara teratur dalam Portofolio Pengetahuan Anda":
Ini bukan tentang "hal baru" berikutnya. Ini tentang berpikir dengan cara yang berbeda di luar pola pemikiran normal Anda.
Ada pepatah, "Ketika Anda palu, semuanya terlihat seperti paku". Mungkin ada cara yang lebih baik untuk menyelesaikan masalah menggunakan beberapa teknologi lain. Jika Anda tidak menjelajah, Anda mungkin tidak tahu bahwa itu tersedia.
sumber
Mengapa orang memanjat Mt. Everest? Atau jalankan 100 Mil dalam 24 jam ? Mengapa kita melakukan tantangan apa pun? Karena itu ada di sana. Saya tidak melihat ada yang salah dengan "Ars gratia artis". Ada titik di mana belajar demi belajar menjadi hadiahnya sendiri. Tetapi jika Anda ingin alasan yang lebih kuat untuk mempelajari bahasa baru di sini adalah beberapa:
Cara-cara baru untuk menyelesaikan masalah Belajar bahasa baru, benar-benar meluangkan waktu untuk menyelam, memberi Anda kesempatan untuk memprogram lagi sebagai pemula. Perspektif baru itu bisa mengajari Anda teknik-teknik yang mungkin terbawa ke bahasa lama. Pikirkan pengaruh Ruby on Rails terhadap ASP.NET MVC atau bagaimana Java Hibernate di-porting ke C # (bersama dengan banyak kerangka kerja lain yang memengaruhi pengembangan .NET). Paparan ke berbagai bahasa dapat mengajarkan Anda cara baru untuk mengatasi masalah.
Alat yang tepat untuk pekerjaan yang tepat Semua bahasa yang Anda sebutkan adalah hibrida OO / Prosedural (atau murni prosedural dalam kasus C). Cobalah tangan Anda di satu atau dua bahasa Fungsional. Cobalah menerapkan faktorial di Erlang menggunakan rekursi dan saksikan rahang Anda menyentuh lantai saat 20000! kembali dalam 5 detik (tidak ada stack overflow di situs). Kemudian lihat kekuatan penskalaan aplikasi Anda untuk mencari-cari angka dan parsing protokol dengan kode lebih sedikit dan dalam waktu kurang dari yang dibutuhkan untuk mendapatkan dua contoh JVM berbicara melalui RMI atau SOAP. Mempelajari bahasa / kerangka kerja lain yang ditargetkan untuk memecahkan masalah tertentu akan memberi Anda lebih banyak alat.
Temui orang-orang baru / perluas jaringan Anda Menyelam ke bahasa baru memaparkan Anda ke komunitas baru. Bertemu orang-orang baru adalah hal yang baik untuk karier dan pribadi Anda.
Peluang baru Mengetahui bahasa baru hanya dapat meningkatkan peluang Anda mendapatkan pekerjaan itu dengan startup baru itu. "Man pekerjaan ini akan sempurna jika aku tahu Ruby." Selain itu, Anda mungkin menikmati bahasa yang cukup sehingga Anda memutuskan untuk beralih jalur.
Tetap segar. Bekerja dengan hal yang sama setiap hari menjadi membosankan. Menggunakan bahasa yang berbeda dapat memberi Anda istirahat dari kesibukan sehari-hari dan memungkinkan Anda untuk datang kembali keesokan harinya.
Karena ada di sana, pelajari bahasa baru karena Anda mau.
sumber
Kami berpikir dengan kata-kata. Bahasa yang kita gunakan memengaruhi cara kita melakukannya. Ada kasus menarik tentang bahasa Pirahã - orang yang berbicara bahasa itu tidak dapat menangani sesuatu yang tampaknya "sederhana" atau "intuitif" sebagai angka karena bahasa yang mereka gunakan tidak memiliki kata-kata untuk "jumlah tertentu" (bahkan "satu" "dan" banyak ").
Dengan bahasa pemrograman adalah sama. Bahasa pemrograman baru, dapat "membuka" pikiran Anda ke beberapa aspek pemrograman.
Mengingat latar belakang pemrograman Anda saat ini, saya sarankan Anda untuk belajar beberapa bahasa fungsional, seperti Erlang atau Scala. Akhirnya, Clojure adalah bahasa yang sangat solid juga.
Jika Anda ingin merasa sedikit lebih di rumah terlebih dahulu, coba bahasa skrip yang kuat seperti Python atau Ruby.
sumber
Anda tidak hanya ingin mempelajari bahasa baru, tetapi Anda ingin mempelajari bahasa yang berbeda dari yang Anda ketahui. Jika Anda tahu Java belajar C # tidak akan benar-benar menantang Anda, mereka juga mirip. Idealnya Anda harus memilih bahasa yang sangat berbeda dari apa yang Anda ketahui. Jika Anda tahu java, JavaScript dan Objective-C Anda menginginkan sesuatu yang sangat berbeda
Seperti:
Ruby yang menyenangkan, mengetik bahasa OO yang lemah
Prolog Bahasa pemrograman logika sangat berbeda
Erlang Concurrency dan Fault Tolerance dilakukan dengan sangat baik
Skema Go membaca SICP dan mencapai pencerahan
Haskell Salah satu sistem tipe paling kuat di dunia jika ia mengkompilasinya mungkin akan berfungsi, juga akan membuat Anda tidak membuat segala macam kesalahan aneh dan banyak lagi.
Atau hanya mengambil Tujuh Bahasa dalam Tujuh minggu yang akan melakukan tentang apa judulnya mengatakan itu.
sumber
Pertanyaan Anda begitu penting sehingga saya meminta untuk mengajukan pertanyaan berikut:
Jika Anda seorang programmer berdasarkan profesi, mengapa Anda tidak ingin belajar sesuatu yang baru untuk menambah pengalaman profesional Anda?
Pertanyaan Anda terdengar sangat mirip dengan sikap seorang siswa yang pernah saya miliki. Satu atau dua tahun sebelum Y2K saya mengajar kelas Cobol (sebagai pilihan), atas permintaan Direktur Layanan Karir di universitas tempat saya mengajar pada saat itu. Dia memiliki begitu banyak perusahaan yang mendekatinya dengan peluang kerja untuk programmer Cobol sehingga dia pikir kita akan merugikan siswa kita dengan tidak memberi mereka kesempatan untuk mempelajari keterampilan dan menambah keahlian mereka.
Saya memiliki seorang siswa yang mengambil kelas sebagai kelas pilihan terakhirnya untuk lulus . Dia juga bekerja sebagai Programmer C pada saat itu. Dia mengambil kelas Cobol karena dia tidak punya pilihan lain dan dia ingin gelar. Jadi dia datang ke kelas dengan chip di bahunya.
Jadi saya menantangnya dengan tugas menulis program untuk membaca data dari file yang memiliki format spesifik untuk setiap catatan input (yaitu berapa banyak karakter yang diambil setiap bidang pada satu baris, bidang mana yang muncul lebih dulu, kedua, ketiga, dll. .)
Dia menulis programnya di C, yang dia lakukan, dan dia memamerkan programnya kepada saya. Pada saat yang sama, saya menunjukkan kepadanya versi Cobol program saya.
Lalu aku melemparkan bola melengkung padanya:
Dia mengambil satu hari untuk membuat versi baru dari program yang bekerja dengan format data baru. Ini melibatkan mengubah setidaknya 20 atau 30 baris kode, dan memodifikasi beberapa fungsi dan modul.
Lalu saya menunjukkan kepadanya perubahan yang perlu saya lakukan untuk program Cobol saya. Saya memodifikasi klausa gambar untuk mencerminkan format data baru.
Saya tidak yakin dia benar-benar memahami pelajaran dari latihan itu, tetapi dia setidaknya berhenti mengeluh selama sisa semester.
Jadi - sebagai jawaban atas pertanyaan Anda: Anda harus belajar bahasa baru karena Anda ingin BELAJAR. Dan jika Anda tidak ingin belajar - lebih banyak kekuatan untuk Anda ... (Saya hanya tidak yakin saya akan mempekerjakan Anda dengan sikap itu)
sumber
Ada beberapa alasan mengapa mempelajari bahasa baru mungkin bernilai investasi waktu:
Mempelajari bahasa baru dapat memberikan manfaat langsung, seperti yang telah Anda catat, dalam solusi "cepat dan kotor". Namun, solusi langsung ini mungkin mengarahkan programmer untuk menyelidiki dan menggali lebih dalam arsitektur yang terkait dengan bahasa baru untuk "mempelajarinya dengan benar". Seseorang dapat melihat latihan pembelajaran cepat ini sebagai investasi dalam penyelidikan apakah suatu bahasa baru layak waktu pelatihan tambahan.
sumber
Dalam satu kata: Pasar .
Anda membuka prospek pekerjaan ketika Anda dapat menunjukkan bahwa Anda memiliki kemampuan untuk beradaptasi dan mempelajari hal-hal baru. Tentu, Anda dapat terus menulis aplikasi menggunakan satu bahasa yang telah Anda kuasai, tetapi apa yang terjadi ketika Anda mengetahui bahwa bahasa pilihan Anda menjadi tidak relevan untuk industri tempat Anda bekerja. Saya benar-benar ingat saat ketika kami menggunakan untuk menulis layanan web kami sendiri dari awal dalam C atau C ++, saat ini kami menggunakan alat yang melakukan semua "webbiness" yang mendasarinya bagi kami (Think Rails, dll ...).
Intinya, Anda berakhir seperti aktor-aktor yang membuat serial TV, dan kemudian tidak dapat dengan mudah beralih ke hal lain karena mereka selamanya dilihat sebagai karakter asli mereka. "Siapa di Bumi yang menginginkan Kapten Kirk menjadi Indiana Jones? !!". Sama dengan programmer yang hanya pernah menggunakan satu produk. Tentu, Anda akan tahu itu tidak seperti orang lain, tetapi itu tidak akan membantu Anda ketika Anda diperlakukan seolah-olah Anda telah dimasukkan ke dalam Fortran yang tidak bisa melanjutkan bekerja dengan C #.
Jika Anda ingin dapat memindahkan pekerjaan dengan mudah dan membiarkan opsi Anda tetap terbuka, Anda perlu memperluas pengalaman Anda. Bekerja pada banyak proyek berbeda dalam banyak bahasa yang berbeda, dan lebih disukai pada setidaknya 2 platform atau lebih, dan jadikan diri Anda dapat dipasarkan untuk lebih dari sekadar menjadi diri Anda sekarang.
Tentu saja, ada banyak alasan lain untuk belajar bahasa baru, kadang-kadang bahkan hanya untuk itu. Ini membuka pikiran Anda untuk kemungkinan lain, jadi ketika bos Anda mendatangi Anda dan mengatakan "bisakah kita melakukan sesuatu", Anda dapat mengatakan Ya dengan pilihan alat yang tersedia untuk Anda.
sumber
Pada titik ini dalam karir Anda, Anda harus belajar bahasa baru jika Anda pikir mereka akan menjadikan Anda seorang programmer yang lebih baik.
Sebagian besar bahasa Anda yang terdaftar (Java / C / C ++ / Javascript / Objective-C) adalah OO konvensional / imperatif. Mempelajari OO / bahasa imperatif lainnya mungkin tidak akan mengajari Anda lebih banyak tentang pemrograman semacam itu. Kecuali Anda memiliki minat khusus, tidak ada gunanya mempelajari rasa-of-the-the bulan pada spec.
Saya juga cenderung skeptis tentang klaim peningkatan produktivitas pesanan-of-magnitude. Namun, mungkin ada baiknya untuk memeriksa bahasa produktivitas tinggi yang sesekali terkenal, untuk melihat apakah Anda menyukainya.
Alasan terbaik untuk belajar bahasa baru adalah untuk mempelajari keterampilan penerapan umum. Untuk itu, saya akan merekomendasikan menyelam jauh ke dalam bahasa fungsional (Haskell, atau salah satu Lisps) di satu sisi, dan kode perakitan dan arsitektur sistem (x86 atau ARM) di sisi lain.
Pemrograman fungsional akan mematahkan otak Anda dan meningkatkan pikiran Anda, sementara arsitektur mesin pembelajaran akan meningkatkan kemampuan debugging dan optimalisasi Anda, bahkan jika Anda tidak pernah menulis jalur perakitan lain.
sumber
Masing-masing dari kita memutuskan apa yang ingin kita kerjakan jadi ...
Jika Anda tidak ingin belajar PHP, tidak ada yang membuat Anda dan ada banyak area di mana Anda dapat memprogram tanpa pernah tahu bagaimana mengeja PHP.
Banyak orang melihat pasar kerja untuk melihat di mana area panas dan memanfaatkan teknologi tersebut. Banyak orang belajar satu bahasa dan tetap menggunakannya dan 20 tahun kemudian mereka menjadi insinyur pemeliharaan warisan. Dan kemudian Anda memiliki banyak orang yang berada di antara dua ekstrem ini.
Pada akhirnya, ini semua tentang apa yang Anda inginkan.
sumber
Argumen terbaik yang saya tahu adalah bahwa itu memperluas perspektif Anda tentang berapa banyak cara yang berbeda suatu masalah dapat diselesaikan, atau beberapa logika dapat diungkapkan. Mengetahui dengan baik Java dan C ++ memberi Anda pandangan yang baik tentang ranah asli & VM, tetapi ada lebih banyak "derajat kebebasan" untuk dijelajahi.
Saya memiliki sekitar 15 tahun pengalaman di C ++, 5 di Jawa. Ada banyak bahasa yang saya pelajari dan tinggalkan (PHP, Pascal, perakitan untuk sekelompok prosesor yang berbeda, antara lain) dan dapat mengatakan dengan pasti bahwa bahkan yang tidak saya gunakan lagi meninggalkan tanda signifikan pada bagaimana saya berpikir tentang suatu masalah . Juga: bahkan jika Anda ingin tetap menggunakan, katakanlah, Java, untuk proyek tertentu, Anda harus mengetahui alternatif untuk menyajikan argumen balasan yang baik kepada para pendukungnya.
Tetap saja, saya baru belajar Python tahun ini, dan senang dengan betapa elegannya beberapa hal dapat dilakukan. Sedemikian rupa sehingga saya memutuskan untuk mengubah beberapa servlet SISA yang saya tulis, dari Jawa ke Python. Keuntungan dalam pemeliharaan kode cukup signifikan. Yang pasti meninggalkan bekas dalam cara saya melakukan sesuatu, juga, tidak hanya karena saya sekarang akan memilih Python untuk beberapa tugas, tetapi juga karena saya dapat mengadopsi prinsip-prinsip desain yang sama ketika pengkodean dalam C ++ & Java.
Yang mengatakan, saya tidak berpikir Anda harus belajar banyak bahasa yang berbeda sepanjang waktu, hanya demi itu. Dibutuhkan banyak waktu, dan "akomodasi" yang harus Anda pikirkan agar mereka bisa hidup berdampingan dengan yang lain yang sudah Anda kenal juga membutuhkan waktu dan usaha. Saya hanya memutuskan untuk belajar bahasa ketika sudah cukup matang, memiliki basis pengembang yang baik, dan menawarkan hasil yang sangat berbeda dari yang lain yang saya tahu atau rencanakan untuk pelajari. Ketika saya memutuskan untuk belajar Python, misalnya, saya juga mempertimbangkan Ruby dan Perl, dan kemudian membuangnya - setidaknya untuk waktu dekat.
sumber
Orang-orang mempelajari bahasa baru untuk ...
Keyakinan = Kode Luar Biasa!
Jadi seperti yang Anda lihat ada banyak alasan untuk belajar bahasa baru. Saran saya kepada Anda (dan satu-satunya kutipan asli yang menurut saya baik):
sumber
Saya setuju dengan sebagian besar jawaban yang sudah diposting. Untuk menambahkan ini, lihat statistik yang diambil oleh 2011 Stack Overflow User Survey. Ada korelasi yang sangat tinggi antara jumlah bahasa yang dikenal dan uang yang diperoleh. Mereka mungkin tidak secara langsung terikat satu sama lain, tetapi itu adalah sesuatu untuk dipikirkan.
Orang yang cenderung belajar lebih banyak bahasa cenderung menghasilkan lebih banyak uang.
http://blog.stackoverflow.com/2012/02/survey-results/
sumber
Alfred North Whitehead menulis sebuah esai besar yang disebut " Pentingnya Notasi Baik "
Bahasa pemrograman adalah bentuk notasi. Saya bisa kode OO dalam C; sebenarnya begitulah Stroustrup memulai dengan C ++ - sebagai serangkaian makro precompiler C. Namun, jauh lebih mudah dan lebih cepat untuk menulis kode OO dalam Java, C ++ atau C # karena mereka memiliki bahasa primitif yang mendukung OO dengan lebih mudah.
Semua alasan untuk belajar bahasa baru yang diberikan sejauh ini valid tetapi saya pikir alasan terbaik untuk mempelajari bahasa baru adalah bahwa notasi baru memungkinkan Anda untuk berpikir dengan cara baru yang dapat membantu Anda untuk memecahkan masalah baru.
sumber
Sebagian besar atau semua jawaban di atas terkait dengan profesi. Pemrograman Saya ingin mengingatkan bahwa sebelum kita menjadi programmer - kita adalah manusia.
Salah satu alasan bagus mengapa tidak mempelajari bahasa pemrograman baru, dalam kasus Anda, adalah membiarkan diri Anda beristirahat atau melakukan hal-hal lain di samping pemrograman.
Dari pengalaman saya, bekerja di pertanian dan bekerja dengan kayu, banyak memikirkan saya tentang pemrograman - lebih dari belajar bahasa baru. Untuk menjadi programmer yang baik, Anda harus menjadi manusia yang baik. Jika Anda tidak memiliki banyak pengalaman dalam hidup, selain pemrograman, ide Anda tentang pemrograman mungkin sama sekali salah - bahkan jika Anda seorang ahli.
Banyak konsep dalam pemrograman datang langsung dari kehidupan sehari-hari: kesederhanaan, dapat dipelihara, praktis, bermanfaat, cepat - dan kadang-kadang lambat , modularitas, dll; semua konsep yang digunakan oleh seorang tukang kayu, misalnya.
Percaya atau tidak: secara pribadi saya telah belajar banyak tentang konsep pemrograman, dengan mengambil liburan panjang untuk memetik jeruk. Konsep utama yang saya pelajari darinya adalah - kesederhanaan. Dari bekerja sebagai pembangun, saya telah mempelajari konsep lain: membangun dasar sebaik mungkin - jika Anda ingin dinding berdiri tegak.
Akhirnya, jawaban untuk pertanyaan Anda mungkin: berlibur, bergabung dengan kelas taekwondo, atau mengurus kebun - maka pertanyaan Anda mungkin tidak mengganggu Anda lagi.
sumber
Nilai belajar bahasa pemrograman baru, secara kasar, adalah kebalikan dari jumlah bahasa pemrograman yang sudah Anda ketahui.
Ini karena ada sejumlah paradigma terbatas dan mempelajari bahasa baru biasanya akan memperkenalkan Anda pada setidaknya satu atau dua, membuat Anda lebih berpengalaman dan mampu sebagai programmer. Beberapa mungkin mengubah dunia pemrograman Anda terbalik. Tetapi ketika Anda belajar bahasa baru yang menampilkan paradigma yang sudah Anda ketahui, Anda sudah mengenalnya dan Anda sudah terbiasa dengannya.
sumber
Karena sebagian besar dari mereka sudah menulis, saya memiliki pengetahuan yang baik tentang C. Baru-baru ini, saya sedang mengerjakan beberapa masalah yang perlu saya periksa silang hasilnya; itu matematika. Jadi apa cara tercepat untuk mendapatkan jawabannya memberi saya dorongan untuk memeriksa bahasa pemrograman yang lebih cepat untuk dipelajari.
Dan saya menemukan bahwa bc , bahasa kalkulator presisi yang sewenang-wenang, utilitasnya hampir tersedia di setiap platform Unix.
Saya tidak memikirkan Python, Perl atau apa pun, tetapi saya menemukan ini menyelesaikan masalah saya dalam sekejap. Saya memeriksanya di faktorial (20000) yang disarankan salah seorang teman, dan hasilnya seketika tanpa crash.
Penting hanya untuk titik tertentu bahwa Anda perlu mengetahui bahasa baru yang akan memudahkan pekerjaan Anda / masalah saat ini.
Jelas, jika saya menulis ini di resume saya, saya kira tidak ada yang peduli, tetapi dari sudut pandang saya itu menyelesaikan masalah saya sebelum saya serang dalam bahasa favorit saya, 'C'.
Dan juga jika ada kebutuhan untuk belajar bahasa baru Anda akan mendapatkan kesempatan dengan berbagai masalah dan sejumlah solusi.
sumber
Siapa pun dapat membuat bahasa baru; tetapi tampaknya tidak ada yang memahami bahwa "lebih baik" jarang sama dengan "jauh lebih baik sehingga biaya adopsi benar-benar dapat dibenarkan". Hasil akhirnya adalah ratusan bahasa yang berbeda, di mana tidak mungkin bagi siapa pun untuk memahami semua kode sumber, dan di mana programmer perlu membuang sekitar seperempat dari waktu mereka menjadi tidak produktif karena perbedaan bahasa / kerangka / perpustakaan.
Dalam dunia yang ideal, akan ada satu bahasa pemrograman tingkat rendah (misalnya C), satu bahasa pemrograman "aman" tingkat tinggi (misalnya Jawa) dan satu bahasa scripting. Juga akan ada palu godam besar untuk menghancurkan "Programming Language Tower of Babel" yang diciptakan oleh orang-orang yang tidak memahami nilai-nilai standardisasi dan biaya "churn" dan pelatihan ulang terus-menerus pada industri IT secara keseluruhan.
Dari pengertian 'makro-ekonomi', tidak ada yang salah dengan mempelajari bahasa pemrograman baru sebagai hobi, tetapi menggunakan bahasa pemrograman baru untuk apa pun membuat Anda menjadi bagian dari masalah.
sumber