Salah satu jenis pertanyaan yang terus muncul pada Programmer.SE adalah bagaimana mempelajari bahasa tertentu, mengingat Anda mengenal beberapa orang lain (biasanya melalui banyak pengalaman atau pendidikan).
Dalam beberapa kasus, bagaimanapun, seseorang mungkin perlu untuk mempercepat dengan cepat untuk pekerjaan, atau untuk pengembangan pribadi, atau bahkan untuk memeriksa platform baru yang panas.
Dalam pengalaman Anda, strategi umum apa yang Anda gunakan untuk mengambil bahasa baru dengan cepat? Apakah ada aspek spesifik dari suatu bahasa yang Anda coba fokuskan saat mulai kedinginan? Apa jenis sumber daya Anda menemukan membantu dalam proses ini?
Jawaban:
Saya telah menemukan cara terbaik untuk belajar bahasa baru adalah dengan melakukan, bukan hanya membaca. Jadi, ketika saya ingin (atau perlu) belajar bahasa baru, saya biasanya membaca beberapa bab dari buku referensi tentang sintaks, tetapi kemudian saya terjun dan membuat sesuatu, daripada membaca dan membaca buku demi buku.
Saya telah menemukan bahwa ketika masalah dan pertanyaan muncul, jawabannya ditemukan (sering di internet). Saya juga berpikir inilah sebabnya pelatihan di tempat kerja sangat berharga, karena Anda paling sering menghasilkan produk kerja, meskipun itu versi draf - dan Anda belajar sambil bekerja.
Saya mendorong orang untuk hanya memikirkan apa yang menarik minat mereka, dan terjun langsung ke penulisan kode atau membuat formulir, dll.
Kemudian, setelah Anda membuat proyek demi proyek, sebuah buku referensi yang bagus akan mengajarkan Anda detail-detail bagus yang pada titik ini, Anda lebih mudah dipahami.
Selain itu, proyek-proyek pada umumnya mulai lebih kecil dan tumbuh dalam kompleksitas - dari aplikasi "Hello World" yang sederhana hingga proyek yang kecil dan tidak terlalu berguna, dan seterusnya hingga aplikasi lengkap. Dalam hal aspek apa dari bahasa yang saya fokuskan, itu tergantung pada penggunaan bahasa yang diterapkan - saya tidak pernah mempelajari setiap API atau kerangka kerja untuk memulai (seperti misalnya dengan .NET). Itu akan memakan waktu terlalu lama. Saya belajar sintaksis inti, kemudian bercabang dari sana, meneliti setiap ekstensi sesuai kebutuhan. Dengan bahasa yang kurang modular, seperti CSS atau XSLT, saya hanya mempelajari konstruksi paling populer terlebih dahulu dan menambahkan yang lain sesuai kebutuhan.
sumber
Ini bekerja untuk saya:
Untuk membaca tentang itu, saya mencoba memilih referensi "the" untuk bahasa tersebut. Misalnya "Bahasa Pemrograman C". Itu perlu dipadatkan, to the point, dan membangun pengetahuan Anda secara bertahap. Lalu saya membacanya dari depan ke belakang. Saya seorang pembaca cepat dan saya tidak berkutat pada bacaan pertama ini. Kemudian saya akan kembali dan merujuk ke poin-poin spesifik karena saya mencoba menggunakan bahasa tersebut. Apa yang saya mungkin akan menghabiskan lebih banyak waktu adalah contoh kode di dalam buku ini.
Hal pertama yang Anda butuhkan adalah sintaks. Tanpa mengetahui apakah itu BEGIN atau {atau memblokir indentasi, atau bagaimana Anda mendeklarasikan variabel, Anda tidak dapat menulis apa pun. Penulis biasanya akan memperkenalkan bagian yang lebih penting terlebih dahulu atau akan memiliki tutorial yang mencakup penggunaan dasar bahasa. Sulit untuk memberikan pedoman yang lebih umum karena beberapa bahasa sangat berbeda dari yang lain. Hal berikutnya adalah mendapatkan rasa umum untuk bahasa, apa filosofi keseluruhan, bagaimana Anda mendekati pemecahan masalah dalam konteks bahasa.
Hal lain yang perlu diingat adalah konsep "gunakan atau hilangkan itu". Jika Anda belum pernah menggunakan bahasa untuk sementara waktu, Anda perlu waktu untuk kembali ke kecepatan (meskipun waktu itu akan semakin pendek dengan pengalaman). Setelah Anda mendapatkan sintaks bahasa, Anda harus belajar tentang perpustakaan dll.
Jadi ini merupakan proses berulang. Lebih dalam di setiap iterasi. Tak pernah berakhir. Bahkan setelah menggunakan bahasa selama 20 tahun masih ada sesuatu untuk dipelajari.
sumber
Raih proyek dunia nyata
Cara saya melihatnya, lebih mudah untuk belajar sesuatu ketika Anda benar - benar perlu mempelajarinya. Bagi saya itu dengan javascript, di mana saya mengambil risiko dengan menerima proyek besar dengan jangka waktu dua bulan. Itu saya di sana setiap hari dan setiap malam mencoba untuk mencapai hasil untuk proyek freelance ini, dan pada 1 setengah bulan proyek itu selesai.
Saya juga tidak sengaja mempelajari beberapa SQL di sana, kemudian saya selesai mempelajarinya di perguruan tinggi, dan coba tebak, saya juga memiliki waktu yang lebih mudah.
Jika Anda tidak ingin mengambil risiko itu ...
Kunci sebenarnya ke poin sebelumnya adalah untuk menyelesaikan masalah dunia nyata ... tapi saya bekerja lebih baik di bawah tekanan (Saya suka stres, saya pikir itu menyenangkan dan saya mungkin rusak, jadi ...). Jika tidak, ikuti saja proyek sumber terbuka yang menarik minat Anda dan gunakan bahasa yang ingin Anda pelajari dan coba berkontribusi. Jika kode Anda payah, Anda mungkin mendapatkan umpan balik tergantung pada komunitas.
Kemungkinannya adalah Anda akan membuat kemajuan hanya dengan mempelajari kode.
Dapatkan semua referensi yang Anda bisa
Itu termasuk beberapa buku, dokumentasi resmi, dan semua referensi yang bisa Anda dapatkan. Chaces adalah bahwa, dengan cara itu, Anda akan tahu bagaimana melakukan hal yang sama dengan cara yang berbeda.
Komunitas lain — seperti forum, milis, dan di sini — juga dianggap sebagai referensi.
sumber
Ada banyak cara untuk mempelajari bahasa baru, tetapi tidak semua sama efisiennya. Saya menemukan tiga pedoman ini paling cocok untuk saya:
Buat peta dari apa yang tidak Anda ketahui
Cari tahu, terlebih dahulu, apa yang perlu Anda pelajari. Temukan ikhtisar atau sumber dokumentasi umum yang menjelaskan bahasa dalam istilah abstrak. Dari situ, Anda biasanya bisa mendapatkan gambaran yang cukup lengkap tentang apa bahasa itu. Gunakan ikhtisar tersebut untuk menyorot area yang tidak Anda ketahui, tetapi dianggap sebagai inti bahasa. Apakah pengulangan ekor merupakan konsep yang perlu Anda pelajari untuk benar-benar menguasai bahasa? Mungkin Anda harus mengetahui regex Anda lebih baik, karena bahasanya berspesialisasi dalam manipulasi string. Atau, mungkin Anda benar-benar harus mengaktifkan Aljabar, karena banyak konsep dalam peta bahasa langsung dari konsep aljabar.
Dapatkan sumber daya yang baik untuk membantu Anda mempelajari apa yang tidak Anda ketahui
Anda mungkin ingin mendapatkan referensi yang bagus tentang rumus-rumus aljabar, atau mungkin Anda hanya ingin membeli " Javascript, bagian-bagian yang baik ". Untuk beberapa kurva belajar, pekerjaan ini telah dilakukan sebagian. Jika Anda mencoba mempelajari C # dari latar belakang Java (dan sebaliknya) ada sejumlah posting blog dan situs web yang memetakan perbedaan, dan berisi referensi / sumber daya untuk membantu Anda belajar.
Pastikan bahwa sumber daya bukan hanya referensi - pastikan mereka menyertakan tes atau latihan untuk membantu Anda menilai apakah Anda telah mempelajari suatu konsep dengan benar. Membaca tentang rekursi ekor adalah satu hal, memahami bagaimana penerapannya dalam bahasa pilihan Anda adalah hal lain.
Bangun sesuatu yang nyata
Hampir mustahil untuk melakukan segala jenis pembelajaran nyata tanpa tujuan yang nyata dalam pikiran. Ini terutama berlaku untuk seni terapan - yang merupakan bahasa pemrograman. Pastikan Anda memiliki target nyata untuk dibidik - membangun sesuatu biasanya merupakan pilihan terbaik.
sumber
Identifikasi Paradigma Pemrograman
Saya biasanya mengidentifikasi apa paradigma utama untuk bahasa itu. Saya memikirkan masalah secara berbeda tergantung pada paradigma.
Identifikasi Idiom
Semua bahasa memiliki idiom. Idiom bervariasi dalam ukuran dan ruang lingkup dari cara Anda menyusun kode, hingga fragmen kode tertentu. Anda harus selalu mencoba dan menggunakan idiom bahasa.
Tulis kode
Saya biasanya menulis beberapa kode fungsional. Apa pun dari Primes Saringan untuk mainan aplikasi web. Masalah yang saya pilih biasanya spesifik untuk apa saya bermaksud menggunakan bahasa tersebut.
sumber
Hanya menyelam !!
Mengingat Anda sudah tahu cara memprogram dan mengetahui beberapa bahasa, kecuali jika bahasa itu memperkenalkan perubahan paradigma yang sangat dalam, saya akan mengatakan (secara bersamaan):
Belajar, Berlatih, Melamar (sampai puas)
99 Prolog Puzzles klasik (di sini, 99 Puzzles in Scala ) atau Project Euler biasanya merupakan tempat yang baik untuk mencari puzzle kecil untuk diimplementasikan kembali. Atau bersembunyi di sekitar StackOverflow dan tulis ulang beberapa jawaban yang bagus dalam bahasa target Anda, cobalah untuk tidak menulis ulang baris demi baris tetapi sesuatu yang menangkap inti dari bahasa baru Anda.
Belajarlah dengan teka-teki, baca blog dan esai di samping untuk mendapatkan pemahaman yang lebih dalam tentang bahasa dan rasakan alat dan perang suci komunitas baru Anda, dan tulis proyek uji Anda untuk menerapkan pengetahuan dan keterampilan Anda yang baru ditemukan dan lihat jalan yang menabrak Anda.
Berbicara tentang Komunitas ...
Bagikan dan perlihatkan diri Anda. (Tapi tidak terlalu banyak.)
Mungkin Anda juga ingin mengunjungi grup pengguna lokal, mencari teman untuk dikodekan (untuk mendapatkan kritik konstruktif dan tidak mengunci diri dalam pola pikir tertentu), dan berlangganan saluran IRC yang menakutkan atau milis tempat mereka menuliskan kata-kata aneh tentang AST pohon dan menulis omelan filosofis tentang bagaimana monad bukan monad dan bagaimana sekali Anda bertemu dengan seorang gadis aneh Anda tidak dapat kembali .
sumber
Saya tahu ini terdengar payah, tetapi mulailah mengkode sesuatu, meskipun itu konyol, dan gunakan banyak Google untuk hal-hal berikut pola ini:
bagaimana saya melakukan [sesuatu dari satu bahasa] dalam [bahasa lain]
Jika kata-kata tersebut umum digunakan, gunakan literal yang dikutip.
Ini adalah pertanyaan yang cukup umum bahwa satu-satunya kali saya tidak menemukan jawaban lagi adalah ketika saya menemukan halaman yang menjelaskan mengapa itu tidak dapat dilakukan.
sumber
Sebagai saran khusus untuk hanya menggunakan bahasa:
Perbaiki Bug
Proses ini cenderung lebih memuaskan daripada menulis program mainan lain, tetapi jauh lebih mudah daripada memulai proyek penuh Anda sendiri dari awal. Anda terpapar pada beberapa idiom bahasa dalam konteks alami mereka, dan (dengan sedikit keberuntungan) ide seseorang tentang seperti apa kode yang baik itu.
Di sisi lain, ini juga bisa membuat sangat frustasi, terutama jika Anda memilih bug yang tidak menyenangkan, atau jika pengembang menolak patch Anda tanpa menjelaskan alasannya.
sumber