Autor Wątek: PHP/*ServerPages vs C++/C#/Java  (Przeczytany 29786 razy)

Offline nameczanin

  • Użytkownik
    • devlog

# Kwiecień 28, 2007, 10:09:08
hmm, to w PHP+HTML+CSS+JS/AJAX pisze sie silniki?

EDIT: widze, ze ktos wycial troche postow i zrobil topica jakbym to ja go stworzyl :P Tak tylko dla potomnych.
« Ostatnia zmiana: Kwiecień 30, 2007, 19:24:52 wysłana przez nameczanin »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Charibo

  • Redaktor

# Kwiecień 28, 2007, 10:50:48
Do browserowych MMORPG? Mysle ze mozna :)

Offline Karczas

  • Użytkownik
    • DevBlog

# Kwiecień 28, 2007, 11:16:51
Ja bym wolał zobaczyć jakiegoś porządnie wykonanego roguelika, albo muda (chociaż tutaj ciężko przebić się przez konkurencję typu Arkadia czy Barsawia). Ale roguelike - myślę, że to idealny system(?) RPG dla pojedynczego, ambitnego programisty bez grafików i muzyków. Jeżeli ktoś nie wie o czym mówię, to zapraszam tutaj: http://www.adom.phx.pl/i tutaj: http://www.adom.de/

Offline mINA87

  • Użytkownik

# Kwiecień 28, 2007, 12:14:25
hmm, to w PHP+HTML+CSS+JS/AJAX pisze sie silniki?

A dlaczego nie? :] Silnik to pojęcie abstrakcyjne i raczej projektowe, więc why not? Widzę że dla Ciebie PHP to proste stronki w których kod PHP embednięto w HTMLu :F A przecież jest nawet biblioteka GD - ja oddałem algoytm w WinAPI + C++ a qmpel w PHP + GD. Są nawet renderery napisane w PHP'ie.

Offline nameczanin

  • Użytkownik
    • devlog

# Kwiecień 28, 2007, 12:59:31
hmm, ale taki silnik nie dziala caly czas, tylko [zaleznie od ustawien] jakies max 30 sekund wykonuje operacje od wywolania w przegladarce ^^ Dlatego dziwnie mi sie kojarzy termin "silnik" z PHP. Ale fakt - abstrakcja nie ogranicza. A GD oczywiscie jest tutaj nieocenione, fajne porownanie z kumplem :)

Offline mINA87

  • Użytkownik

# Kwiecień 28, 2007, 13:13:02
Też nie do końca. Widziałeś w ogóle demka w PHPie? :> Bo są :]
PHP może działać bez ograniczeń (tylko że wtedy jest raczej słabo interaktywny, chyba że zastosujemy jakiś pomost który będzie sprytnie delegował do PHP'a zdarzenia np przez bazę danych - wtedy mamy taką usługę jakby :]), ale tryb request->repsonse i związany z tym life-cycle obiektów nie ogranicza Cię tutaj - AJAX + PHP i serializacja na jakieś bazce ładnej i możesz cuda zdziałać. Ba - właśnie silnik jest bardzo ważny, bo musi zajmować się serializacją i deserializacją stanu obiektów. Co innego, że FPSa w tym raczej nie napiszesz (no chyba że na localhost'cie) ale jakieś turówki jak najbardziej.
No - rysowaliśmy prostą piksel po pikslu na pomocą algorytmu Bresenham'a :] Się prowadzący zdziwił jak zobaczył aplikację w PHPie :P (a wszyscy w C# i Java :P).
//edit:
Tutaj sa właśnie te demka w PHP:
http://www.pouet.net/prodlist.php?platf%5B%5D=PHP&order=&page=1&order=&x=30&y=8
Fajnie zrealizowana jest większość - w GET podany numer klatki, wysyłana jest strona - aktualna klatka i na niej ustawiony jest timeout w JavaScripcie po którym odpalana jest ta sama strona ze zinkrementowanym numerem klatki :]
« Ostatnia zmiana: Kwiecień 28, 2007, 13:19:34 wysłana przez mINA87 »

Offline BTM

  • Użytkownik

# Kwiecień 28, 2007, 14:35:39
Aż się zarejestrowałem specjalnie żeby postnąć ;-)

W PHP siedzę od dłuższego czasu, a ostatnio zabrałem się za robienie prostej gry RPG/RTS z serii MMORPG w trybie turowym.

O silniku w "PHP" można mówić - gra napisana jest w PHP / JS i wszystko komunikuje się poprzez requesty JS ( AJAX ) do serwera i odpowiedzi ( XML ) do przeglądarki. Następnie JS u klienta po otrzymaniu stosownego XML'u wykonuje zadane operacje ( np. przemieszcza jednostkę o zadanym ID ( getElementById() ) do wybranej lokacji, animując ( przesuwając ) jej obrazek ). Wszystkie sprawdzania, czy dana jednostka może wykonać ruch ( odnajdowanie ścieżki ), akcję ( odpowiednie statystyki etc. ) są wykonywane właśnie przez silnik PHP, a silnik JS odpowiada tylko za wysyłanie zapytań do serwera i przetwarzanie odpowiedzi, które od niego otrzymuje.

Jak w poniedziałek się dorwę do localhosta w pracy to zarzucę parę screenshotów ;-) A na razie mogę wrzucić filmik ze starszej wersji:

http://anfo.pl/world.swf.html

Offline mINA87

  • Użytkownik

# Kwiecień 28, 2007, 14:58:01
Jak zobaczyłem playerek swf to jeszcze jedna rzecz mi się przypomniała - bardzo ciekawym rozwiązaniem  jest użycie Flash'a jako frontenda który zajmuje się komunikacją z użytkwonikiem i wysyłaniem requestów do PHP'a - tutaj już można całkiem dużo zdziałać i nawet próbować myśleć o jakimś real-time'ie - jakieś Tibie itp kroić w tym. Chociaż ogólnie protokół HTTP jest tutaj sporym narzutem.

Offline BTM

  • Użytkownik

# Kwiecień 28, 2007, 15:08:03
Jest tylko jedno *ale* - trzeba znać Flash'a ;-)

Ale spoko, API jest już gotowe w 75% więc przejście z XHTML/AJAX na Flash czy Java to już "kosmetyka" ;-)

HTTP nie nadaje się do realtime - była ( jest ) jakaś gra MMORPG we flashu, i jest ona doskonałym antyprzykładem - zbyt duży ping przy większej ilości graczy totalnie zabija - no chyba że kogoś stać na faremkę serwerów.

Offline peter

  • Użytkownik
    • BirdStorm.net browser based MMO

# Kwiecień 30, 2007, 14:02:03
Nie to jak C++  ;D, a nie jakieś PHP ;p. A tak na serio to pomysł gut, oby się nie rozpad
Wbrew temu co zdaje sie sugerowac Esidar, gre przez przegladarke tez mozna pisac w C++, od pewnego czasu usilnie staram sie udowodnic, ze nie tylko "mozna", ale ze jest to dobre i skuteczne rozwiazanie ;)
swiat stron generowanych po stronie servera nie konczy sie na PHP, C# i Javie...

Offline mINA87

  • Użytkownik

# Kwiecień 30, 2007, 14:56:19
To pokaż mi peter ile stron powstaje w oparciu o CGI :P Raczej mało.
Jakieś specjalizowane aplikacje głównie - rozkład jazyd PKP śmiga na takim dedyku, a reszta PHP, ASP, ASP.NET no i ostatnio coś się Rubinek pnie do góry.
Co do skuteczności tego, to zdrowia szczęścia pomyślności - aplikacje webowe to inny świat trochę, framework do takiego czegoś musiałby być naprawdę niezły i wspierać full operacji na stringach, konwersji, obsługę zapytań HTTP i specyficznych dla nich akcji itp itd. Web to inny świat niż aplikacje stacjonarne, wiele razy się o tym przekonałem - nie będę pisał cRPG'a w PHP'ie tak jak nie będę pisał w gołym C++ sklepu internetowego - mija się toto z celem i obie te rzeczy wymagają od języka i bibliotek innych rzeczy.

Offline Goliatus

  • Użytkownik
    • Warsztat - tworzenie gier

# Kwiecień 30, 2007, 15:18:08
mINA87: Jeśli chodzi o tworzenie stron to są dwa światy, które trzeba rozgraniczyć:
1. tworzenie stron dla kogoś
2. tworzenie stron dla siebie, na własny użytek

Jeśli robisz dla kogoś to masz to zrobić szybko, możliwie bezblędnie i z użyciem standardowych narzędzi, żeby ten odbiorca mógł w razie czego skutecznie poszukać sobie innego wykonawcy. W takich sytuacjach wszelki frameworki, gotowe bajery są jak najbardziej wskazane.

Natomiast jeśli robisz dla siebie to już zupełnie inna historia. Tutaj się liczy tylko to, żeby było zrobione zgodnie z projektem i bezblędnie, a czas jest zaniedbywalny :). Nie ma mowy o odwalaniu roboty poprzez zlepanie różnych gotowców, bo wtedy działasz na własną niekorzyść.
Poza tym jest jeszcze taka kwestia, żeby mieć jakąś satysfakcje z tego co się robi. Moim zdaniem jeśli peter zrobi coś kompletnego w C++ to będzie odczuwał ogromną satysfakcję, a już nie wspominając o tym ile się dzięki temu nauczy.
« Ostatnia zmiana: Kwiecień 30, 2007, 15:21:09 wysłana przez Goliatus »

Offline mINA87

  • Użytkownik

# Kwiecień 30, 2007, 15:42:06
I ile się namęczy :] Skończy się na tym, że na start będzie musiał skopiować połowę funkcjonalności języka PHP, później zająć się odpowiednią organizacją architektury pod kątem webowości tego itp itd.
Dla siebie można odpalić hexedita jakiegoś, tabelę opcode'ów i zacząć w tym pisać jakąś skomplikowaną aplikację, ale imho uczy to tylko wytrwałości i rzeczy raczej nie przydatnych na większą skalę. W końcu tak czy tak nie będzie potrzeby kodowania  op-code'ami większych rzeczy, więc doświadczenie się nie przyda, a gdy będzie potrzeba napisania małej wstaki, to można siedzieć nawet godzinkę nad tą tabelką op-code'ów i wklepywać mozolnie kod - potrzebna jest minimalna wiedza w tym zakresie.
//edit:
A zresztą cokolwiek.. Mam po prostu opraocwany jakiś tam pogląd na inżynierię oprogramowania, mam pwne doświadczenie w aplikacja webowych (żygać mi się nimi chce prawdę mówiąc jeśli nie chodzi o audyty) i jestem zrażony do home-made syfiaszczego kodu pisanego byle więcej, a niestety jest to masowe zjawisko nie tylko na stronkach domowych, ale część agencji interaktywnych nie ma zielonego pojęcia ani o inżynierii oprogramowania, ani o bezpieczeństwie - o niczym. Kod powstaje w ciemno i jest po prostu masakra z tym wszystkim. Dlatego mam takie a nie inne podejście do aplikacji webowych - uważam że powinni je tworzyć ludzie wykształceni, zajmujący się spory kawałek czasu general programmingiem i mający pojęcie o inżynierii oprogramowania, a wszystko to powinno powstawać w sterylnym środowisku.
« Ostatnia zmiana: Kwiecień 30, 2007, 15:47:18 wysłana przez mINA87 »

Offline Goliatus

  • Użytkownik
    • Warsztat - tworzenie gier

# Kwiecień 30, 2007, 16:25:13
Ja wyznaję taką zasadę: żeby się czegoś nauczyć to zawsze trzeba się namęczyć, a jeśli się nigdy nie namęczyłeś to znaczy, że nie wiele potrafisz i jesteś mało wartościowym programistą.
W C++/Javie/C#(ale nie żadne ServerPages) można zrobić wszystko, w sposób dla siebie najbardziej intuicyjny, a nie taki jaki narzuca konstrukcja PHP. C++ to największa kontrola, ale jednocześnie najwyższy poziom trudności - coś za coś.

Mnie PHP nie odpowiada, bo jest napisane w C w taki sposób, że ciężko jest to analizować. Przebijanie się przez kod napisany w języku, którego na codzień się nie używa nie należy do najciekawszych zajęć.

Natomiast odpowiada mi Java, bo każda funkcja(nawet ta najbardziej elementarna) jest udokumentowana w jakimś Javadoc i przeważnie kod każdej jest bajecznie zrozumiały. Gdy coś nie funkcjonuje po mojej myśli to wystarczy zrobić thread dumpa i do przyczyny błędu idzie się jak po sznurku :)

No a poza tym jest też zasadnicza różnica pomiędzy kodem strukturalno-proceduralnym a kodem obiektowym, która wypada oczywiście na korzyść tego drugiego. Zawsze, a w szczególności w przypadku gierek przez www, coś może nie działać po naszej myśli, a wtedy możliwość szybkiego przeanalizowania kodu funkcji, która jest zamieszana w buga, jest nieoceniona. PHP jest napisane w C i o łatwym i szybkim analizowaniu kodu nie ma mowy.
« Ostatnia zmiana: Kwiecień 30, 2007, 16:29:44 wysłana przez Goliatus »

Offline mINA87

  • Użytkownik

# Kwiecień 30, 2007, 16:41:48
Argument o napisaniu w C jest moim zdaniem nietrafiony. Podjęzyk wykonawczy nie ma tu akurat nic do rzecyz dopóki nie zagłębiasz się w source'y samego interpretera.
Inna sprawa to paradygmaty. W PHP 5 nie jest tak źle - normalny mechanizm obiektowy znany z C++ składnia bardzo podobna, a ponadto nie jesteś ograniczony przez sztywną kontrolę typu czy formalizm języka (to akurat jest przyczyną powstawania syfiastego i niebezpiecznego kodu, ale niestety - potężna broń w rękach głupców to zagłada ludzkości - ze wszystkiego trzeba umieć korzystać). Widziałem bardzo ładne obiektowe kody w PHP - piękny model MVC, architektura zdarzeniowa, całkiem fajny design ogólnie. Może za bardzo rozlazły i w kilku miejscach nieciekawy, ale niestety tp po prostu aplikacja webowa.
Świetnym przykładem jest kod IPB - jest genialny. MediaWiki poszło za daleko - nie idzie się w tym połapać czasem. A phpBB to już po prostu przykro mi się robi. Kod jest napisany świetnie i utrzymany bardzo ładnie, jednak ten kod strukturalno-proceduralny mnie po prostu rozbraja i zabija momentami.
Biblioteki - tutaj jest gorzej - te standardowo dostępne w PHP są czysto strukturalne (nie mniej jednak genialnie udokumentowane - jedna z lepszych dokumentacji jaką widziałem) jednak nic nie stoi na przeszkodzie w napisaniu/wykorzystaniu obiektowego framework'u sa jakieś gruszki nie gruszki itp.
Odnośnie debugowania - tu jest problem drobny tak jak mówisz. Niestety język bardzo słabo wspiera debugowanie z prawdziwego zdarzenia, pozostają Zendy itp, ale i tak z praktyki wiem że najlepiej sprawdza się hardcore-debugging w stylu
if ($_GET['debug']))
{
     print_r($rows);
}
dzięki takim hardcorowym podejściom jestem w stanie naprawdę szybko przeglądać ogromne partie rozbitego kodu i bardzo szybko je poprawiać - to już kwestia wypracowania podejścia, bo wątpię żebyś mógł tak pięknie zrzucić sobie cały wątek w środowisku uruchomieniowym już u klienta na serwie i zdebugować to lokalnie, a  debugowanie w sztucznym środowisku to trudność w odtworzeniu sytuacji występującej u klienta, co też znam z doświadczenia.
Odnośnie nauki nie mozna przesadzać - trzeba się namęczyć, ale musi być to męczenie się ukierunkowane - w końcu jeśli chcesz się nauczyć programować to nie będziesz chodził na siłownię męczyć się wyciskając ciężary na klatę :]
« Ostatnia zmiana: Kwiecień 30, 2007, 16:44:42 wysłana przez mINA87 »