Scala asal zaman için hazır mı? [kapalı]


22

Şimdi Scala'yla ("merhaba dünyası" nı seviyorum ve başvuruları tamamladı! Alet setleri hazır mı? Scala kurumsal / iş uygulamalarında kullanım için uygun mu? Önemsiz bir projede "sen" kullanır mısın?

(Asılsız) endişelerimin bazıları şunlar olabilir:

  • .Eve ve Java uygulamalarını geliştirmek zorunda olduğumuz kadar zengin IDE ve araç setleri (Scala için eclipse, java için eclipse ile sınırlı gibi görünüyor)?
  • build / CI / test araç takımları Scala ile etkin bir şekilde başa çıkabilir mi?
  • özlü kodu nasıl sürdürülebilir olması olabilir (teşvik?) olmak dilde yazılmış?
  • Scala deneyimine sahip geliştiriciler bulmak mümkün mü?
  • on-line referans ve dile "intro" dan daha fazla olan kitaplardan yardım alabilecek kadar kritik kütle var mı?

Sonuç olarak, ekosistem şimdi kullanacak kadar olgun mu, yoksa nasıl geliştiğini görmek için beklemekten daha mı iyi?

EDIT: Diyelim ki "önemsiz" çok yıllı, çok sürümlü, 10-20 geliştirici bir proje.


7
Sormak zorundaysanız ... :)
Scott Whitlock

Önemsiz olmayan ve girişim arasında çok fazla alan var. Ne kadar büyük bir proje ile ilgilendiğinizden emin değilim.
Eric Wilson

@FarmBoy Büyük nokta, güncellendi.
jayraynet

@Scott Witlock: evet, muhtemelen
haklısın

Scala Pythonic değil, Clojure. Yeterince söylendi.
İş

Yanıtlar:


22

Scala'nın Guardian'da ve Twitter'da vahşi doğada kullanıldığı doğru olsa da, temel bir endişe var.

Java'nın popülaritesinin çoğu, okunması ve bakımı nispeten kolay olduğu gerçeğinden geliyor. Scala'nın burada birçok farklı stille yazılmış olabileceği bir sorunu var. OO tarzı vs fonksiyonel tarzı burada belirgin bölünme, ancak Scala 3 seviyeleri hakkında konuşurken daha karmaşık hale gelir .

Ekibinizin ve potansiyel yeni işe alımların hepsinin aynı stili izleyebildiğinden ve stilin etkili olabilecek geliştiricileri işe alabilmeniz için yeterince basit olduğundan emin olmanız gerekir (herkes% 2'yi işe alamaz) .

Bu desteğin oldukça hızlı bir şekilde kapatılmasını beklememe rağmen, takım desteği de henüz tam olarak o değil. TypeSafe kalabalığından tam Scala yığını için destek alabilirsiniz . Sanırım Scala nişanını koruyacak, ancak seviyeler aslında dil / derleyici / içine yerleştirilene kadar, 1-2 yıllık heyecan verici üretkenlikten sonra ekiplerin başına gelen bir bakım baş ağrısının geldiğini görüyorum.

Daha fazla ayrıntı için bu ilgili cevaba bakınız.


bu problem diğer çoklu paradigma dillerinde mi oluyor yoksa Scala'ya mı özgü geliyor?
DPM

2
Scala'dan daha belirgindir; çünkü, eklenen dil özelliklerinin bazıları, "Mutfak Lavabosu" ününün nedenlerinden biri olan diğer dil özelliklerinin bazıları ile sorunsuz bir şekilde bütünleştirilmemiştir.
Martijn Verburg

12

Scala şu anda Twitter ve The Gaurdian tarafından kullanılıyor, bu yüzden önemsiz olmayan uygulamalar için kesinlikle hazır.

Scala programcıları çok motive olacak ve muhtemelen çok iyi olacak. Yeni bir dil seçmek, yetenek çekmek için harika bir yoldur.

Tabii ki, Scala programcıları genellikle profesyonel Scala deneyimine sahip olmayacaklar ve kullandıkları deyimlerde bazı çeşitlilikler olabilir. Bazıları Haskell benzeri saflık için çaba sarf edebilir, bazıları ise kapanmış Java olarak görebilir. Dolayısıyla tutarlı kodlama standartları ve sözleşmeleri geliştirmek biraz zaman alacaktır.

Pek çok Java aracı iyi çalışacaktır, ancak IntelliJ Idea, Eclipse üzerindeki yatırıma değecektir.

Genel olarak, proje üzerinde kontrol sahibi olmanız iyi bir seçim olabilir. Eğer bu büyük bir sigorta şirketinin bir parçası ise, 'Tüm projeler Maven tarafından inşa edilecek ve WebSphere'te konuşlandırılacak' gibi mimari kurallar varsa sorunlarla karşılaşabilirsiniz. (Bu özel kuralın bir sorun olacağını düşünmek için hiçbir nedenim yok, ancak bu tür kuralların çoğalması sizi bir noktada tetikleyebilir.)


Twitter Scala ile ne yapar?
Anto

1
@Anto örneğini görmek için infoq.com/interviews/kallen-scala-twitter
Jesper

10
Twitter'ın mühendislik kararlarına vade & sağlamlık kanıtı olarak güvenmezdim.
kırmızı-kir

6

Benim izlenimim, "geleneksel" dillerle (Java gibi) gelen eko sistemin çoğunun beceriksizliğini telafi etmesi gerektiğidir.

Sorun, belirli bir dilde (Scala) ne kadar araç bulunduğunu değil, o dil için mevcut araçların referans dil için mevcut araçlardan (Java) daha iyi olup olmadığıdır. 100 vasat takım size vermeyeceğinden, iyi bir takımın size ne sağlayabileceği. Ve unutmamanız gereken bir şey de, dilin kendisinin bu araçların bir parçası olduğudur.

Dilin bildirimi

  • Java, ürettiği hataların miktarı ve ciddiyeti ile ters orantılıdır; bu nedenle Java, böcek üretiminde bu kadar büyüktür ve bunları önlemek ve izlemek için birçok araca ihtiyacınız vardır.
  • verimliliğinizle orantılıdır, bu yüzden Java bu kadar aşırı derecede ayrıntılıdır ve çok sayıda kod üreticisine ve benzer araca ihtiyacınız vardır.

Örneğin, bir keresinde statik yazmanın anlamsız olduğunu iddia eden Ruby denen bir adam tarafından korkunç bir blog yazısı okudum, çünkü testleriniz tip güvenliğini kapsayacak. Bu, açık bir şekilde, henüz ifade niteliğinde bir statik tip sistemle çalışmayan birinden geldi. Tüm dil ilişkilerini bir dil anlambiliminde temsil edebileceğimi ve yapacak çok işim olmadığını varsayalım (ve çoğu modern dil, tür çıkarımını desteklediğinden dolayı), bütün bunları ücretsiz olarak kabul ediyorum.

Bir düşünceyi biraz daha ileri itmek: Birim testleri, bir birimin tanımlandığı gibi davranmasını veya üniteyi yeniden ifade etmesini sağlamak için, birim testinin çalıştırılabilir teknik özellikleri olduğunu garanti eder. Ancak bildirimsel programlama yoluyla, birimlerin çalıştırılabilir özellikleri vardır. Yine, ücretsiz bir şey olsun.

Söylemeye çalıştığım şey, sizin için hangi dil özelliklerini yapabileceğinizi hafife almamanız gerektiği. Ve onları sahada gerçekten denemezseniz, asla anlamayacaksınız.

Asıl soruya dönelim: Scala'nın mevcut araçları Java'dan daha mı iyi? Söylemesi zor. Ne yapmak istediğine bağlı. Bence hepimiz dilin önemli ölçüde daha iyi olduğu konusunda hemfikirdik, şimdi soru şu, iş alanınızda ne kadar iyi bir ekosistem bulacaksınız.
Web için, Lift gerçekten birlikte gitmek için sağlam bir seçenektir. Masaüstü veya mobil hakkında bilmiyorum.


5

Diyelim ki "önemsiz olmayan" çok yıllı, çok sürümlü, 10-20 geliştirici bir projedir.

Bu çok fazla risk. Ödüllerin buna değmesi gerekirdi. Kurumsal iş uygulamaları dünyasında ve orta ila büyük ölçekli projelerde risk alma genellikle sınırlıdır. Ya da daha ziyade başa çıkmak için yeterince risk var ... Tahmin edilebilirlik daha önemlidir.

Evlat edinmenin bu şekilde çalışacağından şüpheliyim.

Riskin POC, kritik olmayan bileşenler, testler veya sorunun Scala tarafından alternatiflerden çok daha iyi ele alındığı gibi görünen kısımlar üzerinde çalışan bir avuç insanla başlaması daha muhtemeldir (belki bir şey varsa) Örneğin aktör) ... Ardından araçlar olgunlaştıkça topluluk büyür, şirkette know-how büyür, sonra genişleyebilir.


5

Java çalışma zamanından yararlanarak, Scala kesinlikle asal zaman için hazırdır. Bir Scala uygulamasını dağıtabilirseniz, bayt kodu üretildikten sonra, her zaman Java çalışma zamanının belirli bir sürümü ile çalışmalıdır. Scala tabanlı kitaplık, aşina olduğunuz diğer Java üçüncü taraf kitaplıkları gibi çalışacaktır.

IDE'ler, araçlar ve diğer her şeyi inşa etme konusunda Scala, Java'nın sahip olduğu proliferasyon seviyesine sahip değil. Bu yüzden Scala tabanlı çerçevelere veya Scala tabanlı araçlara sahip değilsiniz. Bunun Java'nın popülaritesi ile Scala'nın artan popülaritesi ile söylediğinden daha fazlası var. Scala, Scala IDE ve sbt, build aracını içeren işlevsel araçlara sahiptir. Fakat onlar orada diğer saf Java yardımcı araçlarından bazıları kadar karmaşık değiller.


4

@Huynhjl ve @FarmBoy'dan kiraz toplama noktaları:

  • Yeterince fazla sayıda deneyimli Scala programcısı bulmak zor olabilir.

  • Scala için "en iyi uygulama" dogması hala gelişmektedir (*).

  • Stil rehberleri, sözleşmeler vb. Hala gelişmektedir (*).

  • Takım desteği hala değişiyor (*).

Bunları bir araya getirmek, belki de sormanız için daha iyi bir soru (kendiniz / kendiniz) kuruluşunuzun Scala'yı "önemsiz" bir projede kullanmaya hazır olup olmadığıdır? Hala evrimleşen birçok şeyle büyük bir proje yaparak başa çıkabilecek insanlara sahip misiniz? Tersine, önce daha küçük bir proje yapmak daha iyi olur mu?

(* Aslında, çoğu dil hala bu yönlerden bir veya daha fazlasıyla evrimleşmektedir. Buradaki sorun değişim / akı oranı ... ve ekibinizin bununla başa çıkıp çıkamayacağıdır.)


1
Scala geliştiricilerinin 'yeterince büyük' ​​sayısı, Java geliştiricilerinin 'yeterince büyük' ​​sayısından çok daha küçük olacaktır.
kevin cline

3

David Good Stuff başlıklı mükemmel bir blog yazısı olan en üstünde Pollak Fonksiyonel Diller Kural olacak (ancak bu yıl) Scala hazır olup olmadığını genel olarak fonksiyonel dillerin işinin zor girer ve ayrıntılı olarak Scala ben çok daha iyi anlamak için okuma tavsiye olduğunu asal süre için.


0

Ben arasındaki farkı hiç anlamadım enterpriseve non enterpriseprogramlar.

Evdeki gibi aynı programları işte kullanıyorum. Boş zamanlarımda vasat bir program kullanmam - neden yapayım?

Profesyonel olmayan bir program nedir? Kötü uygulamaların kullanıldığını gördüm, çünkü kullanıcı daha iyi bilmiyordu, uyumluluk sorunları yüzünden ya da kullanıcı yeni bir şey söylemeyi reddetti.

Ancak bu, yazılımın ve hedeflerin, geliştiricinin aklında tuttuğu bir problem - programın yazdığı dilin değil. Programın hangi dilde yazıldığını düşünmeye başlarsanız, zaten bitti: başarısız.

Enterprise-Uygulama, ciddi tartışmalar için kullanışlı olmayan bir değerlendirme terimidir.

Ve hangi müşteri işinizi hangi dilde yaptığınızı biliyor? Bazen umursarlar, bazen umursamazlar.

Bir dilin olgunluğuyla ilgili sorularınız olabilir - ancak her türlü işletme ve tüm uygulamalar için soruyu cevaplayamazsınız.


1
Şirket , bir pazarlama teriminden çok daha fazlasıdır ... Temel olarak , bu aracı satın aldığımız şirketin en azından bizim olduğumuz sürece olacağı ve destekleyecek kaynakları olduğu anlamına gelir . Yukarıdaki şirket için açık kaynak organizasyonun yerine geçebilirsiniz .... Sonuçta, bir kişi tarafından yönlendirilen bir dil seçmek, küçük bir ekiple büyük bir açık kaynak temeli ile Fortune 100 teknolojisi arasında büyük bir fark var. şirket.
kırmızı-kir
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.