Jaki język, żeby odpocząć od głównego?

0

Na co dzień piszę w JS/TS, a w pewnym stopniu znam także Pythona. Do perfekcji jeszcze mi daleko, ale ze względu na ogrom pracy ostatnio, chcę od niego odpocząć. Lubię się uczyć całkowicie nowych rzeczy i dla przyjemności popisałbym w czymś innym.

Jaki język polecacie się pouczyć dla funu lub w jakich sami piszecie, żeby odpocząć od tych używanych w pracy na co dzień?
Na pewno nie chcę więcej skryptowych i dynamicznie typowanych. Dodatkowo inne niż typowy mainstream jak C#, Java, bo z nimi miałem kontakt na uczelni. Zastosowanie może być dowolne, paradygmat tak samo.

2

Na pewno nie chcę więcej skryptowych i dynamicznie typowanych. Dodatkowo inne niż typowy mainstream jak C#, Java, bo z nimi miałem kontakt na uczelni.

Może Kotlin?

2

C / C++ :) Osobiście mam przy tym fun a późniejszy powrót do innego języka sprawia, że czuję się jak bym wrócił z pracy do przedszkola :D

Z czegoś nazwijmy to ""bardziej przyjaznego" poleciłbym jeszcze Scalę.

3

Rust albo Golang :D

2

Clojure jest spoko

2

Scala. Ewentualnie Kotlin. Moze Haskell jak jestes odwazny.

Elixir jest ciekawy, ale dynamiczny.

W gruncie rzeczy pytanie co chcialbys dla funu napisac?. Bo od tej odpowiedzi zalezy np. czy Go/Zig i inne takie beda ciekawa opcja czy wiatrem w oczy. Bo Go zdecydowanie nie jest general-purpose

1

Język "aby odpocząc od wszystkiego" musi być nieskalany, aby nawet nie kusiło go profesjonalziiwać
Forth (bardzo ciekawy, zupełnie inny), Lua (bebechy), języki które makrują aplikacje (vim'a, emacsa'a )

Lub własny język, ostrzelanie sie z Antlr (ale tu znów pojawiają się C++,Java albo C# znane na dosc dobrym poziomie, jako implementacja)

Trzecia ścieżka. jesli zgadywać, że spotykasz Python ale od strony weba, to z zupełnie innej strony

1

Rust - ciekawy język i można w nim pisać zarówno apki natywne jak i odpalać w przeglądarce (WebAssembly).
Fajnie tam rozwiązali zarządzanie stanem - żeby coś zmutować, potrzebujesz mieć mutowalną referencję. I wtedy jakby blokujesz zmienną na ten czas. I język jest w stanie w czasie kompilacji stwierdzić, czy robisz to dobrze, czy źle, a jak robisz to źle, to się nie skompiluje
https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html

0

Z tych, które na razie wymieniliście, to rozpatrywałbym: Rust, Scala, Haskell, Elixir.

Programowanie funkcyjne od dawna mam na horyzoncie rzeczy, które chciałbym bliżej poznać, ale nie jest tu akurat kluczowe przy tym wyborze. Kiedyś siadłem do języka Elm, jest on pure funkcyjny i było to coś ciekawego, ale jedyne zastosowanie to front, więc przestałem. Ogólnie chcę poznać jakieś elementy języków, których w JSie nie uświadczę.

Haskell - czytałem, że prezentuje akademickie podejście i nie wiem na ile dałbym radę xd
Elixir - na pierwszy rzut oka ma taką nieprzyjazną składnię, ale wiadomo, że to kwestia braku znajomości. Chociaż właśnie często czytałem, że jest przyjemny.
Scala - z kolei wygląda bardziej przyjaźnie i jest statycznie typowana.
Rust - chyba do ogarnięcia, niskopoziomowy i na forum zawsze chwalicie raczej, więc coś musi w tym być.

Co chciałbym napisać? Na razie nie wiem, mam słabą wyobraźnię. Mało kreatywnie, ale pewnie na początku jakiś back, żeby porównać sobie z JSem.

Ciężko tak z góry coś wybrać, więc spróbuję z tymi czterema. Zacznę od Rusta.

1

na pierwszy rzut oka ma taką nieprzyjazną składnię

Czemu nieprzyjazną?

Jak chcesz spróbować Elixira to najłatwiej pewnie będzie z https://livebook.dev

2

Oczywiście że Pascal !

2
szafran98 napisał(a):

Haskell - czytałem, że prezentuje akademickie podejście i nie wiem na ile dałbym radę xd

Jak interesuje Cię funkcyjne to Haskell to podstawa, i nie jest aż tak akademicki - jest całkiem praktyczny,
dwa ciekawe dialekty Elm i PureScript są używane do robienia frontu. Po haskellu o wiele łatwiej zrozumieć fp w innych językach, bo dużo konceptów z haskella pochodzi i najlapiej w nim działa.

Rust - chyba do ogarnięcia, niskopoziomowy i na forum zawsze chwalicie raczej, więc coś musi w tym być.

Ciekawy, jak wcześniej nie miałeś za bardzo do czynienia z C++ czy czymś podobnym. Ale ogólnie do pisania aplikacji jest IMO średnio zabawny - trzeba się pierniczyć z zarządzaniem cyklem zycia obiektów, co w reszcie językow robi GC. Na jakieś zabawy niskopoziomowe za to na pewno fajny.

0

@hauleth: Dodatkowo jeszcze sam szukałem, co tam ciekawego jest w kontekście języków i trafiłem na Gleam, który działa na maszynie Erlanga. Jest statyczne typowanie i wygląda ciekawie. Miałeś z nim do czynienia?

@jarekr000000: Wymieniłbyś języki w ogóle warte uwagi jeśli chodzi o FP, oprócz wymienionych? Nie muszą być pure i dobre na początek, a po prostu takie, które uważasz, że jakkolwiek nadają się do używania.

1

Haskell - czytałem, że prezentuje akademickie podejście i nie wiem na ile dałbym radę xd

Może offtop ale ktoś mi wytłumaczy co to miałoby być to akademickie podejście w Haskellu? Że trzeba napisać wejściówke przed otworzeniem IDE?

To co jest w Haskellu to problem małej biblioteki standardowej i sporo niedokonczonych bibliotek utilsów co próbują to rozwiązać.

Przypomina to trochę Javę 6 przed wejściem Guavy. Miałem utilsy 2 od Apacza, utilsy 3 od Apacza. I jeszcze jakieś inne utilsy. A potem się zastanawiałeś czy ta operacja na stringach/listach co chcesz zrobić to przypadkowo jest w utilsach co teraz używasz czy musisz zaciągnąc kolejną bibliotekę utilsów.

W Haskellu parę osób próbowało to rozwiazać tworząc duże biblioteki "standardowe", ale wyszło jak wyszło. Wciąż testuję Relude

Co do wybierania odskoczni to moja lista to Haskell, Rust, Elm/PureScript/Idris (jeszcze nie wiem). Na razie utknąłem na Haskellu i optymalizacjach interpretera WhiteSpace'a XD

2
szafran98 napisał(a):

@jarekr000000: Wymieniłbyś języki w ogóle warte uwagi jeśli chodzi o FP, oprócz wymienionych? Nie muszą być pure i dobre na początek, a po prostu takie, które uważasz, że jakkolwiek nadają się do używania.

Haskell (GHC), Haskell, Haskell, potem długo długo nic.

Elm jako mocno zmieniony, ale production ready dialekt haskella do web.

Scala 3, główną siłą tego jest bycie na JVM i dostęp do bibliotek Java. W scali jest dużo ciekawych rzeczy, ale do nauki fp imo kilka klas gorsza niż haskell. Z drugiej strony jak znasz TS to składnia Scali będzie dla ciebie dość znajoma.

Clojure - czyli lisp na JVM - funkcyjne bez typów. Niektórzy to kochają - inni nie.

Oczywiście jest dużo innych i ciekawych (spośród tych, które jakoś tam zobaczyłem/poznałem), ale albo są na razie dość akademickie (Idris2), albo niewiele wnoszą (F# -zaleta podobna jak w Scali - bycie .NET, ale to język któremu troche brakuje do Scali - choć wizualnie jeden z bardziej eleganckich).

1

Gleam […] Miałeś z nim do czynienia?

Nie, jeszcze nie bawiłem się nim. Ale wygląda w miarę ok.

0

Studiuj te języki, które budzą w Tobie ciekawość, wywołują w Twojej głowie same pytania.

Natomiast jeśli nie ma nic ciekawego na horyzoncie to nowe i niszowe nic Ci nie dadzą, bo na pewnym etapie gdy zacznie to denerwować i pochłaniać coraz więcej czasu po prostu utkniesz.

Ja myślę, że tak w ogóle to żaden język nie da Ci odpoczynku jakiego szukasz. Strzelam, mogę się oczywiście mylić, że projekt w pracy masz mało rozwijający. Także zmień pracę albo rozwijaj jakieś niekomercyjne rzeczy w domu, one potrafią naładować akumulator.

0

Zapoznawałem elixira i jest ciekawy, nie powiem, że nie, ale ma strasznie wąski use case. Oczywiście wiedziałem o tym wcześniej, ale mimo wszystko chciałem go sprawdzić. Teraz chciałem zobaczyć, jak to wygląda w Ruscie, ale te docsy takie długie i dodatkowo większość musiałbym mocno rozkminiać z racji braku tych featurów w JSie, że raczej bym go przeniósł na koniec mojej listy.

W związku z tym zastanawiałem się, który teraz, czy może pisać jakiś projekcik w elixirze. Zerkam na kompa i bingo, przypomniałem sobie, że istnieje takie coś jak Swift xd
Co możecie powiedzieć o Swifcie? Pokrywa się w jakiś sposób jego użycie z Rustem? Czytałem, że gość, który tworzył Rusta przeszedł do teamu tworzącego Swifta. Zerknąłem na docsy i wygląda przyjemnie.

Napotkałem też język Nim, wydaje mi się, żę podobny do wyżej wymienionych. To są wszystko języki programowania systemowego(?)?
Jeśli tak, to co możecie powiedzieć o tej podgrupie języków?

1
szafran98 napisał(a):

Co możecie powiedzieć o Swifcie? Pokrywa się w jakiś sposób jego użycie z Rustem? Czytałem, że gość, który tworzył Rusta przeszedł do teamu tworzącego Swifta. Zerknąłem na docsy i wygląda przyjemnie.

Swift vs Rust?
Swift jest dedykowany dla Maców, i zdale się że XCode działa tylko na Macach. Jest bardziej wysokopoziomowy niż Rust i udaje że trochę skręca w funkcyjnośc. Ale co to za język funkcyjny jak przeczytałem dwie książki o nim i nigdzie nie ma o monadzie XD

Napotkałem też język Nim, wydaje mi się, żę podobny do wyżej wymienionych

A Nim wyszedł poza język eksperymentalny? index tiobe nie wymienia go w ogóle w 100 najpopularniejszych językach co znaczy że materiałów o nim w internecie jest bardzo mało. Sam chętnie poczytałbym jakie ma zalety w stosunku do np Haskella, Rusta, Scali

1
szafran98 napisał(a):

Co możecie powiedzieć o Swifcie? Pokrywa się w jakiś sposób jego użycie z Rustem? Czytałem, że gość, który tworzył Rusta przeszedł do teamu tworzącego Swifta. Zerknąłem na docsy i wygląda przyjemnie.

Priorytety jakie stawiają sobie Swift i Rust są zupełnie inne.
W Rust te priorytety wyglądają mniej więcej tak:

  1. Bezpieczeństwo
  2. Poprawność
  3. Wydajność
  4. Wolność, brak ograniczeń, szerokie zastosowania (od crudów po kod w kernelu)
  5. Przenośność, brak przywiązania do jednej platformy (więcej niż jeden kompilator, więcej niż jedna firma)
  6. Łatwość czytania kodu
    ....
  7. Łatwość pisania kodu
  8. Szybkość kompilacji
  9. Łatwość nauki języka

Generalnie Rust stawia jakość produktu końcowego ponad wygodę programisty. I stawia poprzeczkę dla jakości produktu końcowego bardzo wysoko.
Nie oznacza to, że wygoda programisty czy rzeczy takie jak szybkość kompilacji są ignorowane (wręcz przeciwnie - masa pracy poszła na to, aby Rust był przyjemny), ale mają niższy priorytet i nikt nie poświęci poprawności / bezpieczeństwa / wydajności dla wygody programisty.

W Swift jest to chyba trochę odwrotnie - staramy się zrobić język wygodny do pisania, dość rozbudowany, ale nieco kosztem wydajności (np. GC oparte na licznikach referencji), przenośności (wsparcie poza ekosystemem Apple jest słabe), czy wolności programisty (wielu rzeczy nie da się zrobić). Tylko że języków w tej kategorii jest dość dużo - np. C#, Java.

5
TerazOdpowiemNaKomcie napisał(a):

Rust albo Golang :D

Po paru latach z Golangiem mam trochę love-hate relację z tym językiem. Jeśli ktoś rozważa naukę Go lub Rusta i nie zna ani tego, ani tego, to na ten moment bez wahania poleciłbym Rusta.

Golang jest ciekawy, ale to w moich oczach język typowo produkcyjny, zostawia miało miejsca na zabawę. Rust pozwala na jedno i drugie. Dodatkowo uważam, że opanowanie m.in. systemu typów w Ruście (dobrze odmieniam?) przełoży się na produkowanie lepszego kodu w innych językach.

2

No to w takim razie teraz Rusta poogarniam i zobaczę, jak z tym poziomem trudności. Już w zasadzie zacząłem i mocno widać, że doświadczenie z TSa praktycznie nic nie daje, więc to faktycznie nauka programowania w Ruscie, a nie nauka syntaxu jakbym uczył się jakiejś Javy itp. Jak przykładowo zaczynałem w Pythonie, to potem w JSie po prostu zacząłem pisać, a tutaj jednak od zera trzeba wszystko zrozumieć. Chociaz może są jakieś podobieństwa, ale jestem na samym poczatku.

1

Taki artykuł ostatnio czytałem, może kogoś zainteresuje w tym temacie

Gość w ciągu roku napisał wersję jednego programu w każdym z 7 języków i opisuje swoje wrażenia.

https://mode80.github.io/7-langs-in-12-months.html

2

Jaki język, żeby odpocząć od głównego?

IMHO powinieneś zapytać Jaki projekt, żeby odpocząć od <tu wstaw swoją technologicznę domenę>? i wtedy dobrać do tego narzędzie. Bo jak piszesz CRUDy i szukasz innego języka, żeby sobie znowu kolejnego CRUDa napisać to za wiele nie odpoczniesz.

3

@several: Na razie Rusta ogarniam. Zarządzanie pamięcią - stack, heap, jak działają pointery, borrowing. Ciekawe jest to dla mnie. Swifta jeszcze mam w odwodzie, jakbym uznał, że jestem zbyt głupi na Rusta.

W Ruście pewnie będę chciał coś desktopowego chcę napisać, Swift też mi daje takie opcje. Jakieś low level rzeczy, tylko na razie mam zerową wiedzę na ten temat i nie wiem nawet co jest możliwe. Pewnie chciałbym zobaczyć, jak na tym niskim poziomie działa system operacyjny. Może jakiś mikrokontroler kupię i pobawię się w embedded, nie wiem. Na obecną chwilę, to mnie w ogóle interesuje, jak bardzo jest to inaczej skonstruowany język od JSa.

2
several napisał(a):

Jaki język, żeby odpocząć od głównego?

IMHO powinieneś zapytać Jaki projekt, żeby odpocząć od <tu wstaw swoją technologicznę domenę>? i wtedy dobrać do tego narzędzie. Bo jak piszesz CRUDy i szukasz innego języka, żeby sobie znowu kolejnego CRUDa napisać to za wiele nie odpoczniesz.

Dokładnie.
A najlepiej - jesli to ma być naprawde język do odpoczynku - coś niszowego a fajnego intelektualnie, a nie "ukryta edukacja do przyszłej pracy"

0

@AnyKtokolwiek: Jakie w takim razie języki postrzegasz jako niszowe?

3
szafran98 napisał(a):

@AnyKtokolwiek: Jakie w takim razie języki postrzegasz jako niszowe?

Zależy jaka nisza. Jak mocna to https://www.unison-lang.org/ albo https://www.ponylang.io/ ale Scala, Clojure czy Elixir to też nisza w porównaniu z JS, Pythonem czy Javą.

1
szafran98 napisał(a):

@AnyKtokolwiek: Jakie w takim razie języki postrzegasz jako niszowe?

na potzreby tego wątku?
Taki który co do zasady nie występuje w ofertach o pracę.

Lub taki, który występuje, ale w pewnym wieku jest skrajnie nieprawdopodobne zbudować swoją pozycję do rekrutacji. MUSI być bez napinki. Jeśli jest napinka, tzn źle wybrany język - w sensie tego wątku.

Jak bym podkreslł ujęcie dziedzinowe za @several
Np pewnie mi by przyniosło relaks nawet w starej Javie zajęcie sie dziedzinami "blisko sprzetu", pamięcią out-of-heap pięknie wystandarzywaną w nowych wersjach, choć nigdy tego komercyjnie nie użyję.
Hiper-numeryka (ta w zmiennym przecinku), której nie używam, i nie użyję profesjonalnie. Albo para-matematyka całkowitoliczbowa pokrewna szyfrom.

0

@Saalin: No to wszystko zależy od tego kto jak postrzega niszę.

Elixira ogarniałem, tak jak pisałem tu w temacie i jest spoko, ale co można w nim optymalnie zrobić oprócz cruda? Nigdy nie miałem problemu z wydajnością i nie wiem jaki projekt musiałbym wymyślić, żeby pobawić się współbieżnością. Nie wiem, czego jeszcze nie wiem. Znacie tę koncpecję? To tak, jak zaczynacie uczyć się programowania, przerobicie książkę z podstawami i nie wiecie co dalej, bo nie znacie use case języka.
Wymieniałem też w temacie Haskella i jeśli będę chciał pouczyć się FP w pure języku, to sprawdzę tego Unisona.

Tak ja pisałem wyżej, chciałbym chociażby sprawdzić, jak w Ruscie tworzy się desktopowe aplikacje, ale też jest dużo innych możliwości, które wymieniałem, a o których nie mam wiedzy, bo na codzień poruszam się na wyższej warstwie abstrakcji. Idąc tokiem, że powinienem raczej wymyślić projekt, a do niego wybrać język, to równie dobrze mógłbym wziąć Electrona i nie wychylać się poza JSa. Dla mnie liczy się droga, a nie cel. Rust pozwala poznać mi niskopoziomowe koncepcje i wiadomo, że do tego mógłbym wybrać C, ale jestem po prostu ciekawy tego języka. Finalnie może się tak w niego wkręcę, że moim celem zawodowym będzie znalezienie w nim pracy albo całkowicie o nim zapomnę i będę próbował poznać inny język wymieniony tu w temacie, albo jeszcze okaże się, że zachcę mi się masterować JSa.

I tak przecież czas spędzony nad jakimkolwiek językiem nie jest stracony, bo pozwala spojrzeć na programowanie z szerszej perspektywy. Wtedy w przyszłości może przyjdzie taka chwila, że będę miał jakiś projekt do napisania i uznam, tak to jest właśnie ten język, w którym go napiszę, bo nadaje się najlepiej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1