Omezení svobody projevu?
- Polki
- Člen | 553
Předem chci říct, že nechci být nezdvořilý a na emoce nehraji, beru do úvahy jen fakta, takže toto bude spíše formou otázky, než soudu, i když vím, že bude mít akorát zase 40 mínusek bez vysvětlení, tak bych rád, aby se každý pozastavil a trošku se zamyslel, než tak udělá.
Dnes ve 2 hodiny ráno byl Davidem Grudlem přidán nový článek na blogu ohledně jeho dlouho prosazovaném kontroverzním odstranění prefixů I- ze všech interface v rámci Nette. V tomto článku je i informace o tom, že článek je pouze demo a že si máme počkat na plnou verzi:
(Článek podrobně vysvětlující důvody vyjde brzy)
Kromě toho, že je otázka, jestli článek vyjde, jelikož druhý díl
seriálu o DI vychází už 2 roky a pro jistotu byl přejmenován, aby se
zapomnělo na to, že nějaké pokračování mělo vyjít. Stejně tak na
odpovědi mailů se čeká podobně dlouhou dobu, stejně tak na samostatný
thread k jednoakčním presenterům.
Toto ale byla jen odbočka bokem, která má vést k zamyšlení, jestli
článek není jen výkřik do tmy.
Nicméně článek jsem komentoval hned 2 komentáři, kdy jsem se
v prvním těšil na plnou verzi, abych konečně věděl dopodrobna
vysvětleny pravé důvody tohoto pro mě zatím nepochopitelného kroku. Ano,
četl jsem i velké uvědomění že
rozhraní jsou třídy, ale tento postup platí jen někde, protože
článek vlastně říká, že volant je auto, protože volant je podmnožinou
auta. Což není pravda, jelikož volant můžu odebrat a dát jej na jiné
zařízení a ani sám volant jako auto fungovat nebude. Respektive když vezmu
část něčeho, tak ji nemůžu stále nazývat celkem.
Proto každý ví dnes již ze základní školy (fakt se to tam učí), že
platí rovnice „class = interface + implementation“ Proto, když vezmeme
interface, tak se zákonitě nemůže jednat o třídu, jelikož jí chybí
implementace. Tedy volant nemůže býti auto, jelikož mu chybí zbytek toho
auta.
Prostě interface nemůže mít implementaci.
Ti z vás, kteří nejsou čistě odkojeni na PHP, tak
určitě vědí, co znamená sousloví prototyp funkce. Jde
o interface metody. V C# se dokonce tento interface metody nazývá delegát a
používá se pro definování rozhraní pro callbacky, aby si byl programátor
vždy jist, že může danou funkci volat s danými parametry v daném
pořadí. A pokud by to, co je uvnitř článku napsáno byla pravda, tak to
znamená, že:
- delegage = interface
- delegate = function
a tedy
- interface = function
Jenže ze článku víme, že
- interface = class
a tedy by mělo platit, že:
- interface = delegate = class = function
A můžeme jít ještě dále. Jako důkaz vám snad postačí to, že celá
aplikace má taktéž rozhraní. Odborně se mu říká aplikační rozhraní a
toto může mít stejné metody (příznaky spuštění) a může být tvořeno
stejným principem, jako rozhraní třídy. Neznamená to ale, že aplikace jsou
třídy, protože mají rozhraní které je třída přece…
Obzvlášť proto, že aplikace mohou být psány v jazyku, který ani třídy
nepoužívá. (I když vlastně používá že? Když funkce jsou taky třídy.
Víte co? Prdíme na to všechno je třída.)
Toto byl ± význam prvního komentáře, kterým jsem tedy prosil, aby
v plné verzi článku byly zahrnuty i informace o tom, proč se jednotlivé
jazyky rozhodly prefix I- případně suffixy -Interface, nebo -able zachovat.
Protože ukazování prstem na ostatní, že to tak dělají taky je k ničemu.
Aneb každému snad maminka říkala onu větu: „A když Pepíček skočí
z okna skočíš taky?!?!“
První komentář tedy byla prosba o doplnění i podrobných informací ne
jen proč se tak rozhodl sám David, ale aby nám předložil i analýzu, proč
se tak či onak rozhodly i ostatní jazyky, což je z mého pohledu
relevantní požadavek, pokud se tyto jazyky uvádí jako příkady:
U jiných frameworků (např. Symfony, CakePHP, Zend nebo PSR) se můžete setkat s odlišnou konvencí, a to používáním koncovky Interface (např. Psr\Cache\CacheItemInterface) společně s předponou Abstract pro abstraktní třídy (např. Psr\Log\AbstractLogger). A nakonec tu máme knihovny (např. Laravel nebo systémová knihovna PHP), které rozhraní ani abstraktní třídy nijak neodlišují (např. rozhraní Throwable nebo Iterator, abstraktní třída FilterIterator).
_______
Druhý komentář se věnoval problému, že vlastně vzniká spousta různých PHP frameworků s cílem zjednodušit práci s PHP a hlavně vznikla spousta wrapperů nad výchozími PHP funkcemi, které měly za cíl zjednodušovat práci tím, že sjednotí rozhraní a názvy těchto php funkcí, jelikož PHP bylo psáno na koleně a tedy pořadí argumentů a způsoby nazývání funkcí jsou psány způsobem, jak zrovna byla nálada a jak se kdo vyspal.
Jako příklady jsem uvedl prefixy u funkcí, kdy nějaké funkce
pracující s řetězci mají prefix str_ a jiné ne. Že některé
funkce jsou nazývány malými písmeny s podtržítky a jiné malými písmeny
bez podtržítek (str_starts_with vs
strcasecmp) a hlavně, že příbuzné funkce pro stejnou
práci mají proházené pořadí argumentů, například funkce pro práci
s polem mají jednou pořadí $array, $callback a jindy $callback,
$array.
S těmito skutečnostmi se tedy pojila druhá otázka a to ta, jestli by mi
mohl David objasnit, proč když se obecně nesouhlasí se zápisem
historických naming conventions v rámci PHP, tak jak je možné je
uvádět jako relevantní příklady správného použití, že tomu moc
nerozumím, jestli by mi to mohl objasnit.
nebo systémová knihovna PHP), které rozhraní ani abstraktní třídy nijak neodlišují (např. rozhraní Throwable nebo Iterator, abstraktní třída FilterIterator).
Btw: přípona -able je rozlišení interface, takže to nebyl moc kvalitní argument…
_________
Na otázky jsem odpověď nedostal, ale to nevadí. Přichází totiž jedna
velká jiná otázka.
Z jakého důvodu byly mé dva komentáře přidané někdy nad ránem bez
předchozího upozornění odstraněny a hlavně, proč mi bylo znemožněno
daný článek nadále komentovat?
Mé komentáře nejsou útočné, urážlivé, ani protiprávní. Pouze
poukazuji na nedostatky které vidím a chci odpovědi na otázky, které jsem
položil, jelikož dokonalost mé práce je mou zárukou a vizitkou, tak nemohu
dělat v něčem, čemu nerozumím, protože autor nevysvětlil všechny
detaily spojené s velkými rozhodnutími, které výrazně ovlivňují zisky
naší společnosti.
Pokud autor nechce, aby jeho názory a postoje nebyly podrobeny kritickému
myšlení a zkoumání, tak nemá psát články a tyto rozhodnutí dělat.
Takovéto chování ze strany autora je dle mého nepřípustné a taktéž
porušuje zákon, jelikož omezuje svobodu projevu tím, že mi maže
komentáře bez upozornění a znemožňuje nadále komentovat.
Toto je zcela legitimní důvod k podání žaloby. Vzhledem k tomu ale,
že na emoce prdím a beru v úvahu jen fakta, tak toto nechám býti a provedu
jiné opatření a to, že tedy tímto podle GDPR
žádám o Zapomenutí všech mých údajů v rámci všech Nette aplikací,
webů, blogů a dalších webů spojených s Davidem Grudlem. Toto
zapomenutí se tedy týká VŠECH mých osobních údajů, mezi které
se řadí taktéž Hashe ip adres, E-mailů a ostatní fingerprinty včetně
dynamických IP adres generovaných mým terminálem.
Taktéž jsme se dnes na výjimečně svolané valné hromadě usnesli, že od
dnešního dne přestáváme používat Nette jak pro naše české pobočky,
tak pro pobočky v USA.
Mějte se pěkně komunito.
- emololftw
- Člen | 82
Chlape nehroť to tolik… dle mého názoru není důvod se z chystaných
změn rozčilovat a už vůbec ne „vyhrožovat“ možným podáním žaloby.
Snad jsme tolerantní lidi a dokážeme komunikovat na úrovni. Jsem troufám si
říct novým členem komunity okolo Nette
a kdybych se takto
rozepsal kdykoliv mi někdo napíše něco na co jsem se neptal tak tu
zakládám jeden thread za druhým. Hezký den