Scala'yı öğrenmek, cesareti kırılmış hissetmek [kapalı]


9

Java geçmişinden geliyorum ve Scala öğrenmeye çalışıyorum. Şu anda kendimi oldukça bunalmış hissediyorum, Scala ile öğrenecek daha çok şey var, aynı şeyi yapmanın birçok farklı yolu var.

Nereden başlayacağına dair herhangi bir tavsiyenin olup olmadığını ve onların dilde makul derecede yetkin hissetmelerini ne kadar sürdüğünü merak ediyordum?

Döngü kavrayışı gibi küçük şeyler bile gerçekten güçlü görünüyor ama hatırlamanız gereken başka bir sözdizimi parçası!


Scala, çoğu zaman karmaşık bir dildir, bu yüzden cesaretinizi kırmayın! Anekdot olarak oldukça yetkin bir Haskell programcısıyım ve Scala'nın çok daha karmaşık olduğunu düşündüm :) Bir şey öğrenmenin en iyi yolu, bir kitap ve bir proje arasında geçiş yapmaktır. Scala için bir derleyici ve merdiven kitapları öneririm ama her biri kendi için
Daniel Gratzer

Teşvik için teşekkürler! Merdiven kitabı nedir?
jcm

önerilen okuma: Nereden başlamalı?
gnat

Scala'yı birkaç yıl önce Java perspektifinden denedim ve gerçekten anlamadım. Son zamanlarda, Scala'da fonksiyonel programlama üzerine coursera.org'da bir kurs başlattım. Java arka planımın engellemediği yeterince farklı bir yaklaşım. Bunun yerine değişmez veri yapılarında düşünmeyi, algoritmalar hakkında akıl yürütmeyi, küme teorisini, tür teorisini ve gerçek bir işte pratik yapamayacağım diğer eğlenceli şeyleri öğrenmeyi öğreniyorum. Endişelenme; Scala'nın gerçek dünyada hala gerçek bir faydası var.
BobDalgleish

2
Scala almak için yeni ve büyük bir ekosistemdir (temel dilin kendisi o kadar büyük değil - çoğunlukla kütüphaneler ve kavramlar). Bir süre daha sığ olan ucu yapıştırırsanız ve bir seferde bir konsept alırsanız, işler gerçekten bir araya gelmeye başlayacaktır. Tuhaf pişmiş özel sözdizimine benzeyen şeyler genellikle tüm dilde soyutlanabilecek daha genel bir şey kategorisine girecektir. Ama bu şeylerin ne olduğunu anlamak kesinlikle biraz oyun ve okuma gerektirir.
KChaloux

Yanıtlar:


11

Bulunduğunuz yerdeydim ve neredeyse birkaç kez vazgeçtim. Hiçbir şekilde uzman bir Scala geliştiricisi olmamasına rağmen, artık dili sıkı bir şekilde kavradığımı hissediyorum - kesinlikle Java ile olan ilişkimi iyice zehirleyecek kadar yeterli.

Yaptığım ilk şey, birkaç hafta boyunca oyun oynamak, çeşitli blogları ve dile girişleri okumaktı. Bu bir hataydı, işe yarayan pek çok şey öğrenmedim (ya da en azından anlamıyordum) ve tamamen derinliklerimin dışında hissettim.

İkinci şey, teknik olarak basit ama Scala sözdiziminin belirli yönlerini kendi başıma keşfetmeye zorlayan bir sorunu çözmek için biraz zaman harcamaktı:

Bu beni bir gecede bir uzmana dönüştürmese de, artık imkansız hissetmediği dile yeterince aşina oldu.

Güvenle bu artışla nihayet başlamam gereken şeyi yaptım: Martin Odersky tarafından Scala'da Programlama yapın ve her birkaç günde bir bölümün tamamını okumaya çalışın. İyi yazılmış ve kapsamlı bir kitap ve zaten sağlam bir programlama geçmişiniz varsa, çok göz korkutucu olmamalı. İlk okumanızı çok acı verici hale getirmenize gerek yok: isteğe bağlı olarak işaretlenmiş parçaları atlayın, kavramları anladığınızdan emin olun, ancak ayrıntılarda saplanmayın (özellikle, koleksiyonlardaki bölümlerin aşırı dolduğunu ve yağsız). Bir kavramın var olduğunu ve nasıl çalıştığının kapsamlı bir açıklamasını nerede okuyacağınızı bilmek çok büyük bir yardımdır.

Kitabı okumanın bir alternatifi Coursera sınıfına katılmaktır - çok daha az kapsamlı, ancak önemli noktaların çoğunu kapsar ve yönetilebilir, mantıksal birimlere ayrılır. Öte yandan, ders tamamlandıktan sonra derslere erişmenin mümkün olup olmadığını bilmiyorum ve ayrıca birisini (Martin Ordesky kadar açık ve bilgili biri) dinlerken çok daha az meşgul olduğumu keşfettim. kitap okurken.

Scala ile ilgili bir başka sorun da, isme göre parametreleri almak zorunda olduğunuz kelime dağarcığınızın miktarıdır? için-kavrama? kapatma? Eğer bunalmış hissediyorsanız, Scala Terimler Sözlüğü ve hedeflenen yığın taşması aramalarının iyi bir karışımının bana çok yardımcı olduğunu buldum (Daniel Sobral ve Travis Brown'un cevaplarını arayın). Aslında, sözlükle bir Anki destesi oluşturacak kadar ileri gittim ve bunun büyük bir yardım olduğunu hissediyorum.

Son olarak, bu muhtemelen açıktır, ancak kod, kod, kod. Önemsiz bir şey olsa bile üzerinde çalışabileceğiniz bir yan proje bulun. Yaptığım şey, ilgilendiğim bir yazar yeni bir kitap yayınladığında bana bir tweet gönderecek çok basit bir Amazon tarayıcısı yazmaktı. Muhtemelen olması gerekenden daha uzun sürdü, ama o zaman dile aşık oldum.

Eğer bu kadar ileri giderseniz, muhtemelen daha fazla yardıma ihtiyacınız olmayacak, ancak iyi bir öneri, dili kavramaya başladığınızda, temel kavramları daha derinlemesine araştırmaktır. OOP'u biliyorsunuz, fonksiyonel programlamayı okumaya çalışın - kesinlikle kesin olarak söyleyebilirim, aklınızı başınızdan alacak. Scala'da Fonksiyonel Programlama yakında yayınlanacak (ish), ancak erken erişim baskısı zaten mükemmel. Başka bir cevap, Java Geliştiriciler için Fonksiyonel Programlama'ya aşina olmadığım, ancak iyi olduğuna inanmaya eğilimli olduğumuzu gösteriyor (bir O'Reilly kitabı en azından gözden kaçırmaya değmez mi?).

Umarım bu çok uzun sürmez ve belirgin olmaz ve dürüstçe size en iyisini diliyorum. Scala'nın hataları var, ama harika bir dil ve beyninizi hiç bilmediğiniz yönlere götürecek. Ve ben bir yıl içinde "Öğrenme Haskell, cesareti kırılmış hissediyorum" arıyoruz :)


3

Scala, Java'yı düşünmenin çok farklı bir yoludur, bu yüzden cesaret kırmayın! Muhtemelen fonksiyonel düşünme şekline girebilmeniz için Java geliştiricileri için Fonksiyonel Programlama ile başlayacağım .

Yakınında bir Java ve / veya Scala kullanıcı grubu var mı? Bir meslektaşınızla yeni bir dil öğrenmek her zaman daha kolaydır.

İyi şanslar ve ona devam et!


Ayrıca ilgilendiğiniz alanlarla ilgili olarak Scala Frameworks veya Toolkits'e göz atmanızı tavsiye ederim. Deneyimime göre üzerinde çalışmayı sevdiğiniz bir proje olması işleri kolaylaştırıyor. Lift veya Play Framework'e bakın, örneğin Web-Development veya Akka'ya eşzamanlı veya Dağıtılmış uygulamalar sizin işinizse.
juwi
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.