Portál AbcLinuxu, 12. května 2025 20:29
Parrot je velmi důležitý a díky čekání na Parrot se podařilo snížit penetraci Perlu a zastavit jeho rozmach. Takže své zásluhy na prosazení dobře udržovatelných jazyků nesporně má.
Uznávám, že jsem se nevyjádřil přesně. Ve skutečnosti je to asi takto:
Autor Perlu se rozhodl, že si může dovolit vše, a namísto evoluce udělá revoluci. Tímto dnem, kdy se rozhodl už začalo nevyhnutné podseknutí pozice Perlu. Bohužel se sčuchnul i s autorem Pythonu, kterého revolučním duchem a myšlením nadchnul a ten se opět rozhodl zlikvidovat kompatibilitu i v Pythonu.
V době kolem roku 2000, což je tak někdy doba, kdy se rozhodl Larry Wall zlikvidovat pozici Perlu (on tomu tak neříkal), byl Perl naprosto všude myšleno ve smyslu, že nebylo možné se Perlu vyhnout, nerozumět mu, nesetkávat se s ním a často o něm s nikým nemluvit – ať už chcete, nebo ne. Pozice Perlu byla poměrně silná, a Perl měl slušně našlápnuto. Myslím (samozřejmě se můžu mýlit), že kdyby se neobjevil Perl6, dnes má Perl velmi slušnou penetraci.
Od té doby ale pozice Perlu klesala a po pár letech už jsem se s ním vlastně vůbec nemusel nikde potkávat. Mohl jsem odinstalovat Perl úplně, protože perlovské skripty přestaly přicházet. Matně si vzpomínám, že v těch letech se neustálo omílalo čekání na Perl6 a na Parrot. Postupně všichni čekali a čekali a Perl tak nějak bylo méně a méně vidět.
Python udělal revoluci taktéž, jen o krapítek rychleji, takže to v řadách Pythonu nadělalo menší škody, nicméně z odstupem času se ukáže, jak moc to neprospělo. Mít v životopise „po 17 letech stabilní syntaxe jsme jí nekompatibilně překopali – a donutili postupně programátory revidovat, či přepisovat zdrojáky, přičemž jsme jim nedali do ruky 100% funkční konverzní nástroj“ je vizitka, která spolehlivě zavírá cestu do mnoha nasazení.
Postupně od Larryho nápadu tak nějak se k sobě historicky začaly přibližovat události kolem Perlu6, Parrotu a Pythonu. A troufám si říct, že nikomu tento nápad nepomohl a bude to časem znát.
Neznám, respektive už si nepamatuji detaily. Ale linka je zhruba viz výše.
Ohledně udržovatelného jazyka – určitě Perl nasadil tak nízkou laťku, že v zásadě každý běžný jazyk je rozhodně udržovatelnější, najmě pokud mluvíme o týmu lidí a alespoň středně velkém projektu.
Myslite zmeny v Pythonu 2.6 -> 3.0? Odbornik na python nejsem ale zda se mi ze jde o naopak velice chvalihodnou snahu. Srovnejte napriklad s Javou kde se zpetnou kompatibilitou obhajuji dosti casto nevhodna reseni v navrhu jazyka (napr. generika, spekulativne taky anotace) a specifikace se zanasi. Stejne tak v pripade Win32 API... A vubec - ty jazyky/projekty ktere se snazi drzet zpetnou kompatibilitu i za cenu udrzeni kompatibilini hovadiny dopadaji spatne/hur.
Co se tyce udrzovatelnosti - perl ma vysokou informacni hustotu, to je vse. Jak s tim kdo naklada je jeho vec. Navrhovat udrzovatelny jazyk je casto cesta do pekla lemovana dobrymi umysly - zde zminim opet Javu.
Tak to s Vámi rozhodně nesouhlasím.
Řekněme, že již několik let vyvíjíte v jazyku X velký projekt pro své zákazníky. Pokud v jazyku X dojde k revoluci (a zpětným nekompatibilitám), musíte se rozhodnout pro jednu ze dvou špatných možností:
1) Buďto začnete přepisovat stávající kód do nové verze jazyka, strávíte na tom třeba rok času a mezitím Vás předběhne konkurence, která ve svých produktech mezitím přidala spoustu nových vlastností, zatímco Vy jste se musel patlat s přepisem. Ztratíte zákazníky a můžete mít existenční potíže.
2) Nebo zůstanete u staré verze jazyka, ale pak máte do budoucna problém s inovacemi, protože nové knihovny jsou už pro novou verzi (a staré už nikdo nebugfixuje). V té chvíli vás předběhne konkurence, která s inovacemi nemá problém a Vy zase ztratíte zákazníky.
To si pak rozmyslíte, s jakým jazykem budete vyvíjet - málokomu se chce spálit ohromné množství peněz a času na přepisu na novou verzi.
Mimo jiné práve proto se Java používá, protože je vyzrálá a zpětné nekompatibility se nemusí nikdo obávat. Je tedy stále možné používat v kódu staré knihovny, vývoj se nikdy nezastavil tím, že někdo byl nucen něco přepisovat, nedochází ke štěpení sil atp.
Zákazníky opravdu nezajímá, jestli programujete v krásném revolučním anebo starém a škaredém jazyku.
Ano, to je bohužel pravda. Ten samý problém najdeme třeba v rozšiřování rozhraní JDBC.
Mimochodem, trochu OT, ale způsobů, jak nevědomky rozbít zpětnou kompatibilitu je opravdu hodně Mohu doporučit přednášku Jardy Tulacha (architekt NetBeans). Myslím, že to je velice zajímavé počtení.
2to3
a zbytek upravit ručně už není nic složitého a zdlouhavého, ani u velkého projektu. V žádném případě práce na rok Korporátní balasty ať si klidně hnijou na Javě. Python 3.x vítám, pročištění jazyka do budoucna spoustu práce usnadní. Nikdo vás přeci nenutí na něj hned přecházet, předpokládám, že dvojková řada bude udržovaná ještě velmi dlouho.
OpenSource projekty se vyvíjí, tak jak to chtějí lidé, kteří tam tu reálnou práci dělají. Nikdo Vám předem záruky nedával, že to pojede věčně. Kdyby jste je chtěl a zaplatil, tak to asi nebude problém. Ti programátoři co to dělají většinou dobře vědí jaké to přinese plusy a mínusy.
Co se týká Oracle, tak mi při pohledu na chyby, které občas hlásíme připadá, že by se kluci mohli trochu porozhlédnout a učit se např. od Perlu, co je to testování. Navíc software jako Oracle se taky vyvíjí. Zákazníci neustále hlásí nové chyby a požadavky a proto nezbývá než věci měnit.
Já to vidím hlavně u toho Perlu. Prostě jazyk, který by zůstal u 100% kompatibility s jeho první verzí , by něměl šanci. U Perlu jsou tyto diskuse teď dost aktuální, viz. např. What does "Stable" Mean? What is "Support" Anyway? Perl Long Term Support and "The GreyPAN" .
Co se týká Oracle, tak mi při pohledu na chyby, které občas hlásíme připadá, že by se kluci mohli trochu porozhlédnout a učit se např. od Perlu, co je to testování. Navíc software jako Oracle se taky vyvíjí. Zákazníci neustále hlásí nové chyby a požadavky a proto nezbývá než věci měnit.No a to je o tom mluvím, protože zatímco teď musí Oracle "jenom" fixovat bugy a přidávat nové vlastnosti, tak to poslední, co si chce/může dovolit, je věnovat se přepisováním různých černých skříněk jenom proto, že nová verze něčeho už funguje trošku jinak a nejde to vyřešit další vrstvou. BTW: nikde jsem taky netvrdil, že korporátní způsob vede k software bez chyb
> Autor Perlu se rozhodl.
Kterého autora myslíte? Kdyby se autor Linuxu rozhodl pro něco podobného, tak by ho všichni slepě následovali? Nebo jsou takhle vadní jen vývojáři Perlu?
Navíc původní hrnek hodil o zeď někdo úplně jiný než Larry.
> ... namísto evoluce udělá revoluci ...
Perl 6 bude pořád Perl. A kdyby Larry nedělal to co dělá, tak možná všichni ještě používají sed a awk.
> ... Perl měl slušně našlápnuto ...
Jasně. Všichni, kdo pracují na Perlu 6 vědí, kam má z dlouhodobého hlediska Perl našlápnuto.
> ... v těch letech se neustálo omílalo čekání na Perl6 a na Parrot
Je fakt, že lidi dělají špatná rozhodnutí v očekávání zázraku, ale až ten zázrak začne působit naplno, tak to bude bomba .
> ... v řadách Pythonu nadělalo menší škody, nicméně z odstupem času se ukáže, jak moc to neprospělo.
No právě. Pojďme dělat něco užitečného. Třeba jazyk pro příštích nejméně 20 let. Za 10 let se sejdem a můžem se bavit s argumenty za zády a ne věštit z křišťálové koule nebo zpětně vykládat své interpretace historie.
> ... jim nedali do ruky 100% funkční konverzní nástroj
To mám nejraději. Oni jsou ti špatní, oni to nedělají tak jak chci a potřebuji. Možná je třeba nechat tlachání a poslat patch, založit novou větev nebo něco v tom duchu? Pokud je pravda co si myslíte, tak vám spousta lidí pomůže.
> ... nikomu tento nápad nepomohl ...
Nápad? Léta práce mnoha lidí a vy tomu říkáte nápad? řekl bych, že kvalita myšlenky/nápadu se pozná podle činů lidí, kteří ji následují.
> ... pokud mluvíme o týmu lidí a alespoň středně velkém projektu.
Pro týmy lidí musíte mít nástroje [1] , [2] , [3] atd. Spoléhat se na syntaxi jazyka je téměř k ničemu. Navíc nevím co v dynamických jazycích píšete, ale mám raději kvalitu kódu, který používám než krásu jeho syntaxe.
Podařilo se snížit penetraci Perlu? Z čeho tak soudíte?
Nebo nějaké nové mýty o kterých nevím ?
Dobře udržovatelných jazyků? Ono něco takového existuje? Není to spíše o hrdinství autorů kódu? O psaní čitelného kódu, vhodných komentářů, dokumentace a testů? Co takhle porovnat kvalitu modulů na CPANu s ... aha ono vlastně není s čím.
Uff. Omlouvám se, že jsem se nechal unést duchem předchozího příspěvku .
Dobře udržovatelných jazyků? Ono něco takového existuje? Není to spíše o hrdinství autorů kódu? O psaní čitelného kódu, vhodných komentářů, dokumentace a testů?Pokud jsou všechny jazyky stejné co do čitelnosti a udržovatelnosti kódu, pak nechápu, proč se postupně většina programátorů přesunula k procedurálním jazykům a později k objektovým, když mohli zůstat u assembleru.
To nebude citelnosti a udrzovatelnosti, ale spis komplexnosti pozadovanych reseni, prepouzitelnosti a tlakem na casovou nenarocnost reseni.
Na tom neco je - ale z druhe stranky - tu nakonec stejne ovlivnuje programator. Jestli ten kod pise "prase", jazyk mu v tom stejne nezabrani.
souhlas. Neexistuje sice zlaty jazyk kde se vyjadruje jednoduse kazdy problem, ale kdyz musim pouzit nadstavbu abych nemusel koukat na osklivy kod (vinou vlastnosti jazyka), je tam neco prohnile.
jj neni zla ;) ale kameraman mohol radsej zaberat plochu, na ktoru sa premietala prezentacia :))
Slajdy jsou tady. Ty benchmarky jsou ale z několik let starého Parrotu.
Měl by být rychlejší . Zatím si nikdo nenašel čas, aby to otestoval a sepsal. Ty testy na Computer Language Benchmarks Game jsou z hodně starého Parrotu [1] , [2].
Tak pokud jsem to dobre pochopil, tak by v nejblizsi dobe mel vyjit stabilni release Rakudo Perl 6ky a v nem by se teoreticky dalo vyvijet.
V Rakudo Perlu 6 už něco funguje. Pokroky jsou vidět nejlépe z blogu. Je to, ale zatím jen na hoodně pomalé hraní.
Parrot je možná o kousek dál, ale u toho mě nenapadá k čemu by jste ho potřeboval. Je to virtuální stroj s dalšími nástroji pro implementaci dynamických jazyků.
Zatím jsou Parrot a hlavně implementace jazyků neúplné. Výkon? Předpokládám, že to bude právě jeden z pádných argumentů pro Parrot (náznak je vidět v tomhle dva roky starém porovnání). Další důvody jsou vidět z článku. Např. jeden mod_parrot pro Apache na kterém budou ostatní jazyky stavět. Ale asi si musíme počkat, než hádat z karet.
Tak včera ke konci dne vyšel Rakudo Perl 6 development release #18 ("Pittsburgh"). Umí 11,536 spectests, což je 68% z existujících testů specifikace Perlu 6.
Má někdo představu kolik testových případů existuje v Pythonu, Ruby, Javě? Já našel jen tohle dva roky staré srovnání. Kde se píše, že JRuby (nejvíce testované Ruby) má 2,747 test případů. Standardní make test u Ruby jich spouští 867. Počet u Pythonu (včetně základních knihoven je 11,437
). Perl 5 jich měl v té době 64,793, se základními knihovnami dodavánými s jazykem 121,873 . K tématu je i novější článek stejného autora, který jsem uváděl někde výše.
Perl 5 jich měl v té době 64,793, se základními knihovnami dodavánými s jazykem 121,873.Zajímalo by mě, kolik z nich funguje (nebo bylo upraveno) i s 5.10
Fungovat by měly všechny ne? Resp. v dokumentaci by mělo být uvedeno co funguje a co ne. I u CPANU se taky hodně [1] , [2] testuje.
Každý případ samozřejmě pokrýt nelze. Musíte správně vytvořit množiny ekvivaletních případů. Abych pravdu řekl, tak vývoj Perlu 5 nesleduji. Předpoklámám, že to funguje stejně jako u Parrotu a Perlu 6. U něj se předpokládá, že je třěba zdvojnásobit počet testových případů a pak se teprve uvidí jestli je pokryta celá specifikace nebo ne.
Nevěřím, že je to dáno flexibilitou. Ta podle mně neudělá ani 2x tolik. Prostě v Perlu se testuje mnohem víc. Kdyžtak najděte nějaký konkrétní příklad .
Fungovat by měly všechny ne? Resp. v dokumentaci by mělo být uvedeno co funguje a co ne.No když jsem viděl, co všechno 5.10 rozbila u nás a kolik s tím měla anička práce, tak nevím - 5.10 byl poměrně výrazný skok. Ad zbytek - netvrdil jsem, že všechno jde na vrub flexibilitě jazyka, ale nějaký vliv to určitě má.
Nějak zvlášť jsem po tom nepátral, kromě známých věcí jsou tady i určitě regrese (asi třeba tyto). Každopádně je to na Vás. Buď se člověk zapojí do vývoje, píše testy pro ty vlastnosti, které používá, nadává, když mu plánují vzít to co potřebuje, nebo se hold modlí, aby tam ty věci zůstaly i v další verzi .
No když jsem viděl, co všechno 5.10 rozbila u nás a kolik s tím měla anička práce, tak nevímTo je zajimavé. Ja jsem asi nenarazil u svého kódu na případ, že by se něco rozbilo. Co si vzpomínám, možná jsem narazil na jednu drobnost. Klasické chyby se mi vyskytuji několikanásobně více než toto.
5.10 byl poměrně výrazný skok.To ano.
[]
miesto fields::new
Kvantita není vše. Ale v případě, že testy správně píšete/navrhujete, což se díky revizím kódu ohlídát dá, tak prostě více testů znamená kvalitněji otestovaná implementace jazyky.
Navíc Perl 5 má jen jednu implementaci jazyka. Jak hodně je pokryta specifikace Pythonu testy? Jak hodně se liší např. Jython a CPython implementace?
Soulad mez specifikací, testy a implementací je úplným minimem pro zajištění kvality. Nebo se pletu?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.