C++11 - przedłużanie agonii czy zbawienie dla C++?

C++11 - przedłużanie agonii czy zbawienie dla C++?
Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
0

No to w takim razie równie dobrze można by sprawdzić jaką ma szybkość PHP po przekonwertowaniu HipHopem, który też ma ograniczenia.

Z tym, że np dla takiej Javy (i chyba wszystkich języków kompilowanych do bajtkodu, chociaż nie jestem pewien) istnieje Excelsior JET, który radzi sobie chyba z całością API Javy i daje kopa jeśli chodzi o prędkość uruchamiania: http://www.excelsior-usa.com/java-startup-time.html

  • Rejestracja: dni
  • Ostatnio: dni
0
Wibowit napisał(a):

No to w takim razie równie dobrze można by sprawdzić jaką ma szybkość PHP po przekonwertowaniu HipHopem, który też ma ograniczenia.

Nie porównuj, HipHop oferuje obcięty dialekt i wybrane elementy bibliotek, PyPy to w niemal 100% kompatybilna (z perspektywy języka i biblioteki standardowej, nie rozszerzeń interpretera) implementacja Pythona 2.7. Większość bibliotek odpalisz, wszystkie czysto pythonowe, te wykorzystujące komponenty natywne poprzez ctypes również, problem sprawiają jedynie rzeczy pisane w Cythonie (to oddzielny dialekt będący miksem C i Pythona) oraz samym C.

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
0

No to czemu PyPy nie jest oficjalną VMką Pythona? Java już dawno przeszła z interpretowania na JIT.

  • Rejestracja: dni
  • Ostatnio: dni
0

Bo to relatywnie świeży NIEZALEŻNY projekt (na innej licencji, MIT różni się nieco od PFL), który 4 lata temu był dopiero wczesnym researchem i dopiero trochę ponad rok temu uzyskał (niemal) 100% zgodność z najnowszą wersją brancha 2.x?

  • Rejestracja: dni
  • Ostatnio: dni
0

Poza tym CPython jest bardziej przenośny niż PyPy, z oczywistych względów, resztę sobie dopowiedz.

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
0

Czy jest jakiś duży system który stoi na PyPy, które się nie wykłada?

vpiotr
  • Rejestracja: dni
  • Ostatnio: dni
0
Wibowit napisał(a):

Czy jest jakiś duży system który stoi na PyPy, które się nie wykłada?

To nie chodzi o to czy coś się wykłada czy nie, tylko żeby zastosować produkcyjnie PyPy trzeba:
a) mieć jego implementację na dane środowisko
b) mieć zaimplementowane wszystkie moduły w czystym Pythonie, bo moduły w C/C++ (dość powszechne) z tym nie współgrają - z jakichś tam przyczyn bliżej mi nie znanych

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
0

A więc jest tylko ciekawostką nie nadającą się na produkcję.

  • Rejestracja: dni
  • Ostatnio: dni
0

Chciałbym zauważyć, że te nowe i szybkie w pisaniu technologie (mam na myśli Java i C#) są czasem używanie nie tam, gdzie trzeba. Przykłady:

  1. Eclipse i Netbeans są napisane prawie wyłacznie w Javie. Efekt? Są strasznie powolne (nawet na moim C2Q6600). Powinny być napisane w C++ z frameworkiem.
  2. Visual Studio 2010 używa WPF. Niechby był napisany w C++, ale co z tego, skoro jest kobylasty. Znowu - powinno być napisane w C++ z frameworkiem (ale nie .NET).

Co z tego że być może w Javie i w C# trochę szybciej się pisze programy wielowątkowe, gdy ta dodatkowa szybkość jest z nawiązką zjadana przez wolne wykonywanie kodu napisanego w Javie lub w C#? Vide: Eclipse, Netbeans, VS Studio 2010.

  • Rejestracja: dni
  • Ostatnio: dni
0
vpiotr napisał(a):

b) mieć zaimplementowane wszystkie moduły w czystym Pythonie, bo moduły w C/C++ (dość powszechne) z tym nie współgrają - z jakichś tam przyczyn bliżej mi nie znanych

Już częściowo współgrają, C API jest dopiero implementowane, stopniowo. Przede wszystkim to Python w Pythonie, były inne priorytety, m. in. osiągnięcie pełnej implementacji biblioteki standardowej w czystym Pythonie i dopracowanie JIT. Aktualna wersja wspiera już całkiem sporo, ale nadal za mało dla najbardziej rozbudowanych bibliotek. C API udostępnia trochę internalsów interpretera, w tym zarządzania pamięcią, które w PyPy wyglądają inaczej, nie jest możliwe proste mechaniczne naklepanie wrapperów. Poza tym niejako obok C API rozwija się implementacja numpy dla PyPy, co ma być jednym ze sprawdzianów możliwości VM, porównanie wydajności tego systemu i natywnych bibliotek pisanych m. in. w fortranie.

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
0

W C++ jest napisany JCreator do edycji kodu Javowego. Ewentualnie można użyć Vima lub Emacsa :]

  • Rejestracja: dni
  • Ostatnio: dni
3

Chciałbym zauważyć, że te nowe i szybkie w pisaniu technologie (mam na myśli C++) są czasem używanie nie tam, gdzie trzeba. Przykłady:

Oficjalny klient Gadu-Gadu jest napisani wyłacznie w C++. Efekt? Jest strasznie powolne (nawet na moim C2Q6600). Powinien być napisane w Asemblerze z frameworkiem

Co z tego że być może w C++ trochę szybciej się pisze programy, gdy ta dodatkowa szybkość jest z nawiązką zjadana przez wolne wykonywanie kodu napisanego w C++? Vide: Oficjalny klient Gadu-Gadu.

  • Rejestracja: dni
  • Ostatnio: dni
1
Dinozaur napisał(a):

Chciałbym zauważyć, że te nowe i szybkie w pisaniu technologie (mam na myśli C++) są czasem używanie nie tam, gdzie trzeba. Przykłady:

Oficjalny klient Gadu-Gadu jest napisani wyłacznie w C++. Efekt? Jest strasznie powolne (nawet na moim C2Q6600). Powinien być napisane w Asemblerze z frameworkiem

Co z tego że być może w C++ trochę szybciej się pisze programy, gdy ta dodatkowa szybkość jest z nawiązką zjadana przez wolne wykonywanie kodu napisanego w C++? Vide: Oficjalny klient Gadu-Gadu.

Tak się składa, że nie jest napisane wyłącznie w C++. Głównie Flash ze swoim ActionScriptem macza palce w powolności tego kombajnu (reklamy). I pewnie jeszcze Javascript w tej wbudowanej przeglądarce internetowej.
Wywalić Flasha z tego GG i wtedy możemy pogadać o szybkości rzeczonego GG.

Sparrow-hawk
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Katowice
  • Postów: 189
0

Język C oraz C++ ma jeszcze jedno zastosowanie, które zostało tu już wymienione. Mianowicie pozwala na tworzenie oprogramowania w systemach wbudowanych. Programuję AVR oraz ARM'y i tu póki co nie zanosi się na nowy język programowania, oraz na to, aby C++ odszedł szybko w nie pamięć. W tym przypadku praktycznie każde urządzenie, które ma w sobie mikroprocesor/mikrokontroler wymaga oprogramowania napisanego w C/C++, rzadziej Assembler. A zabawa zaczyna się, kiedy piszemy więcej i więcej w obrębie jednego urządzenia/układu, a zasobów nam nie przybywa.

vpiotr
  • Rejestracja: dni
  • Ostatnio: dni
0
Wibowit napisał(a):

No to w takim razie równie dobrze można by sprawdzić jaką ma szybkość PHP po przekonwertowaniu HipHopem, który też ma ograniczenia.

Z tym, że np dla takiej Javy (i chyba wszystkich języków kompilowanych do bajtkodu, chociaż nie jestem pewien) istnieje Excelsior JET, który radzi sobie chyba z całością API Javy i daje kopa jeśli chodzi o prędkość uruchamiania: http://www.excelsior-usa.com/java-startup-time.html

Podaje nowe wyniki:

Kopiuj
Wyniki dla 1000000 x 500
----------------------------
PHP 5.3.8                        : 230   [s]
Python 2.6.5                     : 105.935 [s]
Node.js 0.8.1 x64                : 22.159 [s]
Java 1.7 x64  / org              : 9.221 [s]
Python 2.7.2 / PyPy 1.9 (bin x32): 7.234 [s]
C++ / VS2010 / x32               : 3.806 [s]
Java 1.7 x64 / Test              : 3.777 [s]
Free Pascal 2.6.0 x64            : 3.745 [s]

Uwaga: moja wersja C++ jest zoptymalizowana - nie zwraca tablicy przez wartość tylko przez referencję.
Ale nie ma to wpływu bo równie dobrze można zwracać przez wskaźnik inteligentny i wyszło by na to samo.

Edit:
Test na podstawie: http://blog.famzah.net/2010/07/01/cpp-vs-python-vs-perl-vs-php-performance-benchmark/
Kod dla C++ i Pascal w ostatnim komentarzu ma ww stronie.

vpiotr
  • Rejestracja: dni
  • Ostatnio: dni
0
anonim1 napisał(a):

A ciekawa praca to dla mnie taka, w której mogę się ciągle rozwijać, poznawać nowe technologie, nowe algorytmy, może i nawet uczyć się nowych rzeczy z szeroko pojętej matematyki, czyli nie tylko pisać kod, który ktoś już od górnie zaprojektował albo który znalazłem w internecie.
Żeby może to jaśniej wytłumaczyć dam kontrprzykład. Mam wrażenie (wrażenie, a nie doświadczenie), że praca w Web Dev to właśnie takie nudne, szablonowe tworzenie tego samego. Wydaję mi się, że przy takich projektach głównie bazodanowcy mają ciekawą pracę.

Robiłem samodzielnie kilka serwisów web (sklepy, portal społecznościowy, blog, forum, wizytówki) i nigdy nie było to nudne. Ale nie była to praca full-time więc może na etat to co innego. Gdy sam jesteś sobie projektantem, wykonawcą i testerem to może być to naprawdę wciągające.

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
0

Gdy sam jesteś sobie projektantem, wykonawcą i testerem to może być to naprawdę wciągające.

Gdy sam sobie jesteś sterem, żeglarzem, okrętem, to to jest całkiem inna para kaloszy.

  • Rejestracja: dni
  • Ostatnio: dni
0

à propos standardu i absorbowanego w nim Boost'a: uzywal ktos z was biblioteki "Loki"? podobno czesc wzorcow i szablonow z niej, projektanci wykorzystali przy budowie boosta. jak ktos mial okazje z niej korzystac, niech zostawi opinie

msm
  • Rejestracja: dni
  • Ostatnio: dni
0

à propos standardu i absorbowanego w nim Boost'a: uzywal ktos z was biblioteki "Loki"? podobno czesc wzorcow i szablonow z niej, projektanci wykorzystali przy budowie boosta. jak ktos mial okazje z niej korzystac, niech zostawi opinie

Może nie do końca 'korzystałem', ale...

No więc genialna książka: http://www.amazon.com/Modern-Design-Applied-Generic-Patterns/dp/0201704315 - jestem w trakcie czytania (tzn. przeczytam rozdział raz na miesiąc...) i stanowi świetne wprowadzenie (?) do bardziej zaawansowanych części języka C++.
Jak to się ma do Lokiego? Ta biblioteka została napisana przez autora tej książki podczas jej pisania, książka w większości składa się z opisywania sztuczek z szablonami i ich zastosowaniu w praktyce - właśnie w tej bibliotece.

Endrju
  • Rejestracja: dni
  • Ostatnio: dni
0

Skoro mowa o Loki to polecam książkę Andrei Alexandrescu - Modern C++ Design. Ta biblioteka to w zasadzie efekt jej lektury. Sam jej kod jest trochę stary i chyba już nierozwijany - np. użycie variadic templates znacząco skraca kod w niektórych miejscach. Część rzeczy jest też niepotrzebna, bo zostały one dodane do biblioteki standardowej.

Edit: Tak długo pisałem, że @msm mnie uprzedził. ;-)

  • Rejestracja: dni
  • Ostatnio: dni
0

hehe ok! :)
tak sie sklada ze dzisiaj mi przyszla swieza "nowoczesne projektowanie w C++ ", edycja polska i dlatego sie zapytalem, bo juz oblookalem strone Adrei A. i zobaczylem ze juz kilka lat nie jest wspierana a poza tym ze wlasnie architekci boosta sie wzorowali na niej ( jeszcze nie doszedlem na czym, bo nie znam boosta ), ale sama tresc mi sie wydaje 'rewolucjonizujaca' myslenie amatora c++ ;) jak wam sie wydaje - latwiej do boosta od tej lekturki ?
btw. w polsce sa tansze ksiazki niz w usa

Rekman
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 148
0

To, że dotarła z dziesięcioletnim opóżnieniem to nidopatrzenie naszych wydawców. No, ale jest. A 'stary' kod - chcaiałbym taki kod potrafić pisać , nie przepisać, dziś , a jak nie dziś to przynajmniej w przyszłości. Czytając ponownie, inaczej zacząłem rozumieć szablony. Jest to również dowód na to, że C++ ciągle się rozwija i nie ma obawy, że za kilka czy kilkanaście lat jego znajomość do niczego się nie przyda.

vpiotr
  • Rejestracja: dni
  • Ostatnio: dni
0

Do metaprogramowania ta książka wydaje się niezła: http://amzn.com/1460966163

HO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 283
0

Nie przeczytałem wszystkich odpowiedzi ale napiszę jak ja to widzę.

C++ obecnie ma się bardzo dobrze i gorsze czasy ma już za sobą. Skończyła się wielka fascynacja Javą, C# nie jest bezpośrednią konkurencją. Przez ostatnie lata MS faworyzował C#, jednak od roku wychodzą czasami różne informacje od MS że chcą wesprzeć C++.

Nie uważam że wszystkie nowe firmy informatyczne będą wchodzić w C# czy inny język a C++ ominą szerokim łukiem. Standard C++ to nie to samo co "standard" Java. W bibliotekach zewnętrznych są elementy, których niby brakuje w C++. Wystarczy zainstalować Qt i mamy kombajn - kombajn który pozwala pisać i pod Windows i pod Linux.

Nowy standard nie wpłynie obecnie aż tak bardzo na popularność języka bo musi być najpierw zaimplementowany w kompilatorach. Nikt nie będzie przecież pisał kod z wykorzystaniem nowych rzeczy pod g++ jeśli nie będzie mógł np. tego skompilować pod VC lub mingw.

Do agonii C++ długa droga - w końcu są setki projektów w tym języku. Ktoś musi je utrzymywać, dorabiać funkcje. To daje temu językowi długowieczność. Mam też swoją prywatną opinię - obecnie warto być programistą C++ bo: sporo ludzi idzie w rozwiązania web, Javę, C# - obserwacje z czasów studiowania. Widzę że większość ogłoszeń o pracę jednak nie dotyczy C++, a na przekór słychać że sporo firm ma problem ze znalezieniem nowych programistów C++, którzy mają jakieś doświadczenie i nie są zieloni. Nie zdziwię się, jeśli za 2-3 lata programista C++ będzie miał proponowane lepsze warunki pracy niż programiści innych języków. Oczywiście C++ trzeba lubić, a nie patrzeć na zarobki czy ilość ogłoszeń o pracę - bez tego człowiek będzie się męczył - ale tak jest w każdej materii.

  • Rejestracja: dni
  • Ostatnio: dni
0

odnawiam temat: a co z androidem i C++ ( NDK ) i z mieszaniem JNI z C++( nie jestem pewien czy to sie tak odmienia ) ?
kiedy wyjda okulary wujka google, to android zaleje rynek po calosci, a to chyba kolejny + dla C++

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
0

odnawiam temat: a co z androidem i C++ ( NDK ) i z mieszaniem JNI z C++( nie jestem pewien czy to sie tak odmienia ) ?

A co ma być? Jest i działa. Można np dobijać się z poziomu Javy do natywnego OpenGLa: https://play.google.com/store/apps/details?id=jme3test.android

GD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 39
2

Jesli chodzi o dylematy wypowiadajacej sie tu mlodziezy, zwiazane z kariera:

Miejsce C i C++ na rynku jest (i bedzie) ugruntowane nie ze wzgledu na wspaniale nowe cechy, którymi czesc forumowiczów lubi sie onanizowac, tylko ze wzgledu na to, ze zawsze beda istnialy dziedziny, w których nie kompromitujemy wydajnosci: systemy operacyjne, gry, przetwarzanie danych, wydajne serwisy sieciowe z mln uzytkowników. A do tego wystarczy ANSI C lub C++ w wersji sprzed 15 lat.

Pracuje w branzy finansowej, od 5 lat w C i caly czas zarabiam wiecej od moich kolegów Javowców. Naleze do ludzi, którzy zafascynowali sie sama koncepcja komputera, jak pracuje CPU, jak pracuje pamiec itp. Lubie kiedy duzo zalezy ode mnie i to mi po prostu sprawia frajde. I to wydaje mi sie wazniejsze niz rozwazania czy C++ systematycznie wzbogaca sie o nowe cechy czy nie. Póki co, nalezy do czolówki jezyków wykorzystywanych profesjonalnie i nie widze szansy, zeby to mialo sie szybko zmienic.

Poza tym, maintenance gotowego systemu, który napisal ktos inny jest zawsze nieporównywalnie bardziej nudny, niz tworzenie czegos od zera. Obojetnie, czy "krowa" powstala 30 lat temu w Cobolu czy 3 lata temu w Javie.

KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2964
0

Pracuje w branzy finansowej, od 5 lat w C i caly czas zarabiam wiecej od moich kolegów Javowców

W jednej firmie jest tak, w innej jest inaczej. Patrząc jednak na średnie zarobków podawanych np. na indeed.com, to...

http://www.indeed.com/salary?q1=C+developer&l1=&tm=1
http://www.indeed.com/salary?q1=C%2B%2B+developer&l1=
http://www.indeed.com/salary?q1=Java+developer&l1=&tm=1

http://www.indeed.com/salary?q1=C+senior+developer&l1=&tm=1
http://www.indeed.com/salary?q1=C%2B%2B+senior+developer&l1=
http://www.indeed.com/salary?q1=Java+senior+developer&l1=&tm=1

...nie widać bardzo dużej różnicy, ale jeśli jest to jednak na korzyść Javowców.

Miejsce C i C++ na rynku jest (i bedzie) ugruntowane nie ze wzgledu na wspaniale nowe cechy, którymi czesc forumowiczów lubi sie onanizowac, tylko ze wzgledu na to, ze zawsze beda istnialy dziedziny, w których nie kompromitujemy wydajnosci: systemy operacyjne, gry, przetwarzanie danych, wydajne serwisy sieciowe z mln uzytkowników

Chciałbym zauważyć, że z tych rzeczy, które wymieniłeś, C++ jest mocno używany jedynie w grach. W systemach operacyjnych głównego nurtu nigdy się naprawdę nie przebił (kernel Windows: C, kernel Linuksa: C, kernel wszelkiej maści Uniksów, w tym OSX: C, Symbian miał coś tam w C++, ale była to maskra i Nokia go zaorała).Było parę eksperymentalnych systemów napisanych w C++, ale równie dobrze było też parę eksperymentalnych napisanych w C# lub Javie. W masowym przetwarzaniu danych i serwisach sieciowych z dużą liczbą użytkowników został wyparty niemal całkowicie przez Javę, no może poza Googlem, który jeszcze twardo obstaje przy BigTable (ale Amazon, Twitter, Facebook, Walmart, Netflix, EBay, MySpace - wszystko chodzi na Javie jeśli chodzi o warstwę danych czy analitykę).

GD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 39
0
Krolik napisał(a):

W masowym przetwarzaniu danych i serwisach sieciowych z dużą liczbą użytkowników został wyparty niemal całkowicie przez Javę, no może poza Googlem, który jeszcze twardo obstaje przy BigTable

Google - a co to za firma? Musi byc jakas mala, której pewnie nie stac na dobrych programistów... Podobnie jak te, w których ja pracowalem przez ostatnie 10 lat :) Ilosc Javowców vs C jest mniej wiecej 50/50. (I nawet oni przeklinali Eclipse'a).

Endrju
  • Rejestracja: dni
  • Ostatnio: dni
3
gd napisał(a):

Google - a co to za firma? Musi byc jakas mala, której pewnie nie stac na dobrych programistów...

Wait, what?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.