Kuruluşunuzu Java'dan Scala'ya geçmeye nasıl teşvik edersiniz? [kapalı]


15

Herhangi bir kuruluş Java'dan Scala'ya geçişi başlattı mı? Evet ise, bunu nasıl yapıyorsunuz? Meslektaşlarımı da aynı şeyi yapmaya teşvik etmek için ne yapabilirim?


yetkiniz varsa lütfen etikete scala ve geçiş ekleyin
nanda

9
Belki de nedenini açıklamalısınız
TheLQ

"Yeterince yüksek" bir veri yolu faktörü sağlamak için yeterli şirket içi bilgiye ihtiyacınız vardır.

Yanıtlar:


15

Muhtemelen en kolay yol Scala'yı sadece test için kullanmaktır. Bu durumda, patronunuza söylemeniz bile gerekmeyebilir :-) Ona sorarsa, ona "bu sadece benim özel test durumum, Scala'yı kullanmak için çok daha kolay ve daha hızlı" deyin. Siz (ve kuruluşunuz) Scala ile yeterli deneyime sahip olduktan sonra, 'gerçek' kod için kullanmaya başlayabilirsiniz.


Bunlar C # -to-F # geçişi için düşüncelerimdi.
GregC

7

Şirketler açısından, Scala'ya geçerek elde edecekleri belirgin bir avantaj yoksa Java ile kalmak daha iyidir. Uygulamayı oluşturmak ve sürdürmek için Java programcılarını işe almaları daha kolaydır. Her şeyi Scala'da uyguladıktan sonra ayrılabilirsiniz :-) Suç yok :-)


1
Düz Java kalmak için burada. Scala olabilir ya da olmayabilir. Söylemek için çok erken.

"Java geliştiricileri işe almak daha kolay" muhtemelen doğrudur. Ancak "kiralaması kolay" olanları işe almak projenizi tamamlamanın en ucuz yolu olmayabilir.
kevin cline

7

Patronunuza böyle deneyimleri okuyun:

  1. Şu anda Scala'da yaptığım şeylerin çoğunu şu anda yapıyorum. (Scala'nın bir süre önce tekerleğin icadından bu yana en iyi şey olduğunu düşünüyorum. :-D)

    Benim düşünceme göre, insanların (daha) nesneye yönelik ve (daha) fonksiyonel yaklaşımlar arasında gereksiz bir ayrım yapmadan, bir göreve en iyi yaklaşımı seçmelerine gerçekten izin veren tek dildir.

    Daha önce böyle bir şey iddia eden dillere baktığımda, temelde iki rakip dil ​​tasarım kampını görebiliyorum:

    • Fonksiyonel programlamanın son zamanlarda biraz çekiştiğini gören ve "Bu fonksiyonel şeyi gerçekten anlamıyoruz, ama dilimize biraz süslü sözdizimsel şeker ekleyelim, böylece işlevsel olduğunu iddia edebiliriz. çok!" (örnekler: Java, Python)

    • Sonra işlevsel açıdan, "Eh, fonksiyonel yaklaşımımız her şeyden çok daha üstündür ve nesneye yönelik saçmalıkların sinir bozucu olduğunu, ancak dilimize, dilimizi akademiden kaçmasını sağlayacak bazı ek anahtar kelimeler ekleyelim. !" (örnekler: F #, OCaml)

    Scala tasarımcıları her iki taraftan gelen birçok yaklaşımı birleştirdiler ve benim düşünceme göre - programlama dili tasarımına "Frankenstein" yaklaşımını benimsemeye karar veren diğer dillere göre en büyük fark olan iyi tasarlanmış bir dil yarattılar.

  2. Lift ile henüz daha küçük şeyler ve Rails ve Django ile sadece yüzeysel bir deneyim yaptıktan sonra, çoğu zaman Lift'te bir şeyin neden beklediğimden farklı çalıştığını merak ettiğimde, bunun beklentilerimin farklı olması nedeniyle olduğunu itiraf etmeliyim. kusurlu ve Lift'in yaklaşımı üstün.

    Lift kesinlikle "Scala'ya kolay bir giriş" değildir, ancak Lift'in nasıl çalıştığını öğrenmek neredeyse Scala'yı öğrenmek kadar ödüllendirici bir şeydi.

    İçinde herhangi bir mantık olmadan "temiz" bir görünüme sahip olma yeteneği, aynı iddia eden ancak eksik kalan diğer çerçeveler için büyük bir gelişmedir. Scala'nın XML değişmez desteği, yanıtınızın iyi biçimlendirildiğini doğrulamayı mümkün kılar: Derleyici, derleme zamanında istemciye yalnızca iyi biçimlendirilmiş XML yaydığınızı kanıtlar.

  3. Lift, uygulanabilir bir teknolojidir ve şu anda tek gerçek yaklaşım, deli miktarda kod yazmadan "gerçek" masaüstü uygulamaları gibi görünen, hissedilen ve davranan web uygulamaları oluşturmak istiyorsanız.

[ Kaynak ]


3

Geçtiğimiz iki yıl boyunca guardian.co.uk adresindeki bu yolculuk boyunca adil bir yol izledik - Açık Platformumuz Scala üzerine inşa edildi, çekirdek CMS'imiz (başlangıçta Java'da) yavaş yavaş daha fazla Scala'yı içeriyor (yakında Yapımımız için SBT'ye Maven ) ve harika bir deneyim oldu - bazıları Java ile biraz yorgun hale gelen geliştiricilerimizi gerçekten canlandırıyor :)

Geçişimizle ilgili bu iki makaleyi okumanızı ve belki de sivri saçlı saçlarınızla destekleyici kanıt olarak kullanmanızı öneririm:

http://skillsmatter.com/podcast/home/how-we-moved-from-java-to-scala

http://www.infoq.com/articles/guardian_scala

Bazı hızlı ipuçları:

  • Scala'da testlerinizi yazarak başlayın - bu şekilde dile aşina olabilir, ona olan güveninizi artırabilir ve çalışma zamanını üretim sunucularınıza hemen eklemekle ilgili endişelerinizi fethetmenize gerek kalmaz.

  • Yeni teknolojileri denemek için izin istemeyin . Eğer bağışlamak için af dilemek daha iyi :-)


1! "Yeni teknolojileri denemek için izin istemeyin. Eğer :-) gerekiyorsa af dilemek daha iyi"
Giorgio

2

Bu soru başka bir soruda kendini gösteriyor. Scala'ya göç etmek ne tür veya projeler için katma değer sağlıyor? Java günüm işimi yapıyorum ama Scala'yı "öfkeyle" kullanabileceğim günü hayal ediyorum.

Kendi soruma birkaç cevap:

  • Aktör tabanlı eşzamanlılığın büyük fayda sağlayacağı sorunlar (Akka)

  • Web uygulamaları (COMET (Lift) aracılığıyla onlara veri aktarılmadan)

Başka bir anlayış ya da daha iyisi henüz deneyimler?


1

Scala'daki Java uygulamalarım için testler yazıyorum ve başlamak için iyi bir yer olduğunu kabul ediyorum. Test kapsamım daha iyi çünkü bunları yazmak daha hızlı ve daha kolay (ayrıca Scala'yı kullanmaya başladığım için, isteyerek testler yazmaya daha fazla odaklanıyorum).

Ayrıca Scala'da sadece prototipler ve ıskarta POC'ler yapmaya başladım. Yöneticileri ve amirleri bu tek seferler için Scala'yı kullandığımın mümkün olduğunca farkında hale getirmeye çalışıyorum ve Scala nedeniyle hızlı bir şekilde çalışmaya başlayabildiğimi vurguluyorum. Scalatra ve MongoDB ile 1.5 saat - ve tüm departmanı bu uygulamayı görüyor ve bu konuda soruyor - bizim tatil partisi beyaz fil oyunu izlemek için bir web uygulaması (iyi, tür gerekli) gerekli. Kabul edelim, yöneticilere dilin ne kadar daha etkileyici olduğunu veya eşzamanlılık modelinin çok daha iyi olduğunu hiçbir zaman açıklayamayacaksınız. Ama eğer onlara daha hızlı bir şekilde daha fazla şey yapabilirsiniz, zemini kazanırsınız.

Ama bence en büyük parça geliştiricileri Scala konusunda heyecanlandırmak. Eminim hepimiz aktif olarak yeni teknolojiye ayak uyduramayan geliştirici ile çalışıyoruz ve bazen bu insanları yeni bir şey yapmaktan heyecanlandırmak zor oluyor (neden, gerçekten anlamıyorum). Bu kişilere Scala'nın bazı faydalarını göstermek (REPL'i deneyin) önemlidir. Verimliliğin aynı faydaları hakkında yeterince geliştirici alırsanız, Scala'yı kuruluşunuzda resmi olarak benimseme olasılığınız çok daha yüksektir.

Sözü yaymak ve tabandan çaba sarf etmesini sağlamak 2011'deki temel hedefim. Nasıl göründüğünü göreceğiz, çünkü işimin büyük kısmı için Scala'yı kullanabileceğim günü bekleyemiyorum.


1

Neden birini seçtiğini merak ediyorum? Neden Java'yı kapıdan dışarı atmaya ve Scala'ya kadar gitmeye karar verdiniz?

İş için mükemmel bir araç diye bir şey yoktur. Bir dilde uzmanlığı kapıdan tamamen dışarı atmak ve başka bir dille değiştirmek için hiçbir neden yoktur.

Tek bir dile veya ortama odaklanan bir şirkette (artık) çalışmak istemem tbh. Birçok şeyi bilmek ve iş için doğru aracı seçmek daha iyidir.

Bunun yanında, kuruluşunuzun Scala'ya tamamen geçmesini sağlamak imkansız değilse bile zor. Bunun yerine, Scala'da hepsi ya da hiç yaklaşımı yerine bazı projeleri (hatta projelerin bazı bölümlerini) yapmaya çalışacağım. Örneğin, Java kodunuzu, eski JUnit'e kıyasla oldukça güzel bir sözdizimine sahip olan Specs2 ile test etmeyi tercih edebilirsiniz - ve karmaşık, kafa karıştırıcı ve zor Scala kodu ve paradigmaları da değil, sadece uygulamanızın davranışını tanımlama konusunda sözdizimi şekeri .


0

İyi bir yol, aynı programın iki versiyonunu göstermektir. Bunu yaparak meslektaşlarınıza (pratikte) Scala'nın İfadesini gösterebilirsiniz . Aynı şeyi diğer problemler için de (XML, eşzamanlılık vb.) Yapmak, belirli problemlerle başa çıkmak için Java yerine Scala kullanmanın faydalarını gösterebilir.

Tabii ki göçün bir günde gerçekleşmesini beklemeyin. Az tahmin edebileceğiniz birçok sorun var: Öğrenme eğrisi, mevcut kod tabanı, vb.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.