🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #26592

Re: python vs php - potrzebne argumenty

#26592
From: Piotr Sawicki
Date: Wed, 25 Nov 2009 14:04
75 lines
5343 bytes
Sebastian Kaliszewski powiada:

>> Przy obsłudze błędów poprzez kontynuacje? Not rili.
>
>Można przez kontynuacje czy insze monady (jedno daje się 
>wyrazić przez drugie). Ale bez odpowiedniego lukru syntaktycznego 
>(albo makr) to zaczyna to słabo wyglądać.

Do każdego mechanizmu języka powinna być przewidziana składnia
(sprawdzić czy nie ksiądz^W Lisp), bez niej słabo zaczyna wyglądać 
nawet deklaracja procedury. A parser to akurat najbardziej banalna 
część kompilatora, niemalże generowana automatycznie z opisu gramatyki.  

>I jaką nową jakość chcesz uzyskać za pomocą obsługi 
>błędów przez kontynuacje? 

Zysk na QA dzięki jawnemu specyfikowaniu przepływu sterowania. 
Stosowanie wyjątków, przy wszystkich zaletach, powoduje że nietrywialne 
staje się statyczne sprawdzenie, czy obsłużono wszystkie rzucane błędy.

> Rzeczywistość jednak jest taka, że to C, Java, C++ i PHP to
> najpopularniejsze języki :)

To empiria, ale możliwych powodów popularności języka jest 
tyle, że sama w sobie nie przesądza ona o jego jakości.

>> Odróżnijmy jednak języki w których wyjątki
>> są elementarną konstrukcją semantyczną od takich, gdzie dodano
>> je jako rozszerzenie albo wręcz umożliwiono korzystanie z nich
>> poprzez biblioteczną implementację normalnymi środkami (Haskell).
>
>Normalnymi czyli za pomocą monad i lukru syntaktycznego.

Jak programujesz w Haskellu bez użycia monad, to wyjątki są na plaster.
Z monadami już jest sens korzystania z wyjątków, ale wtedy są one AFAIK
zaimplementowane zwyczajnymi strukturami z funkcjami wyższych rzędów 
- samemu sobie można taką bibliotekę napisać, to nie element języka.

>Na tej samej zasadzie można się zastanawiać, czy obiektowość należy
>udostępniać jako cechę języka czy też wystarczy dać odpowiednie makra i
>obiektowość zaimplementować w bibliotece (patrz CLOS :) ) 

Zależy od ekspresywności języka oczywiście - ale to Ty chciałeś
oceniać cechę języka na podstawie tego, w ilu językach występuje.
Jeśli ma się liczyć również możliwość bibliotecznego doimplementowania
takiej cechy w elastycznych językach wysokopoziomowych, to tą drogą
rozumowania można uzasadniać dowolnie sensowne konstrukty.

>Przy czym współczesne wersje paru tych języków wyjątki ma.

No i spoko, nie mam nic przeciw wolności wyboru - ale to że dodano
jakiś bajer nie oznacza że bez niego wcześniej nie dało się programować
czegokolwiek poza teoretycznymi zabawami w stylu własnego translatora.

>BTW jesteś pewien, że Smalltalk nie miał od początku? 

Nie rzucę linkiem do pierwotnej definicji, ale w opisach historii
projektowania Smalltalka nie widziałem żadnej wzmianki. Zresztą
do tej pory jest to realizowane zwykłymi obiektami i komunikatami.
Które są tytułowane exception, ale są trochę czym innym (sygnały
z możliwością zrobienia resume albo retry). Nie wymaga to specjalnego
wsparcia języka dla wyjątków, wystarczy że pozwala on na domknięcia.

>> w języku z kontynuacjami. Za to szablony są idiotyczne również
>> przy typowaniu statycznym, ale z kwantyfikatorami lub funktorami.
>
>Nie koniecznie. Oczywiście nie mogą być tak obleśnie 
>zrealizowane jak w C++. 

A znasz jakąś inną? Dla mnie sensem wyodrębnienia terminu template
jest właśnie wskazanie tego konkretnego idiotycznego pomysłu, żeby
wielokrotnie kopiować definicje przeklejając kolejne typy. Genericsów, 
typów polimorficznych czy type_classów już bym nie nazwał szablonem. 

Piotr Sawicki
Technical Details
Message-ID: <slrnhgqec3.tfh.ps171721@duch.mimuw.edu.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news2.icm.edu.pl!not-for-mail
References: <h83in7$rl3$1@inews.gazeta.pl> <2f2d1c53-fa9a-40b1-be71-60f530a0be72@g23g2000yqh.googlegroups.com> <21c2c0bd-464f-45b2-a3ce-449c0412d48c@b2g2000yqi.googlegroups.com> <ad429fa2-5c6d-47a8-8337-1dafcd18c0b9@a31g2000yqn.googlegroups.com> <858f3466-5bdd-4c10-baa1-974089ef29ba@s31g2000yqs.googlegroups.com> <op.u2tsh4k3eaqjf2@mydot.ftpviewlocal.com> <1be92709-f662-4da5-8f44-3ab83d3915d3@k19g2000yqc.googlegroups.com> <op.u2vg6knceaqjf2@mydot.ftpviewlocal.com> <f45ba553-947c-40ff-a96a-88ac21ea20ab@37g2000yqm.googlegroups.com> <op.u26lj6r2eaqjf2@jzabielloosx.dubtilt.local> <929230b3-8c01-4aa0-ba4d-af46cf4196f1@m16g2000yqc.googlegroups.com> <hdqtq7$2qja$1@news2.ipartners.pl> <9417e837-c468-4fe6-9ec8-5c17b268cecd@u7g2000yqm.googlegroups.com> <hds989$q2i$1@news.lublin.pl> <slrnhg3lqh.ee.ps171721@duch.mimuw.edu.pl> <hdslom$1ps$7@news.lublin.pl> <slrnhg3o3d.60f.ps171721@duch.mimuw.edu.pl> <hdsvmg$8mc$1@news.lublin.pl> <slrnhg4ts4.fq3.ps171721@duch.mimuw.edu.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news2.icm.edu.pl!not-for-mail
From: Piotr Sawicki <ps171721@students.mimuw.edu.pl>
Newsgroups: pl.comp.lang.python
Subject: Re: python vs php - potrzebne argumenty
Date: Wed, 25 Nov 2009 14:04:51 +0000 (UTC)
Organization: KTG
Lines: 75
Message-ID: <slrnhgqec3.tfh.ps171721@duch.mimuw.edu.pl>
References: <h83in7$rl3$1@inews.gazeta.pl> <2f2d1c53-fa9a-40b1-be71-60f530a0be72@g23g2000yqh.googlegroups.com> <21c2c0bd-464f-45b2-a3ce-449c0412d48c@b2g2000yqi.googlegroups.com> <ad429fa2-5c6d-47a8-8337-1dafcd18c0b9@a31g2000yqn.googlegroups.com> <858f3466-5bdd-4c10-baa1-974089ef29ba@s31g2000yqs.googlegroups.com> <op.u2tsh4k3eaqjf2@mydot.ftpviewlocal.com> <1be92709-f662-4da5-8f44-3ab83d3915d3@k19g2000yqc.googlegroups.com> <op.u2vg6knceaqjf2@mydot.ftpviewlocal.com> <f45ba553-947c-40ff-a96a-88ac21ea20ab@37g2000yqm.googlegroups.com> <op.u26lj6r2eaqjf2@jzabielloosx.dubtilt.local> <929230b3-8c01-4aa0-ba4d-af46cf4196f1@m16g2000yqc.googlegroups.com> <hdqtq7$2qja$1@news2.ipartners.pl> <9417e837-c468-4fe6-9ec8-5c17b268cecd@u7g2000yqm.googlegroups.com> <hds989$q2i$1@news.lublin.pl> <slrnhg3lqh.ee.ps171721@duch.mimuw.edu.pl> <hdslom$1ps$7@news.lublin.pl> <slrnhg3o3d.60f.ps171721@duch.mimuw.edu.pl> <hdsvmg$8mc$1@news.lublin.pl> <slrnhg4ts4.fq3.ps171721@duch.mimuw.edu.pl>
Reply-To: piotr.sawicki@mimuw.edu.pl
NNTP-Posting-Host: duch.mimuw.edu.pl
Mime-Version: 1.0
X-Trace: achot.icm.edu.pl 1259157891 9216 193.0.96.2 (25 Nov 2009 14:04:51 GMT)
X-Complaints-To: abuse@icm.edu.pl
NNTP-Posting-Date: Wed, 25 Nov 2009 14:04:51 +0000 (UTC)
User-Agent: slrn/0.9.9p1 (Linux)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit