Apakah sakit mempelajari bit dari banyak bahasa pemrograman?

37

Saya memulai karir pemrograman saya dengan BASIC, selama kelas 9. Saya belajar sedikit BASIC dengan menulis program sederhana untuk menambah, mengurangi dan mencetak. Kemudian saya pergi ke universitas dan mengambil Informasi Komputer dan Teknik Sistem. Pada tahun pertama saya diajari C, dan saya memiliki perintah yang baik untuk itu.

Selanjutnya saya belajar C ++ di tahun kedua. Itu hanya mengajari saya beberapa pengetahuan tentang OOP. Sekarang saya sedang melakukan PHP (bersama dengan HTML). Saya belum menguasai C ++, BASIC atau PHP. Saya sekarang berencana untuk pindah ke pengembangan seluler. Tetapi saya merasa bahwa saya belum membahas semuanya dalam bahasa yang saya pelajari.

Apakah itu penting?

fuddin
sumber

Jawaban:

50

Kita semua hanya belajar sedikit bahasa pemrograman. Saya hanya akan menganggap pelaksana bahasa sebagai orang yang 10 dari 10 dalam pengetahuan bahasa.

Mempelajari banyak bahasa, dan paradigma, adalah satu-satunya cara untuk mengembangkan "rasa" untuk apa yang Anda sukai dan tidak sukai. Jika Anda hanya belajar satu bahasa, Anda bahkan tidak akan dapat benar-benar memutuskan apakah Anda bahkan suka atau tidak.

Anda benar-benar melakukannya dengan cara yang benar. Anda akan dapat menggunakan kembali dasar-dasar paling penting yang Anda pelajari di masing-masing sambil mendapatkan paparan sintaks, perpustakaan, dan kerangka kerja yang berbeda.

brian
sumber
16
Saya suka jawaban ini, kecuali itu kurang "apa yang Anda suka", dan itu lebih "alat yang tepat untuk pekerjaan itu". Tidak seorang pun harus menggunakan bahasa yang sama untuk menyelesaikan setiap masalah. Itu akan membuat pengembang perangkat lunak buruk. Setiap bahasa dan paradigma memiliki pro dan kontra.
user606723
1
Mengingat bahwa kompiler dan penerjemah memiliki bug, saya tidak berpikir secara manusia mungkin untuk mendapatkan 10 untuk sebagian besar bahasa.
jmoreno
6
Saya tidak berpikir bahkan orang-orang yang menulis kompiler C ++ mengerti C ++. Secara individual, maksud saya. Jelas secara kolektif, mereka entah bagaimana harus memahami seluruh bahasa, tetapi saya tidak berpikir bahwa ada satu orang di planet ini yang mengerti semua itu. Bahkan, anggota komite biasanya cukup jelas tentang fakta bahwa mereka semua hanya memahami bidang keahlian mereka sendiri. Demikian pula di Jawa: Martin Odersky baru-baru ini mengatakan bahwa ia percaya hanya ada 3 orang di dunia yang mengerti wildcard. Dan dari nada e-mail saya mendapat kesan bahwa dia tidak termasuk dirinya sendiri
Jörg W Mittag
2
dalam grup itu, meskipun sebenarnya ia mendesain Java Generics (bersama dengan Phil Wadler, tentu saja). Meskipun, agar adil, wildcard ditambahkan ke desainnya tanpa persetujuannya, pada kenyataannya, terhadap perbedaan pendapatnya.
Jörg W Mittag
1
@ Brian, percayalah, Anda tidak perlu tahu bahasa untuk dapat mengimplementasikan kompilernya. Anda bisa menerjemahkan spec ke dalam kode secara membabi buta. Tetapi sebagai hasilnya, Anda akan belajar setidaknya beberapa dasar bahasa - itu sebabnya saya lebih suka mempelajari bahasa baru.
SK-logic
21

Jika Anda masih di universitas, itu belum menjadi masalah bahwa Anda tidak merasa telah membahas semua bahasa yang Anda tahu. Memahami teori dasar umum di balik bahasa-bahasa ini jauh lebih penting. Setelah Anda memahami dasar-dasarnya, Anda dapat mempelajari detail bahasa lain saat Anda membutuhkannya.

FrustratedWithFormsDesigner
sumber
5
Dalam dua tahun pertama saya, saya pikir kami mengambil bahasa baru setiap 3 - 4 minggu untuk pergi dengan Pascal yang merupakan dasar dari sebagian besar pekerjaan proyek kami (1982-85) - beberapa di antaranya adalah bahasa fungsional. Bagian dari intinya adalah untuk mencoba dan memastikan bahwa kami memisahkan "pemrograman" dari "coding"
Murph
12

Saya percaya bahwa yang paling penting dalam pemrograman adalah memahami perbedaan paradigma .

Dalam pertanyaan Anda, Anda menyebutkan Pemrograman Berorientasi Objek (OOP) . Jika Anda menguasai topik ini, Anda harus dapat menjelaskannya dengan hanya menggunakan pseudo-code dan pada dasarnya beberapa representasi pemodelan grafis (seperti diagram kelas UML).

Apakah Anda memutuskan untuk menggunakan Java, C ++ atau C # (...) terserah Anda atau perusahaan tempat Anda bekerja, tetapi yang benar-benar penting adalah memahami / mengenali masalah yang berbeda dan memutuskan model terbaik untuk menyelesaikannya . Cara yang sangat penting untuk menyelesaikan masalah dalam pemrograman adalah dengan menggunakan pola desain yang dapat Anda temukan dalam buku referensi ini .

Adapun bahasa yang tertanam, saya percaya yang penting adalah untuk memahami berbagai masalah yang terkait dengan teknologi tersebut.

Secara metaforis, saya membandingkan ini dengan menulis buku ilmiah yang bagus; yang penting adalah teori yang Anda paparkan, masalah yang Anda selesaikan, dan sebagainya. Apakah Anda menulis buku dalam bahasa Inggris, dalam bahasa Prancis atau bahasa Jepang pada akhirnya tidak begitu penting.

Yang mengatakan, penting juga untuk mengetahui secara spesifik bahasa tertentu jika Anda ingin berspesialisasi dalam teknologi itu untuk mengeksploitasinya dengan sangat efisien.

SRKX
sumber
2
+1 untuk paradigma. Tidaklah penting untuk berfokus pada gula sintaksis dari bahasa X atau Y (tentu saja Anda memerlukannya jika Anda menggunakan bahasa X setiap hari di tempat kerja); apa yang berguna adalah mempelajari berbagai paradigma karena IMHO membantu Anda menjadi lebih berpikiran terbuka dan kreatif dalam pemecahan masalah.
sakisk
5

Menurut pendapat saya, ada gunanya mengubah bahasa sangat sering. Anda tidak akan pernah benar-benar menangkapnya . Terutama beberapa seperti C ++, di mana beberapa orang menghabiskan satu dekade menulis bahasa dan masih memiliki kode mereka terlihat seperti C.

Jika Anda tidak dapat menulis praktik terbaik dalam bahasa, maka jangan pindah, IMO. Itu berarti bahwa mencakup lebih dari pasangan akan membutuhkan waktu bertahun-tahun, jika tidak beberapa dekade.

DeadMG
sumber
5

Saya pikir tidak ada salahnya untuk belajar sedikit banyak bahasa yang berbeda, tetapi pada saat yang sama Anda harus belajar setidaknya satu atau dua secara mendalam.

Giorgio
sumber
3

Saya telah menggunakan banyak bahasa selama karir saya, seperti AMOS Basic, Java, C ++, PHP, VB6, Delphi dll. Hari ini saya menggunakan C #, JavaScript, Ruby dan beberapa Clojure di tempat kerja, dan saya juga bermain dengan Pyhton, Erlang, Dasar Umum dan Skema.

Tetapi musim gugur ini saya ingin membuat kalender x-mas khusus untuk blog saya, dan memutuskan untuk membiasakan diri dengan dan memecahkan masalah tertentu dalam 24 bahasa tambahan. Ini adalah pengalaman hebat, saya belajar banyak, dan saya sangat merekomendasikan melakukan ini setelah Anda memiliki pengalaman pemrograman.

Jawaban saya kepada Anda adalah ini: Pelajari beberapa bahasa dengan sangat baik (mereka harus sangat berbeda), tetapi pastikan Anda mencicipi dan membiasakan diri dengan banyak bahasa.

Hari ini penting untuk mengenal OOP dan FP (pemrograman fungsional) dengan baik, dan Anda juga harus nyaman dalam bahasa yang sangat statis dan sangat dinamis.

PS: Blog saya dalam bahasa Norwegia, tetapi jika Anda ingin melihat daftar bahasa yang saya bahas, Anda bisa melihatnya di sini .

Torbjørn
sumber
2

Saya belajar apa yang perlu saya pelajari dalam bahasa tertentu ketika saya perlu belajar sesuatu yang baru. "Pemicu" yang memberi tahu saya bahwa saya perlu mempelajari lebih dalam bahasa adalah sedikit kode yang terlihat jelek atau canggung, tampak tidak dapat dipertahankan atau sulit untuk diuji atau dikomentari. Seringkali pemicu ini menunjuk pada kurangnya pengetahuan saya tentang idiom pemrograman tertentu, gaya, struktur data dan sebagainya.

David Pointer
sumber
2

Mempelajari banyak bahasa pemrograman adalah praktik yang baik dan diperlukan saat ini; sebanyak yang Anda tidak selalu dapat menggunakan bahasa pilihan Anda untuk semuanya.

Manfaat melihat bagaimana bahasa lain melakukan sesuatu akan membantu Anda sebagai programmer; bahkan jika kadang-kadang ketika Anda melompat-lompat Anda membuat kesalahan sintaksis (misalnya, memeriksa ketimpangan !=, ~=atau <>). Anda harus berhati-hati meskipun untuk belajar lebih dari sekedar sintaksis suatu bahasa, tetapi praktik terbaik dalam suatu bahasa serta hanya keterampilan rekayasa perangkat lunak umum yang baik. Hal-hal jika Anda mempelajari C dan kemudian belajar C ++ Anda harus memastikan ketika Anda menulis kode C ++ bahwa itu dalam gaya kode C ++ (bukan hanya C dengan beberapa kata kunci baru. Itu adalah Anda memiliki beberapa kelas / objek, lebih suka referensi / pointer cerdas atas pointer mentah, dll.

dr jimbob
sumber
1
Jangan mulai saya jika If x <b> = </b> 5 Lalu. Saya harus memeriksa ulang semua kode C saya selama seminggu setelah mempertahankan apa pun yang terkait dengan BASIC.
user606723
2

ada baiknya mempelajari bahasa dari paradigma pemrograman yang berbeda setidaknya! Bahasa prosedural, deklaratif, fungsional, berorientasi objek, prototipikal, dan dinamis - setiap kelas pemrograman menawarkan sedikit wawasannya sendiri tentang cara mengatur dan memecahkan masalah. Akhirnya Anda menemukan satu atau lebih paradigma yang paling produktif dan Anda sukai, dan gunakanlah.

rgordon0
sumber
2

Tentu saja tidak. Tentu saja Anda juga ingin memastikan Anda mempelajari gaya bahasa yang berbeda. Mempelajari C # dan Java tidak akan memperluas pikiran Anda dengan cara utama apa pun, tetapi mempelajari Java dan Haskell akan melakukannya.

Lihatlah Buku Tujuh Bahasa dalam Tujuh Minggu , yang akan memandu Anda melalui intro ke Ruby, IO, Scala, Erlang, Prolog, Clojure dan Haskell. JIKA Anda menikmati bahasa, Anda akan menyukai buku itu.

Zachary K
sumber
1
Belajar C # setelah Java dapat memperluas pikiran Anda berkat pemrograman fungsionalnya (dan fitur lain yang kurang dimiliki Java). Tetapi jika itu hanya untuk belajar, Haskell mungkin akan jauh lebih baik, karena betapa fungsionalnya itu.
svick
1

Nah, C dan C ++ tidak akan membahayakan Anda dalam pemrograman seluler. Anda dapat menggunakan keduanya dengan Cocoa Touch atau Android NDK, dan kadang-kadang Anda perlu melakukannya. Juga, kadang-kadang Anda ingin karena Anda ingin menulis kode yang berjalan di beberapa platform. Dalam hal itu, dengan asumsi Anda tidak hanya menggunakan kerangka kerja pihak ketiga, Anda dapat menulis aplikasi Anda dalam C / C ++, dan kompilasi dalam pembungkus khusus platform untuk elemen asli yang diperlukan (misalnya, satu-satunya cara untuk mendapatkan konteks OpenGL pada iPhone adalah dengan menggunakan kelas CAEAGLLayer asli).

Jadi itu seperti semakin banyak alat yang Anda miliki di laci, semakin banyak opsi yang Anda miliki untuk menyelesaikan pekerjaan. Anda akan menemukan bahwa Anda memiliki preferensi untuk pekerjaan tertentu karena Anda berspesialisasi dalam berbagai jenis tugas. Jika Anda hanya melakukan hal-hal UI, C mungkin bukan favorit Anda sepanjang masa. Saya akan lebih khawatir tentang hal-hal yang ingin saya lakukan, dan kemudian belajar alat apa pun yang saya butuhkan untuk melakukannya.

Rab
sumber
1

Ini sebenarnya sama bermanfaatnya dengan belajar sedikit bahasa Prancis, Spanyol, Inggris, Arab, Hindi, dan Cina sementara tidak pernah mengenal salah satu dari mereka dengan baik.

Mehrdad
sumber
6
Saya tidak tahu apa yang ingin Anda katakan dengan itu.
svick
Anda sadar bahwa kebanyakan dari kita tidak tahu "baik" bahkan bahasa asli kita, kan?
Spidey
1

Sebaliknya, saya pikir itu menyakitkan ketika saya tidak / tidak bisa belajar bahasa pemrograman baru. Mungkin karena kurangnya waktu atau alasan lain. Sejauh yang saya lihat, programmer / pengembang perangkat lunak suka menantang bahasa, meletakkan hal-hal / produk yang lebih baik, dan ketika Anda melihat bahwa Anda selalu melakukan hal yang sama, Anda merasa tidak enak. Jadi Anda menginginkan tantangan baru, bahasa baru, sesuatu yang baru untuk dipelajari dan menempatkan lebih banyak produk dengannya.

Jadi saya pikir itu memberi saya kegembiraan untuk mengikuti bahasa baru, perpustakaan baru, pendekatan baru, teknologi baru. Tapi saya tidak punya waktu untuk mendapatkan semuanya, dan orang-orang mungkin tidak bisa masuk cukup dalam selalu. Jadi, menyakitkan untuk tidak belajar lebih banyak; tetapi tidak ada salahnya untuk mempelajari lebih lanjut.

Yasin Okumuş
sumber
0

Saya setuju dengan brian, FrustratedWithFormsDesign dan SRKX, tetapi saya ingin menambahkan bahwa selama universitas ini, memperluas pengetahuan Anda dengan berbagai bahasa pemrograman dan paradigma, adalah cara yang diinginkan untuk menjadi seorang profesional yang baik.

Sangat mustahil bahwa Anda keluar dari perguruan tinggi sebagai programmer yang dibentuk. Pemrograman adalah pekerjaan yang sulit dan Anda akan membutuhkan bertahun-tahun di industri ini bekerja bersama programmer yang baik, menghadiri program pelatihan yang baik dan pertemuan masyarakat, dan sebagian besar, Anda harus menghadapi masalah kerajinan dan banyak gagal, sampai Anda belajar cara untuk menguasai saya t.

Mempelajari banyak paradigma, berbagai bahasa, menyelesaikan berbagai masalah di wilayah kami, akan memberi Anda basis pendukung yang baik untuk mempelajari keahlian Anda sendiri, setiap hari sambil bertindak sebagai profesional di industri ini.

Anda dapat menghadiri kelas Compiler, tetapi Anda tidak akan keluar sebagai perancang bahasa, pencipta atau bahkan sebagai pengembang kompiler. Anda akan mendapatkan langkah-langkah, proses, dan masalah dan solusi dasar, dan itu akan memberi Anda keunggulan untuk mengadaptasi pengetahuan ini ke berbagai masalah.

Spidey
sumber
0

Jawaban singkat: Tidak.

Jawaban panjang: Begitu banyak pekerjaan pemrogram atau insinyur perangkat lunak atau perancang tidak bergantung pada bahasa tertentu tetapi sangat bergantung pada metodologi tertentu. Sebagai contoh, Pemrograman Berorientasi Objek sangat banyak tentang di mana hal-hal yang ada dalam memori dan dalam runtime, seberapa mudah mereka diakses, dan seberapa tersedia mereka untuk digunakan nanti (pewarisan dan enkapsulasi). Implementasinya berbeda, seperti Java yang memiliki Objek kelas bawaan tingkat atas, suka atau tidak dan C ++ tidak memiliki apa pun yang tidak Anda tentukan.

Banyak bahasa berbagi fitur (dan banyak yang berbeda). Sintaks berbeda, tentu saja, dan itu lebih sulit ketika Anda membandingkan paradigma yang sama sekali berbeda seperti imperatif versus fungsional. Tetapi pemrosesan string sebagian besar sama ke mana pun Anda pergi, begitu Anda mendapatkan sedikit pertanyaan tentang sintaks, indeks, dan mutabilitas. Bahasa apa pun dengan pengetikan statis umumnya memiliki beberapa metode casting dan paksaan, tetapi bagaimana dan kapan Anda bisa melakukannya terserah perancang bahasa.

Bahasa adalah alat. Anda hanya menempatkan lebih banyak alat di sabuk Anda. Tapi alat itu hanya sebagus pengrajin yang menggunakannya.

Sekarang, berapa banyak yang Anda pelajari adalah pilihan pribadi. Saya tidak akan pernah belajar bahasa demi belajar yang baru. Setiap pilihan untuk mempelajari bahasa baru diminta oleh persyaratan kursus (harus mengambil js, php, dan R untuk satu kelas tahun lalu), persyaratan proyek yang ada (jika 90% dari pekerjaan dilakukan dalam perl 6 sebelum Anda dipekerjakan, demikian juga sisa 10% setelahnya) atau manfaat khusus aplikasi (R over say Java dikombinasikan dengan beberapa perpustakaan bergula untuk analisis statistik).

Yang mengatakan, Anda ingin mempelajari apa yang ada di luar sana dan tersedia. Kolese saya mengajar mata pelajaran ini, Konsep Bahasa Pemrograman . Itu adalah kursus tinjauan luas, bukan matematika yang ketat atau yang terkait pengkodean, mencakup dasar-dasar apa yang mungkin dianggap praktis daripada ilmu komputer teoretis. Itu adalah kursus yang hebat dan saya berharap itu sesuatu yang ditawarkan di tahun ke-2 dan bukan ke-3. Teksnya adalah Konsep Bahasa Pemrograman . Bukan mengatakan Anda harus keluar dan membaca buku ini, tapi itu tentu akan memperluas wawasan Anda.

Justin Reeves
sumber
0

Yah, cara saya melihatnya adalah Anda tidak perlu belajar sedikit bahasa. Tetapi cobalah mempelajari fitur-fitur yang sangat mendasar yang akan diperlukan dalam bahasa lain juga.
Misalnya, konsep OOPS diperlukan dalam semua bahasa, baik itu Java , PHP , atau bahasa lainnya. Konsep
alokasi memori sangat mirip dalam banyak bahasa pemrograman. Topik seperti ini yang tidak boleh Anda lewatkan.
Setiap bahasa memiliki tata bahasa dan aturan, yang sama berlaku untuk bahasa pemrograman; Dennis Ritchie sendiri menerima kenyataan itu. Jadi seseorang harus mempelajari tata bahasa dari bahasa itu.
Tetapi menurut saya, Anda harus mempelajari faktor-faktor yang tidak umum antara dua bahasa pemrograman. Mereka akan membiarkan Anda mengidentifikasi bahasa apa yang digunakan untuk apa. C ++ adalah semua OOP dasar (Pemrograman Berorientasi Objek), jadi setelah Anda mempelajari konsep OOP , Anda mempelajari tata bahasa yang akan Anda lihat dalam PHP dan Java juga.
Alur pembelajaran saya adalah:
Visual Basic 5 (parsial) -> HTML 2.0 (parsial) -> C (parsial) -> CPP (parsial) -> Java (sebagian)
dan kemudian saya belajar bahasa C lagi diikuti oleh C ++ diikuti oleh JAVA ( selesaikan kali ini) kemudian saya pindah ke android karena saya sudah terbiasa dengan Java dan XML(sebagian) dan mempelajarinya dalam waktu yang berarti. Upaya pertama mengajar saya lebih sedikit tetapi dalam upaya kedua pastikan untuk mempelajari segala sesuatu yang akan membantu Anda lain kali.

Sandeep Pareek
sumber
posting ini agak sulit dibaca (dinding teks). Maukah Anda mengeditnya menjadi bentuk yang lebih baik?
nyamuk