Programista C++ - kilka pytań

Programista C++ - kilka pytań
MO
  • Rejestracja:prawie 8 lat
  • Ostatnio:2 miesiące
  • Postów:156
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ę.

ZD
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:2310
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 ?

If you put a million monkeys at a million keyboards, one of them will eventually write a Java program - the rest of them will write Perl
ZD
ps. XxxxxxFizyka nie łączy się z matematyką ???
ledi13
  • Rejestracja:ponad 2 lata
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Wrocław Fabryczna
  • Postów:70
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.

JESZCZE TU WROCE!
edytowany 2x, ostatnio: ledi13
Miang
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 2 godziny
  • Postów:1659
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ć


dzisiaj programiści uwielbiają przepisywać kod z jednego języka do drugiego, tylko po to by z projektem nadal stać w miejscu ale na nowej technologii
edytowany 2x, ostatnio: Miang
AO
  • Rejestracja:około 9 lat
  • Ostatnio:około 2 godziny
  • Postów:183
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.

edytowany 1x, ostatnio: aoeuidhtn
RE
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 4 godziny
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.


We are the 4p. Existence, as you know it, is over. We will add your biological and technological distinctiveness to our own. Resistance is futile
CZ
  • Rejestracja:ponad 8 lat
  • Ostatnio:dzień
  • Postów:2287
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.

edytowany 1x, ostatnio: Czitels
SE
  • Rejestracja:prawie 6 lat
  • Ostatnio:12 dni
  • Postów:321
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?

edytowany 1x, ostatnio: Seken
Miang
może być że wykładowca przygotował zadania a doktoranci tylko je przekazują, pilnują studentów i potem muszą sprawdzić
RE
ja pamiętam na procesorach DSP napisałem for(;x<10;x++) to prowadzący laboratorium zrobił wiekkie oczy że można tak nie trzeba for(int x =0;x<10;x++). Ja to już we wszystko uwierzę czyli np. że po bootcampach na polibudzie zajęcia z c++ by prowadzili.
BG
  • Rejestracja:prawie 6 lat
  • Ostatnio:około 22 godziny
  • Postów:289
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...

Kopiuj
- 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 ;)

ZD
Nauczyciel informatyki (sz.średnie) w rozmowie ze mną, wiedząc, że zawodowy IT i programista, użył popularnego przysłowia "jak ktoś coś umie, to robi, jak nie umie, to tego uczy"
MarekR22
Potwierdzam. Byłem świadkiem takich kwiatków od strony doktoranta (na szczęście nie trafiło na mnie).
Miang
i niestety odpoweiedziu które tu są poidawane mogą wykraczać poza wiedzę tego prowadzącego i figa a nie zaliczenie
AM
  • Rejestracja:około 12 lat
  • Ostatnio:dzień
  • Postów:195
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.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)