Apakah layak belajar Bahasa Eksperimental? [Tutup]

25

Saya seorang programmer muda yang ingin bekerja di lapangan suatu hari sebagai programmer. Saya tahu Java, VB.NET dan C #. Saya ingin belajar bahasa baru (saat saya programmer, saya tahu bahwa itu berharga untuk memperluas apa yang saya tahu - untuk belajar bahasa yang membuat Anda berpikir secara berbeda). Saya melihat-lihat online untuk melihat bahasa apa yang umum. Semua orang tahu C dan C ++ (bahkan para muggle yang tahu sedikit tentang komputer pada umumnya), jadi saya pikir, mungkin saya harus mendorong untuk C.

C dan C ++ bagus tapi sudah tua. Hal-hal seperti Haskell dan Forth (dll. Dll.) Sudah tua dan telah kehilangan popularitasnya. Saya takut belajar C (atau bahkan C ++) untuk alasan yang sama. Java juga cukup tua dan lambat karena dijalankan oleh JVM dan tidak dikompilasi ke kode asli.

Saya sudah menjadi pengembang Windows cukup lama. Saya baru-baru ini mulai menggunakan Java - tetapi hanya karena itu lebih fleksibel dan menyebar ke tempat lain. Masalahnya adalah bahwa itu tidak terlihat seperti bahasa yang sangat berguna karena alasan berikut:

  • Tujuan yang paling sering digunakan adalah untuk aplikasi web dan aplikasi ponsel (khususnya Android)
  • Sejauh produk aktual dibuat dengan itu, satu-satunya hal yang terlintas dalam pikiran adalah Netbeans, Eclipse (hore untuk membuat dan IDE dengan bahasa untuk IDE - seperti membuat halaman web untuk menulis HTML / CSS / Javascript), dan Minecraft yang kebetulan menyenangkan tapi laggy dan bipolar sejauh spesifikasi komputer. mendukung.
  • Selain itu digunakan untuk server tetapi heck - saya tidak hanya ingin membuat / mengkonfigurasi server .

Bahasa .NET bagus, namun:

  • Orang-orang tertawa jika saya menyebut VB.NET atau C # dalam percakapan serius.
  • Ini bukan lintas platform kecuali Anda menggunakan MONO (yang masih dalam pengembangan dan memiliki beberapa perbaikan yang harus dilakukan).
  • Tidak memiliki barang tingkat rendah karena, seperti Java dengan JVM, dijalankan / dikelola oleh CLR.

Pikiran pertama saya adalah mempelajari sesuatu seperti C dan kemudian menggunakannya untuk loncatan ke C ++ (hanya untuk memastikan saya akan memiliki pemahaman / basis yang kuat), tetapi seperti yang saya katakan sebelumnya, semakin lama semakin lama.


Apa yang Saya Pandang Ke

Fantom terlihat bagus. Ini seperti perantara yang baik antara dua bahasa favorit saya dan bahkan memungkinkan saya mempublikasikan antara keduanya secara bergantian, tetapi, tidak seperti apa yang saya inginkan, itu mengkompilasi ke CLR atau JVM (tergantung pada apa yang Anda terbitkan), bukannya kompilasi lengkap .

D juga terlihat bagus. Sepertinya bahasa yang sangat berguna dan darimultIPLEsumber tampaknya benar-benar lebih baik dari C / C ++. Saya akan langsung menggunakannya, tetapi saya masih ragu dengan keberhasilannya karena itu jelas tidak terlalu mainstream pada saat ini.

Ada beberapa orang lain yang terlihat cukup baik yang berfokus pada hal-hal lain seperti Opa dengan pengembangan web dan Go by GOOGLE.


Pertanyaan saya

Apakah perlu belajar bahasa "eksperimental" ini? Saya telah membaca pertanyaan lain yang mengatakan bahwa jika Anda tidak terus-menerus belajar bahasa dan terbuka untuk semua bahasa yang Anda tidak berada dalam pola pikir yang benar untuk pemrograman. Saya mengerti ini dan saya mungkin masih belum mengerti, tetapi sebenarnya, jika suatu bahasa tidak akan menjadi arus utama, haruskah saya menghabiskan waktu saya belajar sesuatu yang lain? Saya tidak ingin belajar bahasa pemrograman lama (atau yang akan segera tua). Saya tahu bahwa banyak orang melihat ini sebagai sesuatu yang penting, * tetapi apakah ada di antara Anda yang pernah benar-benar mempertimbangkan (dengan asumsi Anda belum tahu) FORTRAN? Tujuan saya adalah tetap terkini untuk memastikan saya sukses di masa depan.


Penolakan

Ya, saya seorang programmer muda, jadi saya mungkin membuat banyak pernyataan naif dalam pertanyaan saya. Jangan ragu untuk mengoreksi saya di APA SAJA! Saya harus mulai belajar di suatu tempat jadi saya yakin banyak pengetahuan saya cukup samar untuk menyebabkan pernyataan yang salah atau kekurangan dalam pemikiran saya. Silakan tinggalkan perasaan yang Anda miliki di komentar.


Hasil...

Saya benar-benar kagum dengan tanggapan yang luar biasa, kebanyakan dari mereka dengan sangat baik menunjukkan kesalahpahaman dan kesalahpahaman saya. Saya telah belajar cukup banyak dari ini dan saya senang semoga memanfaatkan semua yang telah saya pelajari! Saya mungkin akan mulai belajar Haskell berikutnya (bahasa yang tidak terlalu tua, meskipun lebih dari 20 tahun - hahaha ) dan kemudian mulai mencari beberapa opsi lain di sekitar saya.

Terima kasih

Freesnöw
sumber
10
"pelajari kelima Python, C / C ++, Java, Perl, dan LISP" (Eric Raymond, Cara Menjadi Seorang Peretas -> Keterampilan Peretasan Dasar -> 1. Pelajari cara memprogram. )
gnat
7
Perhatikan bahwa menjadi "tua" secara otomatis tidak berarti "buruk" secara default. Beberapa pemrograman yang paling fantastis sejauh ini dilakukan pada C64 30 tahun yang lalu.
8
FWIW hampir setiap bahasa telah menggunakan - jika seseorang menertawakan Anda karena menggunakan hampir semua bahasa (Java lambat, .Net adalah untuk $ pelacur, Haskell tidak praktis, C ++ terlalu tua dll) menertawakan mereka dan memberi tahu mereka tentang menggunakan alat yang tepat untuk pekerjaan;)
Martin
6
Di mana Anda mendapatkan "Haskell dan ... telah kehilangan popularitas" dari?
leftaroundabout
13
Untuk seorang programmer muda, Anda memiliki terlalu banyak asumsi. Singkirkan mereka, mereka mengaburkan pikiran Anda.
Matthieu M.

Jawaban:

29

Masalahnya dengan belajar bahasa yang berbeda secara drastis bukan tentang belajar bahasa, ini tentang mendapatkan paparan berbagai pendekatan masalah. Alat untuk kotak alat.

Satu hal yang perlu diperhatikan adalah bahwa Haskell tidak terlalu tua dan itu sebenarnya adalah kandidat yang sangat baik untuk seseorang yang hanya terbiasa dengan bahasa umum. Bahkan bahasa yang sangat tua seperti Lisp sangat berguna untuk dipelajari karena pengaruhnya terhadap banyak hal.

Juga, Java dan .Net tidak ditafsirkan dan saya harap Anda membuat beberapa asumsi yang salah berdasarkan kesalahan pemberian label itu.

Telastyn
sumber
Woops, maaf tentang masalah yang ditafsirkan. Saya mencampur dua pernyataan oxymoronic yang berbeda di sana. Saya sudah memperbaikinya dalam pertanyaan itu sendiri.
Freesnöw
19
Nah, Haskell adalah lebih tua dari, misalnya, Java, meskipun. Tapi, ya, itu tidak berarti sudah ketinggalan zaman. Bahkan, sistem tipenya masih sekitar 2 dekade di depan Jawa.
Jörg W Mittag
5
@ JörgWMittag: Saya pikir itu mengatakan lebih banyak tentang Jawa daripada tentang Haskell.
Tikhon Jelvis
1
Saya memprogram hanya di Haskell dan Java ... tetapi untuk bersikap adil, tidak ada bahasa utama yang memiliki sistem tipe yang mendekati Haskell. (Dan saya harus mengatakan, OP ..._banyak_banyak barang dari apa yang Anda sebutkan berjalan di Jawa.)
Louis Wasserman
1
Haskell sudah berusia lebih dari 20 tahun sekarang, dan standar Haskell sama tuanya dengan standar C ++ (keduanya dari 1998).
fredoverflow
23

Tetap Bugar: Dapatkan Latihan Reguler

Latihan membuat sempurna.

Semakin banyak kode yang Anda tulis DAN baca , semakin dekat Anda dengan pencerahan / penguasaan sebagai programmer / pengembang / insinyur perangkat lunak / guru / ninja / pengrajin / peretas / buzzword-of-choice. Dengan tidak hanya coding dan membaca lebih banyak, tetapi juga mencoba cara baru kami menulis kode, semakin Anda berpikiran terbuka (semoga) tetap ada.

Bacaan yang Disarankan:

Belajar Tentang Paradigma Baru dan Fitur Bahasa

Mungkin Anda tidak akan dapat menerjemahkan apa yang Anda gunakan di Super-Language-X baru ke Enterprise-Language-Y Anda, tetapi mungkin Anda akan dapat mengenali kapan itu bisa cocok. Mungkin Anda akan tahu kapan harus mengintegrasikan teknologi atau tumpukan yang berbeda dalam proyek Anda agar sesuai dengan tujuan tertentu. Atau mungkin Anda akan tahu cara menggunakan fitur bahasa Y untuk meniru fitur keren dari bahasa X, dan memperbaiki kode Anda untuk mendapat manfaat darinya (dan berpotensi mencerahkan rekan kerja lain di sepanjang jalan).

Misalnya, Anda bisa menemukan prinsip-prinsip FP yang menarik dan ingin mengadaptasinya ke Jawa, yang bisa dibilang bukan desain FP .

Bacaan yang Disarankan:

Jadilah Jack of All Trades ... Master of Some?

Anda tidak tahu bahasa mana yang akan menjadi kendala saat berada di tahap "eksperimental", jadi Anda tidak perlu terlalu khawatir tentang bertaruh pada salah satu dari mereka. Kemungkinannya adalah, orang lain akan membuat taruhan yang sama dan akan tertarik ketika mereka melihat ini muncul di resume Anda. Tambahkan satu alat ke sabuk Anda. Dalam kasus kami, tidak ada banyak masalah dengan beratnya pada akhirnya.

Tentu, Anda tidak bisa menjadi master semua perdagangan. Tetapi Anda bisa menjadi ahli dalam hal ini, dan cukup bagus dalam hal lainnya. Anda sedang belajar kerajinan, dan kami memiliki banyak sisi. Melakukan latihan rutin, menghadiri lokakarya, mengambil buku, menulis proyek hewan peliharaan baru dan hal-hal serupa lainnya adalah cara kami untuk mengikuti laju perubahan yang terus meningkat di bidang kami.

Bacaan yang Disarankan:

Tetap beradaptasi

Jika Anda tidak belajar beradaptasi, sulit untuk melakukannya saat Anda membutuhkannya. Dengan terus-menerus mempelajari hal-hal baru, Anda menjadi lebih baik dan lebih baik setiap kali mengambil barang-barang baru (selama Anda tidak membatasi diri pada tantangan yang sangat mirip).

Ini seperti lagu Oasis "Stay Young" : Tetap muda dan tak terkalahkan .

Jika Anda bisa beradaptasi, Anda bisa bertahan.

Bacaan yang Disarankan:

Tetap Terlihat: Memahami Radar Perekrutan-Agensi

Mereka menggunakan kata kunci dan teknologi sebagai kotak centang. Kami menggunakannya sebagai pot madu untuk perekrut yang tidak berpikiran.

Ini bekerja dua arah. Selama Anda benar-benar mengetahui barang-barang Anda, maka memiliki banyak barang di resume Anda adalah baik. Ini menunjukkan kemampuan beradaptasi dan luasnya pengetahuan Anda. Plus, jika Anda benar-benar menguasai beberapa dari ini, dan layak dalam beberapa lainnya, ini memungkinkan Anda untuk memodulasi berbagai versi resume Anda untuk berbagai posisi dan pekerjaan.


Topik SE Bermanfaat Lainnya

haylem
sumber
Jika Anda akan membaca Beating the Average karya Paul Graham , (atau apa pun yang ia tulis tentang masalah pemrograman, dalam hal ini,) bawa dengan sebutir garam. Banyak hal yang dia katakan tentang praktik pemrograman adalah 50% benar dan 50% salah berbahaya.
Mason Wheeler
@MasonWheeler: Ini kontroversial, seperti banyak hal yang dapat Anda temukan di sana dari "raksasa" industri yang dikenal, diakui sendiri atau tidak. Banyak orang akan tidak setuju dengan tulisan Zed Shaw juga, seperti yang lain dari Norvig. Semuanya harus didekati dengan pikiran kritis: Saya menganggapnya sebagai pemberian untuk apa pun, dan menganggap (harapan) begitu juga orang-orang pada tingkat ini. Banyak penulis akan menyajikan topik dalam situasi tertentu, tidak cocok untuk semua orang. Bahkan, Anda melihat ini di sini setiap hari dalam jawaban juga, namun dengan kekuatan "populer" mereka akan dihormati sebagai jawaban "terbaik". Tetap saja, ini informasi.
haylem
8

Untuk memperluas jawaban Telastyn, ini memang tentang paparan paradigma pemrograman yang berbeda . Sebagai contoh, ini bukan tentang belajar pemrograman logika, tetapi untuk:

  • learning to learning (berlatih belajar keterampilan baru)
  • latih otak Anda untuk berpikir dengan cara-cara baru
  • mungkin mendapatkan pengetahuan yang kurang populer (atau bahkan esoteris) yang hanya dimiliki sedikit orang dan bisa berguna
    • atau setidaknya buat mereka terkesan dengan pengetahuan teknis Anda :)
  • dan tentu saja, ini memberikan wawasan teknis yang berharga. Mengapa C # lebih populer daripada D? Bisakah C ++ melakukan semua yang D dapat lakukan? Bisakah D berbuat lebih banyak, atau lebih seperti gula sintaksis?

http://skilldrick.co.uk/2011/02/why-you-should-learn-brainfuck-or-learn-you-a-brainfuck-for-great-good/

Alasan lain yang baik untuk belajar brainf * ck adalah untuk memahami bagaimana dasar dari bahasa pemrograman Turing-complete. Argumen umum ketika pemrogram membandingkan bahasa adalah "baik mereka semua Turing-selesai", yang berarti bahwa apa pun yang dapat Anda lakukan dalam satu bahasa dapat Anda lakukan dalam bahasa lain. Setelah Anda belajar brainf * ck, Anda akan mengerti betapa sulitnya menggunakan bahasa Turing-lengkap, dan bagaimana argumen itu tidak berpengaruh.

http://norvig.com/21-days.html (Peter Norvig)

Pelajari setidaknya setengah lusin bahasa pemrograman. Sertakan satu bahasa yang mendukung abstraksi kelas (seperti Java atau C ++), bahasa yang mendukung abstraksi fungsional (seperti Lisp atau ML), bahasa yang mendukung abstraksi sintaksis (seperti Lisp), bahasa yang mendukung spesifikasi deklaratif (seperti templat Prolog atau C ++), satu yang mendukung coroutine (seperti Icon atau Skema), dan yang mendukung paralelisme (seperti Sisal).

Astyanax
sumber
7

Pikiran pertama saya adalah belajar sesuatu seperti C dan kemudian menggunakannya untuk loncatan ke C ++ (hanya untuk memastikan saya akan memiliki pemahaman / basis yang kuat), tetapi seperti yang saya katakan sebelumnya, semakin lama semakin lama.

Nah, ini adalah tumpukan fallacy yang sangat besar. Orang yang tahu C memiliki waktu yang lebih sulit untuk belajar C ++, karena hampir semua yang mereka pikir mereka tahu tentang bagaimana menggunakan bahasa adalah tumpukan kesalahan yang besar. Hampir tidak ada C idiomatik yang bahkan C ++ bagus. Anda lebih baik hanya belajar C ++ dari awal. Orang-orang seperti saya yang menyumbangkan waktu mereka untuk membantu orang lain belajar C ++ menghabiskan sebagian besar waktunya untuk mencoba mengajar orang-orang untuk menghentikan kebiasaan C mereka.

Adapun popularitas, well, C ++ sedang mengalami sedikit kemunculan kembali baru-baru ini. Orang-orang memperhatikan bahwa sebenarnya, kinerja itu penting, banyak, dan Anda tidak bisa lolos dengan menjalankan setiap komponen sebagai komponen yang dikelola, dan C ++ Modern (terutama dengan C ++ 11) sama sekali tidak seperti sampah C yang mereka pikir merupakan , dan itu benar-benar tidak buruk sama sekali. Itu tidak benar-benar bertambah tua. Semakin baru. Standar baru ini merupakan peningkatan besar- dan tidak ada bahasa pengganti yang cocok, baik saat ini atau dalam pipa, untuk banyak area C ++ digunakan sekarang. Ini tidak kalah pentingnya karena tidak ada bahasa dengan interoperabilitas C ++ yang layak (bahkan C ++ sendiri), sehingga sulit untuk bermigrasi jauh dari basis kode C ++ yang ada.

Orang-orang tertawa jika saya menyebut VB.NET atau C # dalam percakapan serius.

Dapatkan orang baru. AFAIK, VB.NET tidak benar-benar ada karena alasan apa pun kecuali untuk membantu bermigrasi jauh dari VB6 dan tidak benar-benar tujuan yang layak pada saat itu adalah haknya sendiri, tetapi C # adalah bahasa nyata. Ini agak seperti Java, kecuali mereka kemudian menambahkan fitur bahasa aktual dan beberapa perpustakaan yang bagus. C # adalah bahasa yang sangat populer, didukung dengan baik dengan alat yang sangat baik di VS, yang tidak menyedot yang buruk, dan merupakan hal yang solid, jika tidak luar biasa, untuk dipelajari.

Ini bukan lintas platform kecuali Anda menggunakan MONO (yang masih dalam pengembangan dan memiliki beberapa perbaikan yang harus dilakukan).

MONO cukup stabil. Plus, pada akhirnya, 90% konsumen desktop (atau apakah itu 80%?) Menjalankan Windows sekarang. Jika Anda akan mengembangkan aplikasi desktop, ini pertanyaan terbuka, apakah pengguna non-Windows sepadan dengan waktu untuk mendukung, bahkan jika Anda menggunakan bahasa lintas-plat.

Pada akhirnya, Anda bisa mendapatkan banyak dari belajar bahasa seperti C ++ atau Haskell, yang berfokus pada teknologi kompiler yang kuat daripada runtime besar.

Hanya saja, jangan pilih PHP. Satu-satunya hal yang dapat Anda pelajari dari itu adalah bagaimana tidak membangun bahasa.

DeadMG
sumber
1
Persentase signifikan dari penambahan terbaru untuk standar C ++ hanya ada - seperti persentase tambahan yang signifikan di masa lalu - untuk menambal kekurangan C ++ yang ada. Referensi nilai, misalnya, menambahkan banyak kompleksitas tambahan untuk mengatasi banyak masalah kinerja dan kompleksitas yang terkait dengan copy constructor, yang hanya ada karena C ++ memungkinkan objek untuk digunakan sebagai tipe nilai, yang 100% sepenuhnya salah dan ada alasan bagus mengapa tidak ada bahasa OO lain yang melakukan itu.
Mason Wheeler
@MasonWheeler Setidaknya C #, D dan Eiffel memungkinkan objek sebagai tipe nilai. Dan RAII sangat bagus untuk pemrograman sistem!
fredoverflow
@MasonWheeler: Referensi nilai juga memungkinkan penerusan yang sempurna, dan tipe hanya bergerak. Kinerja hanyalah satu dari tiga penyebab utama pengenalan mereka. Objek nilai-diketik baik-baik saja. Plus, tentu saja, Anda dapat menulis objek yang diketikkan dengan referensi sendiri di C ++ semau Anda.
DeadMG
Juga, itu lucu bagaimana bahkan dengan semua masalah kinerja itu, C ++ masih merupakan bahasa tercepat di sekitar.
DeadMG
1
@ FredOverflow: Di C #, semua objek adalah tipe referensi. Struct dapat berupa tipe nilai, tetapi objek tidak bisa, dan ini untuk alasan yang sangat bagus: jika objek digunakan sebagai tipe nilai, Anda melempar kunci inggris ke dalam warisan dan polimorfisme dan akhirnya harus menggunakan segala macam peretasan yang jelek seperti copy constructor, di mana menugaskan (atau meneruskan) objek turunan ke variabel tipe induk tidak benar-benar menetapkan objek itu. Ini benar-benar mengacaukan substitusi Liskov, yang merupakan titik menggunakan OOP di tempat pertama. Itu ide yang mengerikan, dan aku senang itu tidak pernah berhasil.
Mason Wheeler
6

Beberapa komentar tentang apa yang Anda katakan ...

1) Setiap programmer harus belajar C, meskipun sudah lama. Ini adalah bahasa yang bagus untuk mendekati mesin. Dari saran Joel kepada siswa CS ....

Belajar C sebelum lulus

Bagian dua: C. Perhatikan saya tidak mengatakan C ++. Meskipun C menjadi semakin langka, itu masih merupakan bahasa pergaulan programmer yang bekerja. Ini adalah bahasa yang mereka gunakan untuk berkomunikasi satu sama lain, dan, yang lebih penting, itu jauh lebih dekat dengan mesin daripada bahasa "modern" yang akan Anda ajarkan di perguruan tinggi seperti ML, Java, Python, apa pun sampah trendi yang mereka ajarkan ini hari. Anda perlu menghabiskan setidaknya satu semester untuk mendekati mesin atau Anda tidak akan pernah bisa membuat kode efisien dalam bahasa tingkat yang lebih tinggi. Anda tidak akan pernah bisa bekerja pada kompiler dan sistem operasi, yang merupakan beberapa pekerjaan pemrograman terbaik. Anda tidak akan pernah dipercaya untuk membuat arsitektur untuk proyek skala besar. Saya tidak peduli seberapa banyak yang Anda ketahui tentang kelanjutan dan penutupan dan penanganan pengecualian: jika Anda tidak dapat menjelaskan alasannya sementara (* s ++ = * t ++); menyalin string, atau jika itu bukan hal yang paling alami di dunia untuk Anda, yah, Anda pemrograman berdasarkan takhayul, sejauh yang saya ketahui: seorang dokter medis yang tidak tahu anatomi dasar, lulus resep berdasarkan apa yang dikatakan bayi penjualan farmasi akan bekerja.

2) Bahasa bisa baik untuk mempelajari pola pikir, bahkan jika mereka tidak umum digunakan. Pelajari Skema (atau LISP) untuk memahami pemrograman fungsional, bahkan jika itu tidak trendi. Dari pos lain di forum ini .

Selamat, kedengarannya (bagi saya) seperti Anda mungkin pergi ke salah satu dari sedikit sekolah yang benar-benar mencoba untuk mengajarkan ilmu komputer. Skema Belajar sebagai bahasa pertama adalah (IMO) hal yang sangat bagus. Tidak, ini tidak komersial seperti banyak orang lain, tetapi ini adalah bahasa yang sangat baik untuk mempelajari esensi nyata dari ilmu komputer. - Jerry Coffin 20 Okt '11 jam 3:32

C, C ++ dan Java adalah produk sampingan industri ilmu komputer. Seluruh akar skema dalam ilmu komputer. Bahasa-bahasa yang digunakan secara komersial banyak berkaitan dengan ilmu komputer seperti halnya McDonalds berkaitan dengan masakan. - JasonTrue 20 Okt '11 jam 5:30

Orang-orang ini benar; Anda membingungkan pemrograman komputer dengan ilmu komputer - seperti kata Dijkstra, itu seperti konstruksi teleskop yang membingungkan dengan astronomi. Skema adalah tentang bahasa terbaik yang ada untuk mempelajari konsep dasar dalam ilmu komputer. Jika Anda berharap mengambil gelar ilmu komputer adalah mempelajari cara menulis aplikasi lini bisnis di Jawa, Anda mungkin terdaftar di program yang salah. - Eric Lippert 20 Okt '11 jam 7:40

Hampir semua pengembang yang saya tahu telah belajar C / C ++ sendiri. Anda tidak perlu universitas untuk itu. - mouviciel 20 Okt '11 jam 7:48

Untuk alasan yang sama, kursus zoologi mengajarkan biologi evolusi, anatomi, dan perilaku hewan daripada bagaimana membersihkan kandang gajah - jk. 20 Okt '11 jam 7:58

Sekarang meskipun menyerang premis asli Anda, saya pikir Anda harus dipuji atas keingintahuan Anda. Terlalu banyak orang menjadi usang karena kurangnya rasa ingin tahu. Mengambil keuntungan dari pengembangan pribadi Anda adalah pertanda bagus bahwa Anda akan berkembang dengan baik. Orang-orang yang paling banyak belajar adalah mereka yang mau terus bertanya bagaimana cara kerjanya.

MathAttack
sumber
1
"Hampir semua pengembang yang saya tahu telah belajar C / C ++ sendiri. Anda tidak perlu universitas untuk itu.": Sama di sini. Di universitas saya, mereka memberi kami tugas di C, tetapi tidak memberi kami kursus C. Mereka hanya berharap kami siswa Ilmu Komputer untuk mendapatkan buku dan mempelajarinya.
Giorgio
1
Harus belajar C cukup siksaan. Simpati saya.
DeadMG
2
Sebenarnya belajar C adalah bagian yang mudah, siksaan yang sebenarnya dimulai ketika kami harus pindah ke C ++. ;-)
Giorgio
3

Setiap bahasa yang Anda pelajari akan berubah dalam 5 tahun ke depan. Ini bukan tentang belajar bahasa yang menurut Anda mungkin ada sebentar, tetapi belajar CARA untuk belajar. Semakin banyak terpapar belajar bahasa dan proses belajar bahasa itu akan sangat membantu Anda dalam jangka panjang!

Perusahaan terakhir tempat saya bekerja menggunakan bahasa in-house mereka sendiri. Itu mirip dengan visual basic tetapi tidak sama. Hanya karena saya tahu bahasa lain, saya bisa mengambil bahasa mereka jauh lebih cepat daripada karyawan lain.

Saya belajar bahasa Jepang setelah saya belajar C ++, BASIC, Pascal, dan saya dapat mengatakan bahwa belajar bahasa komputer dan bahasa asing membutuhkan keterampilan yang sama. Keterampilan itu bisa hilang atau diasah. Jika Anda memiliki drive, teruskan dan pelajari bahasa baru!

(ps. untuk mempelajari FORTRAN atau perakitan, saya pikir sangat berharga untuk setidaknya mengambil satu semester dari bahasa yang lebih lama. Ini membuat Anda berpikir tentang hal-hal yang Anda anggap remeh dalam bahasa yang lebih baru, hal-hal seperti bendera, alokasi memori, dan semacamnya. .)

BillyNair
sumber
3

Anda sebaiknya belajar bahasa "lama" sebanyak mungkin, jika Anda ingin menjadi seorang programmer. Mulailah dengan Lisp, dapatkan pemahaman yang baik tentang Forth, perhatikan baik-baik evolusi semua bahasa Wirth, evolusi Fortran, naik turunnya Prolog, menyelinap ke dalam ekosistem Ada yang rahasia, dapatkan senjata rahasia Anda dari mempelajari Occam. Mengejar "arus utama" adalah hal paling bodoh yang bisa dilakukan oleh seorang calon programmer.

Logika SK
sumber
+1: Saya sepenuhnya setuju. Banyak ide menarik yang saya dapatkan saat bereksperimen dengan bahasa yang kurang umum seperti Haskell, Skema, Scala, SML, dll.
Giorgio
2

Saya setuju dengan Anda pada bagian paparan hal. Meskipun saya tahu Java, C, C ++, Javascript, Python, Ruby dan sedikit. NET (terutama karena saya membenci apa pun M $ <- pendapat pribadi) Saya harus mengatakan bahwa saya sangat suka pemrograman dalam D.

D memiliki set fitur yang sangat bagus (kebanyakan dari mereka diimplementasikan dalam C ++ / Java (bahasa yang memiliki abstraksi kelas) dll) tetapi satu hal yang paling saya sukai adalah generik dan delegasi (membuatnya mudah untuk mengimplementasikan panggilan balik). Selain itu, Anda mendapatkan sintaks yang lebih sederhana untuk dibandingkan dengan C ++. D memiliki pengumpul sampah yang sangat efisien, meskipun Anda dapat memilih untuk menangani memori sendiri (terutama ketika berinteraksi dengan modul C / C ++). Meskipun D tidak memiliki banyak modul kontribusi pengguna yang seharusnya tidak menjadi penghalang untuk masuk. Anda dapat dengan mudah berinteraksi dengan pustaka C / C ++ yang ada (yang sangat penting) sehingga membuatnya berlebihan untuk kebutuhan modul.

D memiliki perpustakaan standar sendiri (Phobos) yang melayani kebutuhan untuk semua masalah pemrograman umum. Ada juga perpustakaan alternatif ( Tango-D2 ) yang dapat Anda gunakan baik dengan Phobos atau dengan sendirinya. Jika Anda seorang pengembang web dan perlu menulis server berbasis acara, Tango memiliki abstraksi Pemilih yang bagus (tango.io.Selector hanya untuk select (), poll ((), epoll ()). Saya telah menemukan itu berfungsi lebih baik daripada libev.

Shripad Krishna
sumber
Bukannya saya tidak setuju untuk belajar D, tetapi bagi seseorang yang sudah tahu mengetik secara statis, OO dan bahasa prosedural, non-level rendah, tentu saja lebih berharga untuk mempelajari bahasa yang menekankan paradigma yang berbeda atau sedikit lebih dekat dengan logam. Tidak banyak yang eksperimental tentang D, baik.
leftaroundabout
1
Sepakat. Saya pikir pertanyaan OPs berpusat di sekitar "eksperimental" menjadi sesuatu yang belum stabil / mendukung dukungan perusahaan / yang tidak mainstream. Dan bahkan jika Anda pergi untuk "eksperimental" menjadi implementasi paradigma yang berbeda saya kira hanya ada beberapa paradigma di luar sana. Dan sebagian besar bahasa menerapkan satu atau yang lain. Kemudian kita sampai pada bahasa mana yang lebih baik / lebih cepat / lebih mudah digunakan / lebih baik untuk pekerjaan yang ada. Faktor-faktor ini berbeda dari programmer ke programmer.
Shripad Krishna
1

Bahasa dikembangkan untuk memecahkan masalah dalam beberapa jenis domain (setidaknya pada awalnya). Jika Anda tidak menghadapi masalah yang tidak dapat diselesaikan oleh alat Anda dengan cara yang Anda sukai, Anda akan memalu papan kayu yang berharap menjadi tukang kayu. Cobalah untuk memahami jenis masalah yang coba dipecahkan oleh bahasa. Satu-satunya perbedaan antara bahasa "eksperimental" dan bahasa cowok keren baru adalah uang yang mendukungnya, misalnya Go dari google dan Dart. Jika mereka dikembangkan di halaman belakang saya, mereka mungkin akan mati di beberapa forum dan hanya itu. Mereka hanya bertahan hidup jika mereka pandai menjelaskan masalah yang mereka coba selesaikan. Atau sebaliknya, seperti Perl dan C ++, yang piawai dalam cara menyelesaikan masalah agar tetap hidup. Dan saya mungkin menyarankan belajar Lua, itu bahasa yang dibuat untuk menyematkan program di dalam, itu sangat cepat dan ringan, yang akan memberi Anda alat untuk memecahkan masalah besar atau kecil yang beberapa bahasa seperti Jawa tidak dapat memecahkan dengan cara yang mudah. Mengambil contoh bahasa Jepang, jika Anda hanya mempelajari sintaks, tata bahasa dan huruf, mengabaikan budaya, Anda tidak akan pernah mengerti mengapa itu begitu rumit, dan pada akhirnya melupakan semuanya. Itu tidak memecahkan apa pun untuk Anda.

alfa64
sumber
1

Mempelajari berbagai bahasa akan memberi Anda pandangan yang lebih luas tentang pemrograman. Penekanan pada "berbeda" - mis. Belajar C # dan Java tidak akan mengajarkan Anda lebih dari sekadar belajar salah satunya saja. Tetapi belajar C # atau Java, dan bahasa fungsional (misalnya) akan.

Karena itu, sebagai programmer muda, saya pikir Anda akan mendapatkan lebih banyak nilai dari mengenal satu bahasa dengan sangat kuat, sebelum terpental melihat berbagai jenis bahasa. Tidak sepenuhnya jelas dari pertanyaan Anda seberapa baik Anda mengenal Java, VB.NET dan C #. Apakah Anda yakin bahwa jika Anda menyerang proyek menggunakan salah satu bahasa di atas, hambatan Anda adalah proyek itu sendiri, bukan pengetahuan Anda tentang bahasa itu? Jika Anda akan menghabiskan lebih banyak waktu bertanya pada diri sendiri "bagaimana saya melakukan ini dalam bahasa ?" daripada menghabiskan waktu memikirkan masalah yang sebenarnya, maka Anda mungkin perlu lebih fokus pada salah satu bahasa Anda saat ini.

Dan secara pribadi saya pikir Anda harus mengambil pendekatan pragmatis untuk memutuskan yang mana. Java digunakan untuk aplikasi Android? Hebat, jika membuat aplikasi Android adalah sesuatu yang Anda minati. Tidak relevan jika tidak. C # tidak cocok untuk pengembangan non-Windows? Berita buruk jika Anda tertarik mengembangkan Linux. Tidak relevan jika Anda tidak. Dan seterusnya.

Dan bahasa "percobaan" yang Anda sebutkan? Secara pragmatis, mereka akan menjadi orang yang tidak cocok ketika harus bekerja dengan orang lain - Anda mungkin akan menemukan seribu orang yang tahu C # atau Java untuk setiap orang yang tahu Fantom. Untuk proyek pribadi, ini tidak selalu menjadi masalah. Jika tujuan Anda adalah untuk meningkatkan kemampuan kerja Anda, itu adalah.

Carson63000
sumber
1

Anda bisa mengatakan bahwa belajar memprogram dalam bahasa seperti Postscript atau APL bisa dibilang buang-buang waktu terutama karena kemungkinan Anda pernah menggunakan pengetahuan itu mendekati nol. Tetapi dengan nada yang sama, Anda bisa berpendapat bahwa Ruby dan Python adalah buang-buang waktu jika Anda tidak pernah bermaksud menggunakannya untuk apa pun.

Tetapi beberapa orang akan mengatakan bahwa belajar Lisp adalah sia-sia, meskipun Anda mungkin harus menulis Lisp sebagai Postscript; tetapi mempelajari Lisp mengajarkan Anda untuk berpikir secara berbeda tentang masalah Anda (mudah-mudahan), itulah sebabnya sebagian besar programmer akan memberi tahu Anda bahwa itu sepadan dengan waktu Anda.

Namun, saya tidak pernah menghindar untuk belajar bahasa baru karena investasi waktu yang diperlukan benar-benar hanya satu atau empat jam. Dan kegunaan untuk bahasa seperti Lua muncul di tempat yang paling tidak biasa , dan Anda tidak akan pernah mengenalinya jika Anda tidak menghabiskan beberapa jam membaca contoh-contoh.

Saat Anda melihat bahasa baru, bacalah sedikit tentang apa manfaatnya. Jika ceruk bahasa favorit Anda tidak terlalu baik, maka luangkan waktu sehari untuk mempelajari dasar-dasarnya. Ini tentu saja menghabiskan waktu lebih baik daripada menonton musim 17 The Bachelor atau bagaimanapun Anda dapat membuang waktu. Dengan begitu, jika Anda memiliki kegunaan untuk itu, itu dapat muncul dalam pikiran dan Anda tahu di mana mencari tahu lebih banyak.

Secara pribadi saya sangat merekomendasikan untuk melihat Go. Saya telah menggunakannya untuk menulis program satu halaman yang berkinerja lebih baik dari apa yang akan memakan waktu tiga hari dan 13 perpustakaan pihak ketiga di C atau C ++, dan bahkan tidak mungkin dilakukan dengan Python, C #, Ruby, dll. oleh orang-orang yang benar-benar, sangat tahu barang-barang mereka.

tylerl
sumber
-1

Pilih yang dengan tipe berbeda. Kelompokkan mereka berdasarkan fitur, dan pilih satu di setiap grup. Jika Anda ingin melakukan ini secara profesional, pilih satu yang digunakan (jadi C ++ lebih D untuk bahasa dikompilasi diketik secara statis dengan metaprogramming template).

Poor D, itu bahasa yang baik, tetapi tidak memiliki aplikasi pembunuh yang dimiliki C ++: kompatibilitas mundur hampir penuh dengan bahasa # 1 saat itu (kasus C untuk C ++). Itu bagus, tapi fakta kecil yang penting itu mungkin akan menurunkan D ke status tontonan di buku-buku sejarah.

segera
sumber
-2

C mungkin sudah tua, tetapi masih sangat kuat dan menarik, belajar C akan banyak membantu Anda di masa depan "pemrograman" Anda.

Java tidak lambat, siapa pun yang memberi tahu Anda yang tidak tahu apa yang dia bicarakan, Java akan belajar banyak tentang OOP

Mengapa Anda tidak mulai saja dengan Python dan kemudian pergi untuk C atau sesuatu yang lain,

just_a_dude
sumber
C juga merupakan lingua franca dari mikrokontroler (ketika Anda hanya memiliki 4K, Anda tidak dapat membeli runtime 8K). Dalam ruang itu saja, C memiliki dekade aktif yang baik di depannya.
TMN
Java dulu lambat - saya ingat itu kurang dari setan kecepatan dalam beberapa tahun pertama. Beberapa orang berpikir kinerja tidak pernah membaik.
MetalMikester