![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Na początek prośba do moderatorów by rozdzielić wątek na dwa.
Cytat Chodzi ci o JEE czy nie trafilem, jesli mozesz opisz na co sie przerzuciles z jakich powodow jakie ma wady i zalety w poprowaniu do php twoje nowe narzedzie Osobiście jestem w trakcie "przesiadki" na JEE i w żadnym wypadku nie można moich wypowiedzi traktować tutaj jako wypowiedzi kogoś kto ma z tą platformą spore obycie. Prosiłeś o wypisanie wad i zalet tej platformy względem PHP tak więc i takie zestawienie znajdziesz poniżej, miej jednak na uwadze, że jak już wspomniałem JEE (a nawet i wiele elementów JSE) nie jest mi tak dobrze znaną technologią jak PHP, które znam od dobrych kilku lat. Na pewno z wielu wad/błędnych rozwiązań nie zdaję sobie nawet sprawy (brak wystarczającego doświadczenia), a jest ich na pewno cała masa - jak w każdym języku/platformie, szczególnie takiej która swoje początki miała w połowie lat 90 i dbała o wsteczną kompatybilność (to akurat zaleta) kosztem pewnych decyzji/rozwiązań (np. typy generyczne będące na dobrą sprawę jedynie lukrem składniowym). Subiektywna lista: Język:
Platforma:
Tych punktów mogłoby tutaj być więcej. Ale PHP nie jest wcale jakimś niewyobrażalnym badziewiem. Jak każdy język ma spore możliwości, a w dobrych rękach można w nim stworzyć na prawdę świetne projekty. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 14 Dołączył: 8.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
prywatna stałą mozna sobie stworzyc w klasie za pomocą konstrukcji private static $stała = "costam". jednak jest to swojego rodzaju hack. Co prawda nie jest to stała, ale daje to mozliwosc przechowywania stałej klasowej.
do plusow skladni php mozna zaliczyc late static binding - static::. bardzo fajna rzecz ktorej raczej nie ma w innych językach. jednak jak sie pomysli ilu fajnych rzeczy PHP nie ma a inne jez. maja, to włos sie jezy na glowie. wszystko juz chlopaki napisaliscie, i to jest wszystko prawda niestety. Ja od siebie bym dorzucil brak standardowego class Loadera. metoda __autoload powoduje ze autoloader w kazdym fw/projekcie dziala inaczej. A ja mam np swoj wlasny autoloader ktory dziala na moim autorskim pomysle i ma strukture katalogow nie korzystajac z namespace ale nie ma tez dlugich nazw jak zend i co sie okazuje? Biblioteka PHPUnit nie jest w stanie odnalezc zaleznosci miedzy klasami i klasy nie chcą się ładować, i tego co juz napisalem nie moge testowac jednostkowo. Musze robic sztuczki typu wydzielenie kodu logicznego do innej klasy poza projektem, tam stestowac , i opakowac w obiekt juz nalezacy do projektu. Wraz z wprowadzeniem namespacow (ktore sa troche nieudane - brak mozliwosci zaimportowania calej namespace - porazka. Bez aliasowania trzeba uzywac nazw typu orzech\myproject\mymodule\myclass() - jeszcze wieksza porazka.) mogli by wprowadzic standardowy class loader tak jak jest w javie i juz. Jest jeszcze jeden zarzut mój do PHP : brak wielowątkowości, i wsparcia dla lockow/sekcji krytycznych W sytuacji gdy kazdy proces PHP dziala w oddzielnym wątku, i nie ma mozliwosci zablokowac jednemu mozliwosci grzebania w pliku gdy zapisuje do niego drugi, język wiąże ci ręce. Musisz wszystko ładowac do bazy danych. To samo sie tyczy memcache - brak locków w PHP powoduje ze zle napisana aplikacja korzystajaca z memcache po prostu sie zawiesi (w momencie gdy wpis sie przedawnia, wchodzi na raz x uzytkownikow na strone, i z powodu braku locków wszyscy na raz zaczynaja aktualizowac ten memcachowy wpis, leci x zapytan do bazy danych... itd itp). Ostatnio chcialem skorzystac z memcache - jak zobaczylem jakie problemy to powoduje to dalem sobie z nim spokój. Niby są mechanizmy locków bazujące na tworzeniu plików ~lock, ale jaki to ma sens przy cachowaniu danych w memcache? (IMG:style_emoticons/default/smile.gif) zreszta pliki lock nie sa niezawodne bo jesli php przelaczy sie na drugi wątek w momencie tworzenia tego pliczku to tez nam cuda wyjdą. Celowo nie pisalem o flock poniewaz dziala w pelni tylko pod linuchem, a poza tym jest problem bo raz zalozonej blokady nie mozna zdjac po uplywie np 30 sekund wiec jesli zawiesi sie skrypt zapisujacy do pliku ktory sobie zablokowal to nigdy nie zostanie odblokowany. IDE ktory jest naprawde dopracowany i w zasadzie jak dla mnie jedyny na rynku to phpStorm, to program wart kazdych pieniedzy. Ma wszystko co potrzebne i co najwazniejsze - dziala. PHPUnit dziala. IntelliSense - dziala pieknie, lepiej niz w ecl. i netbeans. Refaktoryzacje typu wydziel metode/stałą/zmienną - +50% do predkosci kodowania. Do tej pory myslalem ze w jezyku dynamicznym sie nie da tego zrobic, ale jednak sie da. Predkosc IntelliSense (podpowiadania metod) - dziala jak eclipse pod javą czyli bez zastanowienia. eclipse php/netbeans potrzebuje sekunde - piec przy duzym projekcie. wiec akurat edytor php od jakigos czasu nie ustepuje innym językom. Jak ktos chce wydajnie kodowac i szanuje swoj czas, taki edytor to raczej must have, notatnik/PDT to zamiana koparki na łopatę. Nawet brak głupiego rename refactoring w edytorze, powoduje z czasem zaciemnianie sensu kodu - komu sie chce recznie zmieniac iles tam nazw zmiennych w kodzie? a to normalne ze zmienne z czasem zmieniaja swoje znaczenie.. no i idiotyczne operatory. operator obiektowosci -> . Operator namespace \ . Operator konkatenacji . (kropka). To jedyny jezyk ktory znam, ktory nie stosuje kropki jako obiektowosci\namespace oraz plusa jako konkatenacji. Brak overloadingu - przeciazania metod. To spore utrudnienie przynajmniej dla mnie bo ja czesto uzywam tego w innych językach. PHP jest wolny - poprawnie napisana aplikacja moze dzialac wolniej (i to sporo) od napisanej byle jak. Te wszystkie iteratory, gettery, settery powoduja swoj narzut. Takie symfony2 np 300 ms generuje pusta strone w trybie produkcyjnym. Odswiezenie pustej strony w asp.net to czas jakichs 10 ms? moze mniej nawet. W javie zapewne jest podobnie. Skompilowany jezyk dziala znacznie szybciej i lepiej sobie radzi z kodem napisanym z wzorcami projektowymi ktore zazwyczaj daja pewien niewielki narzut wydajnosciowy, ktory jednak sie kumuluje. styl pisania symfony2 na pewno nie jest archaiczny (IMG:style_emoticons/default/smile.gif) powiedzialbym nawet ze jak na php jest nowoczesny (IMG:style_emoticons/default/biggrin.gif) Marcio: aplikacja webowa w javie uruchamia sie raz i dziala sobie w tle na serverze, jako servlet (cos jak usługa, tak mi sie wydaje). Po prostu sobie dziala. Korzysc juz tutaj masz bardzo duża: konfiguracja zostaje wczytana tylko raz. w momencie requestu na strone ta dzialajaca aplikacja odpowiada na niego. Mozesz przechowywac sesje uzytkownika w pamieci aplikacji, kod jest skompilowany do kodu bajtowego wiec dziala szybko... Niektore czesto wykorzystywane obiekty mozesz trzymac w puli (np pule polaczen z baza danych) i nie tworzyc ich od nowa za kazdym razem. natomiast PHP za kazdym razem includuje wszystkie pliki, odczytuje konfiguracje (define są dosc wolne jak na zwykla deklaracje stałej, ok 200 stałych to u mnie 10 ms), oblicza tysiac durnych rzeczy i dopiero wykonuje te kilka linijek kodu ktore mamy w naszym kontrolerze. Prawda ze to marnotrastwo? Choc trzeba przyznac ze php ma o polowe mniejsze zuzycie pamieci niz java. w najnowszej wersji net. frameworka wprowadzono typ zmiennej [b]dynamic[/d], jest to typ zmiennej oparty na takim typowaniu jak ma php. Jednoczesnie sam net.framework jest statyczny. Daje to nam mozliwosc uzywania typow tam gdzie jest potrzebna bezblednosc oraz uzywania zmiennych bez typów tam gdzie nam wygodniej. I tak to rowniez powinno dzialac w php. co prawda są typy proste w php5.4 jednak nim on sie upowszechni to wieki miną. Ten post edytował Orzeszekk 23.02.2012, 01:28:50 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 13:43 |