tag:blogger.com,1999:blog-5047632037494901372.post5506818878843957631..comments2024-02-25T13:55:59.887+01:00Comments on Paweł Włodarski - ludzka twarz IT: O Rany odwrotna kolejność DanychPaweł Włodarskihttp://www.blogger.com/profile/04891037231290616803noreply@blogger.comBlogger8125tag:blogger.com,1999:blog-5047632037494901372.post-88998126892558941152016-04-04T22:15:55.796+02:002016-04-04T22:15:55.796+02:00Tak sobie zerknąłem na kilka nowych języków :
- r...Tak sobie zerknąłem na kilka nowych języków : <br />- rust - http://rustbyexample.com/fn/methods.html {nazwa}{wejscie}{wyjscie}<br />- kotlin -https://kotlinlang.org/docs/reference/functions.html {nazwa}{wejscie}{wyjscie}<br />- pony - http://tutorial.ponylang.org/expressions/methods.html {nazwa}{wejscie}{wyjscie}<br /><br />Zodyn nie zapożycza składni z Javy. W sumie jakiś spec od kompilatorów mógłby się wypowiedzieć czy ta odwrócona kolejność z Javy to nie jest jakiś anachronizm składniowy, który zgubił swoje uzasadnienie gdzieś w połowie lat osiemdziesiątych czy coś takiego. Przyznam, ze nie znam się na tym a jedynie gdzieś czytałem, że jak wszystkie kwalifikatory (jak final public itd) daje się z lewej a dane idą na prawą stronę to coś tam podobno łatwiej temu kompilatorowi idzie. Ale to ktoś od kompilatorów musiałby się wypowiedzieć. Ja jedynie widzę subiektywny efekt uboczny, że i łatwiej się to czyta.<br /><br />Paweł Włodarskihttps://www.blogger.com/profile/04891037231290616803noreply@blogger.comtag:blogger.com,1999:blog-5047632037494901372.post-42473900157886216492016-04-04T21:50:13.304+02:002016-04-04T21:50:13.304+02:00A no i ważna rzecz, że w Javie jak już zadeklaruje...A no i ważna rzecz, że w Javie jak już zadeklarujesz typ Function jako wartość to on nie może mieć generyków.<br />Dlatego też w przykładzie "map" jest standardową metodą z generykami, która przyjmuje funkcje i zwraca funkcje i ponieważ jest to metoda to własnie am ten schemat {rezultat}{nazwa}{wejście} . <br />W scali ta metoda miałaby schemat {nazwa}{wejście}{rezultat}. Przy bardziej złożonych sygnaturach mi osobiście bardzo ten drugi schemat pomaga w czytaniu co konkretnie przechodzi w co. pzdrPaweł Włodarskihttps://www.blogger.com/profile/04891037231290616803noreply@blogger.comtag:blogger.com,1999:blog-5047632037494901372.post-4848935938370007372016-04-04T21:43:29.854+02:002016-04-04T21:43:29.854+02:00Cześć, w tym przypadku chodziło mi o kolejność w m...Cześć, w tym przypadku chodziło mi o kolejność w metodach - tam jak czytasz od lewej to najpierw masz co metoda zwraca a dopiero później co metoda przyjmuje. Do tego obydwa typy przedzielone są nazwą metody przez co troszeczkę trudniej śledzić transformacje danych. {wyjście}{nazwa}{wejście}<br /><br />Zwróć uwagę na ten rysunek ze strzałeczkami (ostatnie zdjęcie przed końcowa fotką przyrodniczą) i porównaj z kodem Haskella, który jest zaraz nad nim - tam masz {nazwa}::{wejście} -> {wyjście}<br /><br />typ Function jest w Javie OK :)<br /><br />pzdr,Paweł Włodarskihttps://www.blogger.com/profile/04891037231290616803noreply@blogger.comtag:blogger.com,1999:blog-5047632037494901372.post-8988731181802469332016-04-04T21:35:23.089+02:002016-04-04T21:35:23.089+02:00Hej, być może czegoś nie czaje ale napisałeś: &quo...Hej, być może czegoś nie czaje ale napisałeś: "by w Javie przeczytać kolejność typów trzeba czytać od końca bo najpierw mamy typ zwracany z później dopiero typ przekazywany."<br />A w specu (https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html) jest:<br /><br />interface Function<br /><br />Type Parameters:<br />T - the type of the input to the function<br />R - the type of the result of the function<br /><br />Czy może po prostu coś pogmatwałem?<br />damianhttps://www.blogger.com/profile/08008143991404257946noreply@blogger.comtag:blogger.com,1999:blog-5047632037494901372.post-85914273507845029872016-04-04T13:39:04.754+02:002016-04-04T13:39:04.754+02:00Cześć,
Chcę uniknąć dyskusji OOP vs FP ponieważ uw...Cześć,<br />Chcę uniknąć dyskusji OOP vs FP ponieważ uważam, że obydwa rozwiązania są dobre ... tam gdzie są dobre.<br /><br />W świecie symetrycznym mielibyśmy taką sytuację : <br /><br />1) Mam problem<br />2) Mam podejście OOP z danymi praktykami, które rozwiążą tę część problemu.<br />3) Mam podejście FP z innymi praktykami, które rozwiąże inną cześć problemu.<br /><br />Natomiast wydaje mi się, że mamy niekoniecznie dobry świat asymetryczny gdzie mamy podejście<br /><br />Mam OOP, już mówiłem, że mam OOP i praktyki OOP i wszystko ale to wszystko i zawsze jest obiektem<br />- no dobra a jaki jest problem?<br /><br />I generalnie np. Scala jest językiem bardziej złożonym od Javy bo próbuje pokazać że można obydwa podejścia połączyć i co najważniejsze, ze dwa różne podejścia mogą istnieć obok siebie.<br /><br /><br />Także tworząc w artykule porównania - niekiedy jak widać budzące emocje - staram się pokazać alternatywy i walczyć z podejściem "jedynego słusznego rozwiązania". <br /><br />Zgadza się, że obiekt to dane+zachowanie. Być może czasem dane+zachowanie związane w jednym miejscu to więcej kłopotu niż pożytku? Być może to wygoda nie zawsze musieć stosować OOP? <br /><br />Co do UML to był taki żart na koniec ale mam taką niepopartą teorię, że mógł pomóc trochę w tej części Europy bo zazwyczaj ludzie z hajsem raczej mają inny zestaw umiejętności niż "dogłębna wiedza techniczna" i mogli skusić się wizją "w centrali ktoś mądry mówiący dobrym angielskim zaprojektuje a później wyślemy diagramy do taniej siły roboczej to zaimplementowania" wpasowuje się w taki model "ktoś mądry zaprojektuje linie montażową a za praca pilnikiem będzie ofszore" ale to takie moje gdybania i to miał być taki żarcik, ze inwestuje się zawsze w buzzwordy. Także żarcik. Na pewno było dużo zmiennych który wpłynęły an obecny stan rzeczy , teoria chaosu i takie tam.<br /><br />pzdr i dzięki za komentarz.<br />Paweł Włodarskihttps://www.blogger.com/profile/04891037231290616803noreply@blogger.comtag:blogger.com,1999:blog-5047632037494901372.post-45433320270283752922016-04-04T12:02:14.638+02:002016-04-04T12:02:14.638+02:00"jednocześnie bombarduje się ludzi zasadami, ..."jednocześnie bombarduje się ludzi zasadami, że "tight-coupling" pomiędzy obiektami jest zły ALE (niechajże gęś to kopnie) jednocześnie wmawia się, że obiekty jako takie są dobre chociaż obiekt to nic innego jak - motyla noga - "tight-coupling" pomiędzy danymi i operacjami?"<br />TAK, tight-coupling" pomiędzy obiektami jest zły ALE nie ma czegoś takiego jak "tight-coupling" pomiędzy danymi i operacjami(W OOP).<br />Jeżeli ktoś uczył Cię obiektowości, to uczył Cię tego że obiekt to dane + zachowanie, uczył dziedziczenia i polimorfizmu - bo to fundamenty OOP. Nie możesz mówić oddzielnie o danych i oddzielnie o operacjach w kontekście OOP. <br /><br />To co Ty napisałeś to tak naprawdę znaczy to, że w obiektowych językach programowaniach obiekty są złe, bo tworzą mocne powiązanie pomiędzy danymi i operacjami. No kuźwa takie jest OOP. Za x lat kiedy na popularności zyska np. prolog, to pewnie będziesz pisał jakie to FP jest złe bo ma funkcje:).<br /><br />"Ano dlatego bo na diagramach UML były kwadraty a w nich napisy "Klient,Faktura i Money" i to się sprzedawało!<br />- czy mógłbyś rozwinąć tę myśl? czy rozwój i popularność języków obiektowych zawdzięczamy według Ciebie UML'owi?Hugohttps://www.blogger.com/profile/11483841562968466355noreply@blogger.comtag:blogger.com,1999:blog-5047632037494901372.post-86810413141460941682016-04-04T11:21:16.441+02:002016-04-04T11:21:16.441+02:00ale ascii art nie dziala :(ale ascii art nie dziala :(Paweł Włodarskihttps://www.blogger.com/profile/04891037231290616803noreply@blogger.comtag:blogger.com,1999:blog-5047632037494901372.post-80326454288326149752016-04-04T11:20:56.122+02:002016-04-04T11:20:56.122+02:00TEST ZADZIAŁAŁ!!!! :D:D
,;``',
; |
...TEST ZADZIAŁAŁ!!!! :D:D<br /><br />,;``',<br /> ; |<br /> ;;. ;;,'<br /> `"-'7'. IT'S TIME TO CELEBRATE!! _ /<br /> |' >. .'` |\ -<br /> | / >. _\ / / | -<br /> '/ / ,`. __..----. .' .' / _<br /> ; / /_.-' \ /_.-`_.-' \<br /> ;' .' '` | - `-.-'<br /> |_/ .' / \_\_<br /> _| |_ .____.-'` / __)`\<br /> ( ` /\`'-...__.' \ | '\(_.'|<br /> `-\ \ `-'-'-'| `. -. \(_./<br /> \ \.-.-. \ \___ / >-'\_\<br /> \ \ \ \ `/\ |_ '` /<br /> _./\ \ ' | / /_\ .-`<br /> .' _.\'. '.__.' /`\`'<br /> .-.---'\_/ `.`'-..____ ; \<br /> / / .--. |, `'-._ /`'.| |<br /> `| /-' / / \ `.' \ _/<br /> '-' '-' \ `-._ _,-' |<br /> \ `'''----'''' /<br /> > _.'<br /> / /`'-.._____..--'\ \<br /> < \ / /<br /> \ `. .' |___ mx<br /> ___\_ `. /__.-' ``--..<br /> ..--''` `-.\ (___/`'--.._____)<br /> (_____...--'`\___) <br />Paweł Włodarskihttps://www.blogger.com/profile/04891037231290616803noreply@blogger.com