REST API w Clojure

0

Witam, mamy pytanie do doświadczonych programistów. Co sądzicie o LISP-ie pod JVM Clojure ? Coraz częściej zastanawiam w jak głupi sposób, bez zrozumienia czegokolwiek robi się aplikacje webowe w Springu. Narzędzie może poznać każdy ale nie każdy napisze klarownie wyglądający program, mnie osobiście wychodzą potwory. Rozumiem działanie tych wszystkich feature'ów, nie zawsze jednak umiem to wszystko ładnie złożyć. Nie lubię nadmiaru, dużej ilości instrukcji zaciemniających działanie pewnych mechanizmów. Chciałbym zacząć rozwiązać przy pomocy nad narzędzi, wkurza mnie obecny trend, by uczyć się frameworka tylko dlatego bo jest popularny i podobno łatwy :) Gdzie tu logika?

6
Pangeon napisał(a):

Coraz częściej zastanawiam w jak głupi sposób, bez zrozumienia czegokolwiek robi się aplikacje webowe w Springu.

Jak ci się nie podoba framework to nie musisz od razu zmieniać języka, wystarczy zmienić framework. Może to nie których zszokuje, ale można pisać w Javie bez Springa

1

Coraz częściej zastanawiam w jak głupi sposób, bez zrozumienia czegokolwiek robi się aplikacje webowe w Springu.

Tzn. chciałbyś zainwestować więcej czasu w development, ponieważ w Springu jest zbyt łatwo? :D

1
Pangeon napisał(a):

Chciałbym zacząć rozwiązać przy pomocy nad narzędzi, wkurza mnie obecny trend, by uczyć się frameworka tylko dlatego bo jest popularny i podobno łatwy :) Gdzie tu logika?

Czego?

2

Dlaczego więcej?

Z tego co zauważyłem, to zysk jest głównie na początku, bo faktycznie postawić hello worda w springu jest szybciej. Ale też spring pozawala na pokusy "skracania" sobie drogi (tu się dorzuci zależność, tu adnotacje), o których z czasem się zapomina i nagle po jakimś czasie jest problem. I tak, można spędzać czas nad czytaniem dokumentacji jak to dokładnie działa, ale gdzie tu wtedy oszczędność czasu? ;)

0

Wy chyba nie piszecie na poważnie? O_o to lepiej zamienić adnotacje na nawiasomanie? Kto to będzie potem utrzymywał?

3
Charles_Ray napisał(a):

Wy chyba nie piszecie na poważnie? O_o to lepiej zamienić adnotacje na nawiasomanie? Kto to będzie potem utrzymywał?

Jedno i drugie -> Ja.
Nawiasomania działa dobrze nawet po latach - jak coś nie gra to się nie skompiluje.
Adnotacje niestety potrafią jakos działać nawet na serwerze testowym, ale na produkcji to już nic nie znaczy. (Ten aspekt sie poprawi jak znikną porypane zewnętrzne application serwery - wtedy przynajmniej na produkcji będzie ten dokładnmie sam zestaw jarów i rypać będzie się tak samo).

Zaznaczam na wykładach - moja osobista niecheć do Springa i podobnych wynika z pewnością z dużej mierze z tego, że lubię pracę detektywa i archeologa systemów -> utrzymanie.
Fakt, dość łatwo znajduje w takich projektach springowych co jest źle zrobione i zwykle szybko osaczam błedy. Bardzo rzadko (jednak) mogę po dłuższej analizie powiedzieć, że taki projekt jest dobry, prawie zawsze znajduje dodatkowe tony zblaszczeń, które jakimś cudem działają na produkcji.... chociaż wg specyfikacji nie powinny. I co wtedy??? (chyba z raz w tygodniu mam taki dylemat).

Bonus:
To właśnie spakowane książki od jendego klienta (w biurze), od dawna mówiłem, żeby wywalili.
Nie dość , że przestarzałe, to nawet jak były na czasie to nikt ich nie czytał - naprawdę zabawne, (całkiem czasem losowe) kombinacje adnotacji w kodzie potwierdzaja to regularnie.
books.jpg
To jedno z trzech pudeł - rozwalone, bo robiliśmy challenge - znajdź użyteczna książkę (była jedna podstępnie podrzucona).

0

@Charles_Ray:

Wy chyba nie piszecie na poważnie? O_o to lepiej zamienić adnotacje na nawiasomanie? Kto to będzie potem utrzymywał?

O co chodzi z tą nawiasomanią?

1

Zamiana runtimowych adnotacji w JAVIE na normalne programowanie funkcyjne kończy się serią nawiasów w javie i takim sobie kodem. Wyglada jak mityczny LISP.
Dlatego, warto sie przesiadać na Kotlina co najmniej, Scalę (może) lepiej. Clojure to inna para kaloszy, nie mogę sie w temacie wypowiedzieć - za krótko pisałem i nic dłuższego nie utrzymywałem.

1

Wy chyba nie piszecie na poważnie? O_o to lepiej zamienić adnotacje na nawiasomanie? Kto to będzie potem utrzymywał?

Jeśli chodzi o to, że jest dużo nawiasów to fakt. To może być problem, ale te nawiasy są znane od lat i istnieją na nie różne sposoby, choćby structural editing https://cursive-ide.com/userguide/paredit.html który sprawia, że przestajesz myśleć o nawiasach, ponieważ one same się dodają / usuwają na skutek wcięć jakie stosujesz. Wcięcia ma Python i to nie jest powod, by z tego powstał Ci nieutrzymywalny kod.

Używanie nawiasów też ma pewien cel i właściwości, tak samo jak głupkowaty zapis w stylu, że kot to kot:

Cat cat = new Cat();

Ale jak się zastanowisz to zwykle chodzi o jakąś kontrolę nad kodem. Deklarowanie typów narzuca Twoim danym pewną strukturę i pozwala kompilatorowi sprawdzać czy wszystko co robisz w jej obrębie ma sens. Używanie nawiasów ułatwia wyprowadzenie makr, które pozwalają rozbudować język w jakim piszesz. Takie rzeczy pozwalają zmienić perspektywę i sposób układania programu w głowie. Użycie makr nierzadko może dać Ci lepszy rezultat niż pchanie projektu przez jakieś ograniczone ramy.

2
Charles_Ray napisał(a):

Wy chyba nie piszecie na poważnie? O_o to lepiej zamienić adnotacje na nawiasomanie? Kto to będzie potem utrzymywał?

Kod możesz debugować adnotacji nie. Nie mówie koniecznie o porzuceniu adnotacji i nawet Springa ponieważ uważam że w odpowiedni sposób użyty jest dobry dla projektu, tylko żeby nie przesadzać, np. logikę biznesową mieć wolną od tych wchystkich @Compoment/@Service/@Autowired, a beanami niech bedą fasady.

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