Bagaimana saya mengambil bahasa baru dengan cepat, mengingat saya tahu beberapa orang lain? [Tutup]

14

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?

pengguna8
sumber
6
Saya akan mengatakan lakukan saja. Dokumentasi resmi dan Google adalah satu-satunya sumber daya yang Anda perlukan.
Fosco
@Rein Beberapa jawaban tumpang tindih, tetapi tujuan dari pertanyaan ini adalah untuk membangun jawaban kanonik untuk mempelajari bahasa (bahasa apa pun) secepat dan seefisien mungkin. Pertanyaan lain adalah campuran rekomendasi buku, jawaban yang serupa dengan yang diberikan di sini, dan saran umum tentang pembelajaran yang tidak terburu-buru (membaca sesaat sebelum tidur, membaca spesifikasi bahasa, mengambil minggu untuk menjadi akrab di tingkat dasar dengan beberapa perbedaan). bahasa).
Saya tidak yakin seberapa berguna pertanyaan yang diajukan. Jika saya tahu beberapa bahasa pemrograman, saya mungkin telah belajar cara mengambil bahasa baru, dan mungkin secara efisien. Jika tidak, bagaimana saya mendapat manfaat dari pertanyaan ini?
David Thornley
1
@ David Saya tahu setengah lusin bahasa, tapi saya sudah mempelajarinya biasanya setelah mengambil kelas di dalamnya atau setelah beberapa bulan bekerja. Tetapi jika saya harus mengambil bahasa dengan cepat untuk pekerjaan baru di sisi lain, itu tidak membantu saya. Saya tidak ragu orang yang telah belajar beberapa bahasa telah mengambil cara untuk mempelajarinya dengan cepat: itulah yang saya harap berisi jawabannya.
@ Mark Trapp: Terima kasih, itu menjelaskan segalanya untuk saya.
David Thornley

Jawaban:

18

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.

jqueryrocks
sumber
Ketika Anda mengatakan "lakukan saja", apakah ada aspek khusus dari bahasa yang Anda fokuskan saat menyelam untuk memastikan Anda mengambilnya seefisien mungkin? Atau apakah Anda terus melakukan proyek sampel acak hingga "klik"?
Nah, 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 cukup mempelajari konstruksi paling populer terlebih dahulu dan menambahkan yang lain sesuai kebutuhan.
jqueryrocks
2
dapatkah Anda menambahkannya kembali ke jawaban Anda? Itu informasi yang bagus.
5

Ini bekerja untuk saya:

  1. Baca tentang itu.
  2. Gunakan.
  3. GOTO 1.

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.

Guy Sirton
sumber
Bisakah Anda menguraikan lebih lanjut tentang apa yang Anda maksud dengan "membacanya"? Apa, khususnya, yang menjadi fokus Anda ketika Anda mulai membaca tentang bahasa baru yang ingin Anda ambil?
@ Mark - lihat hasil edit saya ... Apakah ini yang Anda cari?
Guy Sirton
5

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.

dukeofgaming
sumber
Saya akan menambahkan "ambil masalah dunia nyata yang sulit ". Pilih sesuatu yang mengharuskan Anda untuk mendapatkan leher yang dalam pada hari pertama. Hari pertama saya dengan C # saya mencari tahu bagaimana cara memuat dll secara dinamis, menggunakan refleksi untuk mendapatkan kelas, dan dari daftar mehods. Saya belajar satu ton sehari, karena tidak pernah menggunakan teknologi .net sebelumnya.
Bryan Oakley
2

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.

blueberryfields
sumber
1

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.

dietbuddha
sumber
1

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):

  • temukan proyek kesayangan untuk mengantarmu,
  • dan di samping program beberapa kusut

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 .

haylem
sumber
0

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.

Tagihan
sumber
0

Sebagai saran khusus untuk hanya menggunakan bahasa:

Perbaiki Bug

  1. Temukan proyek open-source yang menarik dalam bahasa target, lebih disukai yang memiliki pelacak bug publik, pengembangan yang cukup aktif, dan test suite yang layak.
  2. Pilih bug untuk diperbaiki, lebih disukai yang mengganggu Anda ketika Anda benar-benar menggunakan program ini.
  3. Cari tahu mengapa program menunjukkan perilaku buggy.
  4. Tulis tes dan kode untuk memperbaiki masalah.
  5. Kirim tambalan hulu.
  6. Revisi tambalan Anda sampai pengembang hulu puas.
  7. Kembali ke langkah 1 atau 2.

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.

Eswald
sumber