PHP mění oddělovač jmenných prostorů na zpětné lomítko
Doslova za minutu dvanáct se vývojáři PHP rozhodli změnit oddělovač jmenných prostorů. Podpora jmenných prostorů patří mezi nejzásadnější novinky dlouho očekávané verze PHP 5.3. Do vývojové verze byly začleněny asi před rokem, jejich dokumentace je součástí manuálu PHP a řada vývojářů už začala připravovat svůj kód na jejich adaptaci. Nyní, kdy se netrpělivě očekává vydání ostré verze, došlo k zásadní změně syntaxe. Oddělovač jmenných prostorů „čtyřtečka“ :: bude nahrazen zpětným lomítkem. Název třídy např. Framework::Web::HttpRequest se tak změní na Framework\Web\HttpRequest.
Důvodem změny je nejednoznačnost zápisu foo::bar(), kdy není zřejmé, zda jde o volání funkce bar() v prostoru foo nebo o volání statické metody bar() třídy foo.
Dále čtěte…
- PHP progress bar pro příkazový řádek 15. 3. 2010 14:05
- PHP: Statická třída nebo singleton? Není to jedno? 10. 3. 2010 15:24
- Java na webovém serveru: porovnání Javy a PHP 10. 3. 2010 0:00
- Zajímavé řešení jednotného přihlášení pro několik webů 5. 3. 2010 12:40
- Hledání obličeje na fotografii v PHP 3. 3. 2010 0:00
kdyby
celé vláknoNapriklad v Ruby to tak je, ze jmena trid jsou konstanty a jako takove tedy museji zacinat velkym pismenem
Proc vlastne PHP umoznuje psat jmena trid malym pismenem? Neni to bordel?
Re: kdyby
celé vlákno$a = new $b();
kde $b je jmeno tridy. velice sikovna vec :)
Re: kdyby
celé vláknokdyby PHP bylo case-sensitive a tridy se psaly 'capitalized', zatimco namespaces 'lowercase', tak by bylo po problemu. Nebo alespon tuto konvenci dodrzovat. PHP vyvojari ale s oblibou pisou jmena trid malym (viz dokumentace k namespaces)
Re: kdyby
celé vláknoRe: kdyby
celé vláknoretez = Kernel.const_get('String').new
ono je mozne delat veci ciste a soucasne flexibilne
bohuzel pro PHP uz je pozde, z te tuny exkrementu uz to nikdo nevyhrabe :-(
Re: kdyby
celé vláknoPřesto nepokládám tyto konstrukce za přínosné; sice s nimi lze dělat všemožná "magie", ale v praxi jsou pak programy mnohem hůř čitelné, zejména pro někoho, kdo kód nepsal.
Re: kdyby
celé vláknoJinak eval je vždy až ta nejhorší možnost, cokoli jiného je skoro vždy lepší.
Jen to ne
celé vláknoA jsem velmi rád, že žádný jiný jazyk, se kterým jsem se setkal žádné násilné konvence ohledně velikosti písmen v identifikátorech nepředepisuje.
Re: Jen to ne
celé vláknoRe: Jen to ne
celé vláknoRe: Jen to ne
celé vláknoa co je na tom vlastne spatneho? Vzdyt prece vsichni konstanty pisou velkymi pismeny (vcetne Vas), je to dobra konvence, ne?
nemel byste takto na Ruby dstit siru, nezaslouzi si to!
Re: Jen to ne
celé vláknoKaždý jazyk si vynucuje nějaká pravidla pojmenování identifikátorů - nicméně pro všechny identifikátory v modulu/programu jsou obvykle pravidla stejná bez ohledu na to, zda jsou to konstanty, proměnné, třídy, funkce, atd.. A tak to má být. Jen mizivé procento jazyků nemá takto konzistentní řešení.
U konstant je rozdíl mezi "lidským pojetím konstanty" a "počítačovým pojetím konstanty". A mohou se lišit pravdila pro psaní i mezi těmito dvěma pojetími. Programovací jazyk Vám vždy vnutí jen to počítačové pojetí. Ale programátoři (dobří) píšou zdroják pro člověka - a počítačová konstanta může být navenek prezentována třeba jako proměnná (pokud jí třeba v další verzi jako proměnnou hodláte udělat). A nebo tisíc jiných možností.
Ohledně Ruby - nemám nic proti němu, ale rozhodně to není jazyk, který by měl být vzorem. Mnoho věcí vyřešil dle mého soudu nepříliš ideálně. A zvláště pokud znáte vzor Ruby, Smalltalk - kdysi hodně populární a velmi čistý jazyk, pak pochopíte dvojnásob. Jestli bych něco nerad, tak to aby se Rubym inspirovali jiné jazyky, a už vůbec ne v oblastech jako je nesmyslné vnucování velikosti písmen v identifikátorech přímo na úrovni syntaxe.
zas a znova
celé vláknoRe: zas a znova
celé vláknopodle mě by nejlepší byla tečka ale ta asi z důvodu že někdo nazačátku něco blbě navrhnul nejde použít a nebo čtyřtečka
Re: zas a znova
celé vláknoTo by se muselo celý php přepracovat, takhle to je relativně rozumný, odstraní se nejednoznačnost.
Re: zas a znova
celé vláknoRe: zas a znova
celé vláknoRe: zas a znova
celé vláknoRe: zas a znova
celé vláknoAle holt někdo dělá, a někdo kecá, že pane Zdeňku.
Re: zas a znova
celé vláknojaktoze ale treba v Jave jsou deprecated veci (nebo obsolete ?), ktere se casem skutecne z javy vytraci a funguje to?
a popravde, kdyz sem prevadel "stredni" aplikaci z PHP4 do PHP5, take sem musel "par" radku predelat ;), takze to s tou zpetnou kompatibilitou nebude tak zhave, ze? - nikdy se ji programator uplne nevyhne. a za cenu toho, ze z PHPcka vymizi nekonzistentni chovani (neco vraci ERROR, neco Exception a neco jen WARN... nektere stringove funkce maji parametry tak a jine onak - clovek aby porad koukal do dokumentace; nektere figle, ktere se daji delat jsou skutecne nevidane! ...) by to docela i stalo.
Re: zas a znova
celé vláknoPřechod z PHP4 na PHP5 byl velmi jednoduchý, u mých zdrojáků konkrétně jsem nemusel změnit ani čárku, a mám jich slušný balík. V zásadě seznam změn byl přesně popsán, a byly to drobnosti.
Jinak větší aplikace se píší v něčem robustnějším, ten .NET si z toho škrtněte, MS nikdy neudržel věci beze změn déle, než pár roků (a to už se to oslavovalo), takže ani .NET bude spíše záležitost MS fandů (mluvíme o důležitých projektech, kde na něčem záleží), jak už dnes je.
Já jsem nikde nepsal, že PHP zcela zachovává zpětnou kompatibilitu, ale váží si jí přeci jenom asi tak 1000x víc, než Python a Ruby - největší zvěrstva, které dávají druhým na vědomí, že překopávat syntaxi po mnoha letech je správné. Ale dočkejte času, až uvidíte, jak příšerně časem Python a Ruby dopadne až se o něm bude mluvit jako o historii, poučíte se.
Žádný jazyk není dokonalý a v každém jsou věci, které vám dokáží pít nervy - vezměte libovolný namátkou - C, C++, Python, Ruby, Java, C#, cokoli - neexistuje dokonalý jazyk, kde by nebylo lépe něco udělat jinak. Nikdy nebude existovat žádný dokonalý jazyk, a i kdyby, stále bude plno subjektivních věcí, které se někomu budou líbit a někomu ne.
A zpětná kompatibilita a praktičnost jazyka je cennější, než nějaké zoufalé překopání, které stejně ničemu moc nepomůže (však se za čas poučíme ze špatných konců zejména Pythonu - je tu už cca 17 let, Ruby asi dopadne lépe, protože přeci jenom tu není tak dlouho a tak se to dá trochu lépe zkousnout).
Re: zas a znova
celé vláknokdyz se navic podivate na to, co bude pravdepodobne zruseno v php6, tak bych rekl, ze tak 80% webu skonci - kolik lidi rado pouziva magic_quotes a register_globals, odstraneni { } pro vstup do stringu (zde vubec nevadi pouziti symbolu pro blok, ze?) nebo break $n? myslim, ze vetsina tech skvelych PHP webu na toto doplati, takze jakapak zpetna kompatibilita?
a ze neexistuje dokonaly, casem provereny jazyk? co smalltalk? :) ... a nejsem zastancem nejakych radikalnich zmen, ale podivejme na ten python. ano, ma nejake zmeny, a asi mely nejaky duvod. autori php se ale nepoucili z chyb ostatnich.
ostatne - kdyz sem videl prvne C#.NET, mel sem pocit, ze jsem v Jave s nekolika jinejma prikazama. pak sem se do toho zakoukal - java osekana o slozite a komplikovane konstrukce - jako by se microsoft podival jinam - podival se, jak se nekde neco resi "slozite" a vyresil stejny problem mnohem pohodlneji (nechci se tu ale zastavat M$).
u PHP nabyvam dojem, ze se nikdo nicim nepoucil, ze se tu a tam vezme nejaka featura z nejakeho jazyka a vznikne tak celkove jakasi nekonzistentni smeska bez jakehokoliv radu...
Re: zas a znova
celé vláknoJinak ohledně magic_quotes a register globals se jistě dotkne řady lidí, ale ono tyhle věci jdou zajistit i bez změny zdrojáků. PHP na to prostředky má.
Ale znovu - nikde jsem netvrdil, že php striktně zachovává zpětnou kompatibilitu. Nicméně v uvažování vývojářů určitá brzda proti rozorávání kompatibility je - a je to dosti znát. Na rozdíl od Pythonu a Ruby, kde jsou autoři již dlouho asi pod vlivem lysohlávek, a kompatibilita se bere jen jako nemoderní přežitek. Jinak php6 tu stále ještě není a tím pádem jakékoli konečné soudy o tom co bude v php6 jsou značně předčasné. Například tu stále ještě nemáme ani tu PHP 5.3 s těmi namespacy, ta stále není v produkční verzi a PHP 6 je velmi velmi daleko. Do té doby se toho ještě tolik změní, že nemá smysl to teď hodnotit.
Dokonalý jazyk neexistuje, neexistoval a nikdy existoval nebude. Python nemá důvod k žádným radikálním změnám, tedy kromě toho, že pan Rossum, autor, se nudí, přeskočilo mu, a začal nenávidět Céčko a LISP a vše, co se mu zdálo, že v Pythonu tyto jazyky připomíná, začal tvrdě a bez důvodu vyhazovat z Pythonu. Naopak správná je cesta like Perl, koneckonců se autor Pythonu a autor Perlu sčuchli dostatečně. To co tu píšu není ironie, toto je jen naostro řečeno to, co pan Rossum, autor Pythonu, zcela veřejně říká a netají se s tím. Také tvrdí, že jazyk Python by se měl co nejvíce přiblížit lidskému jazyku (v zásadě trochu kopíruje Cobol, je vidět, že tento pokus nezažil) a výsledkem je třeba mimo jiné naprosto nejdebilnější syntaxe ternárního operátoru v Pythonu ze všech jazyků, se kterými jsem měl tu čest se setkat.
V komunitě Pythonu jsem byl velmi aktivní, a skončil jsem s Pythonem zhruba před měsícem - to když jsem odřezal poslední drápky spojující mě s Pythonem. Důvodem opuštění Pythonu je totální kašlání na investice vložené do vytvořených zdrojových kódů Pythonu - Python nectí ani zpětnou kompatibilitu, ani nevytvořil nástroj, který spolehlivě převede zdrojové kódy ze staré verze Pythonu do nové.
Já když prvně viděl C#, byl jsem nadšený. To nadšení ale rychle opadlo s dalšími verzemi .NETu. Původní jednoduchost a celkem domyšlenost rychle vzala za své a dnes je z toho takové jiné PHP (abych se vyjádřil Vašimi obraty) - jako když pejsek s kočičkou vařili dort a ze všeho dobrého tam dali kousek. Je to dnes už značně přeplácané, a je vidět, že MS tam lepil tu nesourodé to, tu nesourodé ono.
PHP podle mého je plus mínus v konečné verzi - ještě se dočkáme namespace, unicode, a pak už to bude věcí spíše knihoven. V PHP laškuji od verze 3 a zatím mi přišly změny víceméně k lepšími. Jenom se neměl inspirovat Javou v OOP a šlo by to.
Re: zas a znova
celé vláknoRe: zas a znova
celé vláknoRe: zas a znova
celé vláknoI vy jeden srandisto :-).
„Jinak větší aplikace se píší v něčem robustnějším, ten .NET si z toho škrtněte, MS nikdy neudržel věci beze změn déle, než pár roků (a to už se to oslavovalo), takže ani .NET bude spíše záležitost MS fandů (mluvíme o důležitých projektech, kde na něčem záleží), jak už dnes je.“
Totální neznalost .NETu z toho příspěvku přímo čiší, ale což i tací lidé bez znalostí občas kříčí do světa. Snad časem i Vy zjistíte, že ne vše od MS je zlo a špatné. Ale to je tradiční házení hrachu na zeď. Někteří lidé jsou prostě předem zaujatí… Nezbývá než Vám opravdu popřát brzké procitnutí.
Re: zas a znova
celé vláknoNo by ses divil, zrovna delame na velkem projektu, kdy se integruje .NET se SAP app. serverem (abapovym, SAP javu pomalinku opousti). No a SAP, to jsou hoooodne velke projekty ;-)
Re: zas a znova
celé vláknoKvůli jakým sviňárnám? PHP udělá úpravy v developer větvi, namespace nikdy v PHP nebyly dány do produkčních verzí, a vyskytovaly se pouze v unstable verzích PHP určených pro vývoj. Jakékoli změny v syntaxi namespace jsou tedy zcela v pořádku. Žádný produkční kód pro PHP, žádná stabilní verze PHP nikdy namespace neměla, a toto bude novinka, o které se prostě vedou diskuse, jak bude vypadat konečná situace v syntaxi namespace bez jakékoli změny pro stávající produkční verze.
Jinak Java také vznikla původně jako jazyk pro domácí spotřebiče a je to na ní dodnes dosti znát.
Re: zas a znova
celé vláknonevidim duvod, proc neudelat PHP6... nebo 7? :) vyhazet z toho blbosti a udelat to poradne... dat pak cas lidem na to, aby si prepsali sve paskvily a... jelo by se dal. takhle to PHPcko skutecne nema moc budoucnost.
Re: zas a znova
celé vláknoA je úplně buřtík, co se jinde používá pro escapování, protože každý jazyk má věci jinak a je to jeho věc.
Jinak Java bobtná a bobtná - srovnejte velikosti JRE jednotlivých verzí. A bobtná též nekompatibilně, není tam 100%ní zpětná kompatibilita.
Vy nevidíte důvod, proč vyházet "blbosti"? Já ano - a tou je zpětná kompatibilita a zachování obrovské sumy práce, kterou programátoři a vývojáři do svých kódů již vložili.
Jinak vsuvka: Každý, kdo hodlá radikálně měnit syntaxi mnoho let existující jazyka a "udělat ho pořádně" o sobě prozrazuje, že nikdy nenapsal, nebo neudržoval větší dílo po delší čas, nejlépe s neustálými opravami a úpravami. Ten by totiž pochopil, proč všechny seriózní jazyky, na kterých jedou kritické věci tohoto světa, zachovávavají velmi přísně zpětnou kompatiblitu - bohužel jsou to C++, C, Cobol, Java, Ada - protože tyto dovolují běh i velmi starých, a tím i velmi dobře časem i praxí odladěných programů. Ostatní jazyky se jenom kasají, ale nic kritického na nich neběží, protože každý programovací jazyk, který se neustále překopává od základu není seriózní jazyk, ale hračka na hraní, možná na krátkodobé malé programy, či skripty.
Re: zas a znova
celé vlákno... s kompatibilitou s vami souhlasim. ale C, C++, Cobol atd jsou od zacatku navrzene a vrhnute nejakym smerem. PHPcko mi pride jako smeska vseljakych pristupu, zrovna jak to bylo v dobe vzniku te ci one featury v mode. PHP mi pride (naprosto) nekonzistentni, coz se o Vami zminovanych jazycich rict neda.
Re: zas a znova
celé vláknoHlavně C, C++, Cobol byly vržené směrem do enterprise praxe, kde naprosto nepřicházelo vůbec v úvahu, že by kdo kdy přišel s takovou ptákovinou, jak znekompatibilnit všechno, co bylo kdy v jazyce napsáno a měnit syntaxi jazyka v normovaném tvaru. Všimněte si, že C, C++, Cobol, Ada jsou jazyky, které vznikly a byly zaměřené na praxi. Python, Ruby vznikly jako hračky nějakého člověka, a evidentně autoři se snaží, aby moc prakticky použitelné pro větší a dražší projekty nebyly.
PHP nikdy nevnikl jako jazyk, to je jeho mínus. Vznikl jako sada pomocných skriptů v Perlu, a tudíž se nějaký promyšlený počáteční návrh nedá čekat. Ostatně moje odpozorovaná teorie: "Každý jazyk, který se inspiruje Perlem, nebo Javou skončí jako prasárna" platí u všeho. PHP je nekonzistentní, ale jinak velmi praktický jazyk - a proto se používá. A proto ho používám i já.
Existuje mnoho čistých jazyků, které bohužel jsou ale tak nepraktické, že v nich pokud možno se píše prakticky čím dál méně - LISP, Mercury, Haskell, Python, ...
A pak jsou jazyky možná ne příliš čisté, ale prostě jsou praktické a pro praxi mnohem lepší, než ty čisté - C, C++, PHP, Java, ...
No a co, že je PHP nekonzistentní. Prostě je už takové. Za to je pro web nesmírně praktické - je všudypřítomné, hostingy jsou levné, snadno rozchoditelné, a nakonec je to i jazyk orientovaný na web, což má také jisté výhody (i nevýhody samozřejmě).
Až najdete na tomhle světě (nejen v IT) něco dokonalého a stoprocentního, dejte mi vědět. Pak se můžeme bavit dál o dokonalém programovacím jazyce.
Re: zas a znova
celé vláknoRe: zas a znova
celé vláknoTo, co tu píšete, je naprostá blbost. PHP nenahrazuje Javu a ani naopak. Mohou se jen v některých místech využití krýt. Oba jazyky mají v některých oblastech unikátní využití. Z toho logicky vyplývá, že kvůli tomu, že se mi něco v PHP nelíbí, přejdu na Javu. Ano, někdy to jde, ale v některých oblastech se nenahradí. Já PHP používám jako nutný základ pro web aplikaci a javu tam, kde je třeba využít realtime přístupu (tj. na webu prakticky nikde). PHP má obrovskou výhodu v tom, že na stránky vytvořené v něm, se dostanete prakticky z jakéhokoliv prohlížeče. Z javy ne. A ono dělat stránky v Javě je naprostá šílenost, tak možná s pomocí javascriptu, ale tam je php mnohem lepší. Zase na druhou stranu si neumím moc dobře představit aplikaci v php pro desktop. Dnes se ale rozdíly stírají a asi bude možné všechno :-D. Já mám PHP rád právě kvůli těm sviňárnám, co umožňuje. ;) A eval() se doporučuji zdaleka vyhnout. ;) Ale možná tu jen plácám, tak mě berte s rezervou.
PS – ano, Javu i PHP znám „osobně“ :-D
Re: zas a znova
celé vláknoMalá chybyčka se vloudila, správně je:
Z toho logicky vyplývá, že kvůli tomu, že se mi něco v PHP nelíbí, automaticky nepřejdu na Javu. Java to prostě nemusí umět a naopak.
Re: zas a znova
celé vláknoPHP má obrovskou výhodu v tom, že na stránky vytvořené v něm, se dostanete prakticky z jakéhokoliv prohlížeče. Z javy ne.
Co to je nesmysl?
Re: zas a znova
celé vláknoDefinici pro nesmysl neznám, k tomu použijte třebas Otův slovník naučný. Ale pokud se to týká mé věty, tak vysvětlení je zcela nasnadě. Řekněte mi, jak v prohlížeči na třeba nějakém hloupém telefonu rozjedu java aplikaci? Nanejvýše javascript a budete rád. Samozřejmě mám na mysli plnohodnotnou javu a ne j2me, či náhražkami typu Opera Mini. ;) Jiná situace by byla, pokud byste použil javu jako serverový jazyk, ale vy jste někde takové využití viděl v praxi? Tak možná u Sunu :-D. Já zatím ne a kdyby, nepřišlo by mi to 2× praktické. PHP je naopak perfektní věc, dává mi široké možnosti a je prostě supr. Ne, nechci se tu s vámi přít. Java je taky výborný jazyk, ale na web bych jí nedával, pokud nedělám aplikace typu mapy atd. Pro mě je důležitá přístupnost odkudkoliv. ;)
Re: zas a znova
celé vláknoZ predpredrečníkovho príspevku zrejme vypadlo „za“ (Co to je ZA nesmysl?).
Pan Šedivý, mám pocit, že máte trochu nepresné informácie o tom, ako je to s Javou.
Java ma dve použitia: na strane klienta v podobe appletov (dúfam, že už vymrú) a WebStart aplikácií. V týchto prípadoch sa u klienta predpokladá inštalácia JRE.
Keby ste vyvíjali GUI aplikácie v PHP, u klienta by ste tiež museli mať nainštalované PHP + knižnice nejakého widget toolkitu – čiže ste na tom rovnako ako v Jave.
Dominantné použitie Javy je v podobe riešení na serveri, kde existuje miliarda frameworkov a knižníc. Vývoj prebieha presne ako v prípade PHP, akurát používate iný jazyk. U klienta nie je potrebná žiadna Java, veď načo? Prehliadač dostáva predžuté HTML.
Aplikácie typu „mapy“ bežia na AJAXe, teda JavaScripte, ktorý beží v klientovom prehliadači a z hľadiska jazyka má s Javou spoločné asi toľko ako zem a zemiak, teda prefix v názve.
Java má problém v prístupnosti v tom zmysle, že kým PHP skripty nasadíte na ktorýkoľvek hosting (stačí totiž jeden Apache a jedna knižnica) pre Javu potrebujete softvér aplikačného serveru. V praktických podmienkach je takmer nemožné zabezpečiť zdieľanie aplikačného servera pre viacerých používateľov tak ako v PHP.
Ak sa však prekoná táto technologická bariéra (čo je zrejme možné len v prípade vlastného servera), vývoj a najmä možnosti v Jave sú nedozierne. Nie nadarmo si veľké firmy primárne vyberajú na veľké systémy Javu (alebo .NET).
RE: PHP mění oddělovač jmenných prostorů na zpětné lomítko
celé vláknodoufat je malo?
celé vláknovarianta 1) zakazat definovani funkci ve jmennem prostoru. kdyz uz si hrajeme na objekty, tak znemoznit existenci funkce mimo tridu pri pouziti jmennych prostoru
varianta 2) (psal DG na svem foru) nejdrive zkusit volat funkci a az pote zkusit volat tridu. a nerekl bych, ze by takova magie delala PHPcku ostudu - to uz si udelalo ostudu jinejma vymyslama, tohle by bylo to nejmensi!
varianta 3) zrusit tecku pro spojovani retezcu (nahradit ji treba +... operator scitani mi prijde intuitivnejsi) a pouzit ji jako oddelovac jmenych prostoru. od verze 6 - aby meli koderi cas prizpusobit sve zdrojaky.
docela komicky na me pusobi log chatu mezi vyvojari - padnou argumenty, ze varianta se zpetnym lomitkem je malo citelna a dokonce prakticka zalezitost - ze ma obcas nekdo klavesnici, kde je lomitko uplne nekde v tahu, takze psani kodu se stava velkym utrpenim.
...takze misto reseni 1 nebo 2 se zavedl takovyhle slint :( - holt vymyslet slint je jednodussi nez to vyresit projednou a poradne. uz vidim, jak tahle featura bude za par mesicu deprecated :D
Re: doufat je malo?
celé vláknoad 2) hovadina, pak by náhodně definovaná funkce překryla třídu - a neexistoval by způsob jak zavolat třídu, když by existovala stejnojmenná funkce - tudíž varianta 2) je velmi hloupá, zanášela by spoustu náhodných chyb a ovlivňování svou prostorů identifikátorů - tříd a funkcí. Kterýkoli programátor by mohl zrušit třeba funkčnost libovolného frameworku, nebo knihovny, protože pouhou definicí funkcí by vyřadil, třeba nechtíc stovky jiných modulů. Velmi hloupé řešení je varianta 2).
ad 3) Tak to je asi největší krávovina. Rušit existující operátory v jazyce a dávat jim jiný význam.
P.S.: Docela jsem rád, že nemáte vliv na vývoj PHP (a pokud ano, budu se za PHP modlit). Sice PHP je poněkud nesourodá směs, ale osobně mi řešení, které developeři vymysleli ve všech aspektech přijde asi tak miliónkrát lepší, než cokoli jste navrhnul Vy.
Re: doufat je malo?
celé vláknodobra, kdyz jsou to takove hovadiny, tak mam jeste jeden bod
4) vyhodit error pri shode jmen funkce a tridy. dnes take nemuzu nadefinovat dve funkce stejneho jmena, natoz dve tridy stejneho jmena... tak v cem je problem? kdyz bude programator dodrzovat zazite konvence - tridy velkym pismenem, funkce malym, tak ke kolizi nedojde. a nemusi to byt nijak vynucene. proste hodit error pri konfliktu, a at si to kazdej pise jak chce.
... ale predpokladam, ze i toto je milionkrat horsi, ze?
ostatne, ona je dnes jiz trida zakryta funkci
function foo() {
echo 'foo 1';
}
class foo {
function __construct() {
echo 'foo 2';
}
}
$a = new foo();
foo();
vypise pouze "foo 1"
Re: doufat je malo?
celé vláknoNamespace není v podstatě nic jiného, než velmi silný antikolizní prostředek zabraňující kolizím jmen identifikátorů. K ničemu jinému namespaces neslouží. Bylo by proto trochu nelogické v takovém případě zavádět řešení, které by kolize identifikátorů opět zaváděly, protože se tím zhoršuje to, proč se namespace vůbec používají.
Nejlepší řešení je zkrátka bezkolizní syntaxe, což je to zvolili autoři PHP. Není třeba se drbat levou rukou za pravým uchem, a řešit kolize mezi funkcemi a třídami, když je možné zvolit bezkolizní syntaxi a nic neřešit. Lepší řešení IMHO nenajdete.
Jinak třída není dnes zakryta funkcí, to jste nepochopil syntaxi PHP. new foo() vytvoří novou instanci objektu foo a zavolá konstruktor, tedy metodu __construct(). Neexistuje žádná kolize, protože použijete-li identifikátor foo v kontextu, kde se očekává jméno třídy, jako třeba new foo(), nebo foo::metoda(), pak se zavolá metoda třídy foo. Zatímco volání foo() je jasně volání globální funkce a s žádnou třídou to nemá nic společného. Tím, že za něco zapíšete závorky, prostě voláte funkci, i kdyby existovala stejnojmenného něco jiného ne-funkce.
Re: doufat je malo?
celé vlákno1) spatna citelnost kodu (lomitko precejen tak dobre graficky neodlisuje dve slova foo\bar proti foo.bar, foo@bar, foo::bar, foo:bar, foo^_^bar, foo (>'')> bar ... a podobne :D)
2) spatna psatelnost kodu (hardwerovy handicap)
proc nebyl pouzit operator ":"?... jen proto ze je soucasti ternarniho operatoru? je tak tezke udelat nejaky parser, kterej zjisti pritomnost otaznicku ve vyrazu? a podle toho rozhodnout jestli se chova tak ci onak? asi by to nebylo tak elegantni, ale v PHP by se tohle vazne ztratilo
Re: doufat je malo?
celé vláknoOhledně ternárního operátoru to mimochodem problém je. Ternární operátor má velmi nízkou prioritu, a jako takový by bylo docela obtížné ho rozumně zpracovat.
RE: PHP mění oddělovač jmenných prostorů na zpětné lomítko
celé vláknoRE: PHP mění oddělovač jmenných prostorů na zpětné lomítko
celé vláknoJazyk bez koncepce, bez budoucnosti
celé vláknoZběhnout se dá k Pythonu, Ruby, Javě, zůstávají jen lamy. A David Grudl.
Re: Jazyk bez koncepce, bez budoucnosti
celé vláknoRe: Jazyk bez koncepce, bez budoucnosti
celé vláknoRe: Jazyk bez koncepce, bez budoucnosti
celé vláknoZnat jine jazyky se ale urcite vyplati. Mimo jine i proto, ze clovek pak lepe chape prednosti a slabiny PHP a celkove pise o dost lepsi kod
Re: Jazyk bez koncepce, bez budoucnosti
celé vláknoPython - jazyk, který nectí zpětnou kompatibilitu a autorovi Pythonu je zcela u zadnice, že tím zbytečně přidělá problémy programátorům. Ne nadarmo je Python zván jazykem skriptovacím, nikoli programovacím. A bude hůř, protože autor Pythonu se bratříčkuje čím dál více s autorem Perlu a začínají si vzájemně notovat - takže je jasné, kde se inspiruje.
Ruby - fuj fuj fuj, jazyk, který nezvládl ani Unicode, a který rovněž nekompatibilně překopává zdrojáky. A konečné řešení stringů není nijak elegantní.Tedy výhrady jako u Pythonu + nezvládnutí stringů + nezvládnutí nativních threadů.
Java - asi z nich nejlepší, nicméně těžkotonážní dělo.
PHP je pragmatická volba. Sice pracovně v PHP nedělám, ale jinak ho používám, protože je z výše uvedených nejlepší - je v něm spoustu kódu k dispozici, nejlevnější hostong, všude to chodí, atd..
Jinak jestli mě nějaký rádobyguru Martin Soukup nazve lamou je mi u zadnice.
Re: Jazyk bez koncepce, bez budoucnosti
celé vláknoRe: Jazyk bez koncepce, bez budoucnosti
celé vláknoRe: Jazyk bez koncepce, bez budoucnosti
celé vláknoNa rozdíl od vás ja PHP i Python pracovně používám. Python je dle mého soudu výrazně lepší jazyk. Při konzervativním používání jsou problémy s narušenou zpětnou kompatibilitou minimální u obou jazyků na srovnatelné úrovni. PHP na web volím z pragmatického důvodu, a to výrazně lepší podpora na web hostinzích. Jinak preferuji Python.
Protože dle vašeho vyjádření ani s jedním z těchto jazyků nemáte bohaté praktické zkušenosti, neměl byste být ve svých soudech tak kategorický, jen si tím děláte ostudu.
Re: Jazyk bez koncepce, bez budoucnosti
celé vláknoNa rozdíl od Vás já PHP i Python velmi intenzívně používám. Python je sice teoreticky lepší jazyk, a daleko raději bych ho viděl, kdyby ovšem tvůrce Pythonu byl mnohem odpovědnější, než je dnes - a uvědomil si, že praktickou použitelnost jazyka nedělají jeho estetické požadavky na konstrukce jazyka, ale především praktické vlastnosti jazyka. Jako je třeba držení zpětné kompatibility, či aspoň ucházející dokumentace, atd..
Jinak běžte prosím do politiky - Vaše nenápadná snaha zlikvidovat člověka s jinými názory tím, že tvrdíte "že člověk nemá bohaté praktické zkušenosti" - tím spletete jenom slaboduchého. I člověk s bohatými zkušenostmi nemusí být fanatik do Pythonu, a nemusí se modlit k Rossumovi, ale může také kriticky vidět skutečné problémy jazyka Python.
Re: Jazyk bez koncepce, bez budoucnosti
celé vláknoMusim se pridat k vetsine, jste tupec.
Z PHP jsem po nekolika letech utekl prave proto, ze napr. class foo a function foo mohou existovat vedle sebe a parser se rozhoduje kterou si vybere az podle new nebo jinych priznaku, ktere ale nejsou nikde nijak definovany. Podle me by to melo byt jmeno jako jmeno a to co je dole, tak MUSI predefinovat to, co je nahore. Dalsi z prasaren PHP.
Zpetne lomitko je totalni pitomost, uz vidim tu nadheru opravovat neco v bash konzoli.
Utekl jsem od PHP k Pythonu prave z duvodu zpetne kompatibility, prave z duvodu, ze to delaji lidi, co tomu rozumi a ne „chytraci“, co si precetli tutorial nekde na php.cz a delaji chytry.
PHP neni jazyk, byl vytvoren jako templatovaci nadstavba nad C pro jednoduche vytvoreni HTML stranek. Nic jinyho. Proto dodnes pisete na zacatku <?php
Je to jazyk bez koncepce, bez budoucnosti a doufam, ze brzy zmizi. Jedine, co se mu do dneska povedlo, je naucit spoustu radoby „programatoru“ spatne postupy a jeste horsi navrhy aplikaci.
Uz nikdy vice.
na Python muze nadavat jen ...
celé vláknoPHP nepovazuji za jazyk pro aplikace, ale pouze nadstavbu k HTML strankam.
A Pokud tu nekdo pise, ze ma rad PHP a hazi spinu na Python (i jine jazyky), tak nemuze byt dobry programator. Tvrdit ze Python je na ustupu… a v cem ze jsou psane ty nejvetsi weby? FB ma backendy v Pythonu, Google se pythonem taky netaji, mnoho novych PC her ma rozsahle casti v pythonu, Seznam jede az na vyjimky v Pythonu… kdo chce vykon, pouzije C nebo Python.
Kdyz jsem s pythonem zacal, nemel jsem ho rad… ale to co jsem tehdy povazoval za slabiny, to dnes povazuji za prednosti.
- diky odsazovani prehledny kod
- striktni mod se neda vypnout
- skutecna objektovost a ne nejake nahrazky
- pomerne prehledny kod kde se neda moc prasit
- zpetna kompatibilita: nejdrive vyjde info v dokumentaci, pak verze s warningem o deprecated volanich a teprve po par letech vyjde verze, ktera hodi srozumitelnou vyjimku a odkaz do dokumentace.
U Pythonu mi vadi jen nezvladnuty ternarni operator. Udelat se sice da, ale oklikou. Nikdo tu nemuze tvrdit, ze je v pythonu spatne, protoze tam vubec neni. ;)
PHP: Jen kreten programuje v jazyce, kteremu nevadi pouzivani neexistujicich promennych, funkci, klicu, indexu, pad kterekoliv funkce zaignorujeme pres @ pokud vubec umi funkce vyvolat chybu… typova kontrola nulova, rozliseni asociativniho a indexoveho pole je sci-fi, o psani Cckovych modulu do PHP nemluve, neschopnost persistentnich objektu v ramci jednoho procesu webserveru (srandy ukladane na disk opravdu nepocitam), naprosto tragicka prace s kodovanim a unicodem, objektovost jen na oko, zoufale mala moznost debugovani… tohle neni jazyk na kterem by se mel clovek ucit programovat a ziskavat ty spravne navyky. PHP neni nejhorsi, ale obdivovat ho take nelze.
PS: programoval jsem jiz v assembleru, c, c++, pascalu, php, lisp, Java, asp, pythonu… takze srovnani mam.
Kdo nesouhlasi, at napise nejake dobre vlastnosti php… a klidne ty spatne pythonu :) ale nepouzivejte tu prosim py3.0, jako jediny argument.
Asi i nekdo napise, ze jsem debil… s tim se pocita.