(Kenapa) Haruskah saya belajar bahasa pemrograman baru? [Tutup]

97

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?

PhD
sumber
6
programmers.stackexchange.com/questions/118338/... Mungkin Anda akan tertarik dengan jawaban yang saya berikan gere.
deadalnix
3
Jika Anda dapat melihat bahasa baru dengan konsep baru dan tidak memiliki keinginan untuk memahaminya, banyak tempat tidak akan mempekerjakan Anda (pada kenyataannya, banyak pertanyaan wawancara dibuat untuk secara khusus menentukan hal-hal seperti ini)
Bill K
3
Saya akan bertanya mengapa saya tidak belajar bahasa baru?
pengguna
2
@ZacharyK bahkan jika pekerjaan itu untuk pengembang java, dan kandidatnya adalah superduper di java. Sepertinya Anda menembak diri sendiri.
NimChimpsky
2
Ada banyak orang Super Java di luar sana. Saya tertarik pada apa yang akan Anda ketahui dalam 6 bulan seperti apa yang Anda ketahui sekarang. (Tentu saja saya sepertinya menghabiskan seluruh waktu saya di Erlang, CoffeeScript dan PHP)
Zachary K

Jawaban:

178

Dari The Pragmatic Programmer , Tip # 8 "Berinvestasilah secara teratur dalam Portofolio Pengetahuan Anda":

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 terjebak dalam kebiasaan. Selain itu, mempelajari banyak bahasa jauh lebih mudah sekarang, berkat kekayaan perangkat lunak yang tersedia secara bebas di Internet

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.

jmq
sumber
Poin luar biasa. Pemikiran ini yang mendorong saya untuk mencoba RavenDB pada sebuah proyek, dan saya belajar banyak setelah bertahun-tahun terjebak dalam kebiasaan SQL Server.
Bob Horn
52
Saya pikir itu ketika semua yang Anda miliki adalah palu semuanya tampak seperti ibu jari Anda
Zachary K
2
Saya sangat setuju. Saya juga menambahkan bahwa mempelajari bahasa lain membantu Anda untuk lebih memahami aspek-aspek bahasa yang sebelumnya Anda ketahui. Ini juga membantu untuk membedakan apa yang "nyata" pemrograman konsep / pola / batasan mendasar, dan apa yang hanya artefak dari perangkat khusus Anda. Misalnya, jika semua bahasa yang Anda kenal diketik dengan lemah, Anda mungkin tidak pernah tahu bahwa pengetikan yang kuat ada, dan tidak pernah bertanya-tanya mengapa! Akibatnya, produk Anda mungkin menderita dalam kinerja atau keamanan, meskipun mereka mungkin unggul dalam waktu ke pasar ;-).
JJC
3
Pragmatic Programmer adalah salah satu buku pemrograman terbaik yang pernah saya baca. Sangat bagus!
Soner Gönül
Saya sangat setuju pada "Ini tentang berpikir dengan cara yang berbeda di luar pola pemikiran normal Anda". Ketika saya belajar Python, saya mendapatkan dunia baru dari cara berpikir.
Yoo Matsuo
80

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.

Michael Brown
sumber
3
+1 Javascript bisa berfungsi, tetapi sepertinya OP mungkin melewatkan beberapa paradigma dari kotak alat mereka. Dan lebih banyak pengalaman dengan bahasa fungsional akan memberikan wawasan yang lebih dalam dengan bahasa yang ada misalnya dengan template C ++
jk.
1 untuk Tetap segar, benar-benar terasa enak bekerja pada sesuatu yang berbeda
Mona
Saya ingin menunjukkan bahwa optimasi panggilan-ekor tidak ada hubungannya dengan apakah suatu bahasa (murni) fungsional atau tidak, bahasa-bahasa penting yang dikompilasi untuk dijalankan di bawah .NET 64-bit runtime mendapatkan optimasi panggilan-ekor secara gratis misalnya .
Blindy
1
LOL, ya bukan itu yang membuat Erlang bahasa fungsional murni tapi itu perubahan total dalam perspektif. Dalam bahasa imperatif kami didorong untuk menghindari rekursi untuk semua kecuali kasus yang paling sepele dan rekursi bahasa Fungsional adalah cara hidup. Pencocokan pola sebagai lawan jika / atau switch / case juga keren.
Michael Brown
2
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). Ini adalah salah satu argumen terkuat untuk mempelajari bahasa fungsional yang pernah saya lihat. Tidak pernah berpikir bahwa itu bisa sangat efisien.
Olegs Jeremejevs
37

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.

egarcia
sumber
22
+1. "Bahasa yang tidak memengaruhi cara berpikirmu tentang pemrograman, tidak perlu diketahui." - Alan Perlis
ruakh
2
Saya menolak premis bahwa “Kami berpikir dengan kata-kata” karena menyangkal kemungkinan bahwa siapa pun (atau apa pun) tanpa kata-kata dapat berpikir. Tetapi kata - kata sangat berguna untuk memberi label konsep (dan karenanya membantu membedakannya). Kami kebanyakan melakukan pemikiran yang lebih tinggi dengan (banyak keterlibatan dari) kata-kata karena efisien. Yang merupakan pernyataan yang lebih samar, tapi saya berpikir lebih dekat dengan kebenaran. Lucunya, saya tidak bisa menolak penggunaan kata-kata tanpa menggunakan kata-kata ...
Donal Fellows
@DonalFellows: Saya pikir kami memiliki beberapa "proses mental" yang tidak dapat diungkapkan melalui kata-kata. Tetapi saya tidak menyebut "pikiran" itu, tetapi "perasaan", "refleks", "intuisi" dll. Saya pikir pemikiran yang tepat harus dapat diungkapkan dalam hal semacam bahasa. Jadi bagi saya sesuatu yang tidak memiliki bahasa dapat hidup, memproses, bereaksi, merasakan ... tetapi tidak berpikir. Tetapi ini adalah keyakinan, berdasarkan intuisi, bukan bukti nyata. Dan juga agak di luar topik, sungguh :)
egarcia
Sepenuhnya setuju, belajar bahasa hanya karena mereka adalah bahasa pemrograman keren baru tidak masuk akal. Anda harus tetap menggunakan yang sangat berbeda, dan mencoba untuk tidak menutupi terlalu banyak. Menjadi ahli dalam sesuatu akan membutuhkan banyak waktu (mungkin 10+ tahun), tidak masalah apakah itu memainkan alat musik, memasak, atau pemrograman.
Tuan Smith
2
@evilcandybag: Ketika itu terjadi, saya benar - benar dapat menunjukkan sebuah sumber: sciencemag.org/content/306/5695/496 , sciencemag.org/content/suppl/2004/10/15/1094492.DC1/… (PDF).
ruakh
26

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.

Zachary K
sumber
2
+1! Latihan yang saya lakukan saat ini adalah mengimplementasikan algoritma yang sama (merge sort) dalam bahasa yang berbeda: ini benar-benar memberi saya perasaan tentang berapa banyak cara yang ada untuk mengekspresikan perhitungan yang sama. Saya sudah menjalankan versi C, C ++, Pascal, Java, Scala dan Haskell. Python, Ruby, Modula2, Skema sedang dalam perjalanan. Saya menemukan Anda dapat belajar banyak dengan melihat berbagai bahasa pemrograman! Dan dengan melakukan satu hal dalam satu bahasa saya bisa mendapatkan banyak ide tentang bagaimana mengimplementasikannya dengan cara yang lebih baik dalam bahasa lain.
Giorgio
3
Saya suka ini kecuali bagaimana Anda menggambarkan Haskell. Anda masih dapat menulis kode yang salah yang mengkompilasi. (Ketepatan-jenis bukanlah satu-satunya persyaratan untuk kebenaran secara keseluruhan.) Alasan untuk mempelajari Haskell adalah bahwa ia secara dekat sangat dekat dengan matematika, dan ia memiliki model evaluasi yang malas; yang seharusnya mengguncang gagasan kebanyakan programmer tentang pemrograman.
Donal Fellows
Saya pikir harus mencoba Prolog. Ketika saya pertama kali mempelajarinya, saya menjadi kagum. Bagaimana Anda dapat melakukan hal-hal hanya menulis beberapa karakter.
pengguna
3
@ DonalFellows dalam pengalaman saya jika Anda mendapatkan jenis yang tepat di Haskell, sisa program cenderung menulis sendiri.
tobyodavies
1
"Ruby menyenangkan, Bahasa OO yang diketik dengan lemah": Apakah Ruby benar-benar diketik dengan lemah atau tepatnya diketik secara dinamis?
Giorgio
15

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.

Saya sudah tahu C, dan saya menggunakannya secara profesional jadi saya tidak tahu mengapa di dunia ini ada orang yang mau atau bahkan perlu belajar Cobol.

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:

Misalkan pengguna akhir mendapatkan data dari tempat lain. Itu adalah bidang yang sama di setiap rekaman, tetapi urutan dan jumlah karakter per bidang berbeda. Tunjukkan pada saya apa yang harus Anda ubah dalam program Anda agar dapat berfungsi dengan format data baru.

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)

Zeke Hansell
sumber
6
Meskipun niat Anda baik, jika saya adalah siswa itu, saya hanya akan berpikir bahwa satu-satunya alasan aplikasi Anda mudah diubah adalah karena Anda tahu perubahan persyaratan akhirnya. Jika program ditulis dalam C dengan pengetahuan yang sama, perubahan minimal harus dilakukan di sana juga.
hspain
Saya memiliki rekan kerja dengan sikap yang sama: "C dan PHP menghasilkan uang bagi saya. Mengapa saya harus membuang waktu untuk belajar bahasa lain?" Dia tidak bekerja di sana lagi.
greyfade
3
semua persyaratan berubah cepat atau lambat! Itulah intinya.
Zachary K
@hspain - sebenarnya karena seluruh inti latihan adalah Cobol memperlakukan spesifikasi I / O sebagai bagian urutan pertama dari suatu program, daripada sesuatu yang terjadi dengan cara laissez-faire berdasarkan pada cara Anda menulis dan memesan pada Anda Pernyataan I / O dalam C. Dan untuk menggemakan komentar Zachary K, faktanya adalah bahwa persyaratan berubah. - Ya, Anda dapat menyusun program dalam C sedemikian rupa sehingga tidak terlalu rapuh ketika hal-hal seperti persyaratan I / O berubah, tetapi itu melibatkan berpikir tentang program dengan cara yang sama sekali berbeda dari yang biasanya Anda lakukan ketika menulis program C.
Zeke Hansell
Sebenarnya saya tidak tahu tentang cobol. Suatu hari nanti saya mungkin harus memeriksanya
Zachary K
12

Ada beberapa alasan mengapa mempelajari bahasa baru mungkin bernilai investasi waktu:

  1. Tingkatkan ukuran kotak alat seseorang - mempelajari bahasa baru dapat memberikan jalur tambahan untuk memecahkan masalah teknis. Kemungkinan alat baru dapat memberikan pilihan bahasa / platform yang lebih baik untuk menyelesaikan masalah tertentu daripada alat / bahasa yang sebelumnya diketahui. Contoh sederhana mungkin adalah seorang programmer yang hanya tahu C. Mempelajari bahasa scripting membuka kemungkinan lain untuknya - dalam hal penyebaran, pengaturan lingkungan, dll.
  2. Dapatkan akses ke platform baru - contoh yang bagus mungkin adalah Objective C - jika seseorang ingin mengembangkan untuk iOS, mempelajari bahasa ini hampir wajib.
  3. Pelajari paradigma baru - bahasa tertentu mungkin memiliki akses yang lebih baik ke paradigma baru. Menggunakan C sebagai contoh, mungkin sulit untuk mengembangkan layanan web dalam standar ANSI C. Namun, belajar untuk mengembangkan .NET, Java, PHP, atau bahasa baru lainnya dapat mempercepat pengembangan layanan web.

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.

JW8
sumber
11

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.

S.Robins
sumber
8

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.

comingstorm
sumber
6

Masing-masing dari kita memutuskan apa yang ingin kita kerjakan jadi ...

  1. Anda mempelajarinya karena Anda mau
  2. Anda mempelajarinya karena Anda membutuhkannya untuk pekerjaan yang Anda inginkan

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.

DXM
sumber
Dalam uraian Anda, kedengarannya agak terlalu hitam-putih. "Teknologi hopper" dan insinyur pemeliharaan warisan adalah dua IMHO ekstrem, dengan sebagian besar dari kita duduk di antara keduanya. Juga, beberapa "gerbong teknologi" terlalu tergila-gila pada barang-barang mengkilap terbaru untuk benar-benar mempelajari teknologi apa pun dengan benar (yang akan membutuhkan lebih banyak waktu daripada apa yang mereka ingin investasikan dalam teknologi tunggal), sehingga mereka mungkin tidak akan pernah menghasilkan solusi yang solid dan berjangka panjang masalah.
Péter Török
1
@ PéterTörök: Diedit jawaban saya. Saya menunjukkan skala, tetapi terlalu malas untuk mengeja semuanya. Anda benar, ini adalah spektrum berkelanjutan.
DXM
5

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.

Fabio Ceconello
sumber
5

Orang-orang mempelajari bahasa baru untuk ...

  • perluas pengetahuan mereka. Jika Anda tahu lebih banyak, Anda merasa lebih baik dan Anda lebih percaya diri.
    Keyakinan = Kode Luar Biasa!
  • memiliki kotak peralatan yang lebih besar. Katakanlah Anda harus membuat aplikasi. Jika Anda hanya tahu Jawa, Anda akan membuat program di Jawa. Tetapi jika Anda tahu Java, Python, Skema, dan Lisp, kemungkinan Anda akan memilih alat terbaik untuk pekerjaan itu.
  • dapatkan pekerjaan. Menghadapinya. Jika Anda tahu lebih banyak bahasa, Anda memiliki lebih banyak peluang kerja. Cukup jelas.
  • menjadi programmer serba bisa yang lebih baik. Jika Anda tahu sintaks Perl, Anda tahu itu bisa sedikit gila. Saat menulis program panjang di Perl, Anda pada dasarnya dipaksa untuk mengikuti praktik terbaik, atau Anda tidak akan menjadi kemping yang bahagia. Karena Anda tahu praktik terbaik Perl, ini mungkin membantu Anda menulis kode PHP yang lebih baik (dengan satu atau lain cara).

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):

Sering menulis kode; Tulis kode dengan baik; Tulis kode dalam Skema, PHP, Java, Python, Lisp, Perl, C, C ++, C #, Visual Basic, Ruby ...

Dinamis
sumber
1
@Nupul: Atau setidaknya saya pikir kutipannya seperti itu ...
Dinamis
5

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/

hspain
sumber
4

Alfred North Whitehead menulis sebuah esai besar yang disebut " Pentingnya Notasi Baik "

Sangat menarik untuk dicatat betapa pentingnya untuk pengembangan sains simbol yang terlihat sederhana mungkin. Mungkin berdiri untuk presentasi empatik ide, seringkali ide yang sangat halus, dan dengan keberadaannya membuatnya mudah untuk menunjukkan hubungan ide ini dengan semua kereta ide yang kompleks di mana itu terjadi.

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.

Onorio Catenacci
sumber
2

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.

Shian
sumber
Sementara saya bisa setuju dengan Anda, saya akan menambahkan bahwa setelah memiliki semua ide bagus tentang pemrograman ini saat melakukan kegiatan lain, saya ingin belajar bahasa pemrograman di mana ide-ide ini diterapkan. Jadi IMO dua aspek (mengambil istirahat dari pemrograman dan belajar bahasa pemrograman baru) tidak (tidak boleh) mengecualikan satu sama lain.
Giorgio
Memang benar bahwa mengambil istirahat dari pemrograman dan belajar bahasa pemrograman baru tidak (tidak boleh) mengecualikan satu sama lain. Namun, di dunia yang sangat cepat tempat kita hidup ini, penting untuk diingat bahwa istirahat - bisa lebih produktif daripada bergerak. Mungkin rehat kopi - atau bahkan rehat 1 tahun.
Shian
-2

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.

David Kendal
sumber
-3

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.

czar x
sumber
-8

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.

Brendan
sumber
4
Kedengarannya seperti ideal yang tidak praktis. Siapa yang akan memutuskan bahasa standar ini, dan bagaimana Anda memutuskan bahwa bahasa baru layak diubah? Bagaimana dengan risiko terjebak dalam bahasa yang jelek hanya karena tidak ada yang mau mencoba sesuatu yang baru? Bayangkan jika kita telah melakukan ini 10 tahun yang lalu - Semua orang dapat menggunakan C ++ dan Java (atau mungkin VB)!
Brendan Long
3
Konsep "dunia ideal" Anda terdengar mencurigakan seperti konsep Nineteen Eighty-Four . Dalam Newspeak Anda, ide-ide revolusioner seperti "pemrograman fungsional" dan "inferensi ketik" dan "polimorfisme kelas satu" dan "multimetode" bahkan tidak dapat dipikirkan, karena tidak akan ada cara untuk mengekspresikannya. Memang, Orwell tampaknya tidak memikirkan gagasan palu godam Anda, tetapi jika ia melakukannya, saya yakin itu akan menemukan jalan masuk.
ruakh
2
Selain poin-poin di atas, sangat sedikit "jawaban" Anda yang relevan dengan pertanyaan aktual. Turunkan suara.
user16764
3
Di dunia yang ideal, hanya ada satu jawaban untuk pertanyaan Nupal. Memiliki semua jawaban tambahan ini setelah yang pertama oleh orang-orang yang tidak memahami sifat-sifat standardisasi hanya menyebabkan kebingungan. Tidak ada yang salah dengan tidak setuju dengan jawaban di pikiran Anda sendiri, tetapi memposting jawaban tambahan membuat Anda menjadi bagian dari masalah.
benzado
1
Membatasi bahasa-bahasa tersebut tidak akan mencegah masalah yang Anda sebutkan. Saya harus menulis ulang aplikasi berkali-kali karena mengubah kerangka kerja daripada mengubah bahasa.
Fabio Ceconello