Belajar Scala, merasa kecil hati [tertutup]

9

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!

jcm
sumber
Scala sebagian besar merupakan bahasa yang rumit sehingga tidak merasa kecil hati! Secara anekdot saya adalah programmer Haskell yang cukup kompeten dan saya pikir Scala jauh lebih kompleks :) Cara terbaik yang saya temukan untuk mempelajari sesuatu, adalah bergantian antara buku dan proyek. Untuk Scala saya sarankan kompiler dan buku tangga tetapi untuk masing-masing mereka sendiri
Daniel Gratzer
Terima kasih atas dorongannya! Apa buku tangga itu?
jcm
bacaan yang disarankan: Mulai dari mana?
nyamuk
Saya mencoba Scala beberapa tahun yang lalu dari perspektif Java dan tidak benar-benar mendapatkannya. Baru-baru ini, saya memulai kursus di coursera.org tentang pemrograman fungsional di Scala. Ini adalah pendekatan yang cukup berbeda secara drastis sehingga latar belakang Java saya tidak menghalangi. Alih-alih, saya (kembali) belajar berpikir dalam struktur data yang tidak dapat diubah, menalar tentang algoritma, teori set, teori tipe dan semua hal menyenangkan lainnya yang tidak saya dapatkan dalam praktik di pekerjaan nyata. Jangan khawatir; masih ada kegunaan nyata Scala di dunia nyata.
BobDalgleish
2
Scala adalah ekosistem baru yang besar untuk diambil (bahasa inti itu sendiri tidak terlalu besar - kebanyakan perpustakaan dan konsep). Jika Anda menempelkan ujung yang dangkal untuk sementara waktu, dan mengambil satu konsep pada satu waktu, semuanya akan benar-benar mulai menyatu. Hal-hal yang terlihat seperti sintaksis khusus yang dibuat dengan aneh biasanya akan berubah menjadi kategori yang lebih umum yang dapat diabstraksi di seluruh bahasa. Tetapi jelas dibutuhkan beberapa permainan dan membaca untuk mencari tahu apa hal-hal itu.
KChaloux

Jawaban:

11

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

Nicolas Rinaudo
sumber
3

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 !.

Martijn Verburg
sumber
Selain itu saya akan merekomendasikan untuk melihat Scala Frameworks atau Toolkit mengenai bidang yang Anda minati. Dalam pengalaman saya memiliki proyek yang Anda sukai bekerja membuat segalanya lebih mudah. Lihat Lift atau Mainkan Kerangka Kerja misalnya ketika Anda ke Web-Development atau Akka jika aplikasi Bersamaan atau Terdistribusi adalah hal Anda.
juwi