🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: python vs php - potrzebne argumenty

#26594
From: Piotr Sawicki
Date: Tue, 01 Dec 2009 01:06
112 lines
6629 bytes
Sebastian Kaliszewski powiada:
>> 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. 
>
> Zależy którego ;) W przypadku C++ wcale nie traka trywialna (goście z 
> bodaj Open++ chyba parę lat pracowali nad zrobieniem takowego, i jest to 
> jedyna free-standaing implementacja parsera C++)

No to zatoczyliśmy koło - od początku twierdziłem, że c++ to syf.

>>> 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. 
>
> Popatrz na kontynuacje w Rubym -- parę globalnych zmiennych i jawnie 
> wyspecyfikowany przepływ sterowania się schował :)

Sorry, nie piszę w Rubym i nie bardzo kojarzę co masz na myśli.

> W przypadku języków dynamicznych i tak nie bardzo widzę zaletę.
>
> To co ma sens w językach statycznie typowanych często nie ma 
> już sensu w dynamicznie typowanych.

W Lispie czy Smalltalku jakoś ma sens.

>> Stosowanie wyjątków, przy wszystkich zaletach, powoduje że nietrywialne 
>> staje się statyczne sprawdzenie, czy obsłużono wszystkie rzucane błędy.
>
> Eee.. jest tak samo trywialne/nietrywialne jak w przypadku monad / 
> kontynuacji. 

No właśnie nie - pod tym względem wyjątki nie są łatwiejsze w pilnowaniu 
nawet od obsługi błędów przez zwracanie funkcją kodu błędu i sprawdzaniu
tego ifami. Tzn. w najlepszym przypadku można każdy call obstawić własnym 
try-catchem (co podpada już pod brzytwę Ockhama).

> try:
>    whole_program()
> except BaseException:
>    wszystko_obsłużone()
>
> Mamy wszystko obsłużone ale do prawdy niewiele z tego 
> "wszystko-obsłużenia" wynika.

Przecież to nie jest obsługa błędów.

> Rozróżniłbym jednak teoretyczną możliwość doimplementowania od 
> faktycznego zaimplementowania i to w standardowej bibliotece danego 
> języka. Przyjmuję, że biblioteka standardowa języka jest jego 
> (istotną) częścią.

Może dlatego różnimy się w ocenie, ja wolę rozróżniać te kategorie.
Widziałem np. narzekania na szkodliwy wpływ nauki Pythona i Haskella
na wydajność pisania w C# - uzasadniany tym, że C# co prawda jest
całkiem niezły i ma dużo zaawansowanych cech, ale sabotażują ich 
wykorzystanie imperatywnie zaprojektowane biblioteki. 

>>>> szablony są idiotyczne również przy typowaniu statycznym[...]
>>> Nie koniecznie. Oczywiście nie mogą być tak obleśnie 
>>> zrealizowane jak w C++. 
>> 
>> A znasz jakąś inną?
>
> D, poza tym genericsy z Javy które są i tak biedne i kiepskie (bo 
> dziurawe -- statycznie typowana konstrukcja która nie jest), C#, 
> rozwiązania z Ady, Free Pascala (biedne ale z lepszą składnią), Delphi 
> (głupia składnia, w zasadzie kopia z C#) itd...

D nie znam, Adę inaczej kwalifikuję, pozostałe są zrealizowane
(AFAIK) właśnie metodą ceplusplusową, alias obleśną.

>> 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.
>
> Ale to nie są już templaty z C++ od 15 co najmniej lat (i od 
> najstarszego standardu ISO już takie nie były). 

Już nie ma instancjonowania oddzielnych typów w trakcie kompilacji?
Bo nie był moim zarzutem brak oskryptowania.

> Teraz (czytaj od nastu lat) są Turing complete (modulo dopuszczane przez 
> standard ograniczenia głębokości rekursji do baardzo płytkiego poziomu) 
> z całkowicie porąbaną drogą uzyskania tego Turing completeness.

Tak jakby nie wystarczył do tego system typów.

> Innymi słowy -- teraz jest to bardzo silny mechanizm stricte statyczny, 
> tylko składnię ma kompletnie, absolutnie do bani. Wynikło to z tego, że 
> nikt go nie zaprojektował pod kątem tej siły -- ot wstawiono kilka cech 
> które różnym ludziom gdzies tam były przydatne czy gdzie indziej 
> wygodnie się implementowały, ale ich suma okazała się istotnie silniejsza.

Fajnie, ale taka siła to jest potrzebna do metaprogramowania - a tego
się w praktyce nie da zrobić w c++. Całe to przerośnięte monstrum
szablonowe jest używane głównie do uzyskania polimorfizmu, a jak ktoś 
chce skorzystać z metaprogramowania to pisze w czymś lispowatym z makrami.

>> Genericsów, 
>> typów polimorficznych czy type_classów już bym nie nazwał szablonem. 
>
> Genericsów jakich? Javy? Te mają podobnie głupią składnię, 
> połączoną z typowo Javową biedą rozwiązania.

Ady. W obronę Javy (jako języka a nie platformy) mnie nie wciągniesz :).


Piotr Sawicki
Technical Details
Message-ID: <slrnhh8r0k.kjc.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> <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> <slrnhgqec3.tfh.ps171721@duch.mimuw.edu.pl> <lntcu6-2q7.ln1@bozon.softax.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: Tue, 1 Dec 2009 01:06:28 +0000 (UTC)
Organization: KTG
Lines: 112
Message-ID: <slrnhh8r0k.kjc.ps171721@duch.mimuw.edu.pl>
References: <h83in7$rl3$1@inews.gazeta.pl> <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> <slrnhgqec3.tfh.ps171721@duch.mimuw.edu.pl> <lntcu6-2q7.ln1@bozon.softax.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 1259629588 30136 193.0.96.2 (1 Dec 2009 01:06:28 GMT)
X-Complaints-To: abuse@icm.edu.pl
NNTP-Posting-Date: Tue, 1 Dec 2009 01:06:28 +0000 (UTC)
User-Agent: slrn/0.9.9p1 (Linux)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit