Czy nauka c++ ma sens, jak sa nowsze jezyki programowania?

0

Na zajęciach z programowania profesor pyta sie kto i ile programuje w danym i jakim języku
No i wszyscy mówią ze c i c++ , delphi.Ja jako jedyny programuje w php , java ,trochę c++
I nasz kochany pan profesor trochę sie oburzył bo zwiedził ze programownie w jezykach ktore nie maja przyszłości nie ma sensu , to tak jakby w tej chwili ktoś pisał jakieś poważne programy w pascalu <lol>
Czy wy tez zgadzacie sie z tym ze nauka i programownie w c++ nie ma sensu ?, czy programując w c++ będzie mozna dostać prace ? , jakich bibliotek i technologi wykorzystuje sie z c++ w nowoczesnym programowaniu .Dodam ze prf mów nam ze c++ powinośmy zastąpic c# ,.Net albo Java :)

PROSZE NIE KASOWAC TEGO TEMATU , TEN TEMAT JEST BARDZO CIEKAWY , CHCIAłBYM POZNAC WASZA OPINIE

0

Co tu ciekawego? Takie tematy byly juz walkowane kilka razy, wejdz sobie na jakies pracuj.pl czy cos i zobacz czy bedziesz mial prace z c++. Dobry programista powinien znac podstawy kilku jezykow i wybrac ten ktory najlepiej sie sprawdzi w danym problemie. Zaczynajac na asm i c a konczac na javie, c# czy php badz bashu.

Poza tym jak mozna mowic, ze c++ nie ma przyszlosci teraz gdy glosno jest o c++0x?

GC, jakies fajne liby i masz ala jave w ktorej w dodatku wypada pisac gry 3d :P

0

Ja myślę że C/C++ dalej warto się uczyć. Zależy to jeszcze od rodzaju programów jakie piszemy. Systemu linuxowe są oparte głównie na C.. Myślę że do programowania na niskim poziomie abstrakcji C/C++ będzie wykorzystywany dalej.

0

Przede wszystkim C++ jest kompilowany do kodu natywnego. Następna sprawa - C++ jest nadal rozwijany, wspomniany przez Wolverine'a C++0x to nadchodząca potęga, jak dla mnie to szybkość pisania kodu porównywalna z pythonem przy jednoczesnej znaczenie większej wydajności.
Czy Twój profestor się zastanowił nad takim zagadnieniem jak tworzenie VM, kompilatorów, interpreterów czy innych tego typu zabawek? Powodzenia w napisaniu VM w pythonie. OK, niech napisze silnik baz danych w ruby, zobaczymy jak będzie z wydajnością stał. Przynajmniej kluczowe elementy większych projektów muszą być natywne. Właśnie, popatrz na soft w pythonie - sporo modułów przepisuje się na C++ żeby użyskać zadowalającą prędkość działania. C++ w połączeniu z biblioteką Boost jest przenośny na poziomie kodu źródłowego, pisze się w nim błyskawicznie, wydajność jest świetna...
Tak, oszem, języki natywne tracą nieco na znaczeniu ale nie popadajny w skrajności. Znajomy wykładowca pisał soft dla elektrowni w Ocamlu. Oczywiście języki z JIT też są bardzo wartościowe ale jest pewien problem - JIT wymaga frameworka i dodatkowego czasu w trakcie działania poświęconego na kompilację.
Inna sprawa to bezpieczeństwo - języki natywne są mniej bezpieczne generalnie, zapewnienie odpowiedniego bezpieczeństwa to dodatkowy narzut.
Mam być szczery? Póki nie żyjemy w roku 2069 nie możemy sobie pozwolić na ograniczanie się do języków skryptowych i z JIT. Pisanie w natywnych wymaga więcej wiedzy i uwagi? Jak chcesz łatwą pracę to zostań konserwatorem powierzchni płaskich...
Ciekawe swoją drogą co Twój profesor o lispie myśli, starożytny język /z '58/ tak interpretowany jaki i kompilowany o niesamowitych możliwościach... ale to nie java albo C#... współczuję posiadania takieego wykładowcy.

p.s. muszę się zająć innymi sprawami, za kilka godzin jeszcze trochę dostukam :-)
p.s.2 Dyskusja co do JIT i VM odbywa się też w tym temacie: czy da sie napisac system operacyjny w assemblerze?.

0

Jak ktoś w ogóle nie zna podstaw programowania to nauka C++ będzie jak znalazł. I nawet łatwiej będzie się później przenieść na C sharp niż od razu go uczyć - języki są podobne, a po zmianie na C# programista będzie miał tylko ułatwienia.

0

Ja już swoje argumenty za używaniem C++ przedstawiłem w temacie 'ulubiony język', ograniczę się więc do stwierdzenia: tak, ma sens ;)

0

chcialem sie wypowiedziec, ale deus jak zwykle byl szybszy i powiedzial dokladnei to co ja chcialem ;))

0

@deus

Nie przesadzaj z tą potęgą... Kawałki Boosta, które zostaną dodane to chyba nie będzie jednak wielka rewolucja, zwłaszcza, żę szanujący sie programista plusów i tak od dawna Boosta używa*. Niemniej jednak C++ nie umrze, z powodów które podałeś.

*) chyba, że o czymś nie wiem i z chęcią przeczytam :)

0

DzieX ~ Moze to nie bedzie wielka rewolucja ale znowu przeskok z C++ do C# czy Javy (na poziomie samego jezyka) tez nia chyba nie jest (a w 0x ta roznica jeszcze bardziej sie zatrze - zwlaszcza jesli C++ dostanie GC) :)

Java i C# ma po prostu wszystkomajacego stdliba a tego w kazdym jezyku mozna ort! uzupelnic.

0

wolverine ma racje - potega C# i Javy to sa biblioteki i frameworki dostarczane niejako gratis ze srodowiskiem developerskim/uruchomieniowym.. a poza tym to oba te jezyki to praktycznie subsety C++'a i narzucaja jedynie jakies tam dodatkowe ograniczenia dzieki ktorym latwiej unika sie paru bledow i moze troche szybciej klepie typowy kod. jednak jest jedna rzecz, ktorej nie moge przebolec ze w C0x pewnie dalej nie bedzie, i czym caly czas .Net/Java/itede beda nad C++ mialy przewage:

  • reflection
  • i co za tym idzie, prostsze rozwiazanie modulow ladowalnych dynamicznie..
0

C++ będzie wykorzystywany do niszowych zastosowań (jak to kiedyś Sun przewidział). Czy warto się uczyć? Moim zdaniem na pewno na pierwszy język nie warto. Pierwsze co poznałem to był właśnie C++ i nie było miłe przedzierać się przez różne dziwaczne elementy obiektówki tego języka. Dodatkowo dochodzi STL, który nawet nie miał map haszujących (trzeba było pobierać boosta) i który wywala takie błędy, że nawet szkoda czasu na czytanie. To wszystko nie ułatwia nauki programowania. Dodatkowo jak zacząłem się zajmować algorytmami, to C++ nie mówił kiedy przypadkowo wyjechałem o 1 element za tablice. Takie szczegóły odwracają uwagę od sedna programowania i powodują, że trzeba się skupić na języku.
Myśle, że C++ warto się nauczyć, ale jako któryś już z rzędu język i raczej do konkretnego zastosowania, a nie "na wszelki wypadek".

0

Takie szczegóły odwracają uwagę od sedna programowania i powodują, że trzeba się skupić na języku.

Wrecz przeciwnie. C++ zmusza Cie by Twoj algorytm byl dobry i przemyslany nawet o to jedno wkurzajace miejsca za tablica. Kiedy juz o takich bledach sie nauczysz i o nich pamietasz nie musisz obciazac algorytmow pisanych w javie, c# czy innych jezykach wylapywaniem wyjatkow OutOfBoundsException 'tak na wszelki wypadek'. Wiesz po prostu, ze taki wypadek nie wystapi, bo Twoj algorytm nie zostal napisany na oko, a dokladnie. C++ jest w porzadku do nauki, bo daje do zrozumienia, ze znajomosc skladni to jedno a umiejetnosc myslenia to drugie. Bez tego drugiego Twoje programy beda sie wywalac kiedy tylko zapragna, zakladajac, ze w ogole rusza z miejsca.

PS. Nie grzebalbym jeszcze tego jezyka 'jak to kiedys Sun przewidzial', bo tak samo zapewne grzebano go 5, 10 i 15 lat temu i jak widac na razie nic z tego nie wyszlo. Kiedys pewnie umrze, ale raczej smiercia naturalna niz z powodu jakiegos zaborcy ;)

0

Ja dodam jeszcze, że mi sie bardzo podoba obiektowość plusów. Dziedziczenie wirtualne, private lub protected oraz udostępnianie wybiórcze - to są rzeczy dzięki którym przy dobrym zrozumieniu języka i projektowania zależności między klasami można robić cuda. Refleksji faktycznie brakuje. Z drugiej strony nie bardzo rozumiem ideę pomysłu aktualizowania języka co 10 lat :| Gdyby dorzucono więcej nagłówków do standardowej biblioteki język nie traciłby na popularności...

0

Wrecz przeciwnie. C++ zmusza Cie by Twoj algorytm byl dobry i przemyslany nawet o to jedno wkurzajace miejsca za tablica. Kiedy juz o takich bledach sie nauczysz i o nich pamietasz nie musisz obciazac algorytmow pisanych w javie, c# czy innych jezykach wylapywaniem wyjatkow OutOfBoundsException 'tak na wszelki wypadek'. Wiesz po prostu, ze taki wypadek nie wystapi, bo Twoj algorytm nie zostal napisany na oko, a dokladnie.

Tyle że wyjechanie poza tablicę zazwyczaj nieowocuje (natychmiastowym) błędem. Więc myślisz sobie, że wszystko jest cacy i przechodzisz do następnej części programu. A pewnego razu program wypluwa zły wynik i teraz szukaj wiatru w polu. Natomiast java wyrzuci wyjątek i tak będziesz zmuszony do porawienia błędu a przynajmniej nie pozostanie on ukryty.

0

Zalezy od punktu widzenia. Podejscie C++ zmusza Cie do przemyslenia algorytmu przed lub w trakcie implementacji, tylko czasami po. Dzieki temu unikasz takich bledow, bo przyzwyczajasz sie do faktu, ze trzeba sprawdzic zawczasu czy nie moga wystapic. Podejscie Javy jest leniwe: 'nie musze teraz sprawdzac, bo jak cos sie stanie, to dostane info'. Tyle, ze to info moze dostac juz klient w gotowym projekcie i to nie wyglada najlepiej.

Podsumowujac: zmuszanie do poprawki, a zmuszanie do nie popelnienia bledu (czyli do myslenia) to dwie rozne rzeczy.

0

reg_expr ~ To uzywaj vector::at() i bedziesz mial jak w Javie :P

0

Podejscie C++ zmusza Cie do przemyslenia algorytmu przed lub w trakcie implementacji, tylko czasami po. Dzieki temu unikasz takich bledow, bo przyzwyczajasz sie do faktu, ze trzeba sprawdzic zawczasu czy nie moga wystapic

Jak jesteś takim masterem, że nie popełniasz błędów to chyle czoło...

Podejscie Javy jest leniwe: 'nie musze teraz sprawdzac, bo jak cos sie stanie, to dostane info'. Tyle, ze to info moze dostac juz klient w gotowym projekcie i to nie wyglada najlepiej.

Jeszcze gorzej wygląda błąd typu "pamięć nie może być read" ;) A jeżeli ktoś ma takie podejście to mu współczuje.

Podsumowujac: zmuszanie do poprawki, a zmuszanie do nie popelnienia bledu (czyli do myslenia) to dwie rozne rzeczy.

A czemu C++ miałby zmuszać do myślenia ? Mnóstwo jest osób piszących w C++, które odpalą raz, zobaczy, że dla paru danych jest ok i idzie dalej. Natomiast jeżeli chce się dokładnie przetestować program to Java znakomicie to ułatwia.

reg_expr ~ To uzywaj vector::at() i bedziesz mial jak w Javie

Niby można tyle tylko, że i tak nikt tego właściwie nie używa. At jest mniej wygodne niż [] a świadomość, że można coś zrobić wygodniej trochę boli. Z kolei zastępowanie każdego at po przetestowaniu kodu trochę trwa. Swoją drogą mogliby w vectorze dać opcjonalny konstruktor, który by przyjmował obiekt testujący.

0

Panowie, o kompilacji w trybie Debug to nikt nie słyszał? /Oczywiście ja po latach pisania w asm tego nie używam... a powinienem/ W trybie debug dochodzą dodatkowe sprawdzenia, w nim testuje się poprawność algorytmu... nie wiem które kompilatory dodają, ale cześć dołącza dodatkowe sprawdzenia zakresów tablic itd... poprawcie mnie jeżeli się mylę.

0

No właśnie, błędy...
mój boże... królik chyba o tym już kiedyś mówił...

  1. co to, o asercjach nikt nie słyszał?
  2. debug modzie, przed deusa wymienionym?
  3. o porządnych zestawach testowych?

Jak ktoś siądzie na miesiąc i raz sobie napisze porządny framework do testowania kodu, to później takie bzdury, jak błędy indeksowania nie mają prawa się pojawić w HLLu. Zakresy to całkowita pierdoła, nie wiem, jak doświadczony programista może w ogóle myśleć, że to trudno namierzyć :O Tak samo zarządzanie pamięcią, zarządzanie zasobami i urządzeniami IO, może mniej trywialne, ale pkt 1 i 3 pozwala na całkowite panowanie nad nimi. Sorry deus, pkt 2 to akt desperacji ;)

Dopiero w wielowątkowości nie potrafiłem sobie dobrze szkieletu testowego zaprojektować, i na oślep trochę to śledziłem, zanim pełną stabilność uzyskałem. Ale to dlatego, że mało do tej pory pisałem takich projektów, i na etapie projektowania nie wiedziałem, czego mam się spodziewać.

reg_expr, c++ jest taki niszowy, że cały czas go rozwijają, i to intensywnie. Pewnie dla niszowców... deus te niszowe zastosowania wymienił.

Ad pytania w wątku: no pewnie, że warto. Sorry, może niektórych ubodę tym, co powiem, ale wypowiadanie się na podst. ofert w internetowych serwisach i międzynarodowych statystykach w stylu "najpopularniejszy język", to pomyłka, jeśli mówimy Polsce. Na targi pracy skoczyć czasem warto. W przeciągu ostatniego roku zwiedziłem takich inżynierskich "imprez" sporo (i nie tylko ja, ktoś też na pewno) i ofert dla znających c++ jest w ch... i jeszcze trochę.

Zresztą, praca... pan profesor chyba nigdy pracy nie szukał. Jest bardzo mało firm, które mówią: "musisz znać tylko i wyłącznie ten język, to środowisko i ten system". Pracownika się szkoli, inwestuje weń, to nie jest zabawa na rok, żeby stawiać wymagania, które są teraz trendy, a za rok to już licho wie. A z doświadczeń innych też wiem, że i tak w większych firmach obowiązuje założenie: gość przyjdzie do nas de facto zielony, jeśli chodzi o konkretne rozwiązania technologiczne, których w projektach używamy. Ale załapie je w ciągu x miesięcy i wtedy dopiero na jakieś odpowiedzialne stanowisko pójdzie.

0

@reg_expr: Zle czytasz moje wypowiedzi. Ja tez popelniam bledy, ale nie takie glupie jak zla indeksacja tablicy. Chodzi mi o podejscie ludzi korzystajacych z jezyka niz samego jezyka. Kozrystajacy z C++ sa nastawieni na to, ze musza sie raczej pilnowac i przemyslec te kroki algorytmu, zeby pozniej nie tracic czasu na niepotrzebne szukanie bledow, ktorych mozna latwo uniknac. Asercje i zestawy testowe sa of coz potrzebne, bo nie samymi tablicami czlowiek zyje ;) Ja teraz czesciej pisze w C# na przyklad i dla mnie unit testy sa obowiazkowe, zeby miec swiety spokoj. Ale nie robie unit testow, zeby sprawdzic czy wyjade poza tablice czy innych tego typu malo istotnych bledow (bo tego nauczylem sie unikac dzieki c++ wlasnie) tylko dla swietego spokoju i w celu unikniecia powazniejszych oraz z paru innych powodow.

A ze sa i ludzie, ktorzy odpala, zobacza, ze dziala i juz, to ich problem. Jezyk to tylko narzedzie, jak sie nie umie z niego korzystac to ma sie problem.

0

Ranides - a kto ci każe patrzeć na rankingi zagraniczne [???] Jest chociażby polska 'komercha' i C++ dalej ma w plecy w stosunku do Javy.

Jak ktoś siądzie na miesiąc i raz sobie napisze porządny framework do testowania kodu, to później takie bzdury, jak błędy indeksowania nie mają prawa się pojawić w HLLu. Zakresy to całkowita pierdoła, nie wiem, jak doświadczony programista może w ogóle myśleć, że to trudno namierzyć

Pisałem, że takie błędy zdarzają się początkującym i to utrudnia naukę. Kiedyś pisałem projekt, który po pewnym czasie zaczął wieszać mi debugger. Znalezienie błędu zajęło mi mnóstwo czasu, który można było spożytkować trochę ciekawiej. Komu nie zdarzył się błąd związany ze wskaźnikami ten po prostu kłamie albo nie pisał większego projektu. Dzięki takim językom jak Java nie trzeba się skupiać na pierdołach.

reg_expr, c++ jest taki niszowy, że cały czas go rozwijają, i to intensywnie. Pewnie dla niszowców... deus te niszowe zastosowania wymienił.

C++ jest potrzebny

  1. tam gdzie jest potrzebna szybkość
  2. tam gdzie jest potrzebny dostęp do sprzętu
    Komputery stają się coraz szybsze, Java również, czas pisania projektu zmniejsza się w stosunku do C++, więc z tej dziedziny będzie po mału wypierany.
    A argument, że jakiś język jest wielce rozwijany bo jest potrzebny jest śmieszny. D jest "intensywnie rozwijany" a nikt nie myśli o pisaniu poważnych projektów.
0

Pisałem, że takie błędy zdarzają się początkującym i to utrudnia naukę.

W faktycznych zastosowaniach to faktycznie nie powinno nikogo obchodzić, bo

  1. zakłada się, że gość już tę naukę podstaw ma za sobą, więc sorry. początkującego, co indeksy myli, to do ekipy "nie chcemy"
  2. albo w firmie robią migrację z c na c++ (tak c++ w sumie zdobywał rynek), wtedy to nagle programiści w c mieli 10x łatwiej, a nie trudniej.

Kiedyś pisałem projekt, który po pewnym czasie zaczął wieszać mi debugger. Znalezienie błędu zajęło mi mnóstwo czasu, który można było spożytkować trochę ciekawiej.

można też było wyciągnąć wnioski, że jednak unit testy są potrzebne, i programowania defensywnego nie wymyślono 4fun. Takich zawalonych projektów miałem sporo, każdy mnie mnóstwo nauczył. De facto dopiero dwa ostatnie napisałem porządnie zgodnie z zasadami inżynierii oprogramowania. I czasu spędzonego na porządne sprawdzenie każdego modułu nie żałuję. W javie też bym to musiał zrobić, mimo, że błędy może aż tak spektakularnych jaj by nie robiły, jak wieszanie debuggera. Inna sprawa, chętnie bym zobaczył kod, co wiesza debuger. Przydałby mi się w zabezpieczeniu programu przed RE :>

A argument, że jakiś język jest wielce rozwijany bo jest potrzebny jest śmieszny.

Ojj, bój się! D zbliża się wielkimi krokami :>

0
ranides napisał(a)

I czasu spędzonego na porządne sprawdzenie każdego modułu nie żałuję. W javie też bym to musiał zrobić, mimo, że błędy może aż tak spektakularnych jaj by nie robiły, jak wieszanie debuggera

oj potrafia:) a przynajmniej potrafily.. jeszce nie dawno (nie wiem jak w najnowszej wersji) podczas debuggingu pod eclipsem jak sie GC wlaczyl i sie mialo pecha, to potrafily sie rozne fajne rzeczy dziac - od zwichy o czasie skonczonym ale nieokreslonym, po outofmemoryexception ze srodka eclipse'a co powodowalo blyskawizcne zamkniecie wszystkiego, lacznie ze srodowiskiem i niezapisanymi plikami:)

ranides napisał(a)

Przydałby mi się w zabezpieczeniu programu przed RE

ano.. ostatnio wpadlem na plan: uzyje sobie JAD'a na jednym z appletow mojego i-banku. slicznie sie cofnal do zrodel. ale mialem beke nieziemska.. w applecie kodziki w stylu if(!connected) log.debug("znowu piardlo");.. ale bym nie byl soba gdybym nie zaczal grzebac :) tak dla beki przerobilem go totalnie, podmienilem jar'y w cache'u przegladarki -- jeeee moj i-bank uzywa mojego appletu v2 muahhaha..
..ale najwieksza bede mialem, jak dokladniej jary obadalem -- jary, klasy etc wszystko pokolei bylo podpisane certyfikatem banku. ale nie zauwazylo ze podmienilem zawartosc :) ale to akuratr pewnie byla juz wtopa przegladarki ze nie sprawdzala..
..innym razem postanowilem odpalic JAD'a na pewnym programie, ktory nie przymierzajac mial ze 70mega. paredziesiat tysiecy klas, potraktowanych obfuscatorem - nazwy klas, pakietow, metod byly pokaszanione. ale ciala metod i kod juz nie. grep+sed i po krzyku, juz sa sensowne nazwy w tym co chce obejrzec.. i koniec "zabezpieczen".. a to byl program komercyjny, widac ze sie ciezko starali..

moim skromnym zdaniem, piekielnie ciezko jest takei cos jak Java (->JAD) czy .Net (->Reflector) porzadnie "zaciemnic" czy zabezpieczyc, glownie z powodu reflection. ono wymaga aby metody i klasy byly nienaruszone semantycznie, bo a nuz ktos gdzies potem sie przez reflecta sprobuje do tej mojej prywatnej tajnej metody dostac.. jesli reflection ma dzialac poprawnie --- klasy i metody musza byc, nie mozna np. automatycznie skleic 50 metod w jedna ogromna i je posiekac i odpowiednio pokierowac wykonaniem za pomoca jakiegos extra-parametru mowiacego ktorym potokiem leciec w bigbercie.. co najwyzej mozna mieszac -w- danej metodzie, no ale przeciez bytecode jest na tyle prostolinijny i niezroznicowany ze nawet nie ma jak.. jedyne i jakiekolwiek zabezpieczenie moze dostarczyc tyko system operacyjny wspolpracujacy scisle ze srodowiskiem wykonania..

0

Ja proponuję używać nowych języków, takich jak PHP czy RoR (oczywiście na ile możesz).

Aplikacje tworzysz szybko, jeżeli wiesz jak, również bezpieczenie.

Nie słuchaj wszystkich, którzy mówią że C++ to i tamto. Wiesz, jeżeli C++ przestanie być popularne, to oni przestaną być guru. Dlatego go tak bronią. C++ tak naprawdę ma ciężkie życie w dobie Internetu.

0
ulus napisał(a)

Ja proponuję używać nowych języków, takich jak PHP czy RoR (oczywiście na ile możesz).

Aplikacje tworzysz szybko, jeżeli wiesz jak, również bezpieczenie.

Ekhm... RoR /Ruby on Rails/ to framework dla języka Ruby, nie sam język... Tak, PHP... wszystkiego najlepszego, napisz w nim coś wartościowego co nie jest aplikacją webową... Python jest już mocniejszy, znacznie mocniejszy /taki framework jak django widziałeś?/. Co do szybkości tworzenia - w C# piszesz jeszcze szybciej niż w PHP, z resztą, boost w C++ daje porównywalną szybkość tworzenia przy jednoczesnej bardzo wysokiej wydajności... raczej polecałbym się językami funkcyjnymi zainsteresować jeżeli tak bardzo do przodu chcesz być, F#, haskell... bo lispa to się nie będziesz uczył, toż to stare i niemodne przecież. Ach, wymieniłeś języki i technologie webowe, sugerujesz, że oprogramowania lokalnego już się nie tworzy?

Kolejny argument do obalenia - na interpreter PHP i inne takie zabawki są znane exploity, ciągle też powstają nowe... powiedz mi, czy program w C++ pisany przez rozsądnego programistę można wyexploitować? Jedynie jeżeli dopuści się zaniedbań. Owszem, wyexploitowanie interpretera języka skryptowego na serwerze przez zdalnego użytkownika to już prawdziwe wyzwanie znając nawet podatności ale jest to wykonalne, nie jeden tego typu atak został wykonany więc... narażony jest nie jeden program a wszystkie używające danego frameworku.

ulus napisał(a)

Nie słuchaj wszystkich, którzy mówią że C++ to i tamto. Wiesz, jeżeli C++ przestanie być popularne, to oni przestaną być guru. Dlatego go tak bronią. C++ tak naprawdę ma ciężkie życie w dobie Internetu.

C++ i inne języki natywne są potrzebne, C++ zaś oferuje sporą elatyczność. C++ ma ciężkie życie? Gdzie? Może podasz jakieś konkrety? W czym jest napisana używana przez Ciebie przeglądarka internetowa? Używasz przeglądarki na silniku gecko, w czym ów silnik jest napisany? System operacyjny to Windows XP... w czym jest pisana większość tego systemu? Owszem WINAPI jest strukturalne, kompatybilne z C, ale powłoka systemowa, wnętrze bibliotek czy nawet elementy kernela są w 'pełnym' C++. OK, a w czym jest pisana większość softu na ten system? W ciemno mogę powiedzieć, że C++ i Delphi... Niech popatrzę na to co używam /wyniki skanowania PEID'em - użyte kompilatory/:

Interactive Disassembler - Borland C++ 1999 /BCB na tym kompilatorze bazuje/</li> Immunity Debugger - Borland C++ 1999</li> LordPE - Microsoft Visual C++</li> Opera - Microsoft Visual C++ 6.0</li> Foobar 2000 - Microsoft Visual C++ v6.0</li> Active Python - Microsoft Visual C++ v7.1</li> CloneCD - Borland C++ 1999</li> WinRAR - Borland C++ 1999</li> Guitar Pro - Borland Delphi 6.0 - 7.0</li> Acrobat Reader - Microsoft Visual C++ 7.0</li> Tlen.pl - Borland C++ 1999
Masz jeszcze coś do dodania? :></li> </ul>

Bronimy C++? Popatrz, każdy z nas - programistów - zna co najmniej kilka języków programowania, dlaczego mamy akurat tego jednego bronić skoro jest przereklamowany? Dlaczego C++ miałby być używany skoro jest inna, sensowniejsza alternatywa? Dlaczego podstawą GNU są C i C++? Może warto byłoby się zastanowić?

Język programowania to tylko narzędzie, ten fach wymaga elastyczności, ograniczanie się do jednego języka to kalectwo... Programista jest\był kiedykolwiek uważany za guru ze względu na użycie C++? Och, nie rozśmieszaj mnie... Przy okazji - np. Python posiada moduł do łączenia z kodem w C++, dlaczego, dla zabawy? A, tak, przecież to zmowa programistów, uczymy się wielu języków programowania tylko po to aby wychwalać i chronić C++, wszędzie układ :-)

p.s. niech zgadnę, nie udało Ci się przebrnąć przez tajemnicę wskaźników? /heh, klątwa średników z SoftICE'a wiecznie żywa/ :>

0

Ach, wymieniłeś języki i technologie webowe, sugerujesz, że oprogramowania lokalnego już się nie tworzy?

A wiesz Deus, zdarzyło mi się usłyszeć już kilka razy w ciągu ostatnich lat, że koniec aplikacji jakie znamy, że web, że ASP (Application Service Provider), że Google Docs walczy z MS Office... Dopiero fajnie się robi, jak się nie ma dostępu do Internetu...

Dlaczego podstawą GNU są C i C++? Może warto byłoby się zastanowić?

Bo otwartej Javy wtedy nie było? :-) I chyba Python też nie istniał. I komputery były gorsze. I..

Warto uczyć się wielu języków. Ja osobiście za C/C++ nie przepadam. Taka awersja, nieco mniejsza tylko niż do Javy ;-) Ale co nieco napisać umiem, bo warto znać. Po prostu.

0
ktos napisał(a)

Bo otwartej Javy wtedy nie było?

bawi mnie wielce jak ktos opiera dowod wyzszosci javy na jej nowosci:) przeciez poza reflection ona nie ma nic nowego.. a to co ostatnio w niej 'poprawiaja' to defacto dodaja rzeczy z C++'a ktorych wszystkim brakuje.. dodali niby-template'y, tak na prawde udawane tylko. a ich skladnia z uzyciem pytajnikow przy 2-3 zagniezdzeniach wyglada koszmarnie.. checked exceptions? obecnie malo kto ich uzywa, bo wszystkich wnerwia throws i obowiazkowe try/catch i ludzie siedza na unchecked'ach, zupelnie jak w C++.. java6 - dodano bytecodeinjection, a mialo byc tak pieknie, bezpiecznie, kod nienaruszalny:) java7 - dodadza przeciazanie operatorow! a jeszcze jakis rok-dwa temu javowcy nagminnie przekonywali mnie ze C++ "smierdzi" bo przez to diabelskie przeciazanie operator nikt nigdy nie wie co sie dzieje.. autentycznie, tylko czekac az wprowadza implicit conversion hehe..

0

O matko, znowu się zrobił flame Java kontra C++. ;-(

C++ warto się uczyć. Jak kilka razy wytropisz błąd w aplikacji na kilkaset tys. linii, która się segfaultuje w losowym miejscu, to później nie zaskoczy Cię nic. A w Javie takie losowe błędy też się zdarzają (wystarczy poprogramować trochę wielowątkowo). C++ daje po prostu większą władzę, ale z władzą wiąże się zawsze odpowiedzialność. Odpowiedzialny programista poradzi sobie później świetnie w C#, D czy Javie. Nie ma nic gorszego niż programista, który nie wie, co się dzieje w jego programie. Stąd języki takie jak C/C++ i assemblery to absolutne minimum.

Nie zgodzę się, że Java nic nowego nie wniosła - jak każdy język ma pewne wady, ale też ma i niekwestionowane zalety. Dla kogoś przyzwyczajonego do C++ może być dziwna i ograniczona. Na tej zasadzie możemy mówić, że żaden język nic nie wniósł, bo wszystko miał LISP kilkadziesiąt lat temu.

0

@Krolik: Co do odpowiedzialnosci to ladnie ujales to co staralem sie powiedziec w paru wypowiedziach ;)

0

rowniez sie pod tym podpisuje :)

ps. w takim razie musze dopisac LISP'a do mojego toknow :)

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