Saya berasal dari latar belakang Jawa dan mencoba belajar Scala. Saat ini saya merasa sangat kewalahan, sepertinya ada lebih banyak yang dapat dipelajari dengan Scala, begitu banyak cara berbeda untuk melakukan hal yang sama.
Saya bertanya-tanya apakah ada yang punya saran tentang di mana untuk memulai, dan berapa lama mereka merasa cukup kompeten dalam bahasa?
Bahkan hal-hal kecil seperti untuk pemahaman loop tampak sangat kuat tetapi itu hanya sepotong sintaks yang perlu Anda ingat!
Jawaban:
Aku sudah berada di tempatmu sekarang, dan hampir menyerah beberapa kali. Meskipun bukan berarti pengembang ahli Scala, saya merasa sekarang saya memiliki pemahaman yang kuat pada bahasa - tentu saja cukup untuk meracuni hubungan saya dengan Jawa.
Hal pertama yang saya lakukan adalah menghabiskan beberapa minggu untuk bermain-main, membaca berbagai blog dan pengenalan bahasa. Itu adalah kesalahan, saya tidak belajar (atau setidaknya mengerti) banyak hal yang berguna, dan merasa sepenuhnya keluar dari kedalaman saya.
Hal kedua adalah menghabiskan waktu untuk menyelesaikan masalah yang secara teknis sederhana tetapi memaksa saya untuk mengeksplorasi aspek spesifik dari sintaks Scala sendiri:
Meskipun ini tidak mengubah saya menjadi seorang ahli dalam semalam, itu memberi saya cukup akrab dengan bahasa yang rasanya tidak mungkin lagi.
Dengan dorongan kepercayaan diri itu, saya akhirnya melakukan apa yang seharusnya saya mulai: mendapatkan Pemrograman di Scala oleh Martin Odersky, dan berupaya membaca seluruh bab setiap dua hari. Ini adalah buku yang ditulis dengan baik dan komprehensif, dan jika Anda sudah memiliki latar belakang pemrograman yang baik, jangan membuktikan terlalu menakutkan. Tidak perlu membuat bacaan pertama Anda terlalu menyakitkan: lewati bagian-bagian yang ditandai sebagai opsional, pastikan Anda memahami konsep-konsepnya tetapi jangan terjebak dalam detail (khususnya, saya merasa bahwa bab-bab tentang koleksi terlalu banyak dan bisa skim). Mengetahui bahwa ada konsep dan di mana membaca penjelasan yang komprehensif tentang cara kerjanya adalah bantuan yang luar biasa.
Alternatif untuk membaca buku ini adalah menghadiri kelas Coursera - ini jauh lebih tidak komprehensif, tetapi mencakup sebagian besar poin penting dan dipecah menjadi unit yang dapat dikelola dan logis. Di sisi lain, saya tidak tahu apakah mungkin untuk mengakses pelajaran setelah kelas selesai, dan saya juga menemukan bahwa saya kurang terlibat saat mendengarkan seseorang (bahkan seseorang yang jelas-jelas pintar dan berpengetahuan seperti Martin Ordesky) daripada saat membaca buku.
Masalah lain dengan Scala adalah jumlah kosakata yang harus Anda konsumsi - menurut-nama parameter? untuk pemahaman? penutupan? Jika Anda merasa kewalahan dengan ini, saya menemukan bahwa campuran yang baik dari Scala Glosarium dan pencarian stack overflow yang ditargetkan banyak membantu saya (cari jawaban oleh Daniel Sobral dan Travis Brown). Bahkan, saya melangkah lebih jauh dengan membuat dek Anki dengan glosarium, dan merasa itu sangat membantu.
Akhirnya, ini mungkin jelas, tetapi kode, kode, kode. Temukan proyek sampingan yang bisa Anda kerjakan, bahkan jika itu sesuatu yang sepele. Apa yang saya lakukan adalah menulis crawler Amazon yang sangat sederhana yang akan mengirimi saya tweet setiap kali seorang penulis yang saya tertarik merilis buku baru. Butuh waktu lebih lama daripada yang seharusnya, tetapi saat itulah saya jatuh cinta pada bahasa itu.
Jika Anda sampai sejauh itu, Anda mungkin tidak perlu bantuan lebih lanjut, tetapi saran yang bagus, setelah Anda memahami bahasa tersebut, adalah untuk menggali lebih dalam konsep-konsep yang mendasarinya. Anda terbiasa dengan OOP, cobalah membaca tentang pemrograman fungsional - Saya dapat mengatakan dengan pasti bahwa itu akan membuat Anda berpikir. Pemrograman Fungsional di Scala harus segera dirilis (ish), tetapi edisi akses awal sudah sangat baik. Jawaban lain menyarankan Pemrograman Fungsional untuk Pengembang Java , yang saya tidak kenal tetapi saya cenderung percaya itu baik (kapan buku O'Reilly tidak layak setidaknya membaca sekilas?).
Saya harap ini tidak terlalu panjang lebar dan jelas, dan jujur berharap yang terbaik. Scala memiliki kesalahan, tetapi ini adalah bahasa yang luar biasa dan akan membawa otak Anda ke arah yang tidak pernah Anda ketahui. Dan saya akan mencari "Belajar Haskell, merasa kecil hati" dalam setahun :)
sumber
Scala adalah cara berpikir yang sangat berbeda dengan Jawa, jadi jangan berkecil hati! Saya mungkin akan mulai dengan Pemrograman Fungsional untuk pengembang Java sehingga Anda bisa masuk ke cara berpikir fungsional.
Apakah ada grup pengguna Java dan / atau Scala di dekat? Selalu lebih mudah untuk belajar bahasa baru dengan seorang kolega.
Semoga berhasil dan tetap tekun melakukannya !.
sumber