Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> PHP vs reszta platform
Crozin
post
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:
  1. Java jest statycznie i silnie typowanym językiem co znacznie ułatwia pracę poprzez: znaczne poprawienie czytelności kodu; ułatwienie dokumentacji kodu; uniemożliwia mieszanie typami (popatrz chociażby na genialny sposób informowania o nieznalezieniu podciągu przez strpos - zamiast zwrócić "-1" zwracają "false", które jest w większości przypadków traktowane jak "0") nie wspominając już o wszelkiego rodzaju narzędziach typu IDE, które po prostu mogą w ogóle działać.
  2. Idiotoodporność PHP, która najbardziej krzywdzi właśnie początkujących, a bardziej doświadczonym sprawia jedynie problemy. Użyłeś nieistniejącej zmiennej/właśćwiości obiektu/elementu tablicy? Żaden problem, uznamy, że podano wartość null/false/0. Podałeś za dużo argumentów dla funkcji? Żaden problem, uznamy że tych nadmiarowych w ogóle nie ma. Podzieliłeś przez zero? Wszechświat się zapada, a zmienna przyjmuje boolean'owski fałsz i jedziemy dalej. Takich zachowań jest znacznie więcej i w najmniejszym stopniu nie są one pomocne.
  3. Deweloperzy PHP nie myślą i nie testują nowych elementów języka:
    • Pojawiły się wyjątki, a nie istniały praktycznie żadne predefiniowane, żadnych reguł co do ich użycia, żadnych elementów składni informujących o tym, że dany wyjątek może się w ogóle pojawić itd.
    • Wprowadzili domknięcia, ale nie dali już możliwości zdefiniowania czy domknięcie przekazane w argumencie dla funkcji (np. jako callback) ma mieć jeden, dwa czy może cztery argumenty? O ich typach nie wspominając.
    • Wprowadzają kolejne klasy do SPL-a (bardzo dobrze), ale wymyślili sobie, że jedna z nich - bodajże MessageFormatter - będzie mogło zwrócić NULL-a w wyrażeniu new MessageFormatter(..); (tak dla jasności jest to sprzeczne z "specyfikacją" języka.
    • Wprowadzili przestrzenie nazw, ale nie narzucili żadnego sposobu ich nazywania (zrobił to dopiero PSR-0, który nie jest jednak zawsze przestrzegany)
  4. Brak porządnego wsparcia dla Unikodu w PHP, ogromny burdel w bibliotece standardowej, [u]brak nowej, równoległej do istniejącej biblioteki standardowej[/i]
  5. Spore braki w elementach/strukturach języka: w PHP nie stworzysz sobie nie-publicznej/lokalnej klasy gdy potrzebujesz jej jedynie w obrębie innej klasy/przestrzeni nazw przez co cały projekt musi być zawalony jakimiś nieistotnymi klasami; nie stworzysz sobie prywatnej stałej w klasie; nie stworzysz typu wyliczeniowego; nie masz dostępu do adnotacji, anonimowych instancji itp.


Platforma:
  1. JEE jak sama nazwa wskazuje jest zdecydowanie bardziej "enterprise'owa". To dostęp do całej masy świetnych narzędzi, trzymanie się dobrych, utartych, a przede wszystkim sprawdzonych standardów co do których ma się pewność, że w ciągu najbliższych lat nawet jeżeli zostaną zamienione innymi nadal będą dobrze wspierane. Za JEE stoi cała masa korporacji co bardzo dobrze wpływa na jej stabilność. W tym zestawieniu PHP wygląda jak stojący na glinianych nogach, [brak mi weny ;] - kaleka?]. I bynajmniej nie jest to jak pojedynek Dawida i Goliata, tu ten ostatni jednak wygrywa.
  2. W PHP na dobrą sprawę na start nie dostajesz kompletnie nic. Żadnych mechanizmów mogących realnie wspierać cokolwiek. Jak już napisałem na całe szczęście kilka lat temu pojawienie się FW dla PHP uratowało je przed kompletnym porzuceniem. A JEE? JSP/JSF, EJB, CDI, JPA, JTA, JMS i jeszcze wiele, wiele innych 3-4 literowych akronimów. wink.gif
  3. Oczywiście w/w to jedynie specyfikacje i zestawy interfejsów... bo w Javie masz możliwość realnego wyboru implementacji. Nie jesteś ograniczony do jednego producenta.
  4. Serwer aplikacji nie działa na zasadzie od żądania do żądania - to znacznie ułatwia pokonywanie ograniczeń protokołu HTTP oraz platformy klient-serwer. Masz rzeczywistą możliwość robienie dowolnych rzeczy na serwerze (bo nie ogranicza Cię ani środowisko uruchomieniowe dla języka, ani sam język bo Java jest po prostu szybka).


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.
Go to the top of the page
+Quote Post
marcio
post
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat
Na początek prośba do moderatorów by rozdzielić wątek na dwa.

Na sam poczatek tez prosilbym o wydzielenie tematu jesli kogos on interesuje.

Cytat
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.

Tez uwazam ze php nie jest az taki bee jednak wiele rzeczy sprawia ze debugowanie kodu jak i jego skalowalnosc nie jest wcale taka latwa.

Mi w php przeszkadza:

  • Brak silnej kontroli typow skoro ma juz dynamiczne typowanie to w czasie interpretacji kodu interpreter moglby sprawdzac typy danych a nie jak w php ze potem mozna dodawac string do int albo cos co ma byc int tak naprawde jest traktowane jako string albo odwrotnie.
  • Tak jak wspomniales wsparcie dla Unicode(utf-8)
  • Burdel w bibliotece standartowej
  • brakuje mi tego zeby wszystko bylo obiektem i method chaining
  • Brak stosowania wyjatkow w bibliotece standartowej i glupie zwracane handlerow lub true/false w przypadku funkcji zamiast wyjatkow
  • nie przemyslane parametryzowanie(istnieje takie slowo?) funkcji/metod
  • Glupi trend fw php na uzywanie CamelCase gdy php nie jest case sensitive(po czesci jest a po czesci nie absurd)

Jeszcze cos by sie znalazlo na pewno.

Cytat
Serwer aplikacji nie działa na zasadzie od żądania do żądania - to znacznie ułatwia pokonywanie ograniczeń protokołu HTTP oraz platformy klient-serwer. Masz rzeczywistą możliwość robienie dowolnych rzeczy na serwerze (bo nie ogranicza Cię ani środowisko uruchomieniowe dla języka, ani sam język bo Java jest po prostu szybka).

Tzn jak dokladnie dziala?Runtime?

Co do idiotoodpornosci zgadzam sie co najwyzej rzuci nam E_NOTICE i wsio.
Wedlug mnie zamiast dodawac bajery powinni przepisac na nowo cala biblioteke standartowa i caly jezyk na model objektowy.


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Orzeszekk
post
Post #3





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? 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 smile.gif powiedzialbym nawet ze jak na php jest nowoczesny 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


--------------------
"The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time."
Tom Cargill, Bell Labs
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(Orzeszekk @ 23.02.2012, 01:11:21 ) *
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.

PSR-0 istnieje, BA! Nawet bez PSR-0 istniała konwencja nazewnictwa klas. Będziesz ganić język za programistów, którzy w nim programują?
Poza tym "standardowy" autoloader jest: Symfony ClassLoader, niedługo SplClassLoader a także loader z Composera.

Cytat(Orzeszekk @ 23.02.2012, 01:11:21 ) *
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.

Przeczytaj co to jest "bootstrap" w testach jednostkowych i tam zaimplementuj swojego autoloadera.

Cytat(Orzeszekk @ 23.02.2012, 01:11:21 ) *
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.

Przepraszam - "standardowy class loader" w javie? Nie znam Javy na tyle, ale class loader? W języku kompilowanym? WTF?

Cytat(Orzeszekk @ 23.02.2012, 01:11:21 ) *
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.

Kwestia znaków to kwestia umowna. Zobacz jak to wygląda w innych językach. To, że znasz troszkę jave, c++, javascript to wcale nie znaczy, że w innych językach jest tak samo.
Spójrz na Prologa. Spójrz na wszystkie inne języki, które umożliwiają przeciążanie operatorów (C++, Ruby, Scala itd) to widzisz, że może to wyglądać jeszcze gorzej.

Cytat(Orzeszekk @ 23.02.2012, 01:11:21 ) *
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.

APC Twoim przyjacielem.

Cytat(Orzeszekk @ 23.02.2012, 01:11:21 ) *
w najnowszej wersji net. frameworka wprowadzono typ zmiennej dynamic, 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ą.

To nie jest żadna nowość. Dynamiczne typowanie istnieje w wielu językach

ActionScript
Kod
var zmienna:*;

Scala
Kod
var zmienna:Any; //

js, php itd...
Fanboye JS jako jedną z wielu "zalet" javascriptu przedstawiają brak typowania. Co prawda są idiotami ale wbrew pozorom prawdziwy sens użycia dynamicznego typowania jest bardzo rzadki i często podyktowany błędem projektowym/upośledzeniem języka.


PHP nie miał być ani najszybszym, ani najładniejszym, ani najwydajniejszym językiem. Miał po prostu być łatwy dla początkujących programistów oraz ułatwiać wykonywanie prostych czynności z poziomu kodu i tak jest!
Ta dyskusja niestety nie przyniesie więcej niż stałe, niezmienne argumenty przewijające się od lat pomiędzy programistami klasy Enterprise a i parę głupich argumentów nie zabraknie choćby jak ten:
Cytat
brakuje mi tego zeby wszystko bylo obiektem i method chaining

Błagam ludzie. Rozróżnijcie biblioteki od semantyki języka. To kompletnie 2 różne rzeczy.
Powód edycji: [wookieb]: [wookieb]: [wookieb]:


--------------------
Go to the top of the page
+Quote Post
marcio
post
Post #5





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat
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.

IMHO moze tez to byc zaleta class loader powinien byc dostosowany pod projekt (wedlug mnie) a jakis standartowy loader by sie przydal do codziennego uzytku.

Cytat
Musze robic sztuczki typu wydzielenie kodu logicznego do innej klasy poza projektem, tam stestowac , i opakowac w obiekt juz nalezacy do projektu.

Jesli dobrze cie zrozumialem tez czesci aplikacji testuja poza nia by potem nie wyszly jakies krzaki ;]

Co do operatorow fakt to kwestia przyzwyczajenia jednak moze sprawic klopoty komos kto sie do nich przyzwyczai i wtedy skladnia inne jezyka moze wydawac sie imho dziwna(oczywiscie dziwna too jest ta od php)

Tak racja w php wszystko za kazdym zadaniem jest ladowane do pamieci i tu tez sie zgodze ze gdyby inaczej to bylo zaprojektowane php zyskal by na wydajnosci.

Cytat
PSR-0 istnieje, BA! Nawet bez PSR-0 istniała konwencja nazewnictwa klas. Będziesz ganić język za programistów, którzy w nim programują?
Poza tym "standardowy" autoloader jest: Symfony ClassLoader, niedługo SplClassLoader a także loader z Composera.

Tak spojrzalem na szybko i nie jest to taka strict konwencja, majac 3-4 sposoby na nazewnictwo klas i namespace'ow nie jest to juz takie uniwersalne.

Cytat
Przepraszam - "standardowy class loader" w javie? Nie znam Javy na tyle, ale class loader? W języku kompilowanym? WTF?

Mysle ze chodzi mu o importowanie modulow/namespace'ow jak to sie ma w C# za pomoca using lub w python import...

Cytat
PHP nie miał być ani najszybszym, ani najładniejszym, ani najwydajniejszym językiem. Miał po prostu być łatwy dla początkujących programistów oraz ułatwiać wykonywanie prostych czynności z poziomu kodu i tak jest!

Zgadzam sie tylko ta latwoscia i ich niedokladnoscia w php trzeba sie gimnastykowac wink.gif

Cytat
Błagam ludzie. Rozróżnijcie biblioteki od semantyki języka. To kompletnie 2 różne rzeczy.

WTF?Gdzie wspomnialem o bibliotekach poprostu jakby wszystko bylo obiektem to by bylo i method chaining...


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(marcio @ 23.02.2012, 09:46:00 ) *
IMHO moze tez to byc zaleta class loader powinien byc dostosowany pod projekt (wedlug mnie) a jakis standartowy loader by sie przydal do codziennego uzytku.

Nie. Tak jak jest teraz (czytaj porządne biblioteki używają standardu PSR-0 albo trzymają się starej konwencji gdzie _ w nazwie klasy to separator katalogu).
Inaczej nie ma standardu i jest syf. Co CI wtedy po projekcie gdzie chcesz użyć paru bibliotek a każda z nich ma inny autoloader. Poza tym pamiętaj, że wiele narzędzie "codziennego użytku" przepoczwarza się w biblioteki.

Cytat(marcio @ 23.02.2012, 09:46:00 ) *
Tak spojrzalem na szybko i nie jest to taka strict konwencja, majac 3-4 sposoby na nazewnictwo klas i namespace'ow nie jest to juz takie uniwersalne.


Ok... gdzie w schemacie
Kod
[nazwa_dostawcy]/[nazwy_namespace]*/[nazwa_klasy]

Widzisz "3-4 sposoby na nazewnictwo klas i namespace'ow" ?


Cytat(marcio @ 23.02.2012, 09:46:00 ) *
WTF?Gdzie wspomnialem o bibliotekach poprostu jakby wszystko bylo obiektem to by bylo i method chaining...

Nie wspomniałeś bo nie rozróżniasz bibliotek od języka. Method chaining to pewien element zaprojektowania klasy/biblioteki. Nie jest to zależne od języka (tudzież jego składni).
Powód edycji: [wookieb]:


--------------------
Go to the top of the page
+Quote Post
marcio
post
Post #7





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat
Nie wspomniałeś bo nie rozróżniasz bibliotek od języka. Method chaining to pewien element zaprojektowania klasy/biblioteki. Nie jest to zależne od języka (tudzież jego składni).

Tak racja ale w php standartowa biblioteka tego nigdy nie zapewni bo jest napisana funkcyjnie oczywiscie mozna pisac wrapper'y i przepisywac wszystko na klasy o to mi chodzilo wink.gif

Cytat
Nie. Tak jak jest teraz (czytaj porządne biblioteki używają standardu PSR-0 albo trzymają się starej konwencji gdzie _ w nazwie klasy to separator katalogu).

OK, bazowalem sie na przykladach:
Cytat
\Doctrine\Common\IsolatedClassLoader => /sciezka/do/zrodel/Doctrine/Common/IsolatedClassLoader.php
\Symfony\Core\Request => /sciezka/do/zrodel/Symfony/Core/Request.php
\dostawca\przestrzen\Nazwa_Klasy => /sciezka/do/zrodel/dostawca/przestrzen/Nazwa/Klasy.php
\dostawca\przestrzen_nazw\Nazwa_Klasy => /sciezka/do/zrodel/dostawca/przestrzen_nazw/Nazwa/Klasy.php

Nie wygladaja na jednoznaczne, chyba ze tak jak mowisz dostosowywuja sie do glownego "patternu"


EDIT:
Dobrze by bylo jesli ktos mogly zmienic nazwe tematu na inny tu nie moja o java vs php lecz o wszystkie platformy/jezyki ktore umozliwiaja tworzenia aplikacji web


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
wookieb
post
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(marcio @ 23.02.2012, 10:10:01 ) *
Tak racja ale w php standartowa biblioteka tego nigdy nie zapewni bo jest napisana funkcyjnie oczywiscie mozna pisac wrapper'y i przepisywac wszystko na klasy o to mi chodzilo wink.gif

Bawiąc się w kazuistyke... żadna z bibliotek phpowych nie jest napisana funkcyjnie.
Method chaining ma swoje wady i zalety. Raczej większość bibliotek nie będzie tego używała jeżeli nie ma ku temu jasnego przesłania co do użyteczności w wykorzystywaniu API.

Cytat(marcio @ 23.02.2012, 10:10:01 ) *
Nie wygladaja na jednoznaczne, chyba ze tak jak mowisz dostosowywuja sie do glownego "patternu"

To, że nazwa dostawcy może być przetłumaczona na ścieżke do katalogu nie czyni żadnej różnicy.
W standardzie jest jasno opisany jak ścieżki mają wyglądać. Nie ma tutaj żadnych wyjątków
Cytat
\Doctrine\Common\IsolatedClassLoader => /sciezka/do/zrodel/Doctrine/Common/IsolatedClassLoader.php

\dostawca\przestrzen_nazw\Nazwa_Klasy => /sciezka/do/zrodel/dostawca/przestrzen_nazw/Nazwa/Klasy.php


Cytat(marcio @ 23.02.2012, 10:10:01 ) *
Dobrze by bylo jesli ktos mogly zmienic nazwe tematu na inny tu nie moja o java vs php lecz o wszystkie platformy/jezyki ktore umozliwiaja tworzenia aplikacji web

As you wish...
Powód edycji: [wookieb]:


--------------------
Go to the top of the page
+Quote Post
marcio
post
Post #9





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat
żadna z bibliotek phpowy nie jest napisana funkcyjnie.

Zly skrot myslowy wink.gif mialem na mysle ze jest oparta o funkcje nie napisana funkcyjnie nmv snitch.gif przez co nic nie jest obiektem(zaden typ) i kod jest nieprzyjemny i dlugi.

Co do PSR-0 to teraz mnie oswieciles nie bylem zbyt uwazny jak czytalem znow dzieki !

Cytat
As you wish...

Dziekuje wink.gif!

Czy ktos z was ma stycznosc z innymi platformami: ruby(ror), python(django,pylons,pyramid,zope,plone), asp.net/mvc lub jakies rozwiazanie web scala/groovy?

Nie pogardzilbym tez zestawem za i przeciw php'owskich fw jesli ktos z was mial mozliwosc zapoznania sie z wiecej niz jednym rozwiazaniem.


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
by_ikar
post
Post #10





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Cytat
Nie wspomniałeś bo nie rozróżniasz bibliotek od języka. Method chaining to pewien element zaprojektowania klasy/biblioteki. Nie jest to zależne od języka (tudzież jego składni).


Dokładnie. Jak komuś method chaining aż tak bardzo potrzebny, większego problemu nie widzę, pakuj wszystko w obiekty i niech każdy obiekt, zawiera metody które zwracają obiekt. Przykład: http://simplehtmldom.sourceforge.net/ jest biblioteka, jest i method chaining.

Cytat
Tak racja w php wszystko za kazdym zadaniem jest ladowane do pamieci i tu tez sie zgodze ze gdyby inaczej to bylo zaprojektowane php zyskal by na wydajnosci.


Bo niestety póki co nie istnieje jakaś sensowna maszyna wirtualna która by działała jak kompilator jit. Jak coś takiego wejdzie, to szybkość php znacznie się zwiększy, a pamięciożerność zmaleje. Coś tam podobno facebook kombinuje, no ale nie zagłębiałem się specjalnie w temat. Jak hostingi tylko wychwycą że taka maszyna wirtualna istnieje, i działa sprawnie, to zaczną instalować po to aby odciążyć swoje serwery i jeszcze więcej ludzi dowalić na jeden serwer.

Ten post edytował by_ikar 23.02.2012, 10:51:09
Go to the top of the page
+Quote Post
wookieb
post
Post #11





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Pisałem i pisze w ServerSide JavaScript - Jest ok, ale jeżeli ktoś nie lubi javascriptu samego w sobie plus obsługi wielu callbacków (nawet za pomocą przeróżnych bibliotek) to jego nie polubi.

Scala nie jest rozwiązaniem stricte Web. To po prostu nakładka językowa na Jave. I muszę przyznać - to najpiękniejszy i najbardziej uporządkowany język jaki kiedykolwiek widziałem. Wydajny , pojawia się na niego mnóstwo świetnych narzędzi. Niestety moja opinia bazuje na tym co czytam, troszkę poprogramowałem. Musiałbym totalnie przeskoczyć do świata Javy a następnie Scali aby moja opinia stała się bardziej obiektywna.
Powód edycji: [wookieb]:


--------------------
Go to the top of the page
+Quote Post
marcio
post
Post #12





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


@by_ikar chodzi ci o HipHop?Tez mi sie cos o uczy obilo.


@wookieb mnie javascript wydaje sie taki dziwny zeby nie powiedziec "dziki"(egzotyczny?sleep.gif') i ma troche inny paradygmat niz ten do ktorego dotychczas jestem przyzwyczajony.

O Scali tez jak czytam gdzie jakis wpis obojetnie o czym by nie byl to wszyscy zachwycaja sie nia, coz ona ma w sobie ;p

@by_ikar nie jestem znawca ale czy istnieje mozliwosc napisania php dla javy cos takiego jak jython/jruby?

Ten post edytował marcio 23.02.2012, 11:38:58


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
wookieb
post
Post #13





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(marcio @ 23.02.2012, 11:36:00 ) *
O Scali tez jak czytam gdzie jakis wpis obojetnie o czym by nie byl to wszyscy zachwycaja sie nia, coz ona ma w sobie ;p

Jest tworzona m.in przez profesorów. Połączenie języków funkcyjnych, silnego typowania, prawdziwych traitsów i wiele innych przepotężnych mechanizmów (m.in pattern matching) umożliwiających tworzyć kod szybciej.
Sama książka http://www.amazon.com/Programming-Scala-Co...95&sr=8-1ma 852 z czego jej 50% to pisanie o ficzerach niespotykanych nigdzie indziej.


--------------------
Go to the top of the page
+Quote Post
Crozin
post
Post #14





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


@wookieb: Tak, w Javie jest ClassLoader i jest jednym ze słabiej znanych i rozumianych elementów języka. Na prawdę można się mocno zdziwić czytając o całym mechanizmie ładowania klas. Gdybyś był zainteresowany: http://www.javaworld.com/javaworld/jw-10-1...10-indepth.html

@marcio: Serwer aplikacji (SA) traktuje każde żądanie jako nowy wątek, który (w przeciwieństwie do środowiska PHP) nie jest kompletnie odizolowany od innych. SA jest również odpowiedzialny za przygotowanie całego środowiska do pracy, co nie ogranicza się jedynie do nadania odpowiednich wartościom zmiennych $_SERVER/$_POST/$_GET. Patrząc z punktu PHP SA to już mocno rozbudowany FW. wink.gif


Ten post edytował Crozin 23.02.2012, 11:52:47
Go to the top of the page
+Quote Post
by_ikar
post
Post #15





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Cytat
@by_ikar chodzi ci o HipHop?Tez mi sie cos o uczy obilo.


hiphop od facebooka, jest czymś podobnym, właściwie to jest przerobiony hiphop. Bo w obecnej postaci niestety to jest masakra, więcej ograniczeń niż możliwości wink.gif Ten hiphop od fb, "tłumaczy" kod php, na c/c++ i następnie kompiluje do kodu maszynowego. I trzeba to wszystko robić ręcznie i jest ogólnie z tym sporo babraniny. Maszyna wirtualna z kolei śledzi z miany w plikach i kompiluje taki kod php do kodu maszynowego i w przypadku zmiany w jakimś pliku dopiero wtedy na nowo jest kompilowany plik. Dzięki czemu, serwer serwuje skompilowany kod, którego nie musi w żaden sposób interpretować. Gdzieś tam pisali że zyski w oszczędności pamięci mogą sięgnąć nawet 90%, a czas wykonywania takiego skompilowanego kodu, może się zmniejszyć o około 60%. I najlepsze będzie to że nie będzie trzeba wówczas się niczego nowego uczyć, bo tak ma działać maszyna wirtualna. Z kolei hiphop obecnej postaci w jakiej jest udostępniony, niesie dość sporo ograniczeń. Pomijam evala, którego i tak nie powinno się używać, są inne elementy które poprostu przeszkadzają.

Maszynę wirtualną ma chociażby java, gdyby nie to, strasznie mulastym językiem by była.. No póki co niestety nie ma niczego sensownego, są tam jakieś jeszcze projekty maszyn wirtualnych, ale cały problem w nich rozbija się właśnie o kastracje php, tak jak to ma hiphop od facebooka..

Cytat
@by_ikar nie jestem znawca ale czy istnieje mozliwosc napisania php dla javy cos takiego jak jython/jruby?

Jest, tyle że to w przypadku php, bo nie wiem jak jest w przypadku innych języków (python, ruby) niestety kastruje php i takiego ZF już byś mógł pomarzyć że postawisz.

Taka maszyna wirtualna musiała by działać transparentnie, tzn wrzucasz pliki na serwer i to poprostu działa. Podobnie jest z APC, tyle że ten akcelerator, działa nieco inaczej, nie mniej i tak zyskuje się sporą wydajność, zwłaszcza w szybkości ładowania. Jakby powstała taka maszyna, to bolączki odnośnie wydajności php raczej byłby najmniejszym problemem..

Mi osobiście w php brakuje czegoś takiego, żebym jakimś mechanizmem mógł sobie wyłączyć wsteczną kompatybilność, która jest mi zbędna. Chodzi tutaj głównie o typowanie, czy rzucanie wyjątkami. Wszech obecna idioto odporność kiedyś była fajna, teraz niestety męczy. I raczej to się nie zmieni i trzeba zwyczajnie przywyknąć..
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #16





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Marudzicie wink.gif
Jedyny problem PHP, który obecnie jest nie do obejścia, to wspomniany brak importu całych NS, co de facto jest powrotem do include(), tylko pod inną nazwą i odrobinę ulepszone.
Dobry opis problemu: http://propel.posterous.com/the-end-of-autoloading


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
Theqos
post
Post #17





Grupa: Zarejestrowani
Postów: 49
Pomógł: 8
Dołączył: 5.12.2008

Ostrzeżenie: (0%)
-----


Cytat(Crozin @ 22.02.2012, 13:51:10 ) *
Serwer aplikacji nie działa na zasadzie od żądania do żądania - to znacznie ułatwia pokonywanie ograniczeń protokołu HTTP oraz platformy klient-serwer.

I znacznie utrudnia skalowalność. Jak masz niezależne rządania to o wiele łatwiej obsłużyć pierwsze żadanie na serwerze A, a drugie na serwerze B.

Najgorszy to jest językowy fanboizm i językowi haterzy. Ściany tesktu, a 80% to półprawdy, nieścisłości i sporo bzdur. Wybór platformy i języka programowania zależy od wielu czynników, nie tylko technicznych. Dopiera się je w zależności od projektu i nierzadko używa więcej niż jednego. Ogólnie nie ma się co tak ekscytowść, programowanie to tylko przetwarzanie danych smile.gif


PS. Scala jest pro, ale IMHO zbyt skomplikowana dla przeciętnego kodera przez co będzie miała popularność porównywalną z Haskellem.
Go to the top of the page
+Quote Post
Niktoś
post
Post #18





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Ja bym postawił na C#,JEE, F#(niejako odmiana JEE).W c# niekiedy można korzystać z niektórych namespaców pochodzących z JEE ,czyli łatwiej integrować oba języki.
http://www.codeproject.com/Articles/32313/...ASP-net-using-C

Ten post edytował Niktoś 23.02.2012, 15:22:27
Go to the top of the page
+Quote Post
wookieb
post
Post #19





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(Theqos @ 23.02.2012, 14:30:24 ) *
I znacznie utrudnia skalowalność. Jak masz niezależne rządania to o wiele łatwiej obsłużyć pierwsze żadanie na serwerze A, a drugie na serwerze B.

Od tego jest load balancer a nie aplikacja.


--------------------
Go to the top of the page
+Quote Post
Theqos
post
Post #20





Grupa: Zarejestrowani
Postów: 49
Pomógł: 8
Dołączył: 5.12.2008

Ostrzeżenie: (0%)
-----


Co ma load balancer do tego, że aplikacja trzyma unikalny stan w pamięci jednego z serwerów? Chodzi ci o to, że kolejne żądania danego użytkownika kieruje na ten sam serwer?
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 18:06