Bagaimana saya mengajar Scala

Sebulan yang lalu, saya mendapatkan pekerjaan pertama saya dan menjadi pengembang peserta pelatihan, tim kami menggunakan bahasa Scala. Sepertinya saya bahwa semua pengembang pemula pada hari pertama hilang. pada saat yang sama tumpukan banyak nama baru, teknologi, beberapa aturan, dan Anda tidak pernah tahu apa, semuanya benar-benar baru bagi Anda, ini adalah pekerjaan pertama. Dalam kasus saya, saya masih tidak tahu bahasa yang akan saya programkan, sampai wawancara saya belum pernah mendengarnya. Intinya: pada hari pertama saya keluar sepenuhnya. Tanyakan bagaimana saya mendapatkan pekerjaan ini? Saya tahu Jawa, pada wawancara saya diberitahu bahwa javista akan dapat pergi ke batu dengan mudah dan Anda tidak bisa khawatir. Tapi ternyata sedikit di depan masih layak, karena pertama kali di depan saya, saya melihat hanya layar penuh dengan teks, di mana hampir setengahnya segera jelas.

Tetapi bahkan fakta bahwa saya tidak mengerti sesuatu membawa lebih banyak ketidaknyamanan, tetapi fakta bahwa ada banyak perbedaan, dan bahkan tipe variabelnya datang setelah nama, dan kadang-kadang itu tidak ada sama sekali.

final String str = "abc"; //Java 

 val str = "abc" // Scala 

Beginilah fungsinya dijelaskan:

 int sum(int a, int b) {return a+b;} // Java 

 def sum(a: Int, b: Int) = {a + b} // Scala 

Dan Scala juga memiliki konsol REPL (Read-eval-print-loop), seperti, misalnya, dalam Python. Seperti yang sudah Anda perhatikan, titik koma hilang. Anda dapat menjalankan program satu halaman tanpa utama, nama-nama metode dan variabel dapat berisi dan mulai dengan karakter apa saja, tanpa aturan. Tidak ada statis, tetapi ada Object, ada juga objek primitif, == sebenarnya sama. Jika metode tidak memiliki parameter, maka tidak perlu mengakhiri pemanggilan metode, tanda kurung juga opsional jika tidak ada parameter, dan jika hanya menggunakan 1 parameter, maka Anda dapat menulis seperti ini:

 str.charAt(5); // Java 

 str charAt 5 // Scala 

Dan contoh menarik lainnya:

 val res = 1 + 1 

Tidak, ini bukan hanya 1 ditambah 1, di sini objek 1, metode + dipanggil dan objek 1 diteruskan sebagai satu-satunya parameter.Bagi saya, ini adalah template break.

Yang mengejutkan saya adalah sebuah buku yang luar biasa dari David Pollack - Beginning Scala. Buku itu dimulai dengan satu frasa, setelah itu saya menyadari bahwa saya harus membacanya sampai akhir:
Aduh! Itu menyakitkan otak saya! Berhentilah membuatku berpikir secara berbeda. Oh, tunggu ... sekarang sakitnya berkurang. Saya mengerti. Cara penyelesaian masalah yang berbeda ini memiliki beberapa manfaat. Saya merasakan hal itu setelah tahun pertama sekolah hukum saya. Saya merasakan hal itu untuk sementara waktu ketika saya mulai mengkodekan Scala.
David memiliki pengalaman luar biasa dalam pemrograman, ia memulai bisnis ini 20 tahun sebelum kelahiran saya, berhasil bekerja dengan lebih dari 10 bahasa pemrograman, sampai ia datang ke Scala. Dan sekarang dia berkata:
Scala adalah bahasa pemrograman yang memberikan pengalaman terbaik bagi semua pengembang untuk dunia.
Namun demikian, penulis dengan jujur โ€‹โ€‹memperingatkan bahwa menguasainya tidaklah mudah, butuh waktu 2 tahun untuk melakukan ini, tetapi dia berharap kita bisa lebih cepat dan dia akan membantu dalam hal ini. Ini bukan buku yang sangat sederhana dan melibatkan beberapa pengalaman dalam pemrograman dengan pembaca. Terutama mereka yang sebelumnya diprogram di Jawa akan menyukainya, karena ada banyak referensi untuk bahasa ini dan dapat dibandingkan.

Selain Scala Awal, saya juga membaca pelajaran Scala School Twitter, untuk semua pelajaran ada terjemahan ke dalam bahasa Rusia, tetapi buku David Pollack hanya ditemukan dalam versi bahasa Inggris.

Proyek Latihan Scala membantu mengkonsolidasikan teori ini selain perjalanan independen melalui sumber batu dan pekerjaan, ada tugas yang sangat sederhana, tetapi mereka cukup cocok untuk memperbaiki beberapa aspek pada awalnya dan memeriksa apakah Anda membaca dengan cermat dan memahami semuanya dengan benar.

Dan saya akan memberi tahu Anda sedikit tentang hal-hal paling umum dan sangat sederhana yang harus saya pahami sejak awal.

Opsi Singkatnya - ini adalah wadah yang kosong (Tidak ada, ini terlihat seperti nol, tetapi memiliki metode peta, filter, ...), atau ada beberapa nilai tertentu Beberapa (nilai) dan penggunaannya dapat membuat kode lebih aman dan tidak melempar NullPointerException, karena Anda ingin, Anda tidak ingin, tetapi Anda masih perlu mengambil data bersih dari Opsi, dan pada titik ini sudah sulit untuk lupa menulis cek.
Tentu saja, Opsi memiliki metode get, tetapi tidak disarankan untuk menggunakannya karena dalam hal ini seluruh titik Opsi hilang, karena Tidak ada. Jangan melempar pengecualian.
Beberapa fasilitas yang paling jelas:

Mudah untuk mengembalikan nilai default jika Opsi kosong

 optValue.getOrElse(defaultValue) 

Dalam hal terjadi tindakan:

 optValue match { case Some(value) => action case None => defaultAction } 

Contoh dari Scala Beginning. Path adalah database tertentu yang berisi tipe Person

 def findPerson(key: Int): Option[Person] 

Metode ini akan mengembalikan Some [Person] jika entri tersebut ditemukan dan Tidak ada sebaliknya.
Sekarang kami ingin mendapatkan usia pengguna berdasarkan kunci.

 def ageFromKey(key: Int): Option[Int] = findPerson(key).map(_.age) 

Kami tidak perlu menguji untuk Tidak Ada dan metode ini ternyata sangat singkat.

Pencocokan pola . Pada awalnya, saya berpikir bahwa ini adalah saklar Java yang sama dan saya tidak akan menggunakannya, tetapi tidak. Dalam Scala, ini adalah salah satu desain yang paling umum digunakan.

Jenis casting:

 obj match { case str: String => str case number: Int => number } 

Anda dapat menambahkan kondisi tambahan dan menambahkan tindakan default.

 obj match { case strWithA: String if strWithA.contains("a") => strWithA case negative: Int if negative < 0 => negative case zero if zero == 0 => zero case _ => defaultAction } 

Sangat mudah untuk menggunakan pencocokan pola dengan kelas kasus. Contoh dari Scala Beginning

 Stuff("David", 45) match { case Stuff("David", age) if age < 30 => "young David" case Stuff("David", _) => "old David" case _ => "Other" } 

Fungsi

Untuk mulai dengan, di Scala, fungsi adalah instance yang mengimplementasikan antarmuka tertentu, atau lebih tepatnya ciri FunctionX, di mana X adalah jumlah parameter dan mengambil nilai dari 1 hingga 22. Dalam baki ini, satu-satunya metode hanya aplly, yang dipanggil untuk fungsi. Karena fungsi adalah instance biasa, kita dapat meneruskan dan mengembalikannya dari metode dan fungsi.
Contoh dari Scala Beginning. Kami meneruskan respons beberapa fungsi dari Int ke String, dan mengembalikan hasil fungsi ini dengan parameter 42.

 def answer(f: Function1[Int, String]) = f(42) 

atau hal yang sama

 def answer(f: Function1[Int, String]) = f.apply(42) 

Suatu hal yang sangat nyaman adalah penggabung fungsional /

Sisakan hanya elemen positif dalam array:

 arr.filter(value => value > 0) 

Contoh yang sedikit lebih rumit. Hitung jumlah nilai fungsi f dari elemen positif daftar. 2 cara untuk melakukannya:

 list.filter(x => x > 0).foldLeft(0)(_ + f(_)) list.filter(x => x > 0).map(f).sum 

Dan pada akhirnya saya ingin mengatakan mengapa saya menulis semua ini sama sekali. Saya tidak ingin mengajar siapa pun Scala atau berbicara tentang bahasa seperti itu, ada banyak artikel seperti itu di hub dan di Internet, dan banyak yang sangat baik dan berguna. Tujuan saya hanyalah untuk menceritakan kisah saya, yang mungkin menarik bagi seseorang dan dapat membantu dan mendukung beberapa pendatang baru yang hilang, yang baru saja ditemui nasib terhadap batu karang ini. Semoga beruntung! Pemrogram berpengalaman didorong untuk berbagi tips dan pendapat mereka di komentar, mengenai jalur programmer Scala pemula.

Source: https://habr.com/ru/post/id446988/


All Articles