Scala a szakértői ellenőrzésben Miért Scala és nem Java

ellenőrzésben

A Scala téma dossziéban azt a kérdést vizsgáljuk, hogy a népszerű JVM nyelv hol található és merre tart. A szakértői ellenőrzés során hat tapasztalt Scala-fejlesztő ad nekünk perspektívát a Scaláról. Az 1. rész azzal a kérdéssel foglalkozik, hogy mi teszi Scalát annyira lenyűgözővé, és mi is valójában a Scala előtt a Java előtt.

Hozzászólás és nyerj!
Beszélje meg! A Scala szakértői ellenőrzésével kapcsolatos összes konstruktív észrevétel között A "Kezdő lépések a Scalával" című könyv három példányát adjuk át írta Heiko Seeberger.

a véleményed számít!

Miért vagy Scala fejlesztő? Mi az, ami személyesen elbűvöli Önt a nyelvben?

Heiko Seeberger: A Scala-ban különösen az lenyűgöz, hogy - hasonlóan néhány más nyelvhez - tömör és érthető kódot is írhat egyszerre. Ez legjobban azokban az esetosztályokban látható, amelyek megváltoztathatatlan értékű objektumokat képviselnek az egyenlők és a hashCode és a mintaillesztés „beépített” megvalósításával - kvázi „bekapcsolják a szteroidokat”. Akka ezeket a szolgáltatásokat használja annak meghatározására, hogy a színész hogyan reagál az üzenetekre:

Ha ezt a példát a Java-ban valósítaná meg, akkor az egysoros esetosztályok helyett többsoros osztályokat kell írni mezőkkel, getterekkel és mindenekelőtt az equals és a hashCode megvalósításával. És a mintaillesztés helyett az exampleof és type gipszekkel kell dolgoznia. Még akkor is, ha a modern IDE-k enyhítik a munka egy részét, az így létrejövő kód sokkal kiterjedtebb és nem egyértelmű, a Java esetében a hangsúly nem annyira éles a tényleges "mi" -en.

A Scala szakértői

Heiko Seeberger: a codecentrikus munkatársa. A "Kezdő lépések a Scalával" című könyv szerzője @Hseeberger

Julian Tournay: CTO a @mfg_labs címen és a jto/validation szerzője

Daniela Sfregola: Blogger és technikai vezető a PayTouch-nál. @DanielaSfregola

Ivan Kusalic: szoftvermérnök a HERE-nél. A berlini Craftsmanship találkozó, a SoCraTes szervezője. @ikusalic

Daniel Westheide: tanácsadó az innoQ-nál. A "The Neophyte's Guide to Scala" szerzője. @Kaffeecoder

Markus Hauck: informatikai tanácsadó és Scala oktató a kodecentrikus szakembereknél.

Daniel Westheide: Eredetileg a Scala érdekelt, mert már elkezdtem valamivel funkcionálisabb stílusban programozni a Java-ban, de valamikor már nem akartam használni az ehhez szükséges kazánt. Ami engem különösen lenyűgöz a Scala kapcsán, az az erőteljes típusú rendszer, amely alig létezik egyetlen olyan nyelven sem, amelyik mainstream.

Két érdekes példa: Például magasabb rendű típusok és típusú osztályok segítségével a Spark RDD-k (a fürt több számítógépén elosztott gyűjtemény) és a Scala-gyűjtemények segítségével elvonatkoztathatok - az alkalmazáslogikám akkor semmit sem tud arról, hogy futtassa egy Spark-fürtben egy RDD-n, vagy lokálisan egy kis Scala-gyűjtemény gépén. Az úgynevezett fantomtípusok lehetővé teszik, hogy fordításkor megbizonyosodjak arról, hogy nem véletlenül írok hozzáféréseket az olvasott szolga adatbázisomhoz.

Ivan Kusalic: A Scala egy nagyszerű programozási nyelv, amely különösen alkalmas háttér-feldolgozásra vállalati környezetekben. Ami a legjobban tetszik, a támogatott programozási stílusok sokasága: inkább a funkcionális és az objektum-orientált programozás keverékét részesítem előnyben, amelyben a funkcionális megközelítés biztosítja a változhatatlanságot és a folyamatáramlást, míg az objektumorientált megközelítés jó adatkapszulázást biztosít.

A Scala nagyon kifejező nyelv és igazi öröm együtt dolgozni. Ez lehetővé teszi olyan rugalmas és biztonságos tervek létrehozását, amelyek sok más nyelven egyszerűen nem lehetségesek. Az egyszerű DSL-től kezdve a típusosztályokig vagy akár makrókig, ha szükség van rájuk. A Scalával való együttműködés során legtöbbször úgy érzem, hogy gondolataimat közvetlenül kódokká tudom fordítani, anélkül, hogy bármilyen kínos és hosszadalmas fordítással kellene bajlódnom.

És akkor természetesen ott vannak a srácok! Igazából már nem tudom elképzelni, hogy olyan nyelvvel dolgozzak, amelynek nincsenek kifejező típusai. Végül, de nem utolsósorban meg kell említeni az egymásra épülő funkciók szépségét. Tulajdonképpen az a tény, hogy tipikus osztályok állnak előtted mint tervezési minta és nem mint beépített szolgáltatás, mindent elmond.

Markus Hauck: A Scala elbűvöl, mert egyesíti a JVM funkcionális programozását egy kifejező típusú rendszerrel. A Java-val való interoperabilitás egy másik bónusz, különösen akkor, ha fokozatosan kell áttérni a Java már létrehozott kódbázisáról a Scalára.

Daniela Sfregola: Egy előző életemben Java fejlesztő voltam. Nagyon szerettem dolgozni a nyelvvel. De néhány év fejlesztés után egy rugalmasabb és kifejezőbb nyelvet akartam kipróbálni, ezért döntöttem úgy, hogy játszok egy kicsit a Scalával. Akkor még ez volt az egyik fényes új nyelv, amellyel a menő gyerekek játszottak.

Soha nem tértem vissza az utazásról. Véleményem szerint a Scala egy lenyűgöző és hatékony nyelv, amely lehetővé teszi a programozó számára, hogy eldöntse, hogyan kell kinéznie a kódnak. Más nyelvek esetében ezt a döntést valószínűleg a nyelv szintaxisa hozza meg.

Julien Tournay: 2009 körül elkezdtem játszani a Scalával. Ennek legfőbb oka a lambdas volt, amit nagyon hiányoltam Java-ban. Abban az időben ugyanabban a cégben dolgoztam Guillaume Borttal, aki kifejlesztette a Play Framework-et. Guillaume és a társaság többi tagja néhány hónappal később érdeklődött Scala iránt. Kihasználtam az alkalmat, hogy szakszerűen használjam a nyelvet, és ragaszkodtam hozzá.

Ahogy jobban kijöttem a Scalával, a nyelvben tetsző dolgok nagyon megváltoztak. Eleinte lambdas csak jól érezte magát. Sokat tettem a JavaScript-ben, és ez paradoxonnak tűnhet, de a Scala közelebb érezte magát a Java-hoz, mint a Java-hoz. Aztán megtudtam róla egy kicsit, felfedeztem a típusosztályokat, majd a tiszta funkcionális programozást, a kategóriaelméletet, a típusszintű programozást, a logikát, a programozási nyelv elméletét - és még mindig tanulok!

Amit különösen szeretek Scalában, az az utazás. A nyelv nemcsak jobb programok megírásában segít. A Scala és közösségei biztosak lehetnek abban, hogy Ön fejlesztőként „nő”. Nagyon alapvető problémákkal kezdődik („A Java túl csevegő”, „Lambdákat akarok”, „A Sparkot akarom használni”), és minél tovább jut be a nyelvbe, annál jobban ki van téve az új fogalmak egész világának. Nem csak új könyvtárak vagy eszközök vannak, hanem teljesen új ötletek. Eleinte teljesen elsöprő érzés, de egy idő után élvezi a tanulást.

Miért Scala és nem Java?

Daniel Westheide: A sokkal erősebb típusú rendszer mellett számos más oka is van annak, amiért általában a Scalát preferálnám. Kettő, amelyet ezen a ponton külön kiemelnék, és amelyek bizonyos mértékben összefüggenek egymással, egyrészt az algebrai adattípusok meghatározásának lehetősége, másrészt a minták illesztése annak érdekében, hogy ezekkel az adattípusokkal könnyen olvasható kóddal működjenek.

A következő kódpéldában mindkettőt működés közben látjuk: Meghatározunk egy Session nevű algebrai adattípust, és megkülönböztetünk egy bejelentkezett felhasználó munkamenetét és egy névtelen munkamenetet. Ezután a mintaillesztéssel személyre szabott vagy általános ajánlásokat adunk vissza:

Daniela Sfregola: Bár a Java hamarosan kihasználja a funkcionálisabb stílus előnyeit, a Scalának vannak olyan tulajdonságai, amelyek a Java-nak (még) nincsenek, és sokkal kompaktabb szintaxis. Ez sokkal szórakoztatóbb és produktívabbá teszi a Scalával való programozást, mint a Java-val - bár el kell ismernem, hogy a Scalát nehezebb megtanulni.

Ivan Kusalic: A típus megbízhatósága, expresszivitása, tömörsége, a funkcionális paradigma, az absztrakció lehetőségei stb. A lényeg az, hogy a Java és a Scala egyszerűen két nagyon különböző nyelv. A Scala sokkal több, mint a Java, és ezeknek a pontoknak a pontos meghatározása órákba telik.

Természetesen a Scalának vannak hátrányai is: A nagyobb komplexitás és a meredek tanulási görbe. És a munkaerőpiac. Meg lehetne vitatni a sebességet, de azt tapasztalom, hogy az a kódkód, amelyet valóban módosítani kell, nincs arányban az olvashatósággal. Ezen felül, ha kétségei vannak, akkor ezt közvetlenül Java-ba írhatja, ha valóban szükséges az optimalizálás. De a munkaerőpiac valóban a nagy mínusz a Java-hoz képest. Minden mással a Scala nyer - és főleg nagy.

Markus Hauck: Scala típusú rendszere miatt. A Java-nak vannak komoly gyengeségei, és a gyakorlatban a gépelés inkább zavar, mint segít. A Scalában másképp néz ki, a Scala fordítóval sok hibát megelőzhet.

Julien Tournay: Számomra a szakmai fejlődés legnagyobb kihívása a projekt „méretezése”. Ez alatt azt értem, hogy egyre nagyobb projekten dolgozom, és egy olyan csapat mellett, amely egyre több fejlesztőt tartalmaz. Véleményem szerint a típusú rendszerek sokat segítenek e probléma enyhítésében.

Ha Java fejlesztő vagy, kérdezd meg magadtól: Miért preferálom a Java-t a Python vagy a JavaScript helyett? Ha a válasza "Mivel szeretem a statikus nyelveket", érdemes megnéznie, hogy más nyelvek mit kínálnak ezen a területen. Vannak olyan nyelvek, amelyek sokkal jobb típusú rendszerrel rendelkeznek, mint a Java. Ezután kipróbálhatja például a Scalát vagy a Haskell-t, egy metanyelvet vagy akár az Idris-t. A Scala előnye, hogy a JVM-en fut, megkönnyítve a meglévő Java kódbázisról a Scalába történő áttérést.

A szakértői ellenőrzés 2. részében megvizsgáljuk a különbségeket a Scala és a funkcionális programozás között a Java 8 Lambda kifejezésekkel. Maradjon velünk!

És te? Hozzászólás és nyerj!

Mi az a számodra a Scala elbűvölője? Hol látja a Scala előnyeit - vagy hátrányait - a Java-val szemben?

Hozzászólás itt!

A Scala szakértői ellenőrzésével kapcsolatos összes konstruktív észrevétel között A "Kezdő lépések a Scalával" című könyv három példányát adjuk át írta Heiko Seeberger. (Ne felejtse el megadni ehhez az e-mail címét).