Język programowania do tworzenia aplikacji sieciowych

0

Witam,
chciałby zająć się tworzeniem gier MMORPG. Oczywiście wiem że samemu nigdy nie dorównam takim grom jak World of Warcraft czy choćby wyśmiewana tibia. Po prostu chciałbym popróbować z takimi rzeczami i stworzyć na początek coś w stylu OGame.
Jestem webdeveloperem, więc wiem jak zrobić coś takiego używając języków skryptoywych. Ale chciałbym spróbować czegoś nowego. Wykorzystując architekturę klient-serwer chcę stworzyć aplikację, która komunikowałaby się z serwerem i wysyłała/odbierała od niego dane.
Zastanawiam się jakiego języka programowania możnaby do tego użyć. Kiedyś bawiłem się w Delphi i znam podstawy. Ale bez żadnego faworyzowania: Czy któryś język szczególnie dobrze obsługuje pracę w sieci?

0
Asmox napisał(a)

Czy któryś język szczególnie dobrze obsługuje pracę w sieci?

Tak naprawde nie ma znaczenia ktory jezyk uzyjesz wszystkie i tak po skompilowaniu odwoluja sie do systemowych bibliotek obslugujacych metody sieciowe.

Jak w windows to sa to wywolania winsocks jak jadro linuxa lub unixa to syscall etc.

http://tangentsoft.net/wskfaq/

Jesli chcesz uzyc jakichs metod obiektowych to indy delphi:

INDY

albo uzyj elementow network z frameworka qt4 jezyka cpp:

http://qt.nokia.com/doc/4.0/qtnetwork.html

(jesli gra bedzie komercyjna, bedziesz musial miec licencje na tworzenie komercyjnego softu w takowych srodowiskach, qt, delphi, RAD IDE etc)

Jezyk nie ma znaczenia jak pisalem wyzej wszystko opiewa na standardowych funkcjach systemu.

0

Wszystkie popularne języki obsługują sieć, ale nie wszystkie w równym stopniu usprawniają pisanie bezpiecznych programów, i nie wszystkie zapewniają podobny poziom wydajności. Jeśli ta gra ma mieć dużo użytkowników, to musisz zadbać o wydajność i skalowalność - tutaj języki dynamicznie typowane zbyt dobrze sobie nie radzą w porównaniu z językami statycznie typowanymi, kompilowanymi do kodu maszynowego. Czyli zostają w zasadzie: C, C++, Java, C#, D, Delphi. Teraz kwestia bezpieczeństwa: nie chiałbyś aby przez głupi buffer-overflow ktoś włamał się na serwer przez Twoją aplikację. I tak pozostają Java i C#. :P

I wygląda na to, że jest to niezły wybór, skoro duże MMORPGi są pisane m.in. w tych językach. Np. PuzzlePirates, Runescape, SecondLife, no i nasze dzieło czyli Witcher Versus.

0

Zgodzę się że wybór języka jest dowolny, ale nie powiedziałbym że zostają Ci jedynie Java i C# (np. zastosowanie C++ jest bardziej wymagające, lecz daje więcej możliwości i zdecydowanie wybierając C++ nie jesteś skazany na "buffer overflow" ;)).

0

Javę sobie odpuszczę, bo wolno działa i jej zadaniem jest raczej przenośność i multiplatformowość niż wydajność. Czyli C# jest trochę bardziej "przystosowany" do gier, mówisz? No dobra, chyba się za niego zabiorę i powolutku może uda mi się zrobić coś fajnego :D. OK, a czy są jakieś dobre środowiska programistyczne ? Najlepiej, żeby były darmowe, ale jeśli nie ma darmowych to.... trudno :-D
A tak BTW: Zastanawiam się, czy można by w pewnym sensie przenieść stronę internetową do takiej aplikacji, która łączyłaby się z serwerem i pobierała dane do strony jak newsy np. a reszta, która nie ulegała by zmianie zostawały na kompie użytkownika.

0

P.S.: Bo w międzyczasie jak ja pisałem to kolega wyżej się dopisał: no to może C++

0

Jeżeli c# to polecam microsoft visual studio - jest zarówno wersja darmowa jak i komercyjna. Jeżeli jesteś studentem to najprawdopodobniej(o ile twoja uczelnia "dogadała się z ms) możesz używać wersji komercyjnej za free :)

0

jesli wybierzez c# to tak jak ktos nademna napisal masz VS + XNA game studio mozesz sobie sciagnac, albo obejrzec w necie przyklady do tego sa starter kity gdzie jest wypuszczona jakas gra np wyscigi samochodowe co mozesz tam poprzerabiac jak chcesz + mozesz tam tez tworzyc na xboxa ;]

tutaj masz linka do stronki xna gdzie sa tez owe starterkity.
http://creators.xna.com/en-US/education/starterkits/

0

Słyszałem też o czymś takim jak Visual Studio Express Edition która jest za darmo. Ciekawe czy funkcjonalność jest bardzo okrojona.

0
Asmox napisał(a)

Słyszałem też o czymś takim jak Visual Studio Express Edition która jest za darmo. Ciekawe czy funkcjonalność jest bardzo okrojona.

Can I use Express Editions for commercial use?

Yes, there are no licensing restrictions for applications built using Visual Studio Express Editions.

http://www.microsoft.com/express/support/faq/

Visual studio cpp ma jedynie ograniczenia odnosnie edycji zasobow aplikacji oraz brak klasy mfc (nie mam pewnosci do konca), sdk i okrojona biblioteke msdn.

Jednakze kazda aplikacja sieciowa bedzie pracowala i najwyrazniej mozesz software uzywac do zastosowan komercyjnych ...

0

Javę sobie odpuszczę, bo wolno działa i jej zadaniem jest raczej przenośność i multiplatformowość niż wydajność

Bzdura. Wydajność Javy na serwerze jest praktycznie taka sama, jeżeli nie większa (dzięki GC). Sam pracuje przy aplikacji sieciowej dla telekomunikacji, która musi działać w soft-realtime i o dziwo właśnie jest pisana w Javie :P
Jeżeli ktoś nie wierzy, że takie rzeczy pisze się w Javie to radze przejrzeć chociażby tą stronę: http://www.jainslee.org/slee/slee.html

0

Z tą wolną Javą miałem na myśli to, że nie jest ona odpalana bezpośrednio przez procek/system, tylko przez jakieś maszyny wirtualne, które pośredniczą przy odpalaniu. Oczywiście tak tylko słyszałem i chciałem się dowiedzieć, czy to faktycznie prawda. Chociaż muszę powiedzieć, że raczej nie widzę potrzeby pisania aplikacji multiplatformowych.

0
Asmox napisał(a)

Z tą wolną Javą miałem na myśli to, że nie jest ona odpalana bezpośrednio przez procek/system, tylko przez jakieś maszyny wirtualne, które pośredniczą przy odpalaniu. Oczywiście tak tylko słyszałem i chciałem się dowiedzieć, czy to faktycznie prawda. Chociaż muszę powiedzieć, że raczej nie widzę potrzeby pisania aplikacji multiplatformowych.

Całe C# i .NET też były projektowane z myślą o wieloplatformowości i o ile pamiętam też nie pracują bezpośrednio na procku/systemie tylko mają postać pośrednią CLI, z której dopiero .NET runtime wrzuca je do proca. Podobnie jak w Javie tyle że tutaj maszynka trochę więcej ingeruje w JIT'a. Poprawcie mnie jeżeli się mylę.

Jeżeli to ma być jakaś normalna gierka nie-browserowa to może polecił bym klasyczny duel:

  1. C i liby systemowe na serwer
  2. C++ i OpenGL i jakiś framework

Jeżeli to jakaś browserówka to albo coś z rodziny Java+JSP albo C#+ASP.NET. Zależnie od własnych preferencji.

0
plobpo napisał(a)

np. zastosowanie C++ jest bardziej wymagające, lecz daje więcej możliwości i zdecydowanie wybierając C++ nie jesteś skazany na "buffer overflow" ;)

Jest bardziej wymagające ale nie daje ci więcej możliwości. Pod względem spójnych lib'ów i framework'ów do robienia oprogramowania serwerowego C++ niedomaga w porównaniu do Javy lub C#. Po prostu w C++ czasami wychodzi to wydajniej. Wiec w tym kierunku czasami lepiej pociągnąć temat nieco dalej i zrobić serwer w C jeżeli chcemy żeby był on mały i wydajny.

Co do buffer overflow to jesteś skazany tylko wyrok jest trochę dłuższy jeżeli umiesz w C++ pracować. Jeżeli nie umiesz to wycieki pamięci doprowadzą cię do overflow'a jeszcze wcześniej. Nie mówiąc już o czyhającym z nienacka segmentation fault.

0
  1. Kod platform NET jest poddawany metodzie "assembling code", beznadziejna metoda i bardzo duza liczba skokow do metod zapisanych w bibliotekach asemblujacych kod do kodu maszynowego.

Totalna bzdura powodujaca gigantyczne spadki wydajnosci pracy, tylko microsoft mogl to wymyslec i w dodatku platforma net nie jest multiplatformowa, jedynie zwalnia prace programow.

rnd napisał(a)

Javę sobie odpuszczę, bo wolno działa i jej zadaniem jest raczej przenośność i multiplatformowość niż wydajność

Bzdura. Wydajność Javy na serwerze jest praktycznie taka sama, jeżeli nie większa (dzięki GC). Sam pracuje przy aplikacji sieciowej dla telekomunikacji, która musi działać w soft-realtime i o dziwo właśnie jest pisana w Javie :P
Jeżeli ktoś nie wierzy, że takie rzeczy pisze się w Javie to radze przejrzeć chociażby tą stronę: http://www.jainslee.org/slee/slee.html

  1. Zacytuje cos z podanej przez Ciebie strony:

JAIN SLEE is the only industry standard aimed at portable communications applications, i.e. a communications application can be written once and run on many different implementations of JAIN SLEE. Application portability is made possible by the combination of a programming language API (specified using the Java programming language), an unambiguous technical specification, a Reference Implementation, and a rigorous suite of tests that a vendor must pass before their product is compliant with the JAIN SLEE specification.

JAIN SLEE is the point of integration for multiple network resources and protocols. Applications can use many different external network resources from within the JAIN SLEE environment.

Ta implementacja srodowiska jest wycelowana specjalnie na przenosny kod, nic nie pisza o wydajnosci lecz jakby mi sie chcialo moglbym sprawdzic ta metode wirtualizacji, jestem pewny ze wydajnosc takiego softwaru spada na psy ze wzgledu na jego specyfikacje, aby wykonac kod musisz go wygenerowac gdzie inne programy juz zaczynaja sie wykonywac bez zbednych obliczen.

Swoja droga lepszy jest c oraz logiczne definicje preprocesora nakazujace uzywania metod sieciowych danej platformy w ktorej program jest kompilowany etc.

Co c# daje czego nie mozna napisac w cpp ?

Ludzie, naukowcy w cpp potrafia wykonywac pomiary laboratoryjne przy reakcjach jadrowych...

Dodam jescze ciekawa biblioteke cpp do tzw croosplatform, posiada rowniez cechy sieciowe:

Basic services: Thread, Synchronization, Filesystem access, Processes, Networking.

http://xtklib.sourceforge.net/?q=node/2

0
cyber_pl napisał(a)

platforma net nie jest multiplatformowa, jedynie zwalnia prace programow.

Mono .NET pokazuje że jednak jest

cyber_pl napisał(a)

Swoja droga lepszy jest c oraz logiczne definicje preprocesora nakazujace uzywania metod sieciowych danej platformy w ktorej program jest kompilowany etc.

Ta... bo te metody to tylko nazwami się różnią...
Po pierwsza do takich rzeczy masz już gotowe lib'y jak np. GLib. Po drugie obczaj sobie właśnie implementacje socketów w tym GLib'ie aby pojąć ile zachodu ich kosztowało aby zrobić interfejs przenośny między systemami.

cyber_pl napisał(a)

Co c# daje czego nie mozna napisac w cpp ?

Ludzie, naukowcy w cpp potrafia wykonywac pomiary laboratoryjne przy reakcjach jadrowych...

Jeszcze lepiej im to w FORTRAN'ie wychodzi. Czy to znaczy że to dobry język do pisania serwerów ? gier ?!

cyber_pl napisał(a)

Dodam jescze ciekawa biblioteke cpp do tzw croosplatform, posiada rowniez cechy sieciowe:

Basic services: Thread, Synchronization, Filesystem access, Processes, Networking.

http://xtklib.sourceforge.net/?q=node/2

Bardziej poleciłbym Boost, Qt Core, GLib w C lub z wrapperem na C++</quote>

0

Kolega cyber_pl ma swój świat, dyskusję z nim odradzam bo znowu wątek za flame'a zamkną...

0
... napisał(a)

Kolega cyber_pl ma swój świat, dyskusję z nim odradzam bo znowu wątek za flame'a zamkną...

Przeciez pisze same fakty ... :-D

walec51 napisał(a)

Ta... bo te metody to tylko nazwami się różnią...
Po pierwsza do takich rzeczy masz już gotowe lib'y jak np. GLib. Po drugie obczaj sobie właśnie implementacje socketów w tym GLib'ie aby pojąć ile zachodu ich kosztowało aby zrobić interfejs przenośny między systemami.
Qt Core

  1. qt odpada wymagana jest licencji na komercyjne budowanie softu, pisalem o niej wyzej.
  2. mozna tez stosowac inne biblioteki albo pobawic sie w odnajdowanie roznic miedzy implementacjami sieciowymi etc.

Ja polecam najzwyklejszy jezyk cpp jesli na win32 visualstudio express a linux to gnu g++, bo jak zrozumialem chodzi o program serwera, wiec nie wymaga on uzywania zadnych bibliotek 2d,3d najwyzej jakas png/jpg bo budowania dynamicznych obrazkow dla browsera etc.

0
cyber_pl napisał(a)
  1. qt odpada wymagana jest licencji na komercyjne budowanie softu, pisalem o niej wyzej.

Qt na licencji LGPL można stosować do tworzenia komercyjnego softu [glowa]

cyber_pl napisał(a)

Przeciez pisze same fakty ...

Ty zawsze piszesz fakty... za których prawdziwość potem przepraszasz.

cyber_pl napisał(a)

Ludzie, naukowcy w cpp potrafia wykonywac pomiary laboratoryjne przy reakcjach jadrowych...

Niby kto taki? Większość prac jaki znam oparta była o Fortrana, Lisp (ten głównie za możliwość modyfikacji wszystkiego w runtime, rozbudowywania i poprawiania kodu bez konieczności restartu aplikacji) czy języki funkcyjne. Ja zaś pisałem m.in. soft związany z genetyką, w życiu bym tam C++ nie użył, poszedł Haskell. Nagle okazało się, że oparty na podobnych algorytmach program w C++ jest 6-7x wolniejszy mimo tego, że Haskell jest czysto funkcyjny (korzyści z niemożliwej do uzyskania w C++ leniwej ewaluacji). Chętnie bym kod pokazał, ale ówczesny pracodawca się raczej nie zgodzi.

C++ nie jest językiem bezpiecznym, jest bardzo wymagający i dosyć ograniczony.

cyber_pl napisał(a)

jestem pewny ze wydajnosc takiego softwaru spada na psy ze wzgledu na jego specyfikacje, aby wykonac kod musisz go wygenerowac gdzie inne programy juz zaczynaja sie wykonywac bez zbednych obliczen.

Jaja sobie robisz czy o drogę pytasz? Kod jest jednokrotnie przy pierwszym użyciu kompilowany, ew. potem profilowany i optymalizowany. Kod wykonuje się wielokrotnie, koszt kompilacji/uruchomienia jest stały i pomijalny.

cyber_pl napisał(a)

Totalna bzdura powodujaca gigantyczne spadki wydajnosci pracy, tylko microsoft mogl to wymyslec i w dodatku platforma net nie jest multiplatformowa, jedynie zwalnia prace programow.

Taaak, Twoim zdaniem najszybciej pisze się w C/C++. Wydajność pracy programisty C# jest znacznie większa chociażby dzięki temu, że język jest pewniejszy i bardziej spójny. Koszt utrzymania jednej linijki kodu w C# jest niższy niż w C++. Chyba mi nie powiesz, że debugowanie i testowanie aplikacji nie wlicza się w 'wydajność pracy'?

Reszty nawet nie chce mi się komentować...

0

Jeżeli zaś chodzi o wydajność aplikacji .NET - maszyna wirtualna może eliminować kupę zbędnych rzeczy z kodu, których w C++ wyeliminować się nie da. VM potrafi zagwarantować poprawność w oparciu o obecny kontekst i pozbyć się sprawdzeń, których w C++ nie unikniesz.

0

Ten temat zchodzi na psy widze.

Przeciez to jest logiczne ze kompialtor c generuje Od razu kod maszynowy a maszyna profilujaca kod dla .NET skompiluje swoja podstawe binarna a po uruchomieniu aplikacji zalaczy do niej biblioteki konwertujace bianrna podstawe (jako moduly dynamiczne) tak zapisanego programu. Moduly te bda skakac po calej przestrzeni kod programu i sekwencyjnie wykonywac aseblacje kodu maszynyw wirtualnej.

Gdzie tu logika oraz wydajnosc ? CO z tego ze profiluje swoj kod wynikowy skoro caly ten emchanizm wirtualizacji jest nie wydajny ...

0
cyber_pl napisał(a)

Przeciez to jest logiczne ze kompialtor c generuje Od razu kod maszynowy a maszyna profilujaca kod dla .NET skompiluje swoja podstawe binarna a po uruchomieniu aplikacji zalaczy do niej biblioteki konwertujace bianrna podstawe (jako moduly dynamiczne) tak zapisanego programu. Moduly te bda skakac po calej przestrzeni kod programu i sekwencyjnie wykonywac aseblacje kodu maszynyw wirtualnej.

Gdzie tu logika oraz wydajnosc ?

Wybacz kochanie, ale logiki to ja nie widzę u Ciebie. Program w C/C++ skacze po całej przestrzeni adresowej - calle do bibliotek, całe IO wykonuje się w kernelspace, które też nie jest u Ciebie w binarce... a VM działa tak - masz odpalany program i jest on kompilowany do normalnej postaci w pamięci, masz normalny kod podobny do tego z C++ tylko miejscami okrojony ze śmiecia. Część runtime'u jest nawet inline'owana zwykle, reszta jest wołana z bibliotek... tak jak w C++. Nie różnicy w rozłożeniu kodu pomiędzy zarządzanym a natywnym.

Wiesz gdzie występuje różnica? W przypadku danych, w C++ nie da się zagwarantować ciągłości i optymalnego ułożenia danych z punktu widzenia cache'u, nie da się całkowicie wyeliminować fragmentacji pamięci. Tutaj potrzebny jest język pracujący wewnątrz VM, która może obiekty dowolnie relokować i optymalizować strukturę pamięci - w C++ jest to po prostu niewykonalne.

Wiesz, że właśnie ułożenie danych i brak fragmentacji są kluczowe dla stabilnego i wydajnego funkcjonowania co dłużej działającego oprogramowania? Osobiście nie słyszałem aby ktoś zaawansowane maszyny przemysłowe (które mają pracować latami bez przerw) programował w językach natywnych...

0

Dobra, żeby temat nie schodził na psy, zrobię pewne podsumowanie i dodam moje spostrzeżenia.
C++ jest skomplikowany ogranicza i tak dalej. Mimo wszystko chciałem go spróbować. Zainstalowałem sobie Microsoft Visual C++. Próbowałem odpalić program typu "Hello World!". Najpierw próbowałem go przepisać. Kod wygląda jak pies zmielony razem z budą. Przestrzenie nazw? Dyrektywy preprocesora? Nie wspomnę o dziwnych instrukcjach takich jak cout zamiast prostego np. writeln. Nie chcę zdenerwować zapaleńców od C++, ale gramatyka tego języka mnie powala. Druga sprawa: Nie wiem czy ten Visual C++ jest zwalony, czy ten kolo od kursu nie ma pojęcia o C plusie, ale kod nie działa.
Tak więc C++ odpada dla mnie, mam nadzieję że nic większego z tego powodu się nie stało.
OK, zostały C# i Java. Z Waszych opinii wynika, że oba nie są bezpośrednio wykonywane przez procesor. Zastanawiam się, czy C# jest bardzo podobny do C++, jeśli tak, to chyba zdecyduje się na Javę. Zwłaszcze że ona kojarzy mi się trochę z WWW a ja lubię tworzyć WWW ;] .

0

C# i Java są praktycznie tak samo podobne do C++. C# jest znacznie do przodu w porównaniu z Javą. Kod tak w Javie jak i C# jest wstępnie kompilowany do kodu pośredniego, ten zaś jest przy uruchomieniu tłumaczony i wykonywany bezpośrednio przez procesor tak jak ten w C++ (z niewielkimi, pomijalnymi różnicami).

0
Asmox napisał(a)

Zwłaszcze że ona kojarzy mi się trochę z WWW a ja lubię tworzyć WWW ;] .

Sadze ze w javie jest trudniej napisac taki serwer, c# jest niemalze identyczne z cpp (zwalszcza sources).

Poza tym po reversowaniu mechanizmu asemblacji kodu platformy NET moge jasno stwierdzic ze podobny program ktory wyswietla zwyklego messageboxa wykonuje o duzo mniej kodu tylko z tym ze kod w NET musi byc tlumaczony a ten w cpp Od razu odwoluje sie do biblioteki winapi ...

0
cyber_pl napisał(a)

Sadze ze w javie jest trudniej napisac taki serwer, c# jest niemalze identyczne z cpp (zwalszcza sources).

Nie sądź bo Cię wyśmieją. C# i .NET mają tyle wspólnego z C++ co Java i JVM/runtime Javy. W C# nie pisze się 'niemal identycznie' jak w C++, to zupełnie inne podejście do programowania, biblioteki też różne.

cyber_pl napisał(a)

Poza tym po reversowaniu mechanizmu asemblacji kodu platformy NET moge jasno stwierdzic ze podobny program ktory wyswietla zwyklego messageboxa wykonuje o duzo mniej kodu tylko z tym ze kod w NET musi byc tlumaczony a ten w cpp Od razu odwoluje sie do biblioteki winapi ...

Po pierwsze, w zreversowanie nie wierzę, po drugie systemowy messagebox w C++ jest niezarządzany, prawda? Użycie klamotów systemowych idzie przez dodatkową warstwę abstrakcji w kodzie zarządzanym. Jak użyjesz user32 w C# to wyjdzie dokładnie tyle samo co w C++.

0

Chodzilo mi o skladnie jezykow (sources) nie musisz stwierdzac ze sa inne biblteki oraz podejscie do programowania, to mormalne rzecz przeciez.

poza tym przedstawie Ci proces ladowania mechanizmu asmeblacji kodu NET:

-zaladowanie modulu user32
-zaladowanie modulu asemblera runtime
-skok do sekcji kodu, start wykonywania
-inicjowanie maszyny + pierwsza partia aseblowanego kodu do wykonania
-surowy kod NET jest przekazywany do asemblera ktory go wykonuje
-nastepuje skok user32 messagebox
-koniec asemblacji powrot do miejsca poprzedzajacego skok
-wykonanie dalszego kodu

a teraz w cpp:

-zaladowanie biblioteki user32
-skok do sekcji kodu, prolog kodu
-skok do main
-skok do messagebox z modulu user32
-epilog kodu

Jakby to liczyc w ilosci rozkazow asm wykonywanych w tych okolicznosciach NET by znaczaco prowadzil.

Ok, nie ma sensu sie z Toba klocic (sry za ort za szybko pisalem widocznie :/) to warto udowodnic naukowo z mocnymi argumentami w kieszeni na potwierdzenie tezy.

0
Asmox napisał(a)

Druga sprawa: Nie wiem czy ten Visual C++ jest zwalony, czy ten kolo od kursu nie ma pojęcia o C plusie, ale kod nie działa.

Najprawdopodobniej wybrałeś zły typ projektu.
Instruktaż wideo: http://www.youtube.com/watch?v=Y8O02gtYC6Y

Zastanawiam się, czy C# jest bardzo podobny do C++

Jeśli za podobieństwo brać fakt, że występują w nim pętle, instrukcje warunkowe, definiowanie zmiennych, operatory logiczne i arytmetyczne, to jest podobny. Ale na tej zasadzie wszystkie języki są identyczne :)
Bo tak poza tym, to C# wygląda prawie jak Java. I nie ma w nim tej całej gramatyki, na którą narzekasz.
C#:

class ExampleClass
{
    static void Main()
    {
        System.Console.WriteLine("Hello, world!");
    }
}

Java:

public class HelloWorld {
   public static void main(String[] args) {
       System.out.println("Hello, world!");
   }
}

C++:

#include <iostream>
 
int main()
{
   std::cout << "Hello, world!\n";
}

I powiedz sam, co tu jest do czego podobne?
Najprostszy przykład, im bardziej skomplikowany będzie program, tym więcej różnic zauważysz.

... napisał(a)

Wydajność pracy programisty C# jest znacznie większa chociażby dzięki temu, że język jest pewniejszy i bardziej spójny. Koszt utrzymania jednej linijki kodu w C# jest niższy niż w C++. Chyba mi nie powiesz, że debugowanie i testowanie aplikacji nie wlicza się w 'wydajność pracy'?

Oczywiście, że nie. Liczy się tylko naklepanie kodu w C++. Bo każdy kod naklepany w C++ jest święty i najlepszy.

0
somekind napisał(a)

Bo każdy kod naklepany w C++ jest święty i najlepszy.

A jak:

int main() 
{
  class cipka{ };
  cipka cipka = cipka;
}

Kod idealnie zgodny ze standardem. Jakby tego było mało - obiekt jest inicjalizowany przez konstruktor kopiujący z dziewiczego, niezainicjalizowanego obiektu... z samego siebie (jaka seksowna rekurencja... a może masturbacja).

Ew. bardziej neutralnie:

int main() { class main {}; main main = main; }

1 użytkowników online, w tym zalogowanych: 0, gości: 1