🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.objects
10 messages
10 total messages Started by paweł Sun, 16 Jul 2006 01:05
Kawałek funkcyjny w programie obiektowym (Jess?)
#14889
Author: paweł
Date: Sun, 16 Jul 2006 01:05
22 lines
1847 bytes
witam, 
 
Znacie może jakąś wartą polecenia bibliotekę/implementację Scheme lub jakiegoś 
inszego Lispa, żeby można było zagnieżdżać kawaki kodu napisane 
funkcyjnie/deklaratywnie w aplikacjach Javy?  
 
Póki co jest Jess (dosyć wyspecjalizowany podzbiór Lispa, javowa implementacja 
CLIPSa), ale on raczej poza tworzeniem systemów regułowych nie pozwala chyba 
na programowanie funkcyjne w nieco szerszym aspekcie? A może się mylę? 
(aplikacja ma mieć zagnieżdżony dosyć zaawansowany parser, ze zmieniającymi 
się schematami, wg których ma on parsować dane).  
 
Jess ma tę świetną zaletę, że może korzystać bezpośrednio z klas javowych. 
Może jest coś podobnego opartego na Scheme? A może ktoś zetknął się z Jessem i  
pisał w nim coś więcej niż proste reguły i fakty? Jeśli nie jest on dużo uboższy niż 
Scheme, to może nie warto kombinować.  
 
pozdrawiam i dzięki za podpowiedź. 
paweł. 

-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: Kawałek funkcyjny w programie obiektowym (Jess?)
#14898
Author: A.L.
Date: Sun, 16 Jul 2006 02:40
38 lines
2310 bytes
On Sun, 16 Jul 2006 01:05:54 +0000 (UTC), " paweł"
<pawellt.SKASUJ@gazeta.pl> wrote:

>witam, 
> 
>Znacie może jakąś wartą polecenia bibliotekę/implementację Scheme lub jakiegoś 
>inszego Lispa, żeby można było zagnieżdżać kawaki kodu napisane 
>funkcyjnie/deklaratywnie w aplikacjach Javy?  
> 
>Póki co jest Jess (dosyć wyspecjalizowany podzbiór Lispa, javowa implementacja 
>CLIPSa), ale on raczej poza tworzeniem systemów regułowych nie pozwala chyba 
>na programowanie funkcyjne w nieco szerszym aspekcie? A może się mylę? 

Nie mylisz sie. Mozna go uzywac jako jezyk skryptowy tez.

> 
>Jess ma tę świetną zaletę, że może korzystać bezpośrednio z klas javowych. 
>Może jest coś podobnego opartego na Scheme? A może ktoś zetknął się z Jessem i  
>pisał w nim coś więcej niż proste reguły i fakty?

Jak sie zaprzec, to mozna. Ale byl on zaprojektowany do czegos
innego wiec nie warto sie wysilac.

A po co ci programowanie funkcyjne w Javie?...

Ale jak ci juz koniecznie potrzebne, zobacz Jatha:

"Jatha is a Java library that implements a large subset of Common
LISP, including most of the datatypes (e.g. packages, bignums). The
API allows access to LISP from Java. Jatha is useful as a fast,
embedded LISP language, or as a standalone LISP...."

http://sourceforge.net/projects/jatha/


A.L.

P.S> Disclaimer: Nie sprawdzalem co to-to jest warte
Re: Kawałek funkcyjny w programie obiektowym (Jess?)
#14894
Author: rajm
Date: Mon, 17 Jul 2006 11:08
21 lines
1705 bytes
> http://sourceforge.net/projects/jatha/
> 

Kiedyś trochę się tym bawiłem. Minusem jest fakt, że jatha nie ma
nawet zaimplementowanych funkcji lambda. Ma też kilka innych braków,
utrudniających nieco programowanie funkcyjne.

Moim zdaniem mając Jessa i Javę możesz zrobić na prawdę dużo.
Jess (od wersji 7.X) posiada funkcje lambda, możesz w nim też
tworzyć nowe funkcje i przekazywać je jako parametry innych funkcji,
Masz też zaawansowane operacje na listach. W razie konieczności możesz
w każdej chwili wywołać Javę, która zrobi resztę. Jednym słowem kawałek
możesz zaimplementować funkcyjnie, kawałek imperatywnie-obiektowo. 
No i Jess jest szybki.

Zerknij też na to: http://www.gnu.org/software/kawa/

Pozdrawiam

-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: Kawałek funkcyjny w programie obiektowym (Jess?)
#14879
Author: rajm
Date: Mon, 17 Jul 2006 11:18
17 lines
1539 bytes
BTW takich multiparadygmatowych aplikacji, to w jaki sposób testujecie np.
takie kawałki deklaratywne? (czy to prologowe, czy lispowe właśnie). Chodzi mi
o testy typu whitebox.

W typowych, imperatywnych językach (np. obiektowych) to wiadomo; Są testy
pokrycia kodu, są asercje, do większych kawałków wykonuje się testy
jednostkowe np. JUnitem. Obiekty dostają coś na wejściu, patrzymy co zwracają
na wyjściu.

W przypadku softu lispowego, czy tym bardziej prologowego specyfika działania
jest zgoła inna. Są na to jakieś oddzielne narzędzia czy metodyki? 


Pozdrawiam

-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: Kawałek funkcyjny w programie obiektowym (Jess?)
#14900
Author: A.L.
Date: Mon, 17 Jul 2006 12:31
20 lines
1633 bytes
On Mon, 17 Jul 2006 11:18:17 +0000 (UTC), " rajm"
<rjmnd.WYTNIJ@gazeta.pl> wrote:

>BTW takich multiparadygmatowych aplikacji, to w jaki sposób testujecie np.
>takie kawałki deklaratywne? (czy to prologowe, czy lispowe właśnie). Chodzi mi
>o testy typu whitebox.
>
>W typowych, imperatywnych językach (np. obiektowych) to wiadomo; Są testy
>pokrycia kodu, są asercje, do większych kawałków wykonuje się testy
>jednostkowe np. JUnitem. Obiekty dostają coś na wejściu, patrzymy co zwracają
>na wyjściu.
>
>W przypadku softu lispowego, czy tym bardziej prologowego specyfika działania
>jest zgoła inna. Są na to jakieś oddzielne narzędzia czy metodyki? 
>

Prolog tez dziala w ten sposob ze ma cos na wejsciu i generuje cos
na wyjsciu. Nie znam inengo sposobu testowania niz ten wlasnie.

A.L.
Re: Kawałek funkcyjny w programie obiektowym (Jess?)
#14851
Author: A.L.
Date: Mon, 17 Jul 2006 12:42
25 lines
2109 bytes
On Mon, 17 Jul 2006 11:08:54 +0000 (UTC), " rajm"
<rjmnd.WYTNIJ@gazeta.pl> wrote:

>> http://sourceforge.net/projects/jatha/
>> 
>
>Kiedyś trochę się tym bawiłem. Minusem jest fakt, że jatha nie ma
>nawet zaimplementowanych funkcji lambda. Ma też kilka innych braków,
>utrudniających nieco programowanie funkcyjne.
>
>Moim zdaniem mając Jessa i Javę możesz zrobić na prawdę dużo.
>Jess (od wersji 7.X) posiada funkcje lambda, możesz w nim też
>tworzyć nowe funkcje i przekazywać je jako parametry innych funkcji,
>Masz też zaawansowane operacje na listach. W razie konieczności możesz
>w każdej chwili wywołać Javę, która zrobi resztę. Jednym słowem kawałek
>możesz zaimplementować funkcyjnie, kawałek imperatywnie-obiektowo. 
>No i Jess jest szybki.

Byly jakies problemy z dostepem do klas Javy z poziomu Jessa, juz
nei pamietam szczegolow, wszakze pamietam ze ten dostep byl
ograniczony. Obiecywano to poprawic w nowej wersji Jessa, ale nie
wiem czy ta wersja sie juz ukazala. Jakis czas temu sie tym
zajmowalem...

A.L.
Re: Kawałek funkcyjny w programie obiektowym (Jess?)
#14901
Author: Marcin Stefaniak
Date: Sat, 29 Jul 2006 07:18
31 lines
2197 bytes
 rajm <rjmnd.WYTNIJ@gazeta.pl> napisał(a): 

> W typowych, imperatywnych językach (np. obiektowych) to wiadomo; Są testy
> pokrycia kodu, są asercje, do większych kawałków wykonuje się testy
> jednostkowe np. JUnitem. 

> Obiekty dostają coś na wejściu, patrzymy co zwracają
> na wyjściu.

A to akurat wyglada jak testy typu blackbox. 
Poza tym nie "obiekty", a ich metody cos zwracaja na wyjsciu. A w jezykach
funkcyjnych, to funkcje.

> W przypadku softu lispowego, czy tym bardziej prologowego specyfika
działania jest zgoła inna. Są na to jakieś oddzielne narzędzia czy metodyki? 

Ja bym to ujal tak: Jasne jest w jaki sposob testowac kod w jezykach
funkcyjnych (wiadomo, funkcja dla danego wejscia ma dawac jakies wyjscie),
rowniez testy white-box, statyczna analiza jest latwiejsza (no bo prosciej
jest deklaratywnie, co nie?). W przypadku softu obiektowego, czy tym bardziej
obiektowo-zorientowanego, specyfika jest zgola inna. Ale pewnie sa na to
jakies pododbne narzedzia czy metodyki.

Jedno tylko czasem bywa troszke trudniejsze. Nie jest latwo dorobic "asercje"
w czysto funkcyjnym kawalku np. w Haskellu - trzeba kawal kodu zrefaktorowac
zeby nadac mu odpowiednia monade

-MS

-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: Kawałek funkcyjny w programie obiektowym (Jess?)
#14902
Author: Marcin 'Qrczak' Kowalczyk
Date: Sat, 29 Jul 2006 09:07
14 lines
1886 bytes
"Marcin Stefaniak" <matmis.WYTNIJ@gazeta.pl> writes:

> Jedno tylko czasem bywa troszke trudniejsze. Nie jest latwo dorobic
> "asercje" w czysto funkcyjnym kawalku np. w Haskellu - trzeba kawal
> kodu zrefaktorowac zeby nadac mu odpowiednia monade

Jeśli asercja ma kończyć program (albo jeśli wystarczy, że będzie
łapalna w GHC, a nie w standardowym Haskellu), to jest łatwo: funkcją
error.

-- 
   __("<         Marcin Kowalczyk
   \__/       qrczak@knm.org.pl
    ^^     http://qrnik.knm.org.pl/~qrczak/
Re: Kawałek funkcyjny w programie obiektowym (Jess?)
#14903
Author: Piotr Dembiński
Date: Sat, 29 Jul 2006 10:09
14 lines
1371 bytes
"Marcin Stefaniak" <matmis.WYTNIJ@gazeta.pl> writes:

[ciap]

> Nie jest latwo dorobic "asercje" w czysto funkcyjnym kawalku np. 
> w Haskellu - trzeba kawal kodu zrefaktorowac zeby nadac mu odpowiednia
> monade

Popraw mnie, jeśli się mylę, ale Haskell jest silnie typowany, więc 
w wielu przypadkach zamiast asercji bardziej naturalne byłoby
stosowanie odpowiednich typów.

-- 
http://www.piotr.dembiński.prv.pl
Re: Kawałek funkcyjny w programie obiektowym (Jess?)
#14904
Author: Marcin Stefaniak
Date: Tue, 15 Aug 2006 00:44
14 lines
1467 bytes
pdemb@gazeta.pl (=?ISO-8859-2?q?Piotr_Dembi=F1ski?=) napisał(a): 

> Popraw mnie, jeśli się mylę, ale Haskell jest silnie typowany, więc 
> w wielu przypadkach zamiast asercji bardziej naturalne byłoby
> stosowanie odpowiednich typów.

Haskell może i ma fajny system typów, ale i tak większość istotnych założeń,
które miewa się na myśli podczas tworzenia oprogramowania nie bardzo dają się
w nim wyrazić...

-MS

-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads