nauka C++ po Javie

0

Pracuje w Javie od roku.
Byc moze bede musial ogarnac C++ w stopniu podstawowym dosc szybko.

Moglibyscie dac jakies rady jak to zrobic albo od czego zaczac?

4

Pamiętasz te wszystkie fajne książki, symfonie pasje i inne?
Zlej je ciepłym moczem, bo będą tylko przeszkadzać.

Pamiętasz ten fajny tutek c/c++?
Zlej go ciepłym moczem, będzie tylko przeszkadzać.

Pamiętasz te wszystkie fajne rzeczy których używałeś w javie (poza systemem refleksji)?
Bingo, tego się trzymaj.

Najważniejszy element języka:

  • const correctness; pamiętaj o tym zawsze i wszędzie

Złota zasada gdy nie znasz języka:

  • zanim zrobisz, poszukaj na stack overflow

Złota zasada C++:

  • jeżeli chcesz robić kopiowanie, przekształcanie, filtrowanie, jakiekolwiek operacje na danych: użyj to co oferuje <algorithm>, ew zobacz co oferuje boost
  • Zaprzyjaźń się z const reference, aka T const &t

Ps. Ogarnij fajny framework do testowania, np. catch
Pps. jeśli chodzi o mocki, to zasada przy c++ jest podobna jak wjęzykach funkcyjnych: pisz kod tak, by nie były potrzebne
Ppps. Zaprzyjaźnij się z lambdami. Może są najbrzydsze ze wszystkich języków, ale to musi się pojawić w twoim słowniczku.

2

Najważniejsze - nie używaj postinkrementacji. Cała reszta pójdzie już z górki.

0

Dzieki, rady sie przydadza. Masc na bol tyłka tez juz mam. ;)

O ksiazce to myslalem o C++ Kompendium. Ale rozumiem, ze tez lepiej olac.

Czego najlepiej uzyc zamiast Intellij? Cliona raczej specjalnie nie bede kupowac.

0

Jeżeli nie dostaniesz z góry żadnej licencji, to Clion i visual studio raczej odpadają (community jest do 3 osób w firmie (używających środowiska(?)))
(patrz: http://4programmers.net/Forum/1260045)
Zostają NetBeans, QTC, Eclipse CDT (aczkolwiek ten lubi wkurwić) ewentualnie jakieś edytory tekstowe (Atom, VS Code lub code::blocks (który próbuje udawać IDE))

1

Od biedy jeszcze visual studio express (Jeśli nie masz licencji na pro i używasz windowsa). Btw. Community nie jest do 3 osób w firmie tylko do 5 developerów (używających VS) w firmie poniżej 250 osób.

0

No to chyba pójdę w netbeansa, przynajmniej trochę znam.

A możecie polecić jakieś źródła z czego się uczyć?
czy raczej praktyka copy & paste stackoverflow ?

0

@Krzywy pomidor jeśli znasz javę to ksiażki niewiele ci pomogą, bo podstawowa składnia języka jest dość podobna. Z rzeczy na które trzeba koniecznie zwrócić uwagę:

  • Metody klas NIE SĄ polimorficzne domyślnie, trzeba je oznaczyć przez virtual jeśli mają być. Czyli wszędzie gdzie w javie miałbyś @Override tutaj musisz mieć słowo virtual w klasie bazowej
  • Przekazywanie argumentów jest domyślnie by value a nie by reference, więc przekazując do funkcji obiekt przekazujesz jego kopię. Jakakolwiek zmiana takiego obiektu wewnątrz funkcji/metody nie będzie widoczna na zewnątrz. Żeby uzyskać efekty takie jak w javie musisz przekazywać argumenty jako referencje Typ& obiekt albo wskaźnik Typ* obiekt.
  • Wywołania polimorficzne są możliwe tylko dla referencji i wskaźników i trzeba przy tworzeniu zmiennej explicite oznaczyć ją jako referencje. Przypisanie w stylu Bazowa obiekt = Pochodna() powoduje "przycięcie" pochodnego obiektu do klasy bazowej.
0

A jednak bede uzywal visual studio... a ja siedze na linuchu ech...

0

jak efektywniej pracować z z header i cpp files w visual studio?
rozumiem, że po prostu zawsze jak tworzę nową klase to zaczynam od definiowania w header file i generuje z tego pozniej w .cpp ?

A czy można ten proces trochę odwrócić?

Czyli np. tworzę obiekt w main, wywoluje metodę, która jeszcze nie istnieje i ją sobie generuję a pozniej uzupełniam ?

0

Pytanko.
Czego się używa w C++ do pisania backendu? np. serwer dla aplikacji webowej?
Możecie podrzucić słowa klucze, frameworki, libki itp. ?

1

W C++ raczej nie robi się aplikacji webowych, bo nie ma to za bardzo sensu, więc frameworków jest jak na lekarstwo i są słabe w porównaniu nawet z tym, co jest dla PHP, Pythona, Javy czy .Net.

http://stackoverflow.com/questions/417816/how-popular-is-c-for-making-websites-web-applications

0

Niedawno w C++ naciąłem się na to, że mechanizm wywołań wirtualnych nie działa w konstruktorach i destruktorach. Więcej info tutaj: http://stackoverflow.com/q/7473106

0

a np. backend systemu erp w c++ ?

0

To inaczej... powiedzmy, że jednak potrzebuje wysokiej wydajności itp. w aplikacji dla jakiegoś cięzkiego przemysłu i używam c++.

Co może mi pomóc w realizacji takiego zadania? bo chyba nie goły język?

0

Język to za mało, trzeba jeszcze poczytać ze zrozumieniem jakieś https://people.freebsd.org/~lstewart/articles/cpumemory.pdf ;)

0

No ok... Ale jak pisze w Javie to jednak nie pisze w Javie SE bo bym sie musial sporo narobic, zeby osiagnac jakis efekt ;)

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