Programista C/C++ ?

0

Siema ; )

Bez owijania w bawełnę ; ) :

  1. Warto dzisiaj inwestować czas w c++ w perspektywie pracy w nim w przyszłości ?
  2. Jakiej wiedzy oczekują pracodawcy ? Jakieś konkretne biblioteki warto umieć ? STL i Boost wystarczy czy w coś jeszcze warto zainwestować czas ?
  3. W jakich zastosowaniach dzisiaj używa się c++ ?

(treść posta odnośni się zarówno do C++, jak i C ;p )

Pozdrawiam ! ; )

0

C i C++ to wredne języki... Nie da się ich nauczyć w 100%. Dobry programista znajdzie pracę, ale klepacz C++ będzie miał ciężko. Warto zacząć naukę aby zapoznać się z tymi językami a co do pracy zobaczysz sam czy będziesz chciał pisać w tym jezyku czy moze w innym...

0

sid90 - ja już pisałem w c++ w liceum ; ) Teraz siedziałem w Javie i planuje powrót (z pewnych powodów ;p) na c++ stąd pytania ; )

zaczynajac "dziś" naukę zaczynałbym od razu od bibliotek (bo krótkim przypomnieniu sobie całej składni) ; )

0
  1. W jakich zastosowaniach dzisiaj używa się c++ ?

Głównie gry komputerowe i programowanie sieciowe. Z tej pierwszej dziedziny C++ będzie stopniowo wypierany głównie przez C#(pc, xbox), Jave(Android, telefony komórkowe), Objective C(iPhone i podobne). Oczywiście to potrwa - wiele silników wykorzystuje C++ + masę dodatkowych bibliotek, napisanych z wykorzystaniem tego języka. Do tego produkty Nokii - Symbian i Qt mają się dobrze.
Co do programowania sieciowego - nigdy mnie to nie interesowało, ale co chwila napotykam takie ogłoszenie o prace - może znajdzie się ktoś kto siedzi w tym temacie, to trochę przybliży.

0

Co do programowania sieciowego - nigdy mnie to nie interesowało, ale co chwila napotykam takie ogłoszenie o prace - może znajdzie się ktoś kto siedzi w tym temacie, to trochę przybliży.

dobrze wiedzieć ; )

dzięki :)

(czekam oczywiście na kolejne odpowiedzi ;p )

Pozdrawiam ! ; )

0

Z tego co wiem, to cepa chyba siedzi w tym temacie(a przynajmniej coś mi się tam kojarzy), może znajdzie czas i coś opowie. Tak jednak jak mówię, ogłoszeń jest dość sporo, pierwsze lepsze które ostatnio oglądałem:
http://www.pracuj.pl/praca/Programista%20C%2B%2B;jt/Katowice;wp/oferta,1680324
Widełek jak zawsze uświadczyć nie można - ale z tego co mi wiadomo, na płacę w tej dziedzinie akurat nie będzie się narzekać.

0

Jeżeli naprawdę dobrze to draństwo poznasz to na pewno znajdziesz dobrą pracę za dobre pieniądze. Oprócz zastosowań wcześniej wymienionych to w c++ jest napisane całkiem sporo silników, jąder czy szkieletów różnych systemów. Ktoś to wszystko musi doglądać i odświeżać. W większych firmach CZASAMI w c++ pisze się biblioteki z którego będą korzystać programiści wysokopoziomowi.

Ale patrząc realnie, trzeba naprawdę sporej wytrwałości i cierpliwości to tego nie wiadomo czego (mówię o C++ ofcourse). Każdy dobry, czy bardzo dobry koder C++ po części nienawidzi tego języka. Gdyby nie szybkość natywnie skompilowanego programu sądzę że C++'em interesowaliby się tylko hobbyści. Qt co prawda sprawiło, że da się obecnie równie sprawnie pisać na dekstopy jak w javie czy C# ale sądzę że ten framework pojawił się trochę za późno. Poza tym, inwestorzy chcą mieć systemy obsługiwane z przeglądarki, tak więc C++ jest bez szans.

0

Z tej pierwszej dziedziny C++ będzie stopniowo wypierany głównie przez C#(pc, xbox)

False.

Pewnie, że c++ się przydaje nawet gdy szukają kogoś od javy,c# itp to c++ jest bardzo dużym atutem.

0
Will napisał(a)

Z tej pierwszej dziedziny C++ będzie stopniowo wypierany głównie przez C#(pc, xbox)

False.

Bo?

0

C# i C++ nie stanowią dla siebie konkurencji ! To są języki innego poziomu. To tak jakbyście chcieli VW Transita wyprzeć Audi A3...
P.S Wydaję mi się, że c++ powoli staje się językiem szkoleniowym (tak na "dobry" początek) a tylko najwytrwalsi później w tym kodzą..

0

C# i C++ nie stanowią dla siebie konkurencji ! To są języki innego poziomu.

Nie mówię o konkurencyjności języków jako takiej, tylko o konkurencyjności danych języków w konkretnej dziedzinie(w programowaniu gier). Napisałem, że w innych zastosowaniach, jakie spotykam się nie znam - tak więc się nie wypowiadam.

0

Bo?

Bo c# jest za wolny? Nie twierdze, że w ogóle nie, mono jest bardzo dobre jako język skryptowy co potwierdziło unity i jest szybsze niż lua czy AngelScript. Jednakże do pisania głównych modułów kompletnie się nie nadaje(w przypadku prostych gier jest ok ale pisze tutaj ogólnie).

P.S Wydaję mi się, że c++ powoli staje się językiem szkoleniowym (tak na "dobry" początek) a tylko najwytrwalsi później w tym kodzą..

Źle Ci się wydaje. Pisze już dobre kilka lat, pisałem w php/c#/java/różne języki skryptowe i cały czas 90% czasu pisze w c++(z wyboru).

0

Bo c# jest za wolny?

Nie chce autorowi robić offtopa o szybkości języków, bo nie o to się pytał, a takich flejmów już jest dosyć na forum. Dziedzina gier chyba też go raczej nie interesuje. Pożyjemy zobaczymy w każdym razie ;)

0

dzięki za dyskusję, bo zawsze coś można wywnioskować z wypowiedzi innych, jednak wolałbym konkretne odpowiedzi do moich pytań ; )

Pozdrawiam ! ; )

0
lewak napisał(a)

Bo c# jest za wolny?

Nie chce autorowi robić offtopa o szybkości języków, bo nie o to się pytał, a takich flejmów już jest dosyć na forum. Dziedzina gier chyba też go raczej nie interesuje. Pożyjemy zobaczymy w każdym razie ;)

Flame'ów jest owszem sporo, ale IMHO dużo ciekawsze jest porównanie tej samej gry napisanej raz w C a raz w Javie (Java i C# to prawie to samo, jeśli chodzi o wydajność). Tu masz przykłąd Jake2/Quake: http://bytonic.de/html/benchmarks.html. Skoro nie widać różnicy, to po co przepłacać? Też sądzę, że to tylko kwestia czasu.

0

Will chyba dobrze mi się wydaję... Jednak większość osób rzuca po czasie C++ w cholerę. Ty pracujesz pisząc w C++ czy uczysz się pisząc w C++, bo to też ma znaczenie... A może po prostu jesteś jednym z tych "wytrwałych"

0

Flame'ów jest owszem sporo, ale IMHO dużo ciekawsze jest porównanie tej samej gry napisanej raz w C a raz w Javie (Java i C# to prawie to samo, jeśli chodzi o wydajność). Tu masz przykłąd Jake2/Quake: http://bytonic.de/html/benchmarks.html. Skoro nie widać różnicy, to po co przepłacać? Też sądzę, że to tylko kwestia czasu.

Nawet nie masz pojęcia jak twój przykład jest bezsensu. Chyba wyraźnie napisałem, że mam na myśli gry na wysokim poziomie. Słyszałeś o czymś takim jak 80-20 rule? Prawda jest taka, że c# jest wolniejszy i to tak z połowę. Może być nawet jakaś gra chodząca szybciej na javie i co z tego? Napisz klona crysis'a w c# to będzie śmiech na sali. Najważniejsze elementy pisze się często w asm'ie bo i c++ jest za wolny a użycie c# na konsoli w jakieś produkcji AAA to była by frajda.

Will chyba dobrze mi się wydaję... Jednak większość osób rzuca po czasie C++ w cholerę. Ty pracujesz pisząc w C++ czy uczysz się pisząc w C++, bo to też ma znaczenie... A może po prostu jesteś jednym z tych "wytrwałych"

Pisze w różnych językach ale moim ulubionym jest właśnie c++ i nie uważam aby był trudny. Jeśli ktoś potrafi pisać w c++ to java czy c# nie są żadnym problemem. Uważam, że to java itp są językami szkoleniowymi a powoli odchodzi się od c++/c/asm'a bo do większości zastosowań wystarczają one w 100%(c# itp).

0
Will napisał(a)

moim ulubionym jest właśnie c++ i nie uważam aby był trudny.

Ślepemu fanboyowi już podziękujemy...

0
Will napisał(a)

Uważam, że to java itp są językami szkoleniowymi a powoli odchodzi się od c++/c/asm'a bo do większości zastosowań wystarczają one w 100%(c# itp).

Od C sie nie odejdzie przez najblizsze 10 lat, poniewaz Linuksy sa na nim oparte i nie ma na razie zadnych planow na zmiane jezyka w jakim jadro ma byc pisane, o sofcie nie wspominajac.

O asemblerze nie chce sie wypowiadac, po prostu powiedzmy ze nie wiesz o czym piszesz.

0

Ślepemu fanboyowi już podziękujemy...

Razi Cię, że mam inne zdanie? Wyraźnie napisałem, że c++ mi się najbardziej podoba ale często pisze w innych językach i java/c# mają po prostu inne zastosowanie. Znów pokazujesz, że umiejętność czytania ze zrozumieniem nie jest twoją mocną stroną.

Od C sie nie odejdzie przez najblizsze 10 lat, poniewaz Linuksy sa na nim oparte i nie ma na razie zadnych planow na zmiane jezyka w jakim jadro ma byc pisane, o sofcie nie wspominajac.

O asemblerze nie chce sie wypowiadac, po prostu powiedzmy ze nie wiesz o czym piszesz.

A czy napisałem, że się w ogóle odejdzie? Chodzi o same początki szkolenia w programowaniu. Powiedzmy, że wiem o czym pisze tylko Ty nie potrafisz tego zrozumieć i wyciągasz swoje naciągane dzikie wnioski.

0

Will nie myl mnie ze Świętowitem, bo Twoj post tak odczytalem jakbys do jednej osoby pisal.

Co sie tyczy mojego postu to napisales wlasnie, ze sie odchodzi, wiec nie wiem po co sie teraz bronisz wypaczajac rzeczywistosc ?

Skoro wiesz o czym piszesz to wyjasnij jakim cudem chcesz z asemblera na x86 odejsc ?

0
t0m_k-tmp napisał(a)

Will nie myl mnie ze Świętowitem, bo Twoj post tak odczytalem jakbys do jednej osoby pisal.

Co sie tyczy mojego postu to napisales wlasnie, ze sie odchodzi, wiec nie wiem po co sie teraz bronisz wypaczajac rzeczywistosc ?

Skoro wiesz o czym piszesz to wyjasnij jakim cudem chcesz z asemblera na x86 odejsc ?

"są językami szkoleniowymi"- miałem na myśli tylko początki nauki programowania gdzie ludzie co raz częściej wybierają c#/jave i nie muszą babrać się ze wskaźnikami, leakami, pisać własne alokatory itd. Chodzi tylko o samo szkolenie/wprowadzenie. Nie pisałem ogólnie tylko odnosiłem się do postu Sid_'a.

0
Will napisał(a)

Znów pokazujesz, że umiejętność czytania ze zrozumieniem nie jest twoją mocną stroną.

Chyba Ty, wyraźnie zaznaczyłem, że chodzi mi przede wszystkim o stropień trudności języka. C++ jest najtrudniejszym, najbardziej niespójnym i niedorobionym językiem z mainstreamu, nie spotkałem w życiu programisty, który twierdziłby, że język nie tworzy trudności i jest prosty do opanowania (jak większość innych).

Will napisał(a)

"są językami szkoleniowymi"- miałem na myśli tylko początki nauki programowania gdzie ludzie co raz częściej wybierają c#/jave i nie muszą babrać się ze wskaźnikami, leakami, pisać własne alokatory itd.

Twierdzisz, że w językach z GC nie mam memleaków? Pomijając kwestie interakcji z rzeczami, których czas życia musi być ściśle określony to pozostaje problem chociażby ze zwalnianiem referencji, żeby jakieś trupy z odwołaniami nie leżały na stercie do końca programu.

Życia uczy (ANSI) C, nie C++. C++ uczy patologii, pijaństwa i tanich dziwek...

0

Dobra co do samego tematu, zeby offtopa nie robic dalej.

Jest tyle jezykow, a wszyscy sie zastanawiaja nad nauka jezykow c-pochodnych, czy naprawde tak malo popularne sa inne jezyki, ze nikt poczatkujacy nawet o nich nie slyszal.

C
Do programowania malych jak i duzych projektow, znajduje zastosowanie w programowaniu mikrokontrolerow, kerneli, driverow, malware'u, serwerow, aplikacji desktopowych i w wielu innych.

Cechy:

  • Szybkosc, przejrzysta skladnia, popularnosc, duze mozliwosci
  • Zgodnosc kompilatorow ze standardem c89, jesli chodzi o c99 to troche sprawa gorzej wyglada
  • Przenosnosc samego jezyka jak najbardziej, ale jak wiemy Linux ma libs, a windows msvcrt, ktore juz takie kolorowe nie jest

C++
Do programowania malych jak i duzych projektow. Nadaje sie praktycznie do tych samych zastosowac co jezyk C.

Niestety niektorzy twierdza ze ma wieksze mozliwosci przez swoja pseudo obiektowosc ale ja sie z tym nie zgadzam, to samo co w C++ mozna i w asmie nakodzic, wiec takie argumenty mnie nie przekonuja.

Cechy podobne do C, z tym ze dochodzi pseudo OOP oraz kompilatory lubie sie miedzy soba nie zgadzac co do jezyka.

C#
Troche go liznalem, wiec nie chce sie wypowiadac na ten temat, ale moje pierwsze odczucia po spotkaniu sie z nim raczej pozytywne.

Tak naprawde jezyk wybiera sie pod konkretny projekt/problem, wiec po prostu trzeba sobie uswiadomic, ze wybor pierwszego jezyka nie jest kluczowym momentem w zyciu programisty, a tylko poczatkiem i nic wiecej.
Kazdy i tak kto dalej w to brnie pozna inny jezyk i bedzie mial porownanie, a wtedy bedzie mogl zadecydowac czy pozostawic obecny jezyk i zaczac kodzik w nowym, czyli zmienic kolejnosc jezykow po ktore sie bedzie siegalo.
Nastepnie przychodzi taki moment ze juz sie zna kilka jezykow i jezyk sie wybiera zaleznie od przeznaczenia aplikacji i stawianych wymagan programiscie.

Nie dopisalem jeszcze, ze od C idac w dol mojego postu jezyki zaczynaja sie robic wolniejsze i jakby nie bylo bardziej wysokopoziomowe. W C# zmienia sie platforma, a C++ jest bardziej naladowany nic C, wiec sila rzeczy musza zwalniac.

0
t0m_k-tmp napisał(a)

Do programowania malych jak i duzych projektow, znajduje zastosowanie w programowaniu [...] malware'u

Na równi z C++ czy Delphi...

t0m_k-tmp napisał(a)
  • Przenosnosc samego jezyka jak najbardziej, ale jak wiemy Linux ma libs, a windows msvcrt, ktore juz takie kolorowe nie jest

Generalnie msvcrt jest całkowicie zgodne z ANSI C, poza wyłączeniem w NT6 (oczywiście można włączyć z powrotem) obsługi '%n' w printfie, powody oczywiste.

t0m_k-tmp napisał(a)

Do programowania malych jak i duzych projektow. Nadaje sie praktycznie do tych samych zastosowac co jezyk C.

To prawda, można nawet wykorzystując OOP C++ i szablony stworzyć samodzielny infektor plików PE, całkiem przyjemnie zresztą. Oczywiście trzeba trochę zabawy jeżeli chce się stringów używać (kompilatory mają tendencję do generowania chorych sposobów inicjalizacji) ale czego się nie da.

t0m_k-tmp napisał(a)

Niestety niektorzy twierdza ze ma wieksze mozliwosci przez swoja pseudo obiektowosc ale ja sie z tym nie zgadzam, to samo co w C++ mozna i w asmie nakodzic, wiec takie argumenty mnie nie przekonuja.

W niektórych wypadkach w asm można napisać nawet więcej jeżeli uwzględnimy makra/metaprogramowanie oferowane przez konkretne kompilatory (z fasmem na czele). Z drugiej strony wszystko do poziomu asma jest sprawadzane, usiągnięcie sensownego poziomu abstrakcji przy bardziej złożonym systemie w asm jest bardzo bolesne... Poza tym praktycznie nikt tak naprawdę nie potrzebuje asma.

t0m_k-tmp napisał(a)

Cechy podobne do C, z tym ze dochodzi pseudo OOP oraz kompilatory lubie sie miedzy soba nie zgadzac co do jezyka.

I mają prawo się nie zgadzać, definicja języka jest przejrzysta jak zabite dyktą okno, próba implementacji tego powinna być równoważna biletowi w jedną stronę do zakładu psychiatrycznego... Po prostu C++ pierwotnie był narzędziem na potrzeby jednego projektu, Późniejszy rozwój, w imię świętej dla tego języka kompatybilności wstecznej, to głównie dodawanie nowych mechanizmów mających w jakimś stopniu rekompensować poprzednie błędy...

0
Świętowit napisał(a)
t0m_k-tmp napisał(a)

Do programowania malych jak i duzych projektow, znajduje zastosowanie w programowaniu [...] malware'u

Na równi z C++ czy Delphi...

Jesli chodzi o popularnosc jezyka w jakim jest malware pisany to nie robie statystyk.

Co do tego czy sie nadaje w tym samym stopniu co C++i Dephi to nie, ale mozna to wywnioskowac z cech jakie podalem, czyli szybkosc chociazby. O Delphi nie wspominalem, poniewaz nie mam wiedzy jesli chodzi o ten jezyk, ale tyle co wiem wystarczy, zeby zrezygnowac z niego przy pisaniu takiego kodu.

Tak jak dalej napisales, mozna latwiej napisac infektor w C++, ale robaczka bym juz pisal w asm'ie samym ze wzgledu na ilosc kodu wynikowego, rozmiar i szybkosc, a jesli mialbym wybrac cos wyzej to C, ale na pewno nic z wyzszego poziomu, poniewaz juz kod jest za wolny do takich celow jak i za duzy.
Nie bralbym pod uwage na pewno prostoty napisania takiej aplikacji, a to co podalem.

0
t0m_k-tmp napisał(a)

Co do tego czy sie nadaje w tym samym stopniu co C++i Dephi to nie, ale mozna to wywnioskowac z cech jakie podalem, czyli szybkosc chociazby.

Malware nie musi być szybki, nie ma to praktycznie żadnego znaczenia. Generalnie asm nie udostępnia praktycznie niczego, czego nie dałoby się osiągnąć w C - jeden z powódów unikania pisania driverów i narzędzi (nawet do RE) w asm.

t0m_k-tmp napisał(a)

Tak jak dalej napisales, mozna latwiej napisac infektor w C++, ale robaczka bym juz pisal w asm'ie samym ze wzgledu na ilosc kodu wynikowego, rozmiar i szybkosc, a jesli mialbym wybrac cos wyzej to C, ale na pewno nic z wyzszego poziomu, poniewaz juz kod jest za wolny do takich celow jak i za duzy.

Zdziwiłbyś się, nowoczesne kompilatory przy wymuszeniu maksymalnej optymalizacji pod względem rozmiaru potrafią pięknie kod redukować, inline'ować to, co w formie oddzielnej funkcji byłoby większe, robić prawdziwe cuda. Muszę przyznać, że z przyjemnością kod wynikowy oglądałem, po paru klasach i kombinowaniu praktycznie śladu nie zostało. W asm da się te 10-20% mniejszy kod uzyskać, rozmiar zaś taki kluczowy znowu nie jest. Dopiero jak wchodzimy w coś z naprawdę wysokiej półki to w grę zaczyna chodzić jedynie asm... do momentu sięgnięcia na najwyższy poziom, wtedy znowu C/C++ wraca do użycia - kwestia napisania zabawki, która poradzi sobie z modyfikacją siebie wystarczająco dobrze.

Nie mówię, że trzeba to w C/C++ pisać, ale można z całkiem niezłym skutkiem, zresztą pobaw się tym, naprawdę ciekawa zabawa.

0
Świętowit napisał(a)

Generalnie asm nie udostępnia praktycznie niczego, czego nie dałoby się osiągnąć w C - jeden z powódów unikania pisania driverów i narzędzi (nawet do RE) w asm.

Z tym sie zgadzam jak najbardziej. Po co sie katowac jak mozna szybciej kod napisac w C, a przy odpowiedniej kompilacji i optymalizacji bedzie bardzo zblizony do czystego asma.

Świętowit napisał(a)

Zdziwiłbyś się, nowoczesne kompilatory przy wymuszeniu maksymalnej optymalizacji pod względem rozmiaru potrafią pięknie kod redukować, inline'ować to, co w formie oddzielnej funkcji byłoby większe, robić prawdziwe cuda. Muszę przyznać, że z przyjemnością kod wynikowy oglądałem, po paru klasach i kombinowaniu praktycznie śladu nie zostało. W asm da się te 10-20% mniejszy kod uzyskać, rozmiar zaś taki kluczowy znowu nie jest.

Zgadzam sie, ale shellcodu juz nie napiszesz w C lub C++.

Co do ostatniego zdania to bawie sie caly czas ;p
Bardzo ciekawe zajecie, pozwalajace sie nauczyc znacznie wiecej niz piszac zwykly kod, ale jeszcze za malo czasu jestem na tym swiecie, zeby wymiatac.
Nawet gdybym chcial to do tej pory nie bylbym w stanie wielu rzeczy ogarnac, moze za kilka lat bede mial skilla zadowalajacego mnie, na razie wszystko co moge robie w tym kierunku :)

0

Wyrażając swoje skromne zdanie uważam, że c++ jest dobrym i w miarę wygodnym językiem programowania. Oczywiście przeciwnicy zawsze zostaną przy swoim ale czy ktoś im każe w nim pisać? Myślę, że nowy standard odświeży nieco "postinkrementowanego c", i zachęci programistów do współpracy. Zastanawiam się tylko nad pojęciem "pseudo obiektowości", czego brakuje mechanizmom obiektowym c++'a, aby można było mówić o obiektowej stronie tego języka, a nie "pseudo obiektowej"?

0
matek3005 napisał(a)

Myślę, że nowy standard odświeży nieco "postinkrementowanego c", i zachęci programistów do współpracy.

Ten standard wychodzi od kilku lat i nadal nie potrafią dojść do porozumienia. Widziałeś w ogóle obecną specyfikację C++0x? Jeszcze więcej niedomówień niż w C++03, praktycznie brak faktycznie sensownych usprawnień... Jeżeli ma wpłynąć na ludzi jakoś to zniechęci bo już wybitnie będzie językiem nie do nauczenia.

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