Umiejętności C ++ wyższe niż umiejętności C? [Zamknięte]

28

Czuję, że często spotykany C / C ++ tak naprawdę nie opisuje moich umiejętności w moim CV. Planuję więc podzielić je na zaawansowaną wiedzę o C ++ i przeciętne umiejętności posługiwania się językiem C.

Czy uważasz, że jest to mylące dla czytelnika? Mogła pomyśleć: „C jest podzbiorem C ++, więc co ten facet próbuje mi przekazać?” Cóż, próbuję powiedzieć: wykonałem kilka projektów C ++ w prawdziwym świecie, podczas gdy projekty w czystym C były hobby. Czy zgadzasz się, że wykwalifikowany programista C ++ niekoniecznie jest wykwalifikowanym facetem C, czy uważasz, że zmiana ta jest łatwa?

h0b0
źródło
1
Właśnie to robię. Nie przeszkodziło mi to znaleźć pracy.
Martin York
9
Dawno nie pisałem CV, ale zawsze mówię o C i C ++ jako dwóch zupełnie różnych językach.
Rei Miyasaka,
2
@ReiMiyasaka - Dobrze, ponieważ są to dwa zupełnie różne języki. Oba zostały zaktualizowane i odbiegają od czasu, gdy C ++ został utworzony jako dodatek do C.
Izkata
uważam, że C / C ++ to nie to samo i są to zupełnie różne języki, jedyną powszechną rzeczą jest „C” w nazwie (nie wspominając o ścisłej składni)
Qchmqs

Odpowiedzi:

31

Zadałeś tyle pytań w jednym; pozwól, że spróbuję odpowiedzieć, segregując je. Zatrudniam wiele osób, które należą do tego typu profilu i dość często muszę przeprowadzać tyle wywiadów i odrzucać ludzi, ponieważ często nie mają oni jasnej odpowiedzi na zadane pytania.

  1. Czy dobra znajomość języka C lub C ++ jest wystarczająca, aby zakwalifikować się do drugiego programu?
    Jeśli jesteś na wyższym poziomie, faktycznie NIE. tzn. jeśli spędziłeś jakieś 6 lat programując w C ++ w niektórych podstawowych aplikacjach korporacyjnych, a teraz próbuję umieścić cię w systemach wbudowanych, które są w C - prawdopodobnie twoja składnia programowania i sposób debugowania rzeczy nie jest problemem. Ale jeśli potrzebujesz przemyśleć problem - na pewno jesteś bardzo nieuporządkowany. Dotyczy to obu stron. Im więcej lat spędzasz tylko jeden rodzaj języka - trudniej go przekształcić w inną formę! Nie chodzi o to, czy możesz nauczyć się składni języka, ale tak naprawdę myślisz inaczej, gdy jesteś w C, C ++, Java, Perl i Python. Aby rozciągnąć pytanie - najczęściej - facetów z C ++ i Java można używać zamiennie, podobnie jak Perl, PHP, Phython. C to zupełnie inna rasa!

    Jeśli jesteś stosunkowo młodym facetem - są szanse, że możesz szybko nadrobić zaległości.

  2. Czy to oznacza, że ​​mam wyższe umiejętności, gdy znam C ++, a nie C
    Właściwie Nie. Nie, ponieważ, ogólnie rzecz biorąc, jeśli jesteś w stanie stworzyć pełny produkt z C, jest to znacznie trudniejsze zadanie w porównaniu do robienia tego w C ++. Liczba osób, które potrafią rozwiązywać problemy z systemami pamięci współdzielonej, jest znacznie mniejsza niż liczba osób, które mogą napisać porządny program GUI przy użyciu VC ++ lub podobnego frameworka.

  3. Czy to oznacza, że ​​znajomość C (lub programowania najniższego poziomu) jest najwyższym poziomem osiągnięć?
    Nigdy więcej! To nie jest sprzeczność. Tym razem zależy to od porównywanej domeny. Jeśli patrzysz na programowanie systemów wewnątrz jądra Linuksa lub na coś bardzo zbliżonego do sprzętu, umiejętność programowania w C jest bardziej odpowiednia, jednak jeśli piszesz oprogramowanie bankowe lub niektóre silniki reguł biznesowych - C ++ jest zwykle naturalnym wyborem. Chodzi o to, że twoja prawdziwa siła nie polega na składni języka, ale na tym, jak rozwiązujesz klasę problemów i możesz jedynie mieć nadzieję na opanowanie kilku kategorii / dziedziny w swoim życiu. Jeśli umieszczasz coś w swoim CV - to naprawdę się liczy.

  4. Czy to znaczy, że jeśli byłem tylko w C - nie znam programowania obiektowego?
    Ani trochę. W rzeczywistości, mój test lakmusowy w wywiadzie, aby dowiedzieć się, czy facet pochodzi z języka C, czy C ++, polega na zadaniu bardzo prostego pytania - „Czy możesz zrobić programowanie obiektowe w języku C?”. - facet podskakuje i mówi: „Zdecydowanie NIE!” on / ona jest członkiem C ++. Chodzi o to, że kiedy naprawdę piszesz bardzo złożony kod, taki jak kod multimedialny, system wielowątkowy, stos warstw protokołu, nadal „myślisz jak kod obiektowy” - kompilator C nie karze, jeśli nie potrafisz hermetyzować dwóch procedur lub obiekty - ale kiedy system skaluje się, co powoduje, że strzelasz - czasami uważam, że wiele osób rodzi się w erze orientacji obiektowej, dość często dość słabo rozumie, w jaki sposób naruszone jest enkapsulacja w kodzie, który jest dość podobny wypełnione klasami i przedmiotami. Przepraszam, zrobiłem dygresję. Ale chodzi o to, że ważniejsze są twoje umiejętności analizy i projektowania problemów niż same umiejętności programowania.

Czy to oznacza, że ​​powinienem osobiście podnosić ekspozycję i umiejętności projektowania?
Zdecydowanie tak!

Dipan Mehta
źródło
9
+1 Za wskazanie, że możesz mieć projekt obiektowy i nadal wdrażać go w C.
Giorgio
16
@Dipan: Bądź ostrożny przy przyjmowaniu założeń na podstawie wieku. Niektórzy starsi faceci też „nadrabiają” dość szybko. Niektóre z nich prawdopodobnie działają szybciej niż ty.
kevin cline
15
Wątpię, czy „facetów z C ++ i Java można używać zamiennie”.
fredoverflow
6
Nie zgadzam się również z numerem 2. Znając C ++, możesz pobrać C # lub Java w stosunkowo krótkim czasie. Podniesienie C ++, gdy znasz jedno z pozostałych dwóch, wymaga jednak dużo czasu i wysiłku i wymaga, aby najpierw „oduczyć się” dużo tego, co podałeś w języku C # lub Javie.
sbi
1
@sbi: Tak naprawdę nie spieram się o C ++, JAVA lub C. Nie mam zamiaru zbytnio uogólniać relacji między językami; nie zakładam też, że ludzie nie mogą tak naprawdę przystosować się do uczenia się lub oduczania rzeczy. Jedyną istotą jest to, że różne języki są również różnymi wzorcami myślenia, niezależnie od ich relacji składniowej, i to właśnie liczy się w zależności od roli, jaką należy powierzyć.
Dipan Mehta
27

Dla ludzi, którzy naprawdę mają znaczenie, nie, nie powinno ich to mylić.

Każdy, kto wie cokolwiek na temat programowania C i C ++ w świecie rzeczywistym, wie, że pomimo podobieństw i historii, programowanie produkcji w którymkolwiek z nich jest często zupełnie innym zwierzęciem.

Dan McGrath
źródło
12

Osobiście uważam za bardzo denerwujące, gdy ludzie piszą „C / C ++”, ponieważ C i C ++ są bardzo różnymi językami. I odwrotnie, jeśli widzę „C, C ++” lub „C ++ i C” w CV, to robi na mnie wrażenie bez końca. Niestety, prawie wszyscy piszą „C / C ++”, co zwykle oznacza „znam C ++, ale mogę zrobić C, jeśli będę musiał”.

Nie byłbym też tak konkretny w CV. Wystarczy wymienić języki programowania, które znasz, w kolejności od najbardziej biegłych do najmniej biegłych. To powinno sprawić, że przejdziesz obok filtru słów kluczowych HR, a następnie możesz wyjaśnić podczas wywiadu technicznego, jakie są twoje mocne i słabe strony.

Dima
źródło
4
Zgoda. Nie wcześniej umieściłbym „C / C ++” w moim CV, niż wstawiłbym „Java / JavaScript”, jakby to były te same rzeczy.
Często piszę C / C ++, chociaż wiem, że są to różne języki, ponieważ nauczyłeś się jednego z nich bez zawracania sobie głowy drugim, twoja znajomość obu jest niepełna. Nie możesz być dobrym programistą C bez przynajmniej studiowania OO, gdzie C ++ jest naturalnym wyborem do nauki, jak robić OO w C. Nie możesz być dobrym programistą C ++ bez zrozumienia, dlaczego C ++ okazał się taki, jaki jest, ze względu na swoje dziedzictwo C. W życiorysie zgadzam się jednak, że powinny być one odrębne.
1
@OrbWeaver, jedną wielką różnicą jest to, że często możesz wziąć program C (pod warunkiem, że nie jest zbyt skomplikowany), podać go do kompilatora C ++ i uzyskać z niego plik wykonywalny, który faktycznie zrobi to, co jeden z Zrobiłby to kompilator C. Nie możesz nakarmić programu Java parserem JavaScript (lub odwrotnie) i uzyskać nawet zdalnie przydatne z tego ćwiczenia. Tak więc, chociaż zgadzam się, że C i C ++ powinny być zróżnicowane, moim zdaniem pisanie C/C++i Java/Javascripttak jakby były identyczne, wciąż jest w dwóch bardzo różnych ligach.
CVn
+1 za poradę - wystarczy wymienić języki programowania, które znasz, w kolejności od najbardziej biegłych do najmniej biegłych. To powinno sprawić, że przejdziesz obok filtru słowa buzza HR,
naiwny
7

Nie, nie powinno to być mylące, ponieważ C i C ++, chociaż podobne i dzielące podobne korzenie, różnią się paradygmatem i sposobem użycia. Dlatego należy go oddzielić, należy także oddzielić wiedzę specjalistyczną. Plus, myślę, że możesz wspomnieć o bardziej szczegółowej wiedzy specjalistycznej (takiej jak GUI / FLTK lub inne biblioteki, które znasz) z tymi dwoma oddzielonymi.

aggietech
źródło
5

Podobało mi się twoje sformułowanie: „Wykonałem kilka projektów C ++ w świecie rzeczywistym, podczas gdy projekty w czystym C były hobby.”

Po prostu umieściłbym to w żargonie CV:

  • pracował nad kilkoma produktami C ++
  • kilka pobocznych projektów wykorzystujących C

Lepiej jest, jeśli wstawisz liczby zamiast „kilku” i „kilku”. Nie trzeba być dokładnym, „ponad dwadzieścia” to liczba do tego celu.

Opis „poziomu umiejętności” jest poprawny , ale opis „doświadczenia” jest poprawny i jasny.

Emilio M. Bumachar
źródło
3

Zgadzam się, że C i C ++ są różnymi językami i powinny być oddzielone w CV. Mimo że C jest (prawie) podzbiorem C ++, normalnie mam bardzo inny styl programowania, gdy używam C: projektuję inaczej, koduję inaczej i tak dalej. Chciałbym nawet usunąć niektóre funkcje C, takie jak #include z C ++, rezygnując całkowicie z kompatybilności wstecznej: są to po prostu różne języki.

Tak więc radzę, aby dwa języki były oddzielone w twoim CV.

Giorgio
źródło
3

Po prostu, jeśli osoba oceniająca cię miała skłonność do myślenia, że ​​„C jest podzbiorem C ++”, są już zdezorientowani i jestem pewien, że twoje wyjaśnienie tego, co jest napisane w twoim CV, będzie wystarczające, aby je zachwycić.

Mr_Spock
źródło