PHP 5.0 - behind jaggi lines

17 Jul 2004

Hurrrraaaaa! Wreszcie jest, z nowym major-numerem-wersji, przełom, brekfru!

No dobra, ale gdzie są typy? Gdzie są silne typy jak w C czy Javie? Co to ma być za popelina? Czy nadal muszę explicite rzutować wartość numeryczną na (int)? I to ma być ułatiwenie? Następnie -- gdzie są sztywne zasady tworzenia literałów? $a[dupa]==$a['dupa']? Przykro mi, drodzy panowie Ze i Nd, ale zjebaliście. Po zmianie major-numbra spodziewałem się czegoś więcej. Hej Ze, Nd, jak przekazać funkcję jako parametr - jako literał?? Buuuuaaha ha ha ha ha ha ha ha ha, rżę, zamieram, wątroba mi siada!

Mili Państwo, otóż przereklamowany XML i przekazywanie obiektów przez referencję to nie wszystko. Należy się uporać z bagażem durnych ze wszech miar założeń konstrukcyjnych, gdy nie jest jeszcze zbyt późno. Bo jeśli nie teraz, to kiedy? Za rok, przy wydaniu 6.0, gdy popularność PHP będzie jeszcze większa, by złamać kompatybilność wsteczną z jeszcze większą ilością aplikacji? Eeeh Ze, Nd, trója z plusem..

Digg del.icio.us StumbleUpon Wykop Reddit Folksr

permalink | trackback | rss

 
 
MiMaS

"bagaż założeń konstrukcyjnych" to nie jest coś z czym można się tak po prostu "uporać"... i tak zmiany w kolejnych wersjach PHP rujnują dobre samopoczucie tych, co zaufali, że jakiś połowicznie udokumentowany feature pozostanie bez zmian. nawet obsługa obiektów niby teraz przepisana od zera "for better performance and more features" może być raczej "confusing" (np. z takiego powodu: http://mjtsai.com/blog/2004/07/15/php-5-object-references/ )

zmiany w kolejnych wersjach PHP świadczą IMHO o niedojrzałości PHP jako języka i pewnie czeka nas jeszcze co najmniej kilka "usprawnień" wywracających wszystko do góry nogami.. ale na takie kompletne pozbycie się "bagażu durnych ze wszech miar założeń konstrukcyjnych" to bym raczej nie liczył...

str()

Bagaż założeń kostrukcyjnych to _jest_ coś, z czym można się uporać, choć oczywiście nie "tak po prostu". Pozytywnych przykładów naprawy złych architektur jest cała garść, z których najbardziej uprzejmy dla develi to emulacja IA32 w x86-64. Może jest to bardziej obejście niż rozwiązanie problemu, ale nie piłuje gałęzi, na której siedzi całe AMD. Fatalnej konstrukcji x86 nikt chyba nie kwestionuje. Zderzenie z assemblerem Intela było dla mnie, rozdziadoszonego przez 6502, bolesnym strzałem w pysk.

Semantyka operatorów przypisania w odniesieniu do obiektów jest moim zdaniem tym, co zmianie ulec nie powinno. Sam autor podsyłanej przez Ciebie notki twierdzi, że jest to budowanie niespójności pomiędzy primitives a obiektami. Z resztą, = i &= w 4.x jest dość jasne i działa na obiektach tak samo jak na typach prostych. Czy $a=$b powinno robić różnicę, w zależności od zawartości a i b w języku bez silnej kontroli typów? Uważem, że nie, ale może Ze i Nd pisali 5.0 pod swój już gotowy optymizer.. spisek, spisek, wszędzie spisek! ;-)
Przeczuwam z daleka, że ta różnica będzie powodem niezłych hec w wielu aplikacjach.

Co do niedojrzałości PHP - w pełni się zgadzam i nigdy nie sądziłem inaczej. Nie ma się co rozwodzić, PHP jest niedojrzałe i niestabilne, a pisanie w nim dużych aplikacji wymaga nie lada samodyscypliny i poleganie na brudnych hakach jest niedopuszczalne. Dlatego irytuje mnie brak sensownego mechanizmu przekazywania funkcji jako parametrów. Za każdym razem, gdy mam przekazać funkcję przez literał mam ochotę opakować ją w klasę i posłać jako referencję do obiektu.
Co mnie trzyma przy PHP to niesamowita szybkość implementacji przy użyciu Smarty oraz różnych perełek z Pear. W ogóle, to sympatyczny język.

Bardzo żałuję, że nie pozbyto się wszelkich idiotyzmów PHP, jak niejednoznaczność literałów bez cudzysłowów/apostrofów, choćby szczątkowego wsparcia dla silnych typów, czy usprawnienia foreach, by nie wywracało programu przy pustej tablicy. Na prawdę, o ile nie mogli tego zrobić już w 4.0, to przy 5.0 był ostatni dzwonek na tak istotne zmiany. Przy następnej major-wersji masa krytyczna istniejących aplikacji może być już zbyt wielka, by pozwolić sobie na złamanie zgodności wstecz. Może to się odbić obawami develi przy profesjonalnych zastosowaniach PHP.

---
MiMaS, a jakżeś ty ptaszku dostał się do tej notki, skoro ma ustawiony poziom prywatny? Miałem ją w ogóle zmienić i posłać, gdy przestanie być wersją beta, ale jako że napisałeś, nie będę wstecznie alterował rzeczywistości.

MiMaS

hmmm... "poziom prywatny" powiadasz? nie zauważyłem...
w tym kontekście dosyć znamienny wydaje się fakt, że jogger jest napisany w ... PHP :-D

Your turn:

nick:
and?:
www (if any):
Wpisz kod:code