Pengenalan kepada Scala


Scala ialah singkatan dari Scalable Language dan merupakan bahasa pengaturcaraan pelbagai paradigma

Martin Odersky dari Ecole Polytechnique Fédérale de Lausanne (EPFL) mula mereka bentuk Scala pada tahun 2001 berdasarkan kerja Corong .

Corong ialah bahasa pengaturcaraan yang menggabungkan idea pengaturcaraan berfungsi dengan jaring Petri.

Kerja Odersky sebelum ini adalah pada Generic Java dan javac (penyusun Sun Java). Scala untuk platform Java dikeluarkan pada akhir 2003/awal 2004. Scala untuk platform .NET telah dikeluarkan pada Jun 2004. Versi kedua bahasa, v2.0, dikeluarkan pada Mac 2006.

Sehingga September 2009, versi terkini ialah versi 2.7.6. Ciri yang dijangkakan dalam Scala 2.8 termasuk perpustakaan koleksi Scala yang telah diganti, nama dan parameter lalai untuk kaedah, objek pakej dan Sambungan.

Pada April 2009, Twitter mengumumkan bahawa mereka telah memindahkan kebanyakan program bahagian belakang mereka daripada Ruby ke Scala, dan merancang untuk memindahkan selebihnya. Di samping itu, Wattzon telah mengumumkan secara terbuka bahawa keseluruhan platformnya telah ditulis berdasarkan infrastruktur Scala.


Ciri Scala

Ciri berorientasikan objek

Scala ialah bahasa berorientasikan objek tulen dan setiap nilai ialah objek. Jenis data dan tingkah laku sesuatu objek diterangkan mengikut kelas dan sifat.

Terdapat dua cara untuk melanjutkan mekanisme abstraksi kelas: satu cara ialah warisan subkelas, dan cara lain ialah mekanisme pencampuran fleksibel. Kedua-dua pendekatan ini dapat mengelakkan masalah pewarisan berbilang.

Pengaturcaraan fungsional

Scala juga merupakan bahasa berfungsi, dan fungsinya juga boleh digunakan sebagai nilai. Scala menyediakan sintaks ringan untuk mentakrifkan fungsi tanpa nama, menyokong fungsi tertib lebih tinggi, membenarkan sarang berbilang peringkat fungsi dan menyokong kari. Kelas kes Scala dan padanan corak terbina dalamnya adalah setara dengan jenis algebra yang biasa digunakan dalam bahasa pengaturcaraan berfungsi.

Selain itu, pengaturcara boleh menggunakan padanan corak Scala untuk menulis kod seperti ungkapan biasa untuk memproses data XML.

Jenis statik

Scala mempunyai sistem jenis yang memastikan keselamatan dan ketekalan kod melalui semakan masa kompilasi. Sistem jenis ini secara khusus menyokong ciri berikut:

  • Kelas generik

  • Kovarian dan kontravarian

  • Anotasi

  • kekangan sempadan atas dan bawah bagi parameter jenis

  • Anggap kategori dan jenis abstrak sebagai ahli objek

  • Jenis komposit

  • Tentukan jenis secara eksplisit apabila merujuk dirinya sendiri

  • Lihat

  • Polymorphism Pendekatan

Keterluasan

Scala direka bentuk untuk mematuhi fakta bahawa dalam amalan, pembangunan aplikasi khusus domain selalunya memerlukan Sambungan bahasa khusus domain. Scala menyediakan banyak mekanisme bahasa unik yang menjadikannya mudah dan lancar untuk menambah binaan bahasa baharu dalam bentuk perpustakaan:

  • Sebarang kaedah boleh digunakan sebagai operator awalan atau postfix

  • Penutupan boleh dibina secara automatik berdasarkan jenis yang dijangkakan.

Concurrency

Scala menggunakan Actor sebagai model concurrencynya Actor ialah entiti seperti benang yang menghantar dan menerima mesej melalui peti mel. Pelakon boleh menggunakan semula benang, jadi berjuta-juta Pelakon boleh digunakan dalam program, manakala benang hanya boleh mencipta beribu-ribu. Dalam versi selepas 2.10, Akka digunakan sebagai pelaksanaan Actor lalainya.


Siapa yang menggunakan Scala

  • Pada April 2009, Twitter mengumumkan bahawa mereka telah memindahkan kebanyakan program bahagian belakang mereka dari Ruby ke Scala, dan merancang untuk memindahkan yang lain serta Untuk berhijrah.

  • Selain itu, Wattzon telah mengumumkan secara terbuka bahawa keseluruhan platformnya telah pun ditulis berdasarkan infrastruktur Scala.

  • UBS menggunakan Scala untuk produk am.

  • Coursera menggunakan Scala sebagai bahasa pelayan.


Rangka Kerja Web Scala

Berikut ialah dua rangka kerja aplikasi web Scala yang popular pada masa ini:

  • Lift Frame

  • Main Bingkai