Programista C++ - kilka pytań

0

Cześć, jest tu wielu doświadczonych programistów, którzy pewnie mi poradzą. Mam do was prośbę. Chciałbym iść w programowanie. Myślałem o C++. Studiuję coś pokrewnego na doktoracie (biofizyka, w której czasem napiszę jakieś skrypty). Jeśli chodzi o kursy to miałem kurs z C z elementami C++, miałem kurs w Pythonie oraz będę miał jeszcze jeden cały kurs z C++. W pracy używam sporo skryptów w bashu + awk +sed + grep, rzadko C++ i od czasu do czasu Python i nauczałem studentów podstaw Linuxa (programy Linuxa typu vim + różne polecenia z Linuxa + awk, sed, grep) + proste programowanie w powłoce (1 zajęcia), możliwe, że będę też nauczał podstaw C++, ale dopiero jak się jeszcze podszkolę, więc chce poświęcić ten rok na naukę. Na Linuxie pracuje cały czas, używam awk, vim, grep, sed, gnuplot, znam większość poleceń, pracowałem często zdalnie w terminalu, puszczam też obliczenia na superkomputerze używając systemu kolejkowego slurm
Mam kilka pytań:

  1. Jak dobrym trzeba być z matematyki programując w C++? Mój poziom to: zdawanie matury rozszerzonej z matematyki (tej starej bez całek i pochodnych z 9 lat temu) + proste całki, macierze, pochodne, granice + trochę liczb zespolonych, jakieś totalne podstawy geometrii analitycznej typu co to jest baza ortogonalna itd.. Czy to wystarczy?
  2. Jak bardzo należy znać działanie elektroniki itd. programując w językach trochę niższego programowania typu C/C++?
  3. Czy to że miałbym doświadczenie w nauczaniu podstaw C++ oraz Linuxa jakoś by mnie mogło wyróżnić na tle kandydatów?
  4. Co oprócz pisania programów konsolowych mi polecicie jeśli chodzi o C++, trochę zaczynam poznawać C++ buildera do aplikacji okienkowych, ale nie wiem czy nie jest to trochę przestarzałe? Chciałbym napisać jakiś projekt?
  5. Czy z bazą którą mam dałbym radę coś znaleźć czy jakoś mi łatwiej będzie znaleźć pracę czy raczej nie w czym jeszcze muszę się podszkolić albo może macie jakiś inny pomysł, np. pracę w której dobra znajomość Linuxa byłaby atutem.

Zastanawiam się czy lepiej iść w dalej w naukę czy skręcić stronę programowania. Jak w naukę to pewnie nie w Polsce, bo tutaj dostaje się 3k na rękę na stanowisku asystenta i ciężko na cokolwiek odłożyć, a zarobki idą w górę bardzo wolno. Za rok lub dwa pewnie skończę doktorat, więc chce się już przygotowywać do tego co będzie potem.

Za wszelkie porady z góry bardzo dziękuję.

1
  1. nawet i wcale - WSZYSTKO zależy od dziedziny. Oczywiście szanujemy logikę matematyczną jako fundament do myślenia na sposób programisty
  2. zalezy, od wcale po bardzo dobrą j/w
  3. "w nauczaniu" ... dla mnie nauczyciele są często słabi "na produkcji"
  4. builder do szybkich fuch ? Z mojego doświadczenai robi krzywdę adeptom, olbrzymia większość po większym klikaniu już nie umie wrócić na porządne, projektowane, modułowe/warstwowe programowanie
  5. czy w 2022 postają nowe projekty C++ & baza danych ?
1
  1. W zupelnosci wystarczy, a jak nie to bedziesz wiedzial gdzie szukac.
  2. To zalezy, przerob jakies podstawy. Miganie dioda juz pewnie znasz? :)
  3. P. Nauczyciel to raczej na minus. Uczac kogos stajesz sie "kosmonauta". To taki developrrr ze srednim wyksztalceniem.
  4. Tak jest przestarzale. Do okienek to QT.
  5. Porob projekty, jak nie to moze inzynier devops? Tam linux jest atutem.
  6. Nie ma punktu 3
  7. 3 000zl to dobra stawka na poczatek. 10k zarabiaja nieliczni, nie sluchaj mitomanow.
3
Morgotheron napisał(a):

Cześć, jest tu wielu doświadczonych programistów, którzy pewnie mi poradzą. Mam do was prośbę. Chciałbym iść w programowanie. Myślałem o C++. Studiuję coś pokrewnego na doktoracie (biofizyka, w której czasem napiszę jakieś skrypty). Jeśli chodzi o kursy to miałem kurs z C z elementami C++, miałem kurs w Pythonie oraz będę miał jeszcze jeden cały kurs z C++. W pracy używam sporo skryptów w bashu + awk +sed + grep, rzadko C++ i od czasu do czasu Python i nauczałem studentów podstaw Linuxa (programy Linuxa typu vim + różne polecenia z Linuxa + awk, sed, grep) + proste programowanie w powłoce (1 zajęcia), możliwe, że będę też nauczał podstaw C++, ale dopiero jak się jeszcze podszkolę, więc chce poświęcić ten rok na naukę. Na Linuxie pracuje cały czas, używam awk, vim, grep, sed, gnuplot, znam większość poleceń, pracowałem często zdalnie w terminalu, puszczam też obliczenia na superkomputerze używając systemu kolejkowego slurm

Kiedyś ludzie na magisterskich byli bardziej samodzielni niż "miałem kurs"
o tempora o mores

  1. Co oprócz pisania programów konsolowych mi polecicie jeśli chodzi o C++, trochę zaczynam poznawać C++ buildera do aplikacji okienkowych, ale nie wiem czy nie jest to trochę przestarzałe? Chciałbym napisać jakiś projekt?

po co się pchasz do programowania skoro Cię to w ogóle nie kręci?

bo tutaj dostaje się 3k na rękę na stanowisku asystenta

Dobra, wiem po co, nie musisz odpowiadać

2
Morgotheron napisał(a):

W pracy używam sporo skryptów w bashu + awk +sed + grep (...) Na Linuxie pracuje cały czas, używam awk, vim, grep, sed,

U nas, w embedded Linux praca w shellu to podstawowy i wymagany skill. I do tego prawie nigdy GNU coreutils i Bash tylko busybox, toybox albo inne wynalazki z powodu których niektórzy mówią że "OpenWRT to nie je prawdziwy Linux panie". Myślę że znajdą się inne dziedziny w których taki skill jest ważny np. administracji a i takie w których nikt na to nie zwraca uwagi np. gamedev.

Jak dobrym trzeba być z matematyki programując w C++? Mój poziom to: zdawanie matury rozszerzonej z matematyki (tej starej bez całek i pochodnych z 9 lat temu) + proste całki, macierze, pochodne, granice + trochę liczb zespolonych, jakieś totalne podstawy geometrii analitycznej typu co to jest baza ortogonalna itd.. Czy to wystarczy?

oo, w zupełności, w większości projektów to nie będziesz używać nic z tych rzeczy, z matematyki to najpopularniejsze są operacje na bitach.

Jak bardzo należy znać działanie elektroniki itd. programując w językach trochę niższego programowania typu C/C++?

ponownie, zależy od dziedziny, w embedded na plus, w gamedev niepotrzebne za to w obu tych zawodach przyda się znajomość sprzętu od strony programisty bo będzie się pisać firmware albo driver na konkretny sprzęt lub w celach optymalizacji. Dodatkowo w embedded znajomość protokołów komunikacyjnych takich jak I2C, SPI etc. i podstawowa umiejętność czytania schematów elektronicznych. Ja osobiście nie znam się na elektronice prawie wcale ale zawsze pracowałem z HW engineerami czy jak to się mówi po polsku którzy podłączali wszystkie zestawy w labie (czasem setki jakichś kabelków, przełączników, bezpieczników), na moją prośbę robili pomiary oscyloskopem a czasem sami nawet projektowali HW. Nikt nie wymagał ode mnie, jako programisty, znajomości elektroniki poza tym co wspomniałem i jest mi potrzebne do wykonywania zadań.

Czy to że miałbym doświadczenie w nauczaniu podstaw C++ oraz Linuxa jakoś by mnie mogło wyróżnić na tle kandydatów?

nie wiem, nigdy nie brałem udziału w rekrutacji jako rekrutujący. Dla mnie większe znaczenie miałyby kontrybucje do Open Source - nawet większe niż indywidualne projekty z jednym kontrybutorem bo pokazuje to że kandydat umie czytać cudzy kod (BARDZO ważna umiejętność) i pracować w teamie i profil na StackOverflow.

Co oprócz pisania programów konsolowych mi polecicie jeśli chodzi o C++, trochę zaczynam poznawać C++ buildera do aplikacji okienkowych, ale nie wiem czy nie jest to trochę przestarzałe? Chciałbym napisać jakiś projekt?

Zdecydowanie C++ jest przestarzałe do aplikacji okienkowych chociaż w moim obecnej firmie jest team który używa C++ i Qt do pisania aplikacji na Androida więc różne zwierzęta można spotkać w naturze ale myślę że dziś C++ to głównie gamedev.

Czy z bazą którą mam dałbym radę coś znaleźć czy jakoś mi łatwiej będzie znaleźć pracę czy raczej nie w czym jeszcze muszę się podszkolić albo może macie jakiś inny pomysł, np. pracę w której dobra znajomość Linuxa byłaby atutem.

Znajomość Linuxa jest atutem w wielu miejscach, to jeden z popularniejszych OS (wiem, formalnie kernel) w świecie software developmentu, nie pamiętam kiedy ostatnio Windowsa w pracy używałem a w kilku ostatnich firmach miałem od razu Linuksa zainstalowanego na laptopie służbowym.

BTW, jeśli chcesz iść w embedded to tam jest tak: C, długo długo nic, inne dodatki jak C plus plusy, Rusty, Go etc. Nikt mi nie wmówi, że jest inaczej.

3

w kraju kupa utrzymania w C++ gdzie dopisuje 1-10 lini na taska albo wręcz usuwa i to tyle. Jest też trochę R&D ale też z skomplikowaniem tego różne bywa.

2
  1. Zależy gdzie chcesz pracować. W zasadzie wystarczy, ale gdzieniegdzie trzeba też umieć algebrę liniowa i ewentualnie elementy statystyki. No ale to od branży zależy i pod nią się uczysz.
  2. To też zależy od branży w którą idziesz. Jeżeli nie interesuje się niskopoziomowe programowanie to nie jest zbytnio potrzebna. Jedynie jakieś ogólnie, jak działa cache, procesor, jakie można optymalizacje robić itd.
  3. Na jakie stanowisko? Programisty c++? To podstawy programowania w c++ Ci nie wystarcza. Linux jak najbardziej na plus.
  4. C++ builder jest bardzo ale to bardzo przestarzały i nie powinno się go uczyć. Nigdzie się tego nie używa. Aplikacji okienkowych sporo w c++ się nie pisze, chyba że w QT. Tego się poucz. Projekt jak najbardziej musisz mieć. No ale możesz to co na doktoracie zrobić w c++ i będzie.
  5. Jak się dobrze pouczysz c++ to tak. No, ale to chwilę zajmuje. Masz już jakieś doświadczenie w pracy około informatycznej, więc to zawsze lepiej niż junior bez doświadczenia.

Nie znam się na karierze naukowej ale patrząc na zarobki na pewno nie w PL i na pewno programowanie wygrywa. To co chcesz robić to musisz sam sobie odpowiedzieć. Praca naukowa potrafi być jednak dość ciekawa.

A i jeszcze jedno. Nie ucz tego c++ kiedy będziesz miał wiedzę tylko z kursów, bo kursy internetowe są bardzo niskiej jakości i nie ma dobrych. Musisz się sam nauczyć jakims nie wiadomo jakim cudem + pracując komercyjnie. Dopiero mając doświadczenie zacznij uczyć. Inaczej będziesz uczył antywzorców.

3

Z racji, ze na wszystkie pytania uzyskales odpowiedz to ja chcialbym zadac swoje:

Jakim cudem masz uczyc C++ (w przyszlosci) skoro go nie umiesz? A nawet jesli sie nauczysz to bez doswiadczenia komercyjnego to bedzie to tylko sucha wiedza na bazie tutoriali. Taki rodzaj "nauczania" bardziej przypomina mi gluchy telefon.

Nie boisz sie, ze przyjdzie pierwszy lepszy student i Cie zagnie na pierwszych zajeciach?

5
Seken napisał(a):

Z racji, ze na wszystkie pytania uzyskales odpowiedz to ja chcialbym zadac swoje:

Jakim cudem masz uczyc C++ (w przyszlosci) skoro go nie umiesz? A nawet jesli sie nauczysz to bez doswiadczenia komercyjnego to bedzie to tylko sucha wiedza na bazie tutoriali. Taki rodzaj "nauczania" bardziej przypomina mi gluchy telefon.

Realia pracy na uczelni są takie, że młody pracownik (szczególnie doktorant) może nie mieć zbyt wiele do powiedzenia co do zajęć które dostanie...

- Poprowadzi Pan kurs XYZ
- Ale ja się na tym nie znam!
- Ale Pan poprowadzi...

Dodatkowo - wśród wielu pracowników panuje przekonanie, że kursy z pierwszego roku studiów (a wtedy zwykle są zajęcia z podstaw programowania) może poprowadzić każdy - na forum często widać posty "ofiar" takich prowadzących ;)

0
  1. Wiedza z matury wystarczy dla 90% branży. Dla teleco wystarczy, dla gamdev pewnie nie. (ale wszystkiego się można douczyć)
  2. Nie trzeba. Chyba, że bezpośrednio robisz nie tylko kod ale tez HW.
  3. Tak, ale bardzo mały.
  4. Skup się na programach konsolowych, staraj się poznać jak najlepiej c++
  5. Pytanie co znaczy dobra znajomość linuxa. Jeżeli dobra tzn rekompilacja kernela/zrozumienie serwisów/znajmosc toolingu/doświadczenie z rożnymi distro (np różnica w zachowaniu się kodu c++ na Rhel a Ubuntu) to tak. Jeżeli znajomość podstawowych komend to nie bardzo.

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