jarekr000000
2018-11-05 20:49

Piękna oferta pracy w PHP (tweet sprzed kilku dni)

Here's a reminder that @Lumi is hiring for various positions in engineering (VPE, full stack engineer, DBA). We use the PHP stack (Postgres, Haskell, PureScript).

Edit: tweet jest tu: https://twitter.com/paf31/status/1058488636742627330

Oferta tu: https://news.ycombinator.com/item?id=18360230

PHP-owcy - do dzieła :-)

Haskell

Troll lvl master :D

scibi92

"purescript" no to pierdyliardowa wersja JSa :D Ale że Haskella używają komercyjnie to się nie spodziewałem oO

jarekr000000

@scibi92: może bys najpierw zajrzał co to jest purescript. Kompiluje się do JS to prawda. Ale w twoim zdaniu jest tyle prawdy co w tym, że Java to pierdyliardowa wersja Assemblera.

jarekr000000

A co do haskella komercyjnie ... chyba czas wyjść z grajdołka. Świat się zmienia.

scibi92

@jarekr000000: a faktycznie, przepraszam za bardzo się pośpieszyłem. Tym bardziej to dziwne :D

scibi92

@jarekr000000: ja uważam jak pewno sam zauwazyłeś że FP ma sporo zalet, ale jakoś nie jestem fanem języków czysto funkcynych. Dla mnie JS jako język który służy do obsługi GUI średnio nadaje się do bycia super funkcyjnym bo GUI kojarzy mi sie ze zmianami, mutowalnością... Tutaj przechodzimy w 2 strone. A ja jestem po środku :D

jarekr000000

GUI zmiany, mutowalność... i wtedy właśnie wchodzi react/redux, cały na biało. Bo, jedyna szansa zapanowania nad chaosem do dość mocne ograniczenie tego gdzie i jak mutujemy.

scibi92

Ale w react.js chuba też się mutuje. Nie neguje potrzeby unikania mutowalności, neguje tylko twierdzenie że zawsze da się mutowalności uniknąć czy zawsze jest sens jej unikać. FP ma za to bardzo dobre zastosowanie do backendu, bo do przetwarzania danych nadaje się świetnie

jarekr000000

Wszędzie się mutuje nawet w Haskellu. Tylko pytanie jak często. W Haskellu wręcz mówi się, że efekty robimy at the end of the world. W Redux - masz generalnie jedną zmienną globalną :-) i trochę to przypomina IORef haskellowe.

qbns

Nie globalną. W Javie odpowiednikiem byłby raczej singleton bean, który jest korzeniem drzewa singleton beanów (agreguje w sobie dzieci, a dzieci agregują dzieci itd.) zainicjalizowanych z obecnym stanem bieżącej sesji usera. Na klasy każdego z beanów można spojrzeć jak na klasę modelu, która ma też w sobie logikę biznesową.

jarekr000000

@qbns najbliżej jak dla mnie to jest AtomicReference::updadateAndGet ... i tak robie na backendzie w javie. Btw. model Reduxa jest w zasadzie bezpieczny wielowatkowo, gdyby go przenieść na javę. Przecież dokładnie.. obiektu nie mutujemy - tylko tworzymy kopię.

scibi92

no ale same AtomicReferencje jest mutowalne, więc nie unikamy mutowalności.

jarekr000000

@scibi92: ale dokładnie o to chodzi, żeby je zminimalizować. Nad jedną zmienną (na cały program) da się zapanować.

qbns

Btw. model Reduxa jest w zasadzie bezpieczny wielowatkowo

FYI: nie jest bezpieczny (tzn. nie byłby w Javie :D) - nie wymusza mutowalności. Musimy sami o to zadbać.

jarekr000000

@qbns no tjakby oczywiste, tak jak w javie zmienne prywatne tez są prywatne do czasu aż ktoś zacznie się dobierać przez refleksję albo jechać po pamięci. Z tym, że w JSie powinnąć się noga może zupełnie przypadkiem. Dlatego zresztą Elm, PureScript czy ScalaJS mają sens , bo ryzyko takiej pomyłki minimalizują. Teraz widze, że dopisałeś o Javie ... więc tak jak w JS, albo masz dyscyplinę, albo lepszy język.

vpiotr

Języków tłumaczonych do JS jest coraz więcej, w sumie to robi się ciekawie... Elm, ReasonML, Scala.js, Kotlin.js, ghcjs, ClojureScript...

qbns

Wystarczy mi czysty JS i Java... W porównaniu do tego co było ~10 lat temu to oba w/w w obecnej formie są dla mnie na prawdę dobre... Może dlatego, że staram się into Front-end / back-end / mobile itp., nie nadążam za wszelkimi nowościami.
Też często niestandardowa, "czystsza" składnia/sposób działania języka skutkuje tym, że potem trzeba robić jakiś na prawdę kiepski workaround do czegoś, co ładnie można zrobić w "bazowym" języku; potencjalne problemy z integracją; potencjalnie mniej ludzi znających technologię.

Ostatnio u mnie jacyś kotlinowcy się kłócili jak lomboka zintegrować z kotlinem (chyba buildera potrzebowali, nie pamiętam z jakiego powodu musiał być akurat lombokowy, ale jakaś motywacja musiała być żeby ktoś chciał takiego potworka stworzyć)

jarekr000000

Lombok to jest prawdziwy potworek. Nie czaję w jakim celu integrować z kotlinem, skoro w kotlinie robi się całkiem dobrze buildery - bez klepania (nie tak dobrze jak w Scali, ale nieźle). Java czy JS to właśnie języki, w których nie da się wielu rzeczy zrobić ładnie i elegancko. Lombok, który jest nowym językiem i tak często jest przez javowców wykorzystywany, zresztą to pokazuje.

scibi92

A ja sobie własnie ćwicze korzystanie z ForkAndjJoin na mutowalnej ConcurrentHashMapie. Zło wcielone ;]

Hispano-Suiza

Trafił się temat Lomboka, a więc nie byłbym sobą gdybym nie podlinkował -> https://www.wykop.pl/cdn/c320[...]txqMLwZ4tCfG92IzIZ1dTht4K.jpg

jarekr000000

@Hispano-Suiza: kij tam z kontrolą nad klasą. Po prostu nie kumam jak mozna chcieć pisać kod pomiędzy rzygowinami Lomboka. Inaczej tych ton adnotacji, które nijak do składni Javy nie pasują nazwać nie moge. Powiem nawet nawet, że lombok przypomina mi w pewnym stopniu Objective-C - na siłę pozostawanie przy starym, średnim jezyku i robionie potworka z kodu, kiedy tuż obok jest istotnie lepsza alternatywa.

scibi92

@jarekr000000: a korzystałeś w Groovym z transformat AST?

jarekr000000

@scibi92: nie świadomie. W ogóle w groovym mało pisałem, choć trochę pomagałem przy problemach w cudzych projektach (to niezły absurd - nie znałem składni nawet dobrze, ale działał). No i trochę przez zabawy ze Spockiem. I jeszcze miałem jakiś mini projekt w Grails (ale to pravie wyparłem).

scibi92

@jarekr000000: no w skrócie transformaty AST to coś a'la lombok tylko że wbudowane już w język np. Builder

jarekr000000

Scala też ma makra oparte o transformacje AST. Z tym, że w kodzie to normalne wywołania funkcji, po prostu implementacja funkcji może być zrobiona jako makro. Z tego powodu kod nie jest tak zaśmiecony wstawkami..ale z drugiej strony czasem nie wiesz, że korzystasz z makra, a ma to konsekwencje (np. kompletnie nieogarnialne błedy w kompilacji :-) ).

scibi92

W Scali programowałem na razie tylko we śnie więc jeszcze nie wiem o czym mówisz (tak juz mam zrytą banie że śni mi się progrowanie), ale pewno wkrótce się dowiem :)

Aryman1983

Pośmialiście się i zmienili :-(

jarekr000000

@Aryman1983: to ja wkleiłem link do oferty, a nie do tweeta. Poprawione.

Pipes

Niedługo we froncie będzie JAVA - Js, Atom, Vue.js, Angular :P