Article View: pl.comp.lang.python
Article #26592Re: python vs php - potrzebne argumenty
From: Piotr Sawicki
Date: Wed, 25 Nov 2009 14:04
Date: Wed, 25 Nov 2009 14:04
75 lines
5343 bytes
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-mailReferences:
<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