[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

Danovy perlové knihovny

Jsou dostupné na úfalí síti v /home/zeman/lib, některé (Interset) i jinde. Příležitostně je distribuuju, když někomu dávám nějaký svůj program, který je využívá. Pokud někdy nebudu mít do čeho píchnout, možná sem připíšu i jejich seznam a stručný popis.

12.2.2010: Pro knihovny jsem založil projekt DZ Lib v Tracu a repozitář dzlib v SVN.

Názvy modulů s velkým písmenem na začátku?

Někteří ortodoxní perlisté mě poňoukají, abych dodržoval konvence a dával modulům jména, která začínají velkým písmenem. Že kdybych to chtěl někdy publikovat na CPANu, tak se setkám s negativní odezvou. Že to takhle vypadá jako pragma, ne jako modul. Apod. Musím přiznat, že jsem se nad sebou zamyslel. A dospěl jsem k tomu, že to tak nechám, dokud se nenajde nějaký pádnější důvod. Na CPANu jsem zatím publikovat nezkoušel. Nic proti tomu nemám, prostě akorát nebyl čas ani důvod. Nevím tedy, jestli se tam malá písmena vůbec poslat nedají, nebo jestli dají, akorát si osvícení opovržlivě odfrknou. Kdoví, možná jsem v jejich očích jako někdo, kdo si obarví vlasy na fialovo a pak jde mezi lidi. Pak by ovšem byla na místě odpověď: “No a co?” Mně se to tak totiž líbí. (Teda ne ty fialový vlasy, ale use danova_krasna_knihovna; :-)) Velká písmena nemám rád, ve zdrojáku vypadají ošklivě, musí se na ně mačkat šift a to se ani neptám, co se děje na windowsím file systému. Kromě toho už bych toho musel trochu moc předělávat. Aspoň si svoje knihovny snadno odliším od těch cizích :-) A že to vypadá jako pragma? Mhm, a není to náhodou pláč na špatném hrobě? Jestliže to zákonodárce nezakázal, tj. jestliže to v Perlu jde udělat, tak proč by to měla zakazovat nějaká konvence? Pokud je odlišení pragem od modulů tak zásadní věc, mohlo to být zakázáno v syntaxi (což by ale bylo proti duchu Perlu, ne?), nebo mohlo být pro pragmy jiné klíčové slovo než use. Já s tím rozhodně problém nemám… howgh.

Ale pokud někdo máte další rozumné důvody, proč zaměnit malá písmena za velká, můžete je sem připsat. Třeba mě jednou přesvědčíte 8-)


PP: Dane, je to podobné jako konvence, že páni na ples chodí v obleku (ty bys chtěl přijít v dámských šatech). V zásadě tam můžeš přijít jak chceš, ale lidi si tě možná budou plést s holkou nebo se prostě nebudou v tvé přítomnosti cítit dobře. Žádné jiné 'rozumné' či 'objektivní' důvody pro chození v obleku nejsou.

V 'man perlstyle' a 'man perlmod' se píše:

Perl informally reserves lowercase module names for "pragma" modules like "integer" and "strict".

Pokud tohle nepovažuješ za rozumný důvod a rozhodneš se svévolně tuto neformální dohodu porušovat (navíc systematicky), vystavuješ se dvěma rizikům: 1. že se tvůj modul dostane do konfliktu s nějakou budoucí pragmou a 2. že lidé, kteří konvence ctí, nebudou chtít tvůj kód používat a sdílet. Nic víc, nic míň, je to tvoje volba.

Pozn.: V 'man perlstyle' se dále píše, že by jména modulů neměla obsahovat podtržítko (_) z důvodu kompatibility se starými filesystémy. To je doporučení z jiného soudku: jeho porušením pouze limituješ portabilitu, což nemusí být problémem, pokud víš či máš dobré důvody předpokládat, že na takovém filesystému by nemohl tvůj kód běžet tak jako tak. Toto pravidlo beztak porušuje i několik balíčků distribuovaných s Perlem samotným (např. [GNOS]DBM_File).


DZ: No, přirovnání je to hezké, akorát je asi potřeba se ptát, co je kde cílem. Když jdu na ples nebo jinam do společnosti, mým cílem (alespoň vedlejším) je tu společnost nepopuzovat ani neodpuzovat. Tudíž si nevezmu dámské šaty, a je-li to absolutně nezbytné, skousnu i oblek. Když píšu perlovou knihovnu, mým cílem je, aby fungovala. Mnohdy ji navíc píšu primárně pro sebe a šířím je teprve tehdy, když potřebuju, aby nějaký můj program mohl použít někdo jiný. Pokud to, co knihovna dělá, bude připadat ostatním užitečné, asi ji budou používat, ať už bude oblečená jakkoliv. Asi máš ale pravdu, že tohle přestane být jedno ve chvíli, kdy tu knihovnu rovnou píšu s cílem, aby ji používali ostatní, ale teprve ty potenciální uživatele musím přesvědčit, že ji chtějí používat (třeba tagset::*). Tam už holt asi nestačí, že to hezky funguje, bude to muset taky hezky vypadat, a co je “hezky” si asi nebudu moct stanovit sám :-(


[ Back to the navigation ] [ Back to the content ]