Scala za wolna, więc Kotlin

Scala za wolna, więc Kotlin
jarekczek
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Siemianowice Śląskie
  • Postów:500
0

W wakacje zacząłem zgłębiać temat pt. Scala. Używają u nas w banku Twitter Finagle. Biblioteka klient/serwer www, z obsługą asynchroniczną. Bardzo to fajnie wygląda i mały projekcik zrobiłem. Problem polega na tym, że ile razy miałbym coś zrobić w Scali to mnie krew zalewa. Laptop (edit: mój prywatny) ma 4GB i jak załaduję IntelliJ + SBT, to walczy na granicy swoich możliwości. Nie śmiem właściwie przeglądarki włączyć. Uruchamianie, kompilacja - zajmuje to sporo czasu, choć projekt jest mikro.

Czy Kotlin będzie lepszym kandydatem do rozwoju? Z opisów wygląda, że jest szybszy, choć nie tak elastyczny jak Scala. Pattern matching nie bardzo (dzone). Zamiast Twitter Finagle używałbym może tworu o nazwie ktor.

Dlaczego nie java? Bo java ma jednak słabe wsparcie dla programowania funkcjonalnego. Nie wszystko da się mapować, zbierać. Brak funkcji zip. I ciągle te wyjątki. Przez łapanie wyjątków w lambdach, trzeba z nich w ogóle rezygnować albo pisać od cholery boilerplate'a. Na takie problemy natrafiłem, choć jeszcze niewiele w tym robiłem. Stwierdziłem, że nie tędy droga.

Czy ktoś już szedł tą drogą (Scala -> Kotlin), albo może po prostu wie, coś na ten temat? Najlepiej z własnego doświadczenia.


Przeważnie ignoruję niezarejestrowanych użytkowników.
edytowany 1x, ostatnio: jarekczek
NA
  • Rejestracja:około 9 lat
  • Ostatnio:2 dni
  • Postów:52
0

4GB w laptopie dla programisty ?

Gdzie Ty pracujesz?

jarekczek
To mój laptop prywatny. W robocie mam sprzęt pierwsza klasa.
Jaca777
  • Rejestracja:około 9 lat
  • Ostatnio:10 miesięcy
0

Jeśli chodzi o problem laptopa 4GB, to raczej nie uda Ci się dobrze na nim pracować z IntelliJ. Narzędzia zużywają podobną ilość zasobów dla Scali i Kotlina.

edytowany 1x, ostatnio: Jaca777
jarekr000000
Sposób działania Sbt (~) powoduje, że może on zużywać dużo RAMu - stale, zwłaszcza w większych projektach. Ale dzięki temu jest właśnie całkiem szybki... o ile ten RAM nie ląduje w swapie.
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 5 godzin
0
  1. Dołóż RAMu.
  2. Programowanie funkcyjne, a nie funkcjonalne.
  3. Profit! :)

"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
Zobacz pozostały 1 komentarz
jarekczek
Mam tu artykuł dra Zdzisława Spławskiego i pisze on Programowanie funkcyjne (lub funkcjonalne) (ang. functional programming).
Wibowit
3 punkt był na siłę :P 'programowanie funkcjonalne' brzmi jak nieudane tłumaczenia/ kalki językowe w korpo-nowomowie.
jarekr000000
Nice. dr Spławski uczył mnie programowania funkcyjnego w latach 90tych. Wysłałem mu kiedyś podziękowania za to :-) Ale już wtedy mówił, że powinno się raczej mówić funkcyjne tylko on się nauczył funkcjonalne.. i mu chyba zostało.
jarekr000000
W jezyku angielskim functional też zabawnie brzmi stąd stały numer, że alternatywą jest programowanie dysfunkcjonalne.
jarekczek
Fajna wycieczka historyczna. Zgadzam się, że funkcyjne jest bardziej poprawne. Ale ja, z racji mojego wieku, mogę używać staropolszczyzny :)
Maciej Cąderek
Maciej Cąderek
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Warszawa
  • Postów:1264
1

Laptop ma 4GB i jak załaduję IntelliJ + SBT, to walczy na granicy swoich możliwości.

  1. Sprzedaj laptopa
  2. Kup za grosze kompa z 512mb ramu
  3. Programuj w assemblerze w notatniku
  4. Profit!
czysteskarpety
czysteskarpety
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Piwnica
  • Postów:7697
0

przecież dodatkowa kostka sodimm 4gb to koszt 50-60zł :)


nie100sowny
Nie do laptopa. Sam mam Lenovo y510p i zmiana z 8GB do 16Gb to mnie kosztowała prawie 600zł :P
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:3 minuty
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
1

Popieram z tym RAMem. Jak coś nie ma minimum 16 gb to leci na podstawkę pod kawę.
Kotlin Ci przy tym specjalnie nie pomoże, IntelliJ i Java też Ci średnio działają - co najwyżej o tym nie wiesz.

Jak juz poznasz Scalę to Kotlin wkurza na każdym kroku - za nie bycie Scalą, ale Java bardziej... więc w ramach kompromisu z zespołem piszę w Kotlinie. Da się.


jeden i pół terabajta powinno wystarczyć każdemu
AC
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 6 lat
  • Postów:33
0

A może Elixir? Klarna Bank AB używają Erlanga, świetnie się sprawdza w systemach rozproszonych i dobrze się skaluje.

jarekczek
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Siemianowice Śląskie
  • Postów:500
0

Widzę, że tu niezłe lobby sprzętowe. Kup, kup, kup. Ale ja jednak zaoszczędzę. Kotlin na IntelliJ śmiga na prędkości porównywalnej z Javą, przy pierwszym wrażeniu. Nie potrzebuje SBT, IntelliJ robi wszystko sam, więc wymagania znacznie niższe.

Wygląda na to, że w Scali najbardziej nie wchodził mi ten SBT. Nauka nowego narzędzia, topornego i słabo udokumentowanego. A tu mamy stary dobry gradle. Podoba mi się.


Przeważnie ignoruję niezarejestrowanych użytkowników.
Zobacz pozostały 1 komentarz
nie100sowny
jak komentowałem wyżej - nie koniecznie tanio w laptopie :P
jarekczek
max supported memory is 4GB
czysteskarpety
czysteskarpety
@jarekczek: no to w zasadzie do wymiany, nie uporadzisz, ew. zbierać na uzywaną biznesówkę od 500pln
jarekczek
Nie wiem, czy czytałeś. Pisałem, że Kotlin i IntelliJ śmiga. Więc dziękuję, ale rady sprzętowe nie są już potrzebne.
czysteskarpety
czysteskarpety
aha, no to luz, ciesze się że mogłem pomóc :]
katelx
  • Rejestracja:prawie 10 lat
  • Ostatnio:4 miesiące
  • Lokalizacja:Hong Kong
0

zmien edytor na lzejszy, np emacs jest fajny.
i jesli chcesz pisac funkcyjnie a nie zalezy ci na jvm to moze haskell?
przy emacsie przydaly mi sie:
https://commercialhaskell.github.io/intero/
https://blog.alainodea.com/en/article/490/haskell-intero-in-emacs-first-impressions-and-howto

edytowany 1x, ostatnio: katelx
jarekczek
Za emacsa możemy podać sobie ręce. Nie wiedziałem, że ktoś oprócz mnie go w Polsce używa. :) Ale programowanie w emacsie jest nieproduktywne, brak porządnego code completion. Tak więc od Intellij raczej nie odejdę.
katelx
akurat nie uzywam go w polsce ;))) ale swoja droga to mysle ze jest jakas spolecznosc, to popularny i latwo dostepny edytor. zalinkowane intero daje jako takie code completion. pewnie zalezy co chcesz robic, sama uzywalam tego do nieduzych projektow i bylo ok.
jarekczek
Emacs był dla mnie niezastąpiony, jak programowałem w customowym języku. Mogłem tam sobie wszystko ustawić, m.in. przez ctags. Ale do programowania w Javie się nie nadaje, w porównaniu z IDE, szczególnie biorąc pod uwagę potężny IntelliJ.
Leroy
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:107
0

Swoja droga polecam do pracy ze Scala ustawic sobie ramdisk, wrzucic tam intellij/mvn/scala-compiler i ustawic w projekcie output compilation path na ten ramdisk i problemy z wolnym odpalaniem i podpowiadaniem sie koncza.

Zreszta, Scala bedzie zawsze wolna dla czlowieka, ktory developuje w ten sposob ze pisze linia po linii i odpala z System.out.println() co by zobaczyc czy sie nie pomylil :)

Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 5 godzin
0

Zreszta, Scala bedzie zawsze wolna dla czlowieka, ktory developuje w ten sposob ze pisze linia po linii i odpala z System.out.println() co by zobaczyc czy sie nie pomylil :)

Jeśli ktoś bardzo lubi programować linia po linii to Scala od dawna oferuje REPLa. Łatwo można odpalić REPLa w konkretnym projekcie (a więc mając klasy z projektu na classpath'ie) z poziomu SBTa: https://alvinalexander.com/misc/scala-how-to-start-repl-session-in-sbt-simple-build-tool


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 5 godzin
0

IntelliJ jest bardzo pamięciożerny.
Scala jest bardzo pamięciożerna.
Kotlin (przynajmniej pod IJ) działa szybciej od Scali, ale cudów nadal nie ma.
Na 4 GB RAMu jest tak sobie (na stacjonarnym całkiem nieźle, na lapopie słabo – nie wiem jeszcze co jest decydującym czynnikiem).
Na 2 GB jest tragicznie.
Na 1 GB (tak, próbowałem!) można sobie czekać i czekać…

Propozycje przesiadki na 512 MB i pisanie w asemblerze uważam za niestosowne. Jest wiele kompilatorów i IDE które nie wymagają 16 giga RAMu żeby sprawnie działać. Ale to JVM. Ciężka, pamięciożerna kobyła.

Wibowit
a Visual Studio z Resharperem to od ilu gigabajtów RAMu działa płynnie?
Azarien
@Wibowit: nie wiem, bo nie używam Resharpera. na 8 GB działa mi tak szybko że RAM nie jest wąskim gardłem.
Wibowit
No to nie dość, że do C# używasz uboższego IDE (ReSharper dodaje do VS to czego brakuje mu do IntelliJa) to jeszcze z większą ilością RAMu. Kiepskie porównanie.
Azarien
faktem pozostaje, że do języków i IDE używających JVM potrzeba znacznie więcej RAMu niż do innych rzeczy.
Wibowit
można przecież używać lekkich i ubogich IDE do Javy. do Scali też można by coś lżejszego postawić, bo SBT 1.1 wspiera LSP (language server protocol od microsoftu), więc można go podpiąć do VS Code i mieć podpowiadanie składni - chyba.
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:3 minuty
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
0

Rozsądna praca ze scalą, javą, intellij, nodejs itd to u mnie około 12GB. (tyle daje na VMki, czasem muszę ich kilka odpalić).
**Sbt **,paradoksalnie jest całkiem szybkie, szczególnie jak siędo javy podepnie (ale kto tak robi..). ~ robi robotę, choć gradle też sie dorobił continous builda. Ostatnio mam wrażenie, ze Sbt pod Intellij też zaczęło sprawnie działać.

Kompilowanie prostej Scali (Scavy) jest trochę wolniejsze, niż javy, ale tak naprawdę staje się wolne dopiero, jak się korzysta z featurów Scali typu implicity, makra. Tych ficzerów nawet nie ma w Kotlinie i Javie - więc trudno porównać.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 1x, ostatnio: jarekr000000
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 21 godzin
  • Postów:3277
0

IntelliJ nie jest pisane z myślą o oszczędzaniu pamięci. Jeśli chcesz w nim pracować to 8GB jest absolutnym minimum, odpalenie jakiejś wirtualki, czy emulatora telefonu to już 16GB i taniej się chyba nie da. Kompilacja Kotlina - nie jest jakoś odczuwalnie wolniejsza niż Java, za to mam wrażenie, że IntelliJ potrafi się momentami zagubić w większym projekcie Kotlin. Jeżeli laptop o którym piszesz to twój osobisty sprzęt, to czas pomyśleć o jego wymianie, jeżeli firmowy, to chyba należy zmienić firmę :D

jarekczek
Pisałem już wyżej w komentarzu, ale muszę powtórzyć: firma daje mi mega sprzęt :) Mój prywatny jest słaby.
piotrpo
Jak pisałem - kompilacja to pół biedy, gorzej z uruchamianiem IDE. Każda kolejna wersja wygląda na bardziej zasobożerną.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)