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
sumber
Jawaban:
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.
sumber
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
sumber
Untuk memperluas jawaban Telastyn, ini memang tentang paparan paradigma pemrograman yang berbeda . Sebagai contoh, ini bukan tentang belajar pemrograman logika, tetapi untuk:
http://skilldrick.co.uk/2011/02/why-you-should-learn-brainfuck-or-learn-you-a-brainfuck-for-great-good/
http://norvig.com/21-days.html (Peter Norvig)
sumber
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.
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.
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.
sumber
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 ....
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 .
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.
sumber
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. .)
sumber
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.
sumber
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.
sumber
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.
sumber
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.
sumber
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.
sumber
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.
sumber
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,
sumber