@datdata
Taki kod można napisać w każdym języku.
Owszem, taki kod jest spotykany w bibliotekach, ale u mnie firmowy kod wygląda jak ulepszony Javowy: wciąż się stosuje długie nazwy zmiennych, a dzięki podejściu niemutowalnemu, kod wygląda jeszcze czytelniej.
No i stosowanie symboli ponad słowa to jak dla mnie plus (nie mówie o nazwach metod, a raczej o krótszym zapisie genericsów).

- Rejestracja:ponad 13 lat
- Ostatnio:prawie 3 lata
datdata napisał(a):
Problem ze Scalą jest taki, że można napisać kod, który dla przeciętnego czytającego programisty nie różni się niczym od Brainfucka.
To raczej problem środowiska (ludzi) niż języka.
Programiści dzielą się na dwa rodzaje:
- tych co lubią Brainfucka (i starają się to okazywać)
- tych co nie lubią Brainfucka (i tępią tych pierwszych)
W przypadku Brainfucka widząc kod wiesz że to tylko przykład dla jaj.
W przypadku Perl nie masz takiej pewności.
Kod można zamącić nawet legalnie (regexp, lambda, makra, generyki), nie trzeba do tego wyszukanego języka.
Jeśli środowisko (firma, szef) na to pozwala, to jeśli nie robisz code review, najlepiej po prostu zmienić pracę.
- Rejestracja:prawie 12 lat
- Ostatnio:prawie 5 lat
- Lokalizacja:Warszawa
- Postów:1683
ten temat powinien trafić tutaj Inne języki programowania
A pod Linuksem lepiej zainteresować się Scalą czy C#? Teraz Microsoft odtworzył .NET i mam dylemat, jest VisualStudio, Xamarin, MonoDevelop. Czy może jakiś inny język z którego jest jakiś pożytek. Wiem jest python C/C++, ale coś z nowszych języków bym wolał przyszłościowych.

- Rejestracja:ponad 9 lat
- Ostatnio:ponad 8 lat
- Postów:93
W .NET i tak lepiej programować na Windowsie (Visual Studio, MSSQL, etc). Bolączką Scali jest natomiast to, że w wielu firmach trzeba i tak umieć Javę, a jak wszyscy wiemy, Java jest poroniona.
Jak nie trawisz Windowsów, to pójście w .NET jest conajmniej dziwne. Bierz coś ze stacka JVMowego, albo coś zupełnie z czapy jak python czy ruby czy cokolwiek.
Dzięki nz. Z tego co widzę VisualStudio Code jest tylko do aplikacji webowych pod Linux. Więc zostało mi tylko python, ruby, php lub javascript.
Takie języki jak Vala ,D, Ceylon, Kotlin, Groovy to jak na razie nisza. A do Scali powiadasz i tak trzeba znać dobrze Jave.
Swift na Linuksie też nie ma dobrego IDE?
No to pozostaje Java 9, nawet pobrałem już wersję
java -version
java version "1.9.0-ea"
Java(TM) SE Runtime Environment (build 1.9.0-ea-b81)
Java HotSpot(TM) Client VM (build 1.9.0-ea-b81, mixed mode)
I pod Eclipse Mars mam możliwość wyboru dwóch wersji. A w sieci pojawiły się już jakieś kursy Javy 1.9.
Czy to jest dobre rozwiązanie, pogodzić Linux z programowaniem w Javie, czy może pójść na Linuksie w aplikacje webowe?
Osobiście mam już za sobą podstawy Javu i C# , gdzie ten ostani język jest jakby łatwiejszy trochę dla mnie.

Swift na Linuksie też nie ma dobrego IDE?
ogólnie programowanie pod iOS na innych systemach to ponoć katorga
A do Scali powiadasz i tak trzeba znać dobrze Jave.
Żeby pracować w Scali to najczęściej trzeba tą Jave znać. Bo np. 1 część systemu jest w Javie, a druga już pisana w scali, czy inne cuda. Natomiast do samego programowania w Scali to niekoniecznie trzeba znać jakikolwiek inny język.

- Rejestracja:ponad 9 lat
- Ostatnio:ponad 2 lata
- Lokalizacja:Wlk. Brytania
- Postów:105
Co się właściwie programuje w Scali i innych językach co stosują to programowanie funkcyjne?


http://www.slideshare.net/deanwampler/why-scala-is-taking-over-the-big-data-world
Właściwie trudno w 2015 roku znaleźć sensowne powody, aby nie pisać w Scali. Kiedyś były to:
-
powolna kompilacja
-
słabe IDE
-
zbyt mało programistów
-
kompatybilnośc wsteczna
-
Kompilacja przyrostowa z SBT / Zinc + dobra modularyzacja projektu i czasy rekompilacji mieszczą się w 2-4 sekundach. Ba, mam projekt na 20 tys. linii kodu w Scali 2.11, w którym sbt clean package zajmuje ok. 12 sekund na Intelu 2. generacji.
-
Plugin IDEA do Scali jest lepszy niż większość pluginów do innych popularnych języków (np. C++, C# w VS bez resharpera albo Python, PHP, JS, Ruby, Delphi).
-
Może jest ich mniej, ale ci, którzy są, są średnio znacznie lepsi od Javowców. Tzn. jest bardzo silny efekt "Python paradox", o którym pisał Paul Graham. Słabi programiści nie uczą się Scali, bo "za trudna". Oczywiście nie każdy programista ze Scalą w CV to od razu jakiś wymiatacz, ale zwykle wymaganie to nieźle odfiltrowuje to największych głąbów, przez co ułatwia rekrutację. Zamiast wybierać 2 z 1000 średnio-kiepskich kandydatów, wybieramy 2 najlepszych z 10 dobrych.
-
Nie wiem, czy to ma takie duże znaczenie i czy akurat Scala jest dużo gorsza pod tym względem od innych języków - w każdym projekcie niezależnie od języka są problemy z binarną kompatybilnością wsteczną bibliotek. Mamy projekt pisany częściowo w Javie, częściowo w Scali i na razie część Javowa sprawia znacznie więcej problemów z kompatybilnością. Może dlatego, że w Scali wystarczają nam może 3 bardzo specyficzne biblioteki (z czego jedna compile-time-only, bez runtime'u), a w Javie nie da się sensownie pisać bez Guavy, pięciu frameworków i zyliona commonsów, a może dlatego, że jak w Scali podlinkujesz złą bibliotekę od nie tej wersji Scali, to po prostu wybucha, natomiast Java działa tak "troszkę".

- Rejestracja:ponad 15 lat
- Ostatnio:minuta
Jave znam na mniej niż miernym poziomie. Nie przepadam za nią z czysto nie praktycznych powodów, nie lubię i już. Ale samą scalę wg mnie warto znać żeby móc chociażby użyć gatlinga http://gatling.io/, którego raporty odpowiadają wprost na pytania jakie zadaje mi menedżer ;)





Pattern Matching jest super w językach funkcyjnych. Gdzie w Java wygląda to jak kupa.
def fibonacci(in: Any): Int = in match {
case 0 => 0
case 1 => 1
case n: Int if (n > 1)=> fibonacci(n - 1) + fibonacci(n - 2)
case n: String => fibonacci(n.toInt - 1) + fibonacci(n.toInt - 2)
case _ => 0
}
println(fibonacci(3))
println(fibonacci(-3))
println(fibonacci("3"))

- Rejestracja:ponad 13 lat
- Ostatnio:około 5 lat
- Lokalizacja:Wrocław
- Postów:292
Kod przekopiowany z jakiegoś tutoriala. Nie chodziło mi o super kod a o ideę.
Jak to taki zly kod byl, to w java byloby jeszcze gorzej ;p
gwoli ścisłości, stąd:
http://www.scala-tour.com/#/pattern-match
Video: Reactive RESTful APIs with Akka HTTP and Slick
https://tech.zalando.com/blog/video-reactive-restful-apis-with-akka-http-and-slick/
Coraz więcej widzę możliwości pracy w scali bez doświadczenia komercyjnego. Często wymagane jest doświadczenie w Javie i np chęć nauki Scali( lub jej podstawy). Orientujecie się może jak wygląda negocjowanie zarobków w takiej sytuacji?
Ofert jest całkiem sporo. już nie wspominając o akcji Jacka Laskowskiego w Warszawie. W samym Krakowie można znaleźć coś dla Scala newbie z bagażem Javovym.
Hitem jest dla mnie ogłoszenie http://4programmers.net/Praca/9615-Senior_Software_Developer_%28Scala%29, które od seniora wylaga:
good knowledge of Scala (reading the "Programming in Scala" book by Odersky should suffice) and some code written (completing exercises of "Functional Programming in Scala" on Coursera is a minimum)
Ale dostane tez pytanie czemu nie moglem napisac tego w technologii co znam, np. Java. Myslalem o jakiejs web appce ogolnie. Ale predzej docenia to pewnie koledzy niz reszta. Ale tez niekoniecznie bo jak komus pokazalem wedlug mnie fajny zapis w scali to koledze sie nie podobalo. Mysle, ze dlatego bo nie wiedzial jak to czytac na 1 rzut oka.

- Rejestracja:prawie 20 lat
- Ostatnio:około godziny
Jak pracowałem w Sabre to byłem w zespole Javowców, ale oprócz wielkiej starożytnej biznesowej krowy w Javie mieliśmy też do utrzymania dość spory kawałek kodu w Pythonie. Poprzednicy "ukradkiem" napisali narzędzie do automatyzacji testów w Pythonie (i nawet jakoś dużo wiedzy o nim nie przekazali następcom), a narzędzie zyskało popularność i uznanie kadry zarządzającej, więc my musieliśmy się uczyć Pythona (bleeeee) i rozwijać czy łatać to narzędzie. Jak widać - da się przemycić ulubiony język programowania.
Ale po co chcesz coś przemycać? Prowadzisz ewangelizację czy co? Co da się napisać w Scali, czego nie da się w Javie? A gdy masz w firmie zespól programistów Java, to jaką maja mieć motywację do przejścia na Scalę? Gdzie składnia jest niepodobna do niczego innego i trzeba się uczyć języka od zera (na pewno przejście C# -> Java jest mniej bolesne niż Java->Scala).

- Rejestracja:prawie 20 lat
- Ostatnio:około godziny
Po to, by rozwijać własne zainteresowania. Pythona dało się przemycić w Sabre, a podobieństw między Javą, a Pythonem jest zdecydowanie mniej niż między Javą, a Scalą.
Kiedy uczyłem się C i Turbo Pascala (nie pamiętam w jakiej kolejności to było) to nauka drugiego z nich trwała może ze dwa tygodnie. Języki mają wizualnie różne składnie, ale filozofia programowania jest bardzo podobna - stąd szybka nauka kolejnego języka. Scala ma składnię wizualnie mocno różną od Javowej, ale pisanie w Scali jak w Javie bez średników przychodzi bardzo szybko. Mało tego, IntelliJ potrafi nawet automatycznie konwertować kod Javowy na Scalowy:
- Zrzut ekranu z 2015-12-19 14:08:54.png (11 KB) - ściągnięć: 76


- Rejestracja:prawie 20 lat
- Ostatnio:około godziny
Nie jest (podobnie jak np pisanie getterów w Pythonie), ale pokazuje, że można bardzo szybko przeskoczyć z Javy na Scalę i tworzyć kod o takiej samej funkcjonalności. Nie da się tego zrobić przy przesiadce z C# na Javę, bo Java ma inną bibliotekę standardową i frameworki. Stąd przy przesiadce z C# na Javę trzeba się uczyć frameworków od zera. Przy przesiadce z Javy na Scalę można początkowo pozostać przy dotychczasowych frameworkach i korzystać dalej w niezmienny sposób z biblioteki standardowej. Scala bardzo dobrze integruje się z Javą (oba języki kompilują się do Javowego bajtkodu i można wywoływać Javowe klasy ze Scalowych i vice versa).
Wibowit napisał(a):
Przy przesiadce z Javy na Scalę można [...] korzystać dalej w niezmienny sposób z biblioteki standardowej.
Bałbym się zobaczyć taki kod. Pewnie by działał, ale....
Potrzebne jest zrozumienie programowania funkcyjnego by pisać swobodnie w Scali. Można się go nauczyć na samej Scali, ale trzeba napisać parę mniejszych (parodniowych) projektów samemu, żeby ogarnąć podstawy.

- Rejestracja:prawie 11 lat
- Ostatnio:ponad 7 lat
@Wibowit, każdy wie, że można pisać "Javę w Scali" i wtedy faktycznie twoje zdanie filozofia programowania jest bardzo podobna - stąd szybka nauka kolejnego języka
jest jak najbardziej słuszne. Tylko jaki to ma wtedy sens? Jeśli chcemy pisać faktycznie idomatyczny kod w Scali, to wtedy filozofia programowania w Javie i w Scali jest daleka od 'bardzo podobnej'.
karolinaa