Article View: pl.comp.lang.funkcyjne
Article #995Re: W nawiązaniu do rozmowy o Common Lisp vs Java
From: godek.maciek
Date: Thu, 26 Jan 2017 22:56
Date: Thu, 26 Jan 2017 22:56
58 lines
4349 bytes
4349 bytes
W dniu czwartek, 26 stycznia 2017 19:55:13 UTC+1 użytkownik markfal...@gmail.com napisał:
> No właśnie. Żeby nie robić z tamtego wątku tasiemca zupełnie off topic...
>
> Czy na prawdę Lisperzy na pytanie jakie zadał bigos na comp.lang.lisp:
>
> https://groups.google.com/forum/#!topic/comp.lang.lisp/2XyHXlVpTiw
>
> Mają tylko odpowiedź w stylu "The abstraction tools used at the micro level can also be used at the macro level"?
>
> Przecież każdy architekt dużych systemów, które mają się dobrze skalować, wie
> że to tak nie działa :) Obsługa 10 różnych usług sieciowych w aplikacji
> z której korzysta w tym samym czasie 300 osób, a obsługa np. 300 tysięcy różnych usług, o różnej wolumetrii danych, w rozproszonym systemie, z wymaganiami HA, przy ostrych wymaganiach na wydajność - to zupełnie nie to samo i sam DSL
> mi tego nie zapewni...
Ja myślę o tych kwestiach w zupełnie inny sposób, tzn. mam świadomość,
że korzystając z jakiegoś języka programowania niebędącego lispem, coś
odrzucam. Mówiąc konkretniej, odrzucam elastyczność powodowaną tym, że
składnia lispa, wraz z operatorem quote pozwala tworzyć dowolne obiekty
drzewiaste. Dlatego kiedy się np. mieliśmy na uniwerku zajęcia z parsowania
i gramatyk, to zamiast korzystać z jakichś bardzo skomplikowanych
narzędzi typu Bison, mogłem zapisywać gramatyki po prostu za pomocą
s-wyrażeń, np.
'((<S> => <A> <B>)
(<S> => <B>)
(<A> => a <A>)
(<A> => x)
(<B> => b <B>)
(<B> => x))
Napisanie rekurencyjnego programu pozwalającego przetwarzać takie
gramatyki nie zajęło wiele miejsca -- niewiele więcej, niż ekran kodu,
zaledwie 4 funkcje, z czego dwie rekurencyjne.
Gdybym chciał to samo osiągnąć w jakimś nie-lispie, musiałbym
się babrać z tworzeniem parserów. Tutaj mam to za darmo. Kod może nie
był czysto funkcyjny, bo używałem w nim wyjątków, ale ponieważ
intefejs był funkcyjny, mogłem go łatwo testować, np.
((recursive-descent-parser '((A => a A b)
(A => c)))
'(a a a c b b b))
;; => (A a (A a (A a (A c) b) b) b
podczas gdy pan, który prowadził kurs na uniwerku, napisał chyba z 5
ekranów kodu odpowiedzialnych za samo wyświetlanie drzew parsowania.
I oczywiście, kiedy tworzysz jakiś konkretny projekt na jakieś konkretne
potrzeby, wówczas faktycznie kluczowe znaczenie ma ekosystem oraz
grono odbiorców.
Zdaje się, że w projektach Javovych typowym formatem strukturyzowania
danych jest XML. Programiści Scheme'u wymyślili sobie coś takiego,
jak SXML, czyli konwersję XML do postaci s-wyrażeń, dzięki czemu
mogą uniknąć tego bezsensownego narzutu redundantnych znaczników.
Trochę się swego czasu rozpisywałem na ten temat na quorze:
https://www.quora.com/Which-programming-language-is-the-most-suitable-in-building-a-humanoid-robot/answer/Panicz-Godek
Technical Details
Message-ID:
<bc80031a-7361-4ad7-afba-749028aafb84@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.glorb.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!q58no356040qte.0!news-out.google.com!78ni10574itm.0!nntp.google.com!r185no514021ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailReferences:
<f2971b42-0147-4004-9719-35597606c6eb@googlegroups.com>Show Full Headers
Complete Article Headers
X-Received: by 10.159.49.21 with SMTP id m21mr1191698uab.20.1485471365706; Thu, 26 Jan 2017 14:56:05 -0800 (PST) X-Received: by 10.157.35.89 with SMTP id k25mr436318otd.11.1485471365662; Thu, 26 Jan 2017 14:56:05 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.glorb.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!q58no356040qte.0!news-out.google.com!78ni10574itm.0!nntp.google.com!r185no514021ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.funkcyjne Date: Thu, 26 Jan 2017 14:56:05 -0800 (PST) In-Reply-To: <f2971b42-0147-4004-9719-35597606c6eb@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=176.221.123.40; posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r NNTP-Posting-Host: 176.221.123.40 References: <f2971b42-0147-4004-9719-35597606c6eb@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <bc80031a-7361-4ad7-afba-749028aafb84@googlegroups.com> Subject: Re: W nawiązaniu do rozmowy o Common Lisp vs Java From: godek.maciek@gmail.com Injection-Date: Thu, 26 Jan 2017 22:56:05 +0000 X-Received-Bytes: 4753 X-Received-Body-CRC: 947057495 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit