🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.funkcyjne
Article #263

Re: newbi: Co to jest i z czym to sie je? :)

#263
From: Marcin 'Qrczak' Kowalczyk
Date: Fri, 14 Feb 2003 17:25
59 lines
3704 bytes
Fri, 14 Feb 2003 14:04:10 +0100, Michal Przybylek <pkmichal@poczta.onet.pl> pisze:

> Nie wiem o co dokladni pytasz. Byc funkcyjnym nie jest trudno. Najczescie
> wsytarczy skutecznie utrudnic programowanie obiektowe, aby sie nim stac

Nic podobnego. Do programowania funkcyjnego w moim rozumieniu
technicznie potrzeba co następuje (nie liczę integracji z bibliotekami,
tylko same cechy języka):

1. odśmiecania,
2. lokalnych funkcji ze statyczną widocznością identyfikatorów,
   z możliwością przekazywania takich funkcji jako obiekty (w taki
   sposób, że funkcje o danych typach argumentów i wyników mają ten
   sam typ - to jest trywialnie spełnione przez języki z dynamicznym
   systemem typów),
3. sposobu na wyrażenie typów algebraicznych,
4. możliwości opisania dowolnych wyliczanych wartości przez wyrażenie
   (a nie np. tylko instrukcję zapisującą wynik do zmiennej).

Na przykład C utrudnia programowanie obiektowe, ale funkcyjne tym
bardziej - odpada pod każdym względem.

Z języków tradycyjnie uznawanych za niefunkcyjne można programować
funkcyjnie w Rubym, w Perlu, częściowo w Pythonie (trochę brakuje 4),
w Smalltalku...

Z kolei C++, Java i Eiffel rzucają kłody pod nogi (C++ w każdym punkcie,
Java ma 2,3 zamotane, Eiffel dopiero próbuje wprowadzać 2,3,4).

Obiektowość nie ma tutaj wpływu na łatwość/trudność programowania
funkcyjnego.

> zauwaz tez, ze w druga stone to nie zachodzi - tj. wiekszosc
> "jezykow obiektowych" jest wystarczajaco elastyczna, aby mozliwe
> bylo w nich w miare wygodne programowanie funkcyjne]).

Bzdura. Zrób listę z leniwym ogonem w C++, Javie albo Eifflu -
wyjdzie powtorek.

Obiektowość tradycyjnie jest imperatywna i ma to uzasadnienia
techniczne (nie twierdzę, że decydujące). Otóż jeśli obiekty
zwracają swoje zmienione kopie zamiast zmiany stanu w miejscu,
to wysiada dziedziczenie: w podklasach metody zwracają obiekty nie
tej klasy co trzeba.

Chyba że się nagimnastykujemy i damy językowi odpowiednie mechanizmy
kopiowania obiektów z podmianą niektórych pól i pozostawieniu
nieokreślonego zestawu pozostałych bez zmian. Z języków, które znam,
tylko OCaml tak robi. Z tego powodu w językach tradycyjnie obiektowych
styl funkcyjny nie będzie dobrze integrował się z obiektowością.

Z kolei mieszanie stylu funkcyjnego i imperatywnego jest bezbolesne,
o ile nie oczekujemy funkcyjnej czystości. W dobrym języku sprowadza
się do wyboru konwencji używania struktur danych.

-- 
   __("<         Marcin Kowalczyk
   \__/       qrczak@knm.org.pl
    ^^     http://qrnik.knm.org.pl/~qrczak/
Technical Details
Message-ID: <slrnb4q9jr.st5.qrczak@qrnik.zagroda>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!localhost!not-for-mail
References: <b2ap0k$cum$1@atlantis.news.tpi.pl> <slrnb4kc1l.ljp.bies@hell.org.pl> <b2dsso$pue$1@atlantis.news.tpi.pl> <slrnb4mujn.qlp.bies@hell.org.pl> <b2ippr$2r0$1@nemesis.news.tpi.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!localhost!not-for-mail
From: Marcin 'Qrczak' Kowalczyk <qrczak@knm.org.pl>
Newsgroups: pl.comp.lang.funkcyjne
Subject: Re: newbi: Co to jest i z czym to sie je? :)
Date: Fri, 14 Feb 2003 17:25:15 +0000 (UTC)
Organization: Klub Nieszkodliwych Manjaków
Lines: 59
Message-ID: <slrnb4q9jr.st5.qrczak@qrnik.zagroda>
References: <b2ap0k$cum$1@atlantis.news.tpi.pl> <slrnb4kc1l.ljp.bies@hell.org.pl> <b2dsso$pue$1@atlantis.news.tpi.pl> <slrnb4mujn.qlp.bies@hell.org.pl> <b2ippr$2r0$1@nemesis.news.tpi.pl>
NNTP-Posting-Host: paf87.warszawa.sdi.tpnet.pl
Mime-Version: 1.0
X-Trace: nemesis.news.tpi.pl 1045243795 8458 217.96.225.87 (14 Feb 2003 17:29:55 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Fri, 14 Feb 2003 17:29:55 +0000 (UTC)
User-Agent: slrn/0.9.7.4 (Linux)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit