Apakah ada organisasi yang memulai migrasi dari Jawa ke Scala? Jika ya, bagaimana Anda melakukannya? Apa yang bisa saya lakukan untuk mendorong kolega saya melakukan hal yang sama?
Apakah ada organisasi yang memulai migrasi dari Jawa ke Scala? Jika ya, bagaimana Anda melakukannya? Apa yang bisa saya lakukan untuk mendorong kolega saya melakukan hal yang sama?
Jawaban:
Mungkin cara termudah adalah pertama-tama menggunakan Scala hanya untuk pengujian. Dalam hal ini, Anda bahkan mungkin tidak perlu memberi tahu atasan Anda :-) Jika dia bertanya, katakan padanya "itu hanya kasus tes pribadi saya, jauh lebih mudah dan lebih cepat menggunakan Scala untuk itu". Setelah Anda (dan organisasi Anda) memiliki cukup pengalaman dengan Scala, Anda dapat mulai menggunakannya untuk kode 'nyata'.
Dari perspektif perusahaan, lebih baik tetap dengan Jawa jika tidak ada keuntungan berbeda yang akan mereka dapatkan dengan bermigrasi ke Scala. Lebih mudah bagi mereka untuk menyewa programmer Java untuk membangun dan memelihara aplikasi. Anda mungkin pergi begitu saja setelah mengimplementasikan semuanya di Scala :-) Tanpa pelanggaran :-)
Mintalah atasan Anda membaca pengalaman seperti ini:
Saat ini saya sedang melakukan banyak hal di Scala sekarang. (Saya harus menyebutkan bahwa saya pikir Scala adalah yang terbaik sejak ditemukannya roda beberapa waktu lalu. :-D)
Menurut pendapat saya yang sederhana itu adalah satu-satunya bahasa yang benar-benar memungkinkan orang untuk memilih pendekatan terbaik untuk suatu tugas tanpa ada pembagian yang tidak perlu antara (lebih) berorientasi objek dan (lebih) pendekatan fungsional.
Melihat bahasa yang mengklaim sesuatu seperti ini sebelumnya, saya pada dasarnya dapat melihat dua kamp desain bahasa yang bersaing:
Orang-orang dari sisi berorientasi objek yang melihat bahwa pemrograman fungsional mendapatkan daya tarik akhir-akhir ini dan berpikir, "Yah, kita tidak benar-benar memahami benda fungsional itu, tetapi mari kita tambahkan gula sintaksis yang mewah ke dalam bahasa kita, sehingga kita dapat mengklaimnya fungsional terlalu!" (contoh: Java, Python)
Kemudian orang-orang dari sisi fungsional, yang berpikir, "Yah, pendekatan fungsional kami jauh lebih unggul dari yang lain dan omong kosong berorientasi objek itu menjengkelkan, tapi mari kita masukkan beberapa kata kunci tambahan ke dalam bahasa kita, yang akan membuat bahasa kita lolos dari akademisi pasti ! " (contoh: F #, OCaml)
Desainer Scala menyatukan banyak pendekatan yang datang dari kedua sisi dan menciptakan beberapa bahasa yang dirancang dengan baik, yang - menurut pendapat saya - perbedaan terbesar dengan bahasa lain, yang memutuskan untuk mengambil pendekatan "Frankenstein" untuk merancang bahasa pemrograman.
Setelah melakukan hanya hal-hal yang lebih kecil dengan Lift dan hanya pengalaman dangkal dengan Rails dan Django, saya harus mengakui bahwa sebagian besar waktu ketika saya bertanya-tanya mengapa sesuatu di Lift bekerja secara berbeda dari yang saya harapkan, ini disebabkan oleh kenyataan bahwa harapan saya cacat dan pendekatan Angkat lebih unggul.
Lift jelas bukan "pengenalan mudah ke Scala" tetapi mempelajari cara kerja Lift hampir sama bermanfaatnya dengan mempelajari Scala sebelumnya.
Kemampuan untuk memiliki pandangan "bersih" tanpa logika di dalamnya adalah peningkatan besar untuk kerangka kerja lain yang mengklaim hal yang sama, tetapi gagal. Dukungan literal Scala XML memungkinkan untuk memverifikasi pembentukan respons Anda: Kompiler akan membuktikan pada waktu kompilasi bahwa Anda hanya memancarkan XML yang dibentuk dengan baik ke klien.
Lift adalah teknologi yang layak dan saat ini satu-satunya pendekatan nyata jika Anda ingin membangun aplikasi web yang terlihat, terasa dan berperilaku seperti aplikasi desktop "nyata" tanpa harus menulis sendiri jumlah kode yang gila.
[ Sumber ]
Selama dua tahun terakhir kami telah mengembangkan cara yang adil dalam perjalanan ini di guardian.co.uk - Platform Terbuka kami dibangun di atas Scala, CMS inti kami (asal di Jawa) secara bertahap memasukkan lebih banyak Scala (kami segera pindah dari Maven ke SBT untuk bangunan kami) dan ini merupakan pengalaman yang luar biasa - benar-benar menyegarkan devs kami, beberapa di antaranya menjadi agak letih dengan Java :)
Saya mendorong Anda untuk membaca dua artikel ini tentang transisi kami, dan mungkin menggunakannya sebagai bukti pendukung dengan rambut runcing Anda:
http://skillsmatter.com/podcast/home/how-we-moved-from-java-to-scala
http://www.infoq.com/articles/guardian_scala
Beberapa kiat cepat:
Mulailah dengan menulis tes Anda di Scala - dengan cara itu Anda bisa terbiasa dengan bahasa tersebut, tingkatkan kepercayaan diri Anda padanya, dan tidak perlu menaklukkan ketakutan yang mungkin Anda miliki tentang menambahkan runtime ke server produksi Anda secara langsung.
Jangan meminta izin untuk mencoba teknologi baru. Lebih baik minta maaf jika harus :-)
Pertanyaan ini menurun dalam pertanyaan lain. Itu untuk jenis atau proyek apa yang dimigrasi ke Scala memberikan nilai tambah? Saya melakukan Jawa hari pekerjaan saya, tetapi bermimpi tentang hari saya dapat menggunakan Scala "dalam kemarahan".
Pasangan menjawab pertanyaan saya sendiri:
Masalah yang concurrency berbasis Aktor akan memberikan manfaat besar (Akka)
Aplikasi web daripada meminta data didorong melalui COMET (Angkat)
Adakah wawasan lain atau pengalaman yang lebih baik?
Saya sedang menulis tes untuk aplikasi Java saya di Scala dan setuju bahwa ini adalah tempat yang baik untuk memulai. Cakupan tes saya lebih baik karena lebih cepat dan lebih mudah untuk menulisnya (juga karena saya bisa menggunakan Scala, saya rela lebih fokus pada menulis tes).
Saya juga sudah mulai melakukan prototipe dan membuang POC di Scala secara eksklusif. Saya mencoba membuat para manajer dan penyelia menyadari mungkin bahwa saya menggunakan Scala untuk yang satu ini dan menekankan bahwa saya bisa mendapatkan sesuatu dan menjalankan dengan cepat karena Scala. Kami membutuhkan (well, agak diperlukan) aplikasi web untuk melacak permainan gajah putih liburan kami - 1,5 jam dengan Scalatra dan MongoDB dan seluruh departemen saya melihat aplikasi ini dan menanyakannya. Mari kita hadapi itu, Anda tidak akan pernah bisa menjelaskan kepada manajer seberapa jauh bahasa lebih ekspresif atau bahwa model konkurensinya jauh lebih baik. Tetapi jika Anda menunjukkan kepada mereka bahwa Anda bisa menyelesaikan lebih banyak dengan lebih cepat, Anda akan mendapatkan hasil.
Tapi saya pikir bagian terbesar membuat pengembang bersemangat tentang Scala. Saya yakin kita semua bekerja dengan pengembang yang tidak aktif mengikuti teknologi baru, dan kadang-kadang sulit membuat orang-orang bersemangat melakukan sesuatu yang baru (mengapa, saya benar-benar tidak mengerti). Menampilkan orang-orang itu beberapa manfaat dari Scala (coba REPL) adalah kuncinya. Jika Anda mendapatkan cukup pengembang yang berdengung tentang manfaat produktivitas yang sama, maka Anda jauh lebih mungkin untuk mendapatkan Scala diadopsi secara resmi di organisasi Anda.
Menyebarkan berita dan membuat upaya akar rumput bergulir adalah tujuan utama saya di tahun 2011. Kita akan melihat bagaimana itu berkembang, karena saya tidak sabar menunggu hari ketika saya bisa menggunakan Scala untuk sebagian besar pekerjaan saya.
Saya bertanya-tanya mengapa memilih satu atau yang lain? Mengapa memutuskan untuk membuang Jawa keluar dan pergi Scala sepanjang jalan?
Tidak ada yang namanya alat yang sempurna untuk pekerjaan itu. Tidak ada alasan untuk membuang keahlian dalam satu bahasa sepenuhnya dan menggantinya dengan yang lain.
Saya tidak ingin bekerja (lagi) di perusahaan yang fokus pada satu bahasa atau lingkungan, tbh. Lebih baik mengetahui banyak hal dan memilih alat yang tepat untuk pekerjaan itu.
Di samping itu, sulit jika bukan tidak mungkin untuk membuat organisasi Anda beralih ke Scala sepenuhnya. Sebagai gantinya, saya mencoba menyelesaikan beberapa proyek (atau bahkan sebagian proyek) di Scala, alih-alih menggunakan pendekatan semua atau tidak sama sekali. Anda dapat, misalnya, memilih untuk menguji kode Java Anda dengan Specs2, yang memiliki sintaksis yang cukup bagus dibandingkan dengan JUnit tua biasa - dan itu bukan kode Scala dan paradigma yang rumit, membingungkan dan sulit juga, hanya gula sintaksis di sekitar mendefinisikan perilaku aplikasi Anda .
Cara yang baik adalah dengan menunjukkan dua versi dari program yang sama. Dengan melakukan itu Anda dapat menunjukkan kepada rekan kerja Anda (dalam praktik) Ekspresifitas Scala . Melakukan hal yang sama untuk masalah lain (XML, konkurensi, dll.) Dapat menunjukkan manfaat menggunakan Scala daripada Java untuk menangani masalah tertentu.
Tentu saja jangan berharap migrasi terjadi dalam satu hari. Ada banyak masalah yang Anda mungkin meremehkan: Kurva belajar, basis kode yang ada, dll.