Nie spotkałem się z taką potrzebą i to nie tylko z braku mojego
doświadczenia w temacie, ale monitorując grupy dyskusyjne. Ciekawe
zagadnienie.
Jako nowicjusz w temacie programowania funkcyjnego na JVM w Clojure,
uważam, że jest to możliwe i skoro jest potrzeba, może być użyteczne.
W końcu diagram klas to nic innego jak możliwy diagram przestrzeni
nazewniczych (ang. namespace albo w skrócie ns) z ich metodami. To
doskonały odpowiednik klas z metodami. W Clojure jest pojęcie
prywatnych metod (definiowanych przez defn- - minus na końcu defn),
więc prawa dostępu również są do użycia i mają zastosowanie w Clojure.
Diagram przepływów również wpasowuje się w nieczystą (powodującą
skutki uboczne) naturę Clojure.
Przyjmując odpowiednik ns + funkcje w Clojure == pakiety, klasy i
metody w Javie, wszystkie diagramy UML wpasowują się w oba języki i
paradygmaty. Pewnie wynika to z oderwania UML od konkretnego języka
programowania czy paradygmatu.
Idąc dalej, stworzenie funkcji (a później zestawu makr) w Clojure do
generowania diagramów UMLowych mogłoby być ciekawym sposobem na
nauczenie się pierwszego - Clojure, a pod sztandarami drugiego - UML
umożliwienie zespołowi na użycie języka, jeśli wsparcie przez UML jest
warunkiem koniecznym do rozważenia go.
Jacek
--
Jacek Laskowski
Java EE, functional languages and IBM WebSphere - http://blog.japila.pl
"Never discourage anyone who continually makes progress, no matter how
slow." Plato
--
Serdecznie Pozdrawiam,
Krzysztof Nielepkowicz
fotografia : fotomilo.pl
m�j programistyczny blog : http://kyniek.blogspot.com/
> 2012/2/22 Marek Maj<mare...@gmail.com>:
>
>> Jeste�my �wie�o po prezentacjach o Clojure i Scala. Z tej okazji
>> chcia�em zapyta� o Wasze do�wiadczenia i/lub przemy�lenia odno�nie
>> modelowania program�w funkcyjnych. W szczeg�lno�ci interesowa�by mnie
>> UML.
>> Czy programy funkcyjne mo�na w jaki� sensowny spos�b modelowa� w UML?
>> Je�li tak to za pomoc� kt�rych diagram�w?
>> A mo�e kto� zna lepszy spos�b. Nie mam zbyt du�ego do�wiadczenia w
>> j�zykach funkcyjnych. Prosz� o Wasze lu�ne przemy�lenia ;)
> Nie spotka�em si� z tak� potrzeb� i to nie tylko z braku mojego
> do�wiadczenia w temacie, ale monitoruj�c grupy dyskusyjne. Ciekawe
> zagadnienie.
>
> Jako nowicjusz w temacie programowania funkcyjnego na JVM w Clojure,
> uwa�am, �e jest to mo�liwe i skoro jest potrzeba, mo�e by� u�yteczne.
> W ko�cu diagram klas to nic innego jak mo�liwy diagram przestrzeni
> nazewniczych (ang. namespace albo w skr�cie ns) z ich metodami. To
> doskona�y odpowiednik klas z metodami. W Clojure jest poj�cie
> prywatnych metod (definiowanych przez defn- - minus na ko�cu defn),
> wi�c prawa dost�pu r�wnie� s� do u�ycia i maj� zastosowanie w Clojure.
> Diagram przep�yw�w r�wnie� wpasowuje si� w nieczyst� (powoduj�c�
> skutki uboczne) naturďż˝ Clojure.
>
> Przyjmuj�c odpowiednik ns + funkcje w Clojure == pakiety, klasy i
> metody w Javie, wszystkie diagramy UML wpasowuj� si� w oba j�zyki i
> paradygmaty. Pewnie wynika to z oderwania UML od konkretnego j�zyka
> programowania czy paradygmatu.
>
> Id�c dalej, stworzenie funkcji (a p�niej zestawu makr) w Clojure do
> generowania diagram�w UMLowych mog�oby by� ciekawym sposobem na
> nauczenie siďż˝ pierwszego - Clojure, a pod sztandarami drugiego - UML
> umo�liwienie zespo�owi na u�ycie j�zyka, je�li wsparcie przez UML jest
> warunkiem koniecznym do rozwa�enia go.
>
> Jacek
>
To tak jakby określić programowanie funkcyjne, w którym zwykle też
przedkłada się CO nad JAK. Trochę generalizuję, ale takie postrzeganie
jest bardzo powszechne.
> Można by się zapytać kogoś z grupy architekt wanna be.
A tu mam pewną zagwozdkę, bo jak architekt mógłby odpowiedzieć na to
pytanie, jeśli nie zna programowania funkcyjnego, co w przypadku
naszej grupy powiedziałbym, że jest powszechne (zwykle
programujemy/-ją w obiektowej Javie).
> Przykładowo javascript jest postrzegany jako język
> funkcyjny - jednak gdy rok temu czytałem książkę o samym języku (krótką i
> treściwą
> (http://blog.tiger.com.pl/2010/08/10/ksiazka-javascript-mocne-strony/) autor
> pisał że js jest przede wszystkim obiektowe - funkcja jest takim samym
> obiektem jak string czy dowolny obiekt złożony.
Należy zatem uwspólnić nomenklaturę. Zacznijmy od programowania
funkcyjnego. Co powinien mieć język, aby nazwać go funkcyjnym? Weźmy
Wikipedię [1] i jej najważniejszy wycinek: "funkcje należą do wartości
podstawowych". To jest najlepsza definicja PF. W JavaScript funkcje są
pierwszej kategorii, więc...jest językiem funkcyjnym.
Obiektowość zostawiam komu innemu, ale rozumowanie będzie podobne
(podpowiedź: zamiast funkcji podstawiamy klasę).
[1] http://pl.wikipedia.org/wiki/Programowanie_funkcyjne
Jacek
--
Jacek Laskowski
Functional languages (Clojure), Java EE, and IBM WebSphere -