rack pisze:
Zgadzam się, że wydajność aplikacji to rzecz nader istotna, z drugiej jednak strony, nie wierzę ze za jakiś czas nie doczekamy się znacznie szybszych procesorów (jak wiadomo prace nad nimi trwają i mają się dobrze... choć niektórzy mówią ze dochodzimy do kresu możliwości. Nie wierzę ,człowiek nie potrafi zatrzymać się w miejscu ...).
W takiej sytuacji być może spadek wydajności spowodowany uzyciem języka skryptowego będzie pomijalny
Procesory dużo szybsze nie będą (granica możliwości krzemu już prawie osiągnięta, co widać od co najmniej kilku lat (częstotliwość nie jest zwiększana)) - będzie ich po prostu więcej (rdzeni), co jednak nie idzie zawsze razem ze wzrostem wydajności (nie wszystkie algorytmy da się rozłożyć na wątki). Nie będzie pomijalny - jest jeszcze tyle rzeczy i algorytmów, które nie dają się wykonać nawet na najlepszych superkomputerach (wykonywałyby się przez tysiące lat), że nie ma się o co martwić, że kiedyś wydajność będzie za duża i będzie można olać ją.
rack pisze:Języki skryptowe są znacznie bliższe cżłowiekowi niz maszynie, dzięki czemu pisze się po prostu szybciej ... to co napisano przez ostatnie 30 lat teraz może być pewnie napisane w kilka
Są bliższe człowiekowi... dopóki nie zrobi się błędu i będzie trzeba szukać gdzie... to co napisano przez ostatnie 30 lat teraz można napisać w kilka w C/C++ - po prostu powstały nowe algorytmy, technologie, badania i teraz jest ogólnie dostępna wiedza do której się przez lata dochodziło.
rack pisze:Podejżewam, że za kilka czy kilkanaście lat moc obliczeniowa procesorów na tyle wzrośnie, że większośc ludzi nie będzie sobie truć głowy językami kompilowanymi ...
Póki co idzie się w stronę przeciwną i aby wykorzystać moc domowych klastrów (kart graficznych) trzeba się cofnąć do ASM lub języków pochodnych od C (Ati STREAM, CUDA, OpenCL)... i nie spodziewałbym się na Twoim miejscu pójścia dużo wyżej z poziomem.
rack pisze:Zresztą nawet dziś, to co ma być skompilowane może być spokojnie napisane w C i wrzucone dowiązane do aplikacji w języku skryptowym ... Bibliotek napisanych dla Pythona czy Ruby nie przepisuje się na C ... a większośc tych z C i C++ ma już dowiązania do tych nowych języków skryptowych ... Trend jest moim zdaniem jasny, oddalamy się od języków dla komputera za cenę wydajności ...
Bibliotek dla pythona czy ruby nie przepisuje się do C/C++... bo tam są już odpowiedniki, lub lepsze, a tworzy się wrappery na biblioteki natywne pisane w C/C++ do języków skryptowych... bo twórcy tych bibliotek olewają te języki i piszą tak jak mainstream (praktycznie wszystkie biblioteki, poza pojedynczymi wyjątkami) i programiści piszący w tych językach przygotowują z opóźnieniem wrapper na bibliotekę, żeby mieć w swoim języku możliwości takie jak w c/c++.
Trend jest taki sam od wielu lat - wchodzi coś nowego (shadery(asm ->glsl/hlsl/cg (języki oparte na C)), jednostki obliczeniowe (asm->cuda/opencl(oparte na C)), nowe procesory (asm (rozszeżenia jak sse,mmx...)->nagłówki dla C/C++)...) to programuje się z użyciem ASM, później pisze się w C, a dopiero po tym w C++ (chociaż najczęściej zatrzymuje się na C, bo C++ zawiera C)... i na tym koniec! (tak jest od co najmniej 40 lat - języki skryptowe, przychodzą, zdobywają popularność, i ją zaraz tracą... te 3 języki (asm/c/c++) mają stałą pozycję i nie przemijają mimo prawie 30-40 lat na karku (30 najnowszy C++)). Dalej nie jest rozwijane przez producentów sprzętu i wielkie firmy, tylko wrappery na to robią użytkownicy/twórcy języków skryptowych, gdzieś obok mainstream.
Mainstream się nie zmieni, bo C++ jest dalej żywym językiem i się rozwija i za rok,dwa znowu przejmie osoby piszące w językach skryptowych (mimo, że już powinien, ale będzie dopiero po oficjalnym wydaniu standardu), gdzie łączy zalety języków skryptowych z kompilowanymi:
- np. typ auto gdzie przy kompilacji zdecyduje jakiego typu jest zmienna, ale w przeciwieństwie do skryptowych zapobiegnie przypisaniu zmiennej, zmiennej innego typu (tekst do int) i pokaże błąd, lub warn o niejawnej konwersji.
- funkcje lambda (znane np. z pythona)
- wielowątkowość w specyfikacji języka,
- for oparte na zakresie
- metaprogramowanie
i tona innych rzeczy znanych z boost, czy innych języków programowania, zwiększających wydajność (wiele z tego już jest w GCC), a zarazem łatwość programowania i zachowując ostrzeganie się przed błędami.