Saya seorang programmer yang relatif muda. Saya berusia 23 tahun dan telah memprogram secara profesional selama sekitar 5 tahun.
Seperti kebanyakan programmer saya mulai dengan C, belajar beberapa perakitan x86 untuk bersenang-senang dan kemudian saya menemukan C ++ yang ternyata menjadi hasrat terbesar saya di dunia pemrograman. Pemrograman dengan C dan C ++ memaksa Anda untuk mempelajari API, lib, dan kerangka kerja platform spesifik yang masing-masing membutuhkan studi dan eksperimen yang konstan. Setelah beberapa waktu saya harus pindah ke Jawa dan C # karena permintaan di wilayah saya pada dasarnya untuk bahasa ini. Dengan bahasa-bahasa ini saya memasuki dunia pengembangan web dan kemudian saya harus belajar javascript. Mengembangkan untuk .NET Framework pada awalnya menyenangkan tetapi saya terus-menerus merasa ketika saya diikat oleh Microsoft (dan tentu saja .NET Framework membuat saya menjauh dari Linux). Untuk pengembangan desktop saya bisa melakukan hampir semua yang saya lakukan dengan .NET menggunakan C ++ dengan Qt tetapi untuk pengembangan web saya harus mencari alternatif. Cepat saya menemukan Django dan kemudian saya mulai belajar Python sehingga saya bisa menggunakan Django. Saat ini saya sedang belajar pengembangan iOS dengan Objective-C.
Sejauh ini cukup mudah untuk mempelajari semua bahasa ini (C ++ melatih saya dengan baik) tetapi saya khawatir bahwa suatu hari saya tidak akan bisa melacak mereka semua. Hanya untuk mengklarifikasi. Satu-satunya bahasa yang saya pelajari adalah C # dan Java. Semua yang lain saya pelajari untuk bersenang-senang, karena saya suka pemrograman dan belajar hal-hal baru. Saya juga ingin meningkatkan keterampilan saya di desktop, web, dan pengembangan seluler.
Pertanyaan saya adalah: Bagaimana Anda melacak beberapa bahasa pemrograman? (Maksud saya, pantau perubahan pada bahasa-bahasa ini dan pertahankan keahlian Anda) dan: Apakah ada cukup bahasa pemrograman?
sumber
Jawaban:
Secara pribadi, saya pikir "melacak" bahasa adalah buang-buang waktu. Itu selalu baik untuk mengambil bahasa populer baru, tetapi begitu Anda memiliki bahasa populer dan mapan seperti C ++, Python, dll., Anda tidak perlu khawatir. Jika Anda seorang programmer yang baik, bahasanya hanyalah sekumpulan kata kunci.
Hanya ada begitu banyak paradigma substansial di luar sana; mungkin anjing tua tidak dapat mempelajari trik baru, tetapi sebenarnya tidak ada banyak trik baru. Jika Anda khawatir bahwa bahasa fungsional / berorientasi objek / didorong oleh peristiwa / apa pun tidak dapat bertahan lama, pelajari paradigma lain; tapi jangan terlalu khawatir tentang pilihan bahasa yang tepat.
Dan bagaimana jika Anda lupa satu atau dua kata kunci setelah Anda jauh dari bahasa untuk sementara waktu? Itu sebabnya kami memiliki Google.
sumber
Setelah 30 tahun, izinkan saya mengatakan ini.
Yap, Anda kehilangan jejak.
Begitu?
Itu sebabnya mereka menulis manual referensi.
sumber
Manfaat nyata dari mempelajari berbagai bahasa adalah berbagai paradigma dan model serta cara berpikir yang mereka berikan kepada Anda.
Pengetahuan Anda tentang Java dan satu warisannya harus membentuk pandangan Anda tentang C ++ dan banyak warisannya. Pengetahuan Anda tentang Java dan GC-nya seharusnya membentuk pandangan Anda tentang C ++ dan memori yang dikelola pengguna. Pengetahuan Anda tentang C ++ dan templatnya seharusnya membentuk pandangan Anda tentang Java dan generiknya. Semua hubungan ini bekerja dua arah, tentu saja.
Jika Anda belum pernah menulis dalam bahasa fungsional, Anda tidak akan menghargai apa yang
<algorithm>
sedang dilakukan oleh pustaka C ++ dan apa yang hilang dengan tidak memiliki fungsi warga negara kelas satu (sebelum setidaknya C ++ 11). Jika Anda belum pernah menulis dalam bahasa yang diketik secara dinamis, Anda tidak akan menyadari batasan apa yang bisa dan tidak bisa dilakukan oleh pengetikan statis untuk Anda. Jika Anda belum pernah menulis dalam bahasa yang tidak memiliki status dapat berubah, Anda tidak akan mengerti hukuman yang diberikan oleh status yang bisa berubah kepada Anda.Mempelajari bahasa lain itu baik, karena itu membuat Anda lebih mengerti bahasa yang ada. Dalam hal ini, Anda tidak perlu khawatir tentang tetap up-to-date, karena konsep bahasa tidak cenderung berubah dengan cepat - atau sama sekali.
sumber
Tulis kode Jika Anda ingin mengikuti pembaruan bahasa, maka terus menulis kode.
Mempelajari lebih dari satu bahasa membantu Anda mendapatkan perspektif tentang bahasa lain yang tidak Anda dapatkan. Mempelajari banyak bahasa memberi Anda perspektif keseluruhan yang luas dibandingkan perhitungan secara umum.
Tetapi tidak mungkin untuk mempelajari setiap bahasa, dan tidak semua bahasa memiliki nilai - baik untuk Anda atau pekerjaan Anda. Bahasa-bahasa esoteris tidak layak dipelajari, kecuali nilai intelektual yang melekat, karena mereka tidak memiliki penggunaan praktis yang nyata.
Jadi tidak, tidak ada yang namanya "cukup." Tapi tentu saja ada yang namanya "tidak sepadan dengan masalahnya."
sumber
Hanya khawatir tentang mengikuti bahasa yang Anda pikir akan Anda gunakan atau sedang Anda gunakan. Mempelajari bahasa baru sangat membantu, tetapi tidak ada alasan untuk belajar tentang perubahan yang lebih kecil dalam bahasa jika Anda tidak pernah menggunakannya lagi.
sumber
Jangan berhenti belajar; tetapi sadarilah bahwa Anda tidak pernah tahu segalanya tentang segalanya. Anda akan selalu memiliki beberapa lingkungan di mana Anda lebih lancar. Jangan khawatir, terus bersenang-senang.
sumber
Anda memiliki cukup bahasa pemrograman saat Anda merasa sudah selesai. Mengetahui banyak bahasa itu bagus, tapi saya tidak tahu apakah tahu 12 ketika Anda menggunakan 2 di tempat kerja memberikan lebih dari manfaat kontekstual. Tidak ada yang salah dengan mengetahui lebih banyak bahasa, tetapi sisa waktu Anda mungkin lebih baik meningkatkan pengetahuan Anda dalam bahasa dan disiplin yang paling perlu Anda gunakan. Seperti bahasa lisan, Anda ingin lebih mahir dalam bahasa yang memberikan nilai dalam hidup Anda.
Saya dapat mengingat beberapa pemrogram yang membual mereka tahu beberapa bahasa tetapi menulis kode dengan cara yang sama di masing-masing, dan itu tidak selalu merupakan hal yang baik.
Selain itu, seiring bertambahnya usia, waktu akan membantu mengambil keputusan untuk Anda (saya memiliki lebih sedikit waktu untuk belajar di samping daripada yang saya lakukan sebelum saya menikah, punya anak, menjadi penulis lepas, mulai berurusan dengan masalah karir, dan ingatanku mulai ke selatan. Doh!).
sumber
Saya telah belajar banyak bahasa selama 25+ tahun terakhir. Setelah beberapa saat, beberapa menjadi kurang berguna dan terlupakan (Perl). Mari kita bahkan tidak berbicara tentang 6502 perakitan, Apple BASIC, Lisp, Prolog, Pascal, SPAN, FORTRAN ...
Bahasa lain memudar, maka saya harus mempelajari kembali (Python) setelah 10 tahun. Tidak ada gunanya mengikuti Python, tidak butuh waktu lama untuk mencapai kecepatan - Google / SO adalah teman Anda.
Pada akhirnya, bahasa hanyalah alat. Anda menggunakannya untuk pekerjaan yang dihadapi. Keahliannya adalah mengetahui apa yang harus digunakan kapan. Sejujurnya, begitu saya mulai menggunakan C ++, saya tidak pernah ingin melakukan C coding lagi. Ketika saya belajar C #, saya tidak pernah ingin melakukan C ++ lagi.
sumber
Menurut saya pemrograman tidak semua tentang bahasa yang Anda gunakan. Pemrograman adalah cara berpikir. Anda harus menjadi analis yang baik untuk menulis perangkat lunak yang baik, bahasa pemrograman hanya akan membantu Anda membangun perangkat lunak Anda. Tentu, setiap bahasa memiliki kekurangan atau kelebihannya, tetapi untuk membangun perangkat lunak yang bagus, Anda harus berpikir sebagai pengembang. Orang yang tidak berpikir seperti pengembang tidak akan membangun perangkat lunak yang hebat, tidak peduli seberapa bagus bahasa yang mereka gunakan.
Saya selalu membuat perbandingan dengan seseorang yang membangun rumah, dia tidak peduli tentang palu, selama dia punya palu dia bisa membangun rumah. Dia mungkin perlu membiasakan diri dengan palu (misalnya berat), tetapi begitu dia terbiasa dengan alat itu dia bisa membangun rumah yang fantastis. Membiasakan diri dengan alat ini tidak terlalu sulit karena sebagian besar "versi" dari alat ini sangat mirip (ini berlaku untuk palu, tetapi juga untuk bahasa pengembangan).
Saat belajar kami dulu menggunakan Java (sebelum itu saya menggunakan ASP dan VB5), tetapi setelah lulus (sekitar 5 ~ 6 tahun yang lalu) saya belajar menggunakan C # (dan Javascript), pekerjaan beralih "memaksa" saya untuk pergi VB.NET, pekerjaan berikutnya memungkinkan saya untuk menggunakan kedua bahasa .NET (yang saya lakukan) dan bahkan "diizinkan" untuk membiarkan saya menggunakan Java lagi (untuk beberapa alat warisan yang mereka gunakan). Saat ini saya bekerja dengan X ++ (bahasa Microsoft Dynamics AX), tetapi saya masih melakukan beberapa pengembangan di .NET. Ini hanya bahasa tempat saya bekerja dalam pekerjaan saya sehari-hari, saya juga suka menyelidiki bahasa baru seperti F #, Ruby, dll. Mempelajari bahasa-bahasa baru ini hanya membutuhkan beberapa hari (hanya untuk memahami sintaksisnya) dan sisanya saat Anda hanya bermain-main dengan bahasa dan akan belajar secara bertahap.
Ada begitu banyak bahasa, tetapi saya cenderung fokus hanya pada bahasa yang benar - benar berbeda (seperti F #). Saya melihat belajar bahasa baru sebagai hal yang menarik dan menyenangkan, jadi untuk saat ini saya baik-baik saja, belajar bahasa baru cukup mudah (setidaknya jika pemikirannya sama, C #, VB, Java sama dengan bir, tetapi misalnya F # sangat berbeda) dan saya tidak terlalu khawatir.
sumber
Saya memulai karir saya 5 tahun yang lalu di vb6, pindah ke php, lalu ke java dan kemudian ke .net. saat ini untuk tahun lalu bekerja di asp.net mvc2 dan sedang mencoba tangan saya di mvc3 juga
rahasianya adalah seseorang tidak boleh ketinggalan jaman Anda tidak bisa menguasai segalanya di dunia, jadi khawatir tentang itu bukanlah pilihan
sumber
Saya pikir ini adalah pertanyaan karir. Karena itu Anda harus memperhitungkan orang-orang yang mempekerjakan Anda hanya jika Anda mengetahui seperangkat alat khusus. Mungkin ini mendiskualifikasi pekerjaan, tetapi mungkin tidak. Jadi pelajari hal-hal baru secara dangkal. Tapi terus belajar hal-hal sulit (matematika, paradigma pemrograman baru) secara mendalam.
Beradaptasi untuk menggunakan alat-alat baru adalah tradeoff. Industri IT penuh dengan hip dan Anda harus mempertahankannya. Ini dimulai dengan pernyataan: tidak, saya tetap menggunakan editor lama saya (emacs?). Tetapi dari waktu ke waktu Anda harus mempelajari hal-hal baru. Mereka benar-benar menjadi lebih baik selama bertahun-tahun (3-4). Jika Anda memiliki kesempatan untuk mempelajari hal-hal baru di tempat kerja dengan proyek nyata: jangan ragu, karena itu akan menyenangkan! Cara terbaik untuk membedakan hype dari inovasi nyata adalah dengan melihat orang-orang yang menggunakannya. Anda lebih baik dalam menilai orang daripada teknologi :)
sumber
Saya menyarankan belajar bahasa dengan paradigma yang berbeda, seperti fungsional, OO dan logis, karena mereka sangat berbeda.
Namun, saya tidak akan menyarankan untuk belajar 3 bahasa fungsional atau 3 Bahasa OO.
Jika Anda pandai membaca, mungkin. Tetapi saya merasa sulit untuk mempelajari hal-hal yang sama berulang-ulang, yang kebetulan hampir sama, tetapi tidak persis, terutama hal-hal perpustakaan seperti lukisan jendela, permohonan basis data, koleksi perpustakaan, di mana Anda harus mengingat nama dan konvensi yang berbeda, tetapi yang berperilaku hampir sama. Apakah itu paintRect (xstart, ystart, xend, yend) atau (xstart, ystart, lebar, tinggi)? Termasuk 'akhiri' di sini, tidak termasuk di sana?
Tetapi beberapa orang tidak mengalami kesulitan untuk mempelajari hal-hal ini.
Jadi saya sarankan belajar beberapa bahasa, tetapi mempelajari beberapa dari mereka secara mendalam mungkin mengajarkan Anda lebih banyak, daripada bahasa demi bahasa hanya di permukaan. Mungkin bukan 2 bahasa per tahun, tetapi setiap dua tahun satu bahasa.
sumber
Saya agak di sisi berlawanan dari spektrum. Saya benci belajar berbagai bahasa, karena Anda belajar hal-hal sederhana dan tidak pernah menjadi ahli dalam masalah yang lebih dalam dengan cara ini. Pada saat yang sama Anda belajar praktik buruk dari bahasa lain.
Pernah melihat pengembang Java hardcore dalam C ++, ini berantakan menunggu untuk meledak ...
Masalahnya adalah bahwa semua bahasa memiliki gotcha di mana abstraksi mulai bocor, atau bermain melawan Anda. Anda dapat mempelajari sintaks dalam 1 hari, tetapi akan butuh 5 tahun untuk mengetahui cara membuat kode secara efisien dan bebas bug. Apakah Anda menggunakan di () atau []? Mengapa malloc akan membuat proses Anda yang berjalan lama kehabisan memori?
Dan paradigma belajar juga merupakan proposisi yang menarik. Karena menggunakan pedoman Java dalam C, atau Perl pedoman dalam C # mungkin berubah menjadi demonstrasi yang luar biasa tentang cara menulis kode yang dikaburkan.
Mempelajari beberapa bahasa baru dapat membantu Anda memperluas wawasan Anda, tetapi mereka seharusnya tidak membuat Anda merasa lebih pintar, mereka harus membuat Anda merasa bodoh dengan setiap bahasa baru yang Anda pelajari.
sumber
Orang lain menyarankan di suatu tempat bahwa "semua orang harus tahu 3 bahasa".
Saya cenderung setuju. Anda harus tahu bahasa yang dikompilasi (C / C ++, C #, dll), bahasa yang ditafsirkan (Python, Ruby, dll) dan bahasa pemrosesan teks (Perl, Awk, dll). Saya juga berpikir Anda harus tahu bahasa scripting shell (Bash, hari ini atau Windows power shell). Saran yang sama berlaku untuk toolkit dan API.
Satu-satunya cara untuk mengikuti perkembangan bahasa adalah dengan menggunakannya. Jika Anda membiarkan toolkit bahasa reguler Anda terbatas pada beberapa, Anda akan lebih mudah menggunakannya semuanya secara teratur untuk menyelesaikan masalah, dan dengan demikian Anda akan dapat mengikuti perkembangan di masing-masingnya.
Jadi, dapatkan kecepatan dengan teknologi yang Anda gunakan setiap hari dan tetap di sana. Tidak ada yang salah dengan mencoba-coba bidang minat lain ketika Anda punya waktu. Biasanya tidak membutuhkan waktu lama bagi seorang programmer yang kompeten untuk mempelajari teknologi baru yang diberikan motivasi yang cukup dan waktu untuk duduk dengannya.
Tidak perlu mengikuti setiap teknologi di luar sana ... Anda akan dapat berputar naik dan turun sesuai kebutuhan, menjaga yang paling sering Anda gunakan sebagai fokus.
sumber
Kawan, sungguh - itu menyedihkan. Tanpa spesialisasi, "saya akan belajar segalanya". Maaf dengan pendekatan itu, Anda akan mengetahui segalanya, tetapi keterampilan Anda akan sangat rendah sehingga tidak ada yang akan membayar Anda dengan baik.
Ada penelitian yang mengatakan bahwa Anda perlu 10 tahun pelatihan untuk menjadi "baik" dengan apa saja (pemrograman, bermain gitar, menari, dll.). Dan itu benar, Anda perlu 5-10 tahun menulis C ++ / python / etc. untuk mendapatkan keterampilan yang dibutuhkan untuk mengembangkan kode komersial yang berkualitas baik.
Dan omong kosong tentang referensi bahasa itu? Dan di mana kebiasaan pemrograman yang baik yang berbeda untuk setiap bahasa pemrograman. Di referensi mana Anda menemukan praktik manajemen memori dan struktur data yang baik untuk praktik Keamanan C atau Sisi Server?
Desktop, seluler, server (!!!) - ini adalah lingkungan yang sama sekali berbeda. Anda memutuskan apakah Anda ingin "memainkan" semua kehidupan, atau Anda memfokuskan satu hal dan mendapatkan pekerjaan yang layak. Mungkin orang akan mengatakan kepada Anda omong kosong bahwa Anda harus tahu setiap bahasa di bumi, karena mereka mencoba melakukan hal yang sama untuk meningkatkan pekerjaan buruk mereka. Tapi coba tebak, mereka tidak akan pernah bisa melakukan ini, bahkan setelah membaca Java "referensi", karena apa yang mereka akan mampu kalau begitu? TIDAK ADA.
Ya - pelajari desain grafis, penulisan skenario dan flash juga, Anda akan membutuhkannya! :) Saya tidak tahu persis apa yang salah, tetapi jika Anda melakukan klien, server dan seluler sekaligus - berhenti dari pekerjaan Anda dan jangan menunggu sampai besok karena Anda harus melakukannya sekarang!
Pertanyaan Anda harus bagaimana agar tidak melacak mereka. Saran saya, berhentilah pokemon dan dapatkan sesuatu yang Anda sukai.
sumber