Warsztat.GD

Programowanie => Językoznawstwo => Java => Wątek zaczęty przez: g[R]eK w Styczeń 15, 2006, 18:45:11

Tytuł: Java nie optymalna? (było: Co myslicie o Java jako platformie do pisania gier?)
Wiadomość wysłana przez: g[R]eK w Styczeń 15, 2006, 18:45:11
Według mnie java nie nadaje się na żaden poważniejszy projekt growy. Przykład: Eclipse :) To tylko IDE a jak się ślimaczy na szybkim kompie. Jeszcze dwa lata i wypadnie z obiegu nawet w midletach, bo komórki będą na tyle szybkie że kazda cos ala symbian będzie miała...
Sam c# to też niby 'taka java' ale ma większe wsparcie w akceleracji (managed d3d). Co z tego skoro to i tak na razie kpina - żeby napisać coś sensownego nie obejdzie się bez segmentów unsafe i imporu natywnych bibliotek windowsa - czyli zero przenośności...

Więc jeżeli chcesz pisać grę, to java wydaje mi się najmniej sensownym podejściem. Co się uzyska? Więcej platform uruchomieniowych? SDL jeżeli coś i tak je pokrywa i jako c++ jest szybszy. A java naprawde zarzyna słabsze komputery... Jeżeli nie - to programik praktycznie nie ma kodu...

Eclipse to nie IDE, a napewno nie w klasycznym tego slowa znaczeniu. Same Eclipse (precyzyjniej to Eclipse Platform) to jedynie framework ktory definiuje uslugi, i specyfikacje wspolne dla wszystkich integrowanych projektow. Dopiero JDT jest konkretna realizacja IDE, podobnie jak CDT. Eclipse 3.1 na najnowszej Javie dziala mi b. dobrze, a moja maszyna nie nalezy do szczegolnie szybkich (512mb ddr, athlon 1.7), oczywiscie troche bawilem sie z konfiguracja maszyny wirtualnej. Eclipse to platforma na ktorej mozna zbudowac aplikacje RCP, wtyczki do konkretnego jezyka, czy nawet do edycji WIKI. Wewnetrzna architektura oparta na OSGI pozwala na integracje tych samych bibliotek o roznych wersjach bez ryzyka destabilizacji jakiejkolwiek czesci poprzez realizacje postulatu pelnej izolacji.

Eclipse to zaawansowana platforma, ktorej wlasciwosci sa okupione wyzszymi wymaganiami, jednak niektorzy uwazaja ze warto zaplacic taka cene. Czy jest inna platforma, np napisana w C++/Delphi ktora realizuje tak bardzo rozproszony model jak Eclipse?

Java moze zarznac komputer tak samo jak moze to zrobic zle napisany program w C++ (o co latwiej niz w javie), mysle ze wazniejsza jest kwestia wlasnej wiedzy niz wyboru pomiedzy C++ a Java, jak zwykle zreszta.
Tytuł: Odp: Co myslicie o Java jako platformie do pisania gier?
Wiadomość wysłana przez: Gloggie w Styczeń 15, 2006, 19:14:46
Bede brzydko cytował :)

> moja maszyna nie nalezy do szczegolnie szybkich (512mb ddr, athlon 1.7),
lol, to co ty uważasz za szybką maszynę? Ja 3 miesiące temu mialem jeszcze PII 350....

>Eclipse to platforma na ktorej mozna zbudowac aplikacje RCP, wtyczki do konkretnego jezyka, czy nawet do edycji WIKI. Wewnetrzna
>architektura oparta na OSGI pozwala na integracje tych samych bibliotek o roznych wersjach bez ryzyka destabilizacji jakiejkolwiek czesci
>poprzez realizacje postulatu pelnej izolacji.

Co mnie obchodzi co to może? I tak jeżeli piszę coś w c++ to aktywowany jest widok dla c++ i raczej nie chodzą w tle parsery z javy, wiki, etc? Zresztą po co by miały? Zatem logicznie myśląc, jeżeli widok c++ ładuje tylko wtyczki i rozszerzenia dla c++, to dlaczego mimo to całość jest taka wolna? Bo wszystko chodzi w javie...


//EDIT: (za szybko wysłałem :)

>Java moze zarznac komputer tak samo jak moze to zrobic zle napisany program w C++ (o co latwiej niz w javie), mysle ze wazniejsza
>jest kwestia wlasnej wiedzy niz wyboru pomiedzy C++ a Java, jak zwykle zreszta.

Dobrze napisany program w javie może zarżnąć komputer. Dobrze napisany program w c++ tego nie zrobi (na tym samym komputerze)

>Eclipse to zaawansowana platforma, ktorej wlasciwosci sa okupione wyzszymi wymaganiami, jednak niektorzy uwazaja ze warto
>zaplacic taka cene. Czy jest inna platforma, np napisana w C++/Delphi ktora realizuje tak bardzo rozproszony model jak Eclipse?

Nie wiem. Najbliżej będzie VS, ale ono wspiera wyłącznie jedynie słuszne jęzki ;)
Tytuł: Odp: Co myslicie o Java jako platformie do pisania gier?
Wiadomość wysłana przez: g[R]eK w Styczeń 15, 2006, 19:46:57
Bede brzydko cytował :)

> moja maszyna nie nalezy do szczegolnie szybkich (512mb ddr, athlon 1.7),
lol, to co ty uważasz za szybką maszynę? Ja 3 miesiące temu mialem jeszcze PII 350....

>Eclipse to platforma na ktorej mozna zbudowac aplikacje RCP, wtyczki do konkretnego jezyka, czy nawet do edycji WIKI. Wewnetrzna
>architektura oparta na OSGI pozwala na integracje tych samych bibliotek o roznych wersjach bez ryzyka destabilizacji jakiejkolwiek czesci
>poprzez realizacje postulatu pelnej izolacji.

Co mnie obchodzi co to może? I tak jeżeli piszę coś w c++ to aktywowany jest widok dla c++ i raczej nie chodzą w tle parsery z javy, wiki, etc? Zresztą po co by miały? Zatem logicznie myśląc, jeżeli widok c++ ładuje tylko wtyczki i rozszerzenia dla c++, to dlaczego mimo to całość jest taka wolna? Bo wszystko chodzi w javie...

1. Czy wolno Ci dziala na poczatku? Tzn gdy uzywasz jakiejs funkcji 2 raz to tez wolno? Bo jesli tylko za pierwszym razem to wynika z tego, ze java obsluguje lazy-loading
2. Czy masz najnowsza maszyne wirtualna javy, ODPOWIEDNIO SKONFIGUROWANA?
3. Ty chyba nie rozumiesz za bardzo budowy Eclipse, cala architektura, uslugi pozwalajace na wykorzystywanie wielu wtyczek sa zaladowane nawet wtedy gdy korzystasz z jednej. Eclipse ma wlasne biblioteki od GUI itd. To wszystko po, zeby bylo przenosne i ladnie wygladalo na kazdej platformie. Przenosnosc zawsze powoduje gorsze wykorzystanie specyficznych dla danego systemu wlasciwosci, dlatego rowniez np Firefox pozera troche za duzo RAM-u, ale to cena jaka placimy za to, ze mozna go swobodnie uruchamiac na Linuxie. Dla Ciebie byc moze to nie jest potrzebne, dlatego uzyj VS. Dla mnie okazuje sie to b. pomocne i dlatego uzywam Eclipse.

Wracajac do glownego tematu, w programowaniu gier mozna darowac sobie tak rozproszony model programowania, mozna sobie darowac RCP i nagle sie okaze, ze narzut nie jest juz tak wielki.
Tytuł: Odp: Co myslicie o Java jako platformie do pisania gier?
Wiadomość wysłana przez: Gloggie w Styczeń 15, 2006, 20:43:29
Żeby zakończyć ten radosny :) offtopic:

1) każdy obecny system operacyjny nie ładuje żadnej binarki exe 10MB na jeden raz tylko fragment i uruchamia, a jak potrzeba resztę to sobie doładowuje w locie. Java do tego dodaje jeszcze kompilację.

2) na moim starym p350 niewazne jak dobrze skonfigurowana maszyna wirtualna byłaby za wolna....

3) to że wtyczki są załadowane nie oznacza że są uruchomione i zajmują procesor.

Konkludując: ja nie polecam javy do pisania gier.

A dyskusję na temat Eclipse można przenieść na nowy wąek :)
Tytuł: Odp: Co myslicie o Java jako platformie do pisania gier?
Wiadomość wysłana przez: Krzysiek K. w Styczeń 15, 2006, 21:06:48
Cytuj
Przykład: Eclipse To tylko IDE a jak się ślimaczy na szybkim kompie.
Mam szybkiego kompa i mi się nie ślimaczy ani trochę (chyba że masz nieco przestarzałą definicję "szybkiego kompa"). :)

Cytuj
Sam c# to też niby 'taka java' ale ma większe wsparcie w akceleracji (managed d3d).
W Javie morzesz korzystać z OpenGL.

Cytuj
Co z tego skoro to i tak na razie kpina - żeby napisać coś sensownego nie obejdzie się bez segmentów unsafe i imporu natywnych bibliotek windowsa - czyli zero przenośności...
Tutaj musiałbyś już z Ayufanem pogadać, ale wątpię, żeby musiał używać jakichś segmentów unsafe. No, chyba że uważasz, że to, co zaprezentował na TGK2 nie było sensowne. :)

Cytuj
c++ jest szybszy
Szybkość działania ma coraz mniejsze znaczenie. Najważniejsza jest wygoda użytkowania, a te 10% wydajności to naprawdę mały koszt.

Cytuj
> moja maszyna nie nalezy do szczegolnie szybkich (512mb ddr, athlon 1.7),
lol, to co ty uważasz za szybką maszynę? Ja 3 miesiące temu mialem jeszcze PII 350....
To potwierdza moją tezę o Twojej definicji "szybkiej maszyny". ;)

Cytuj
Dobrze napisany program w javie może zarżnąć komputer.
Żaden program, który jest dobrze napisany nie zarżnie komputera, niezależnie od użytego języka.

Cytuj
1) każdy obecny system operacyjny nie ładuje żadnej binarki exe 10MB na jeden raz tylko fragment i uruchamia, a jak potrzeba resztę to sobie doładowuje w locie. Java do tego dodaje jeszcze kompilację.
Java jest kompilowana do bytecode'u, więc nie wymaga żadnej kompilacji, a jedynie załadowania runtime'u. W zasadzie to gdy używam Eclipse to wygląda to tak, jakby Java nie wymagała kompilacji wogóle - wciskam Run i po prostu się uruchamia (kompiluje w tle, a wszystkie błędy po prostu podkreśla na czerwono w edytorze).

Cytuj
2) na moim starym p350 niewazne jak dobrze skonfigurowana maszyna wirtualna byłaby za wolna....
Bo nikt dzisiaj nie myśli o tym, żeby to działało na takich maszynach.
Tytuł: Odp: Co myslicie o Java jako platformie do pisania gier?
Wiadomość wysłana przez: Gloggie w Styczeń 15, 2006, 22:28:49
Nie traćmy z oczu głównego zagadnienia: java w pisaniu gier.

>Szybkość działania ma coraz mniejsze znaczenie. Najważniejsza jest wygoda użytkowania, a te 10% wydajności to naprawdę mały koszt.

buaha - powiedz to komuś kto kupił rok temu komputer i nie może sobie dzisiaj pograć w cośtam (np. FEAR) bo mu wolno działa... No ale programiście się łatwiej pisało....

>Żaden program, który jest dobrze napisany nie zarżnie komputera, niezależnie od użytego języka.

Bzdura. Uruchom te cośtam ( FEAR ) na 3GHz i chodzi... Uruchom na 1GHz i... nie chodzi... Źle napisany? Dlaczego - u mnie działa płynnie... Teraz takie cośtam napisane w javie: 3GHz: nie chodzi... 4GHz: nie chodzi... (zmyślam dla przykładu :P )

>Java jest kompilowana do bytecode'u, więc nie wymaga żadnej kompilacji, a jedynie załadowania runtime'u. W zasadzie to gdy używam
>Eclipse to wygląda to tak, jakby Java nie wymagała kompilacji wogóle - wciskam Run i po prostu się uruchamia (kompiluje w tle, a
>wszystkie błędy po prostu podkreśla na czerwono w edytorze).

Nieprawda. Dawniej java była wyłącznie interpretowana. Dzisiaj może być również kompilowana na natywny kod maszyny na której ją uruchomiono. Czyli musi się to odbywać w momencie uruchomienia = podwójna kompilacja.
No i małe programiki piszesz skoro kompilacja nic nie trwa...

>Bo nikt dzisiaj nie myśli o tym, żeby to działało na takich maszynach.
Dzisiaj 350 to rzeczywiście archaiczny sprzęt. Ale coś poniżej 1GHz to jeszcze jakoś działa. A Eclipse raczej na czymś takim nie pójdzie (przy większym projekcie)

Swoją drogą jak ktoś ma stary sprzęt (jakies p200) to może spróbować odpalić Q2 w C oraz C#. Ciekawe czy C# pójdzie...
Tytuł: Odp: Co myslicie o Java jako platformie do pisania gier?
Wiadomość wysłana przez: Kamil Trzciński w Styczeń 15, 2006, 23:10:20
> Swoją drogą jak ktoś ma stary sprzęt (jakies p200) to może spróbować odpalić Q2 w C oraz C#. Ciekawe czy C# pójdzie...

pojdzie... z prostej przyczyny kod jest JITowany
Tytuł: Odp: Java nie optymalna? (było: Co myslicie o Java jako platformie do pisania gi
Wiadomość wysłana przez: Krzysiek K. w Styczeń 16, 2006, 00:27:00
Cytuj
buaha - powiedz to komuś kto kupił rok temu komputer i nie może sobie dzisiaj pograć w cośtam (np. FEAR) bo mu wolno działa... No ale programiście się łatwiej pisało....
Powiem - niech sobie kupi lepszy komputer. Pozatym akurat tak się składa, że jakieś półtora roku temu kupiłem sobie nowy komputer (P4 HT 3.0GHz + 1GB RAM) i do tej pory wszystko chodzi mi świetnie, więc aż tak źle nie jest. Pisząc jakikolwiek program trzeba przyjąć jakieś minimalne wymagania - im one będą niższe, tym więcej użytkowników będzie w stanie korzystać z programu, ale program będzie droższy (większy nakład pracy), więc trzeba znaleźć optymalny punkt i po prostu powiedzieć "do widzenia" (albo raczej "do upgrade") pewnej grupie użytkowników. Sad but true, ale takie są prawa ekonomii.

Cytuj
Teraz takie cośtam napisane w javie: 3GHz: nie chodzi... 4GHz: nie chodzi... (zmyślam dla przykładu )
Są programy napisane w Javie, które chodzą płynnie, więc nie zmyślaj. W Javie da się napisać porządne oprogramowanie i niezależnie jak bardzo niecierpisz tego języka, musisz się z tym pogodzić.

Cytuj
Nieprawda. Dawniej java była wyłącznie interpretowana.
A czy to ważne, co było dawniej? :P

Cytuj
Dzisiaj może być również kompilowana na natywny kod maszyny na której ją uruchomiono. Czyli musi się to odbywać w momencie uruchomienia = podwójna kompilacja.
W jednym zdaniu piszesz, że może być rekompilowana, a w drugim że musi - ja tu widzę pewną sprzeczność.

Cytuj
No i małe programiki piszesz skoro kompilacja nic nie trwa...
Nie powiedziałem, że nic nie trwa. Trwa, ale odbywa się to w trakcie pisania, więc jak chcę coś uruchomić, to nie muszę wogóle czekać.

Cytuj
>Bo nikt dzisiaj nie myśli o tym, żeby to działało na takich maszynach.
Dzisiaj 350 to rzeczywiście archaiczny sprzęt. Ale coś poniżej 1GHz to jeszcze jakoś działa. A Eclipse raczej na czymś takim nie pójdzie (przy większym projekcie)
Nie wiem, jak by działało Eclipse na 1GHz, bo nie sprawdzałem. Ty pewnie też nie, więc zostawmy suche rozważania. :)

Cytuj
Swoją drogą jak ktoś ma stary sprzęt (jakies p200) to może spróbować odpalić Q2 w C oraz C#. Ciekawe czy C# pójdzie...
Pewnie nie pójdzie, ale to wina starego sprzętu, nie C#. C# ma w założeniu ułatwiać życie programiście, a nie działać na starym sprzęcie (znowu przyczyny ekonomiczne).


Ogólnie mówiąc, dzisiaj po prostu nie opłaca się pisać optymalnie (poza zastosowaniami medycznymi, wojskowymi, itp.). Im lepszy software ma powstać, tym więcej czasu programista musi nad nim spędzić i tym więcej to kosztuje.
Tytuł: Odp: Java nie optymalna? (było: Co myslicie o Java jako platformie do pisania gi
Wiadomość wysłana przez: Kamil Trzciński w Styczeń 16, 2006, 01:11:15
buaha - powiedz to komuś kto kupił rok temu komputer i nie może sobie dzisiaj pograć w cośtam (np. FEAR) bo mu wolno działa... No ale programiście się łatwiej pisało...

Jesli chodzi o FEARa ta gra nawet na najlepszych maszynach na wyzszych detalach potrafii sie przyciac, ja kupilem komputer 3lata temu i jakos nie narzekam na jego szybkosc :)

Nieprawda. Dawniej java była wyłącznie interpretowana. Dzisiaj może być również kompilowana na natywny kod maszyny na której ją uruchomiono. Czyli musi się to odbywać w momencie uruchomienia = podwójna kompilacja.
No i małe programiki piszesz skoro kompilacja nic nie trwa...

Tylko zauwaz ze zarowno w przypadku C# i Javy, kompilacja duzych projektow trwa doslownie chwile, czego nie mozna powiedziec o np. C++, ktora potrafi ciagnac sie godzinami, a jezeli chodzi o JIT, to rowniez trwa to niezauwazalny ulamek sekundy, a jesli naprawde Ci to przeszkadza to do platformy .NET jest odpowiednie narzedzie, ktore sie zwie "ngen", potrafi ono przekompilowac kod MSIL do assemblera, tak aby "ta pozona kompilacja" nie miała miejsca, zreszta jak juz ktos tu nadmienil w Javie jak i C# nie jest az tak wolna, jak wszyscy uwazaja, ale napewno skraca czas tworzenia aplikacji, bo powiedzmy to tak, 'nie trzeba wymyslac kola na nowo', bo bogactwo bibliotek i narzedzi dostepnych do tych jezykow jest niewyobrazalna, a ilosc problemow, ktore powstaja podczas pisania kodu jest napewno mniejsza (wycieki pamieci itd.).
Tytuł: Odp: Java nie optymalna? (było: Co myslicie o Java jako platformie do pisania gi
Wiadomość wysłana przez: Kamil w Styczeń 16, 2006, 15:11:59
To jeszcze ja powiem ze na slabym komputerku okolo 600 Mhz, z karta ktora akceleratorem graficznym nie byla, gra napisana w C++ przy uzyciu SDL (tryb czystego sdl bez uzycia OpenGL do 2D) osiagała 2 fps i NIE DALO sie grac, kamienie czy ludzik ruszaly sie laskawie po uplywie kilku sekund..  ta sama gra tylko napisana w java i ten sam komputer i gra "smiga" (niestety w wersji javowej nie mam miernika fpsow by podac konkretnie jak szybko chodzilo ale moge smialo powiedziec ze spokojnie dalo sie grac)..  wiec jesli chodzi o jave do gier to realny projekt mi pokazal ze nie jest taka zla :)
Tytuł: Odp: Java nie optymalna? (było: Co myslicie o Java jako platformie do pisania gi
Wiadomość wysłana przez: santiago w Styczeń 16, 2006, 20:54:18
Kamil: no to wersja w C++ byla, delikatnie mowiac, kiepsko napisana:P

bo jednak Java jest wolniejsza od C++ i bardziej pamieciozerna... chociaz czasem trudno porownywac, bo troche inaczej sie pisze w jednym i drugim jezyku. Natomiast te roznice powoli przestaja miec znaczenie i pewnie niedlugo zaczna sie pojawiac gry pisane calkowicie w Javie (takie z gornej polki). Java ma sporo zalet w stosunku do C++, miedzy innymi krotszy czas pisania kodu, GC etc. a to daje duza redukcje kosztow (miesiac pracy programisty kosztuje wiecej niz wysokiej klasy komputer, nizaleznie czy przez ten czas programista szuka bugow czy robi cos konstruktywnego)

Tytuł: Odp: Java nie optymalna? (było: Co myslicie o Java jako platformie do pisania gi
Wiadomość wysłana przez: nadult w Styczeń 16, 2006, 21:10:31
Nie zapominajcie, że są też Garbage Collectory do C/C++.
Tytuł: Odp: Java nie optymalna? (było: Co myslicie o Java jako platformie do pisania gi
Wiadomość wysłana przez: Kamil w Styczeń 16, 2006, 21:55:33
Kamil: no to wersja w C++ byla, delikatnie mowiac, kiepsko napisana:P

Z tym bym polemizowal.. wersja C++ byla pisana tak jak typowe gry 3d czyli ze petla glowna renderuje obraz ile sie da, przy srednim sprzecie z akceleracja graficzna jest to normalne podejscie dajace dobre rezutlaty, Java wymusil (przez uzycie swing'a) model oparty na zdarzeniach czyli ze odrysowywanie okna jest tylko w momecie gdy cos sie zmieni, podejrzewam ze to odciazylo znacznie system.
Tytuł: Odp: Java nie optymalna? (było: Co myslicie o Java jako platformie do pisania gier?)
Wiadomość wysłana przez: Kamil Trzciński w Styczeń 16, 2006, 22:20:46
Nie zapominajcie, że są też Garbage Collectory do C/C++.

Tylko gorzej z ich szybkoscia (ja mowie o GC z prawdziwego zdarzenia, a nie zliczaniu referencji, bo to tez mozna nazwac odsmiecaniem ;]), w przypadku Javy i innych jezykow z bogatym opisem kodu, takie mechanizmy chodza znacznie, ale to znacznie szybciej, niz odpowiedniki dla C/C++ ;]

Pozdrawiam ayufan.
Tytuł: Odp: Java nie optymalna? (było: Co myslicie o Java jako platformie do pisania gier?)
Wiadomość wysłana przez: bies w Styczeń 16, 2006, 23:25:50
Zgadza się. Tylko, że klasa problemów do których GC się przydaje jest bardzo wąska (grafy i... może jeszcze grafy). W każdym innym przypadku GC albo jest równie skuteczny jak zliczanie referencji albo wręcz przeszkadza. Ot jeśli chcesz zamknąć gniazdko sieciowe w przypadku wystąpienia wyjątku - C++ z RAII zrobi to automatycznie (destruktor) a z GC musisz to dobić mniej lub bardziej ręcznie (,,Dispose pattern'' w Javie, using w C#).

A Java najwięcej ma do zaoferowania w aplikacjach server-side i bazach danych. W zastosowaniach bardziej ogólnych Java staje się uciążliwa (np. co jest wygodniejsze biblioteka matematyczna w C++ czy w Jave (hint: przeciążanie operatorów)).

Co nie znaczy, że nie można jej użyć do gier - wspomniany Chrome jest dobrym przykładem. Kwestia gustu. A jak będzie zbyt wolna to zawsze można użyć natywnej biblioteki (tak robi Eclipse, na takiej zasadzie jest dostęp do OpenGL, javax.comm i spora liczba innych rozwiązań).

No i jeszcze .03 PLN nt. JIT i kompilacji w ogóle. JIT ma ogromny potencjał. Można bowiem wyobrazić sobie, że kompilacja jest optymalizowana wynikami konkretnych uruchomień programu (wyłapywane są najczęściej używane ścieżki w rzeczywistym użyciu) - ot taki doskonały profiler. Ale
a) jeszcze o takich zabawkach nie słychać,
b) VM daje dość spory narzut na wykonanie (a co więcej, ostatnio słyszałem opinię, że VM Javy jest raczej słabo do Javy przystosowana - raczej pasuje do Smalltalka - ciekaw jestem jak to rzeczywiście wygląda).

Kamil: czyli wersja dla C++ była kiepsko napisana. W 2D bez akceleracji używa się algorytmów uaktualniających tylko zmieniony obszar. Od początku tak było i nie wiele się w tej kwestii zmieniło.

PS. Eclipse 3.1.1-linux-motif (JDT) na Celku 1.1 GHz działało znośnie, tj. dało się pracować. Inna sprawa, że i tak wolę ViMa. :D

PS2. A propos GC dla C++ - ostatnio wyszła nowa wersja Smieciucha.
Tytuł: Odp: Java nie optymalna? (było: Co myslicie o Java jako platformie do pisania gi
Wiadomość wysłana przez: zenek_tm w Styczeń 16, 2006, 23:39:02
Helo helo :) i do sedna.

Cytuj
Zgadza się. Tylko, że klasa problemów do których GC się przydaje jest bardzo wąska (grafy i... może jeszcze grafy). W każdym innym przypadku GC albo jest równie skuteczny jak zliczanie referencji albo wręcz przeszkadza. Ot jeśli chcesz zamknąć gniazdko sieciowe w przypadku wystąpienia wyjątku - C++ z RAII zrobi to automatycznie (destruktor) a z GC musisz to dobić mniej lub bardziej ręcznie (,,Dispose pattern'' w Javie, using w C#).

Akurat, zeby zamknac gnizado sieciowe, wywolujesz gniazdo.close(); i zapominasz. Zreszta operacje na sockecie zwracaja wyjatki, ktore trzeba przechwycic. Nawet jezeli nie chcesz obslugiwac danego wyjatku, to i tak dajesz try {} finally { socket.close(); } i zapominasz o problemie. I co to jest ten "Dispose pattern"?

Cytuj
No i jeszcze .03 PLN nt. JIT i kompilacji w ogóle. JIT ma ogromny potencjał. Można bowiem wyobrazić sobie, że kompilacja jest optymalizowana wynikami konkretnych uruchomień programu (wyłapywane są najczęściej używane ścieżki w rzeczywistym użyciu) - ot taki doskonały profiler. Ale
a) jeszcze o takich zabawkach nie słychać,
Zapomniales rowniez o kompilacji pod dany procesor (uzycie jezeli jest dostepne i ma sens SSE2 i SSE zamiast FPU czy MMX zamiast czegos tam :) ). Aczkolwiek zarowno .NET jak i JVM SUNa juz to robia. Moze to dawac spore roznice w czasach wykonania w porownaniu nawet do ubostwianego przez wielu C++.
Tytuł: Odp: Java nie optymalna? (było: Co myslicie o Java jako platformie do pisania gier?)
Wiadomość wysłana przez: Kamil Trzciński w Styczeń 17, 2006, 00:00:38
Akurat, zeby zamknac gnizado sieciowe, wywolujesz gniazdo.close(); i zapominasz. Zreszta operacje na sockecie zwracaja wyjatki, ktore trzeba przechwycic. Nawet jezeli nie chcesz obslugiwac danego wyjatku, to i tak dajesz try {} finally { socket.close(); } i zapominasz o problemie. I co to jest ten "Dispose pattern"?

Taki schemat własnie realizuje "using" w C#, a ten Dispose pattern jest to specjalny interfejs, ktory jest przeladowany w klasie, a metoda 'Dispose' tego interfejsu sluzy do 'recznego' niszczenia obiektu, cos jak socket.close().
Tytuł: Odp: Java nie optymalna? (było: Co myslicie o Java jako platformie do pisania gi
Wiadomość wysłana przez: bies w Styczeń 17, 2006, 00:03:38
Cytat: zenek_tm
Akurat, zeby zamknac gnizado sieciowe, wywolujesz gniazdo.close(); i zapominasz. Zreszta operacje na sockecie zwracaja wyjatki, ktore trzeba przechwycic. Nawet jezeli nie chcesz obslugiwac danego wyjatku, to i tak dajesz try {} finally { socket.close(); } i zapominasz o problemie. I co to jest ten "Dispose pattern"?
Link do poczytania: http://blogs.msdn.com/hsutter/archive/2004/07/31/203137.aspx
Trick polega na tym, że w dobrze zaprojektowanym programie w C++ try {...} catch (...) musisz używać bardzo rzadko (główna pętla wątku (programu), punkty krańcowe bibliotek, granice podsystemów). W Javie tak nie możesz, bo każdy lokalny rzadki zasób musi być zwolniony ręcznie.

Cytat: zenek_tm
Zapomniales rowniez o kompilacji pod dany procesor (uzycie jezeli jest dostepne i ma sens SSE2 i SSE zamiast FPU czy MMX zamiast czegos tam :) ). Aczkolwiek zarowno .NET jak i JVM SUNa juz to robia. Moze to dawac spore roznice w czasach wykonania w porownaniu nawet do ubostwianego przez wielu C++.
Nie wiem czy wiesz, ale ja mam system i większość programów skompilowane pod mój procesor. I nie jest to system napisany w Javie. ;D
Tytuł: Odp: Java nie optymalna? (było: Co myslicie o Java jako platformie do pisania gi
Wiadomość wysłana przez: Kamil Trzciński w Styczeń 17, 2006, 00:20:45
bies, ale ile ta kompilacja trwala :) od tego zacznijmy, a kod jest JITowany mozna powiedziec w 'locie' , oczywiscie jakosc takiej przerobki jest znosna, np. inline'owanie nie jest tak rozbudowane jak w C++ (ogolnie optymilzacje kodu), w sumie mogli by dodac jakas opcje, aby mozna bylo sobie wlaczyc porzadne inline'owanie :D, ale i tak ile JITer robi optymilizacji w tak krotkim czasie :)
Tytuł: Odp: Java nie optymalna? (było: Co myslicie o Java jako platformie do pisania gier?)
Wiadomość wysłana przez: bies w Styczeń 17, 2006, 01:11:09
Ayufan: a nie mam pojęcia, przecież nie robiłem tego sam - od tego są buildery dystrybucji. ;D (Nie, nie rozmawiajmy o Gentoo).

Poza tym, ja się zgadzam, że JITC to duże pole do popisu dla języków klasy Javy. Również dlatego, że języki te zadowalają się prostszą konstrukcją (wyobraź sobie JITC dla szablonów C++ ;D ). Mimo wszystko, wraz z lepszymi optymalizacjami czas takiej kompilacji będzie rósł. I jak sądzę zarówno Sun jak i MS wybrały drogę w kierunku większej integracji VM z systemem (tak aby JITC lepiej wykorzystywał idle time procesora).

Niemniej jednak uważam, że tak drastyczne uproszczenie języka jest zbyt dużą ceną. Nie wnikając już czy chodziło o względy techniczne (obiekty automatyczne i destruktory razem z GC) czy o marketingowe (przeciążanie operatorów i wielodziedziczenie jest ,,takie trudne do zrozumienia'').

Aha, piszę w Javie na co dzień i najbardziej podobają mi się anonimowe klasy. :D
Tytuł: Odp: Java nie optymalna? (było: Co myslicie o Java jako platformie do pisania gi
Wiadomość wysłana przez: zenek_tm w Styczeń 17, 2006, 08:18:47
Cytuj
Poza tym, ja się zgadzam, że JITC to duże pole do popisu dla języków klasy Javy. Również dlatego, że języki te zadowalają się prostszą konstrukcją (wyobraź sobie JITC dla szablonów C++ Grin ). Mimo wszystko, wraz z lepszymi optymalizacjami czas takiej kompilacji będzie rósł. I jak sądzę zarówno Sun jak i MS wybrały drogę w kierunku większej integracji VM z systemem (tak aby JITC lepiej wykorzystywał idle time procesora).
Zarowno Java jak i C# maja juz od pewnego czasu szablony i jakos nie wplynelo to zbytnio na czasy JITowania.
Tytuł: Odp: Java nie optymalna? (było: Co myslicie o Java jako platformie do pisania gi
Wiadomość wysłana przez: bies w Styczeń 17, 2006, 13:18:24
Cytat: zenek_tm
Zarowno Java jak i C# maja juz od pewnego czasu szablony i jakos nie wplynelo to zbytnio na czasy JITowania.
Albo nie znasz szablonów C++ albo Javy (C#). Szablony w Javie to tylko ładne opakowanie (lukier syntaktyczny) na rzutowanie. Bardziej przypominają makra działające na void * (złożonością, funkcjonalnie dodają do języka lepszy system typów, głównie w kolekcjach). W C++ szablony to pełnowartościowy język (meta)programowania.

Trochę inaczej ma się sprawa w C#. Tam, zważywszy na to, że jest to młody język i nie używany naprawdę na serio, MS mógł wprowadzić zmianę do VM i zapisać informacje o typie szablonu. Z resztą, poczytaj sobie. [1]

Aha, należy brać poprawkę, że jest to wywiad z jednym z twórców C#. Bardzo ciekawy jest np. wątek o tym, że C++ ma słabe typowanie szablonów (w przeciwieństwie do C#). Po czym autor stwierdza, że system typów w szablonach C++ jest tak skomplikowany i ma tak duże możliwości, że zdecydowali się na coś łatwiejszego. Aha, IMO facet ma średnią wiedzę nt. szablonów C++. Np. warunki brzegowe (constraints) dla typów szablonów tworzy się dość łatwo. [2]

W każdym bądź razie ani Java ani C# nie zbliżają się nawet do możliwości szablonów C++.

[1] http://www.artima.com/intv/generics.html
[2] http://www.research.att.com/~bs/bs_faq2.html#constraints
Tytuł: Odp: Java nie optymalna? (było: Co myslicie o Java jako platformie do pisania gier?)
Wiadomość wysłana przez: Xion w Styczeń 20, 2006, 13:09:09
bies: Coś w tym słabym typowaniu szablonów w C++ musi być, skoro wedle niedawno artykułu artykułu Stroustropa pewna forma constraintsów jest rozważana jako ważne uzupełnienie w C++0x. Oczywiście chodzi raczej o typowanie typów niż predykaty podobne do tych podanych przez ciebie w [2].
Tytuł: Odp: Java nie optymalna? (było: Co myslicie o Java jako platformie do pisania gier?)
Wiadomość wysłana przez: bies w Styczeń 20, 2006, 14:57:35
Xion, masz na myśli artykuł ,,A Brief Look at C++0x'' [1]? A jeśli tak to czy chodzi Ci o konstrukcję:template<class T> using Vec = vector<T,My_alloc<T>>;Ona nie zwiększa bezpieczeństwa typów, dodaje tylko alias szablonowy. Tak jak typedef dodaje alias dla typów nieszablonowych. Z resztą powszechnie nazywa się taką konstrukcję właśnie ,,template typedef'' ale ze względów praktycznych (kompilatory C++ i tak mają mocno przechlapane, nie potrzeba dokładać im dodatkowej pracy w rozróżnianiu czy ten typedef dotyczy szablonów czy nie) zdecydowano się na using.

No chyba, że piszesz o jakimś inny artykule. Jeśli tak podaj link, chętnie przeczytam.

[1] http://www.artima.com/cppsource/cpp0x.html