Apakah layak menjadi bahasa komputer polyglot? [Tutup]

14

Anda sering dapat mendengar bahwa programmer harus belajar banyak bahasa berbeda untuk meningkatkan diri mereka sendiri. Saya masih bersekolah dan tidak memiliki pengalaman pemrograman yang besar (sedikit lebih dari setahun). Tetapi niat mulia untuk meningkatkan keterampilan pemrograman berubah menjadi semacam OCD: Saya merasa tidak akan tenang sampai saya mempelajari semua bahasa pemrograman yang relatif dikenal.

Dan ini pertanyaannya: Akankah bahasa pemrograman polyglot benar-benar membantu Anda (Dan saya tidak bermaksud biasa "Programmer harus tahu setidaknya semua paradigma", maksud saya benar-benar semua bahasa yang biasa Anda dengar)? Adakah yang punya pengalaman serupa? Apakah itu membantu pekerjaan / keterampilan / karier? Seberapa sering Anda bisa menerapkan keterampilan itu?

Anton Barkovsky
sumber
3
Saya pikir ketika orang menyarankan orang lain untuk belajar tentang bahasa baru itu kurang tentang belajar bahasa dan lebih banyak tentang belajar paradigma baru. Dua bahasa utama saya adalah Python dan C ++, mempelajari Haskell telah menjadi pengalaman yang luar biasa bagi saya, karena itu memaksa saya untuk berpikir dengan cara yang berbeda dari yang saya lakukan sebelumnya.
Vitor Py
4
Mengetahui semua paradigma utama benar-benar membantu banyak . Terkena setidaknya sedikit dari semua bahasa yang menarik mungkin agak membantu jika Anda merancang bahasa Anda sendiri (dan segera setelah Anda masuk ke dalam paradigma Pemrograman Berorientasi Bahasa, Anda mungkin akan melakukannya).
SK-logic
4
"Bahasa yang tidak memengaruhi cara berpikirmu tentang pemrograman, tidak perlu diketahui." (Alan Perlis). Amin.
2
@ Job, mengetahui 10 bahasa pemrograman hanya membutuhkan sebagian kecil dari upaya yang diperlukan untuk mempelajari dasar-dasar satu bahasa lisan.
SK-logic
2
@ SK-logika tergantung. Saya yakin saya bisa mengajar anak 6 tahun untuk berbicara bahasa Spanyol lebih cepat daripada saya bisa mengajarinya python.
Raynos

Jawaban:

10

"Programmer harus tahu setidaknya semua paradigma"

Itu membantu

Maksud saya benar-benar semua bahasa yang biasanya Anda dengar

Itu tidak membantu. Meskipun begitu Anda tahu semua paradigma, Anda bisa belajar bahasa seminggu.

Lebih optimal menghabiskan satu minggu mempelajari bahasa itu saat Anda membutuhkan bahasa itu.

Programmer yang baik adalah programmer yang malas

Catatan samping:

Mempelajari bahasa umum / populer tidak membantu seperti mempelajari "semua paradigma". Yang pertama tidak mencakup yang terakhir. Misalnya belajar mandiri sangat berguna untuk memahami OO prototipikal. Ini bukan bahasa umum atau populer tetapi jauh lebih berguna daripada belajar python ketika Anda sudah tahu ruby.

Desain bahasa:

Mengetahui sebagian besar bahasa berguna jika Anda menulis / mendesain bahasa baru. Jadi ada kasus penggunaan yang solid untuk itu, tapi ceruknya cukup bagus.

Apa yang saya sarankan Anda lakukan sebagai gantinya:

Baca Kode Selesaikan 2 setidaknya 3 kali

Bahasa datang dan pergi ke kiri dan kanan tergantung pada "apa yang populer". Teknologi menjadi usang setelah berbulan-bulan atau bertahun-tahun tergantung pada seperti apa kurva teknologi itu. (Web mencela teknologi dengan kecepatan setiap 6 bulan).

Teknik pemrograman dan teori Ilmu Komputer selalu tetap sama.

Raynos
sumber
Tetapi ada banyak fitur kecil yang menarik dalam bahasa dan bahkan belajar bahasa baru dari paradigma yang sudah dikenal dapat membuat Anda teringat (misalnya bagi saya itu adalah Smalltalk)
Anton Barkovsky
@AntoBarkowski itu pernyataan salah, jangan bandingkan SmallTalk dengan bahasa OO lainnya. Java / C ++ / C # / etc. bukan bahasa OO nyata . Tentu saja SmallTalk layak dipelajari, tetapi itu bukan paradigma yang sama;)
Raynos
6
Orang-orang terus berkata "Anda bisa belajar bahasa seminggu," tetapi itu tidak benar. Tentu, Anda dapat menulis kode yang benar secara sintaksis dalam bahasa itu, tetapi ada lebih dari itu. Sebagai contoh, C # dan Java sangat mirip secara sintaksis dan keduanya bahasa OO. Namun menulis kode Java dalam C # tidak membuat Anda seorang programmer C #.
R0MANARMY
3
@ R0MANARMY "<programmer baik> dapat belajar bahasa dalam seminggu". Bahasa tidak termasuk perpustakaan, kerangka kerja, dan API. Definisi saya tentang programmer yang baik mungkin sangat tinggi.
Raynos
1
@ R0MANARMY, yang mana dari bit semantik kecil dan tidak penting yang Anda sebutkan dapat membutuhkan waktu lebih dari satu jam untuk dipahami?
SK-logic
4

Ini bukan tentang mengetahui cara membuat kode dalam banyak bahasa, ini, seperti yang Anda katakan, tentang paradigma. Semakin banyak opsi yang Anda ketahui tentang semakin baik. Mengetahui banyak bahasa tentu membantu, tetapi jika Anda terus mempelajari jenis bahasa yang sama Anda akan dengan cepat menemui jalan buntu.

Kuncinya adalah mengetahui bahasa / sistem apa yang terbaik untuk mengimplementasikan bagian dari proyek Anda. Bahkan jika Anda telah memutuskan satu bahasa utama (seperti kebanyakan proyek), Anda masih akan memiliki semua jenis alat, skrip, otomatisasi, dan membangun dukungan yang harus ditulis. Biasanya berbagai bahasa atau alat lain, lebih baik dalam hal ini daripada bahasa utama Anda.

Sekedar klarifikasi, saya merasa konyol untuk mencoba dan mempelajari semua bahasa yang benar-benar Anda dengar: ada ratusan di antaranya dan seringkali hanya sedikit variasi pada bahasa lain.

edA-qa mort-ora-y
sumber
3

IMHO, tidak. Pertama karena Anda tidak dapat belajar bahasa dalam waktu kurang dari setahun. Dibutuhkan 2 hari untuk dapat menulis kode di dalamnya, tetapi dibutuhkan banyak pengalaman untuk menulis dengan lancar, dan kode yang terbentuk dengan baik untuk bahasa yang diberikan. Mengapa GC bekerja seperti itu, di mana mengalokasikan memori, yang membangun lebih cepat, cara menggabungkan string dengan benar, apa sudut bahasa yang berbahaya, dll.

Saya menulis kode Java / .NET yang buruk menjadi pengembang C ++, karena banyak pengembang Java menulis kode C ++ yang buruk.

Bagian terbaik tentang mempelajari bahasa lain adalah Anda mempelajari paradigma baru, dan mungkin memiliki alat yang lebih baik untuk beberapa masalah nyata. Katakanlah - Anda perlu aplikasi GUI yang sangat cepat, non-publik, .NET tidak tergantikan di sana.

Tetapi mempelajari bahasa sehingga Anda tidak menggunakan struct di .NET, atau tidak membocorkan setiap objek di C ++, membutuhkan banyak waktu. Saya pikir lebih baik menghabiskannya untuk mempelajari prinsip-prinsip desain, platform, dan bahasa pilihan Anda.

Tapi ini hanya pendapat saya saja.

Coder
sumber
2
"Karena kamu tidak bisa belajar bahasa dalam waktu kurang dari setahun" Salah. Jangan bingung mempelajari bahasa dengan mempelajari kerangka kerja populer yang diungkapkannya. Juga tambahkan "teknik pemrograman umum" ke daftar di bagian akhir.
Raynos
@ Raynos: Saya pikir itu yang dia maksud.
Steven Jeuris
1
Cara favorit saya bermain dengan bahasa baru adalah menerapkan kompiler untuk subset yang layak. Secara total dibutuhkan 2-4 jam untuk memahami bahasa dan dapat mengidentifikasi dan mencuri fitur terbaik dari itu. Tidak hampir setahun, bahkan tidak sehari.
SK-logic
1
Nah, jika Anda bergabung dengan proyek C ++ besar, dan datang ke wawancara dengan kata-kata seperti "Saya telah pemrograman di Jawa selama 10 tahun, tapi saya telah menghabiskan 6 bulan terakhir di C ++, jadi saya tahu bahasanya". Saya ragu Anda akan mendapatkan posisi senior yang dibayar tinggi untuk pekerjaan itu. Jadi, tidak, saya masih berpikir bahwa Anda tidak dapat belajar bahasa dalam sebulan atau lebih.
Coder
2
@Coder, jika Anda bergabung dengan proyek C ++ besar, dan datang ke sebuah wawancara dengan kata-kata seperti "Saya telah pemrograman dalam 20 bahasa selama 10 tahun, termasuk C ++", Anda mungkin akan mendapatkan pekerjaan.
SK-logic
2

Ini tidak praktis untuk tahu mereka, tetapi bisa sangat berguna untuk mengetahui tentang mereka. Yang saya maksud dengan itu adalah ketika Anda mendapatkan masalah baru, Anda dapat mengatakan, "Saya samar-samar ingat [bahasa lain] memiliki cara unggul untuk menyelesaikan masalah seperti ini. Saya harus mencari tahu itu."

Karl Bielefeldt
sumber
Saya menemukan podcast seperti SE Radio bagus untuk itu. Mereka sering memiliki panjang yang tepat untuk mendengarkan dalam perjalanan ke tempat kerja dan Anda dapat belajar banyak seperti itu. Namun bentuknya Mengapa <X> Menarik.
Zachary K
1

Anda akan membantu karir Anda lebih banyak dengan membangun pengetahuan domain kemudian belajar banyak bahasa pemrograman. Belum lagi Anda akan perlu belajar alat tambahan untuk itu seperti bagaimana menggunakan profiler dalam bahasa Anda, sama untuk debugger, kerangka kerja GUI terbaik dan cara memprogram dengan cepat, apa yang ada di perpustakaan pihak ke-3 dengan pengorbanan dan idiom khusus bahasa.

Lebih bijaksana untuk belajar melakukan lebih banyak hal daripada banyak cara melakukan hal yang sama.

Peter Smith
sumber
1

Saya telah bekerja pada beberapa sistem di mana komponen ditulis dalam berbagai bahasa (pelaku terburuk mengharuskan saya untuk mengirimkan kode yang ditulis dalam Ada 83, C, Fortran 77, SQL, dan DCL, sedangkan pekerjaan terakhir saya mengharuskan saya untuk memberikan C ++ dan kode Java ). Jadi, ya, ada kasus dunia nyata di mana Anda perlu tahu beberapa bahasa dengan cukup baik untuk menjadi produktif di dalamnya (produktif! = Mahir; Anda tidak akan menjadi ahli dalam C ++ dan Java dan ... kecuali Anda adalah orang aneh).

Selain itu, titik meluangkan waktu untuk belajar berbagai bahasa adalah untuk membantu memisahkan konsep dari implementasi . Bagi saya, OOP tidak mulai masuk akal sampai saya bekerja dengan beberapa OOPL. Juga, di beberapa titik dalam karir Anda, Anda akan harus cepat pindah persneling dan mulai bekerja pada sesuatu yang sama sekali baru dan asing; meluangkan waktu sekarang untuk melampaui apa yang perlu Anda ketahui akan membantu membuat transisi itu lebih mudah ketika itu terjadi.

John Bode
sumber
1

Saya pikir Anda akan lebih baik belajar mempelajari beberapa bahasa yang berbeda dan kemudian setidaknya satu mendalam sebelum memulai kebutuhan untuk mempelajari setiap bahasa yang mungkin. Setelah Anda memiliki jumlah minimum, kedalaman menjadi sangat penting untuk kemajuan Anda sebagai pengembang. Saya akan melihat seseorang dengan kedalaman dalam satu atau dua bahasa dan segelintir pasangan lain daripada seseorang dengan segelintir segalanya. Mendalami kedalaman seperti mempelajari paradigma lain, itu akan mengubah cara Anda berpikir tentang pemrograman dan itu akan membuka pintu ke proyek-proyek menarik yang benar-benar kompleks.

HLGEM
sumber
0

Ini seperti belajar berbicara banyak bahasa. Mempelajari semuanya sampai pada titik berguna hampir tidak mungkin. Tetap berpegang pada yang Anda akan gunakan dan Anda akan lebih baik. Anda dapat mempelajari C ++, C #, dan Java dengan cukup baik, tetapi mencoba menekan Perl, Python, VB (bukan VB.NET), Ruby, dan JavaScript ke tingkat profesional pada saat yang sama hanya bodoh. Tidak cukup waktu dalam sehari untuk meningkatkan keterampilan Anda dalam semuanya sekaligus.

Christopher Bibbs
sumber