Modelowanie programów funkcyjnych

49 views
Skip to first unread message

Marek Maj

unread,
Feb 21, 2012, 6:21:56 PM2/21/12
to Warszawa Java User Group (Warszawa JUG)
cześć,
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 ;)

Pozdrawiam,
Marek Maj

Jacek Laskowski

unread,
Feb 22, 2012, 4:51:53 AM2/22/12
to warsza...@googlegroups.com
2012/2/22 Marek Maj <mare...@gmail.com>:

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

Krzysztof Nielepkowicz

unread,
Feb 22, 2012, 9:14:02 AM2/22/12
to warsza...@googlegroups.com
Nie wiem czy to nie jest kwestia filozofii i trochďż˝ nazewnictwa. UML nie
m�wi JAK mam to zrobi�, m�wi raczej CO ma by� zrobione. Wi�c zastosowa�
my�lenie funkcyjne mo�na niezale�nie od diagramu. Jednak najbardziej
pasuj�ce wydaj� si� diagramy przypadk�w u�ycia i diagram czynno�ci.
Jednak to tylko przeczucia bo architektem nie jestem ;) Mo�na by si�
zapytaďż˝ kogoďż˝ z grupy architekt wanna be. Swojďż˝ drogďż˝ nie wiem czy ma
sens takie ideologiczne podej�cie. 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.


--
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
>

Jacek Laskowski

unread,
Feb 22, 2012, 9:21:20 AM2/22/12
to warsza...@googlegroups.com
2012/2/22 Krzysztof Nielepkowicz <k.p.niel...@gmail.com>:
> UML nie mówi JAK mam to zrobić, mówi raczej CO ma być zrobione.

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 -

Reply all
Reply to author
Forward
0 new messages