Początki w języku C

0

Cześć wszystkim,
Jestem na etapie studiów niestacjonarnych na Politechnice Śląskiej Wydział Transportu i w przyszłości chciałbym pracować przy oprogramowaniu do samochodów (sterowników). Czy ktoś z zaawansowanych osób mógłby mi polecić od czego mam zacząć? Kursy, książki? Na mojej Politechnice raczej ciężko będzie o takie programowanie więc muszę samemu się uczyć.
Pozdrawiam serdecznie

0

A coś w języku polskim na początek?

3

Niestety Polska nie jest mocarstwem i długo nie doczekamy się tworzenia oprogramowania po polsku. No chyba, że wcześniej naszych rodaków za granicą będzie więcej, niż tamtejszych.

4

Jeśli myślisz poważnie o pracy jako programista, to język angielski jest praktycznie niezbędny. A przynajmniej na poziomie umożliwiającym w miarę swobodne czytanie dokumentacji czy właśnie SO.

2

Dzięki, w takim razie śmigam na intensywny kurs angielskiego.

4

Angielski to podstawa, zwłaszcza w tak niszowych tematach. Natomiast co się tyczy samego tematu, nie wiem czy masz jakiekolwiek doświadczenie w programowaniu, jeśli nie, zastanowiłbym się nad opanowaniem podstaw na jakimś języku wysokiego poziomu. Jak załapiesz ogólną zasadę będzie co łatwiej.
Sam język C jest bardzo prosty, raczej szybko można się go nauczyć. W nim problem tylko z zapanowaniem nad kodem. Koniecznie ogarnij porządnie wskaźniki, bez tego w bare metalu wiele nie zrobisz. Zwróć uwagę na słowa kluczowe static i volatile (to drugie jest typowe dla takich zastosowań).
Znacznie trudniejsze może się ogarnięcie architektury procesora (jak nie wiesz jaką, pewnie warto zacząć od x86 albo ARM), DMA, PCI, przerwań, itp. Raczej nie obejdzie się bez liznięcia assemblera, ale nie asemblera dla DOS, bo to jest sieka i nie przyda ci się do niczego. Poza tym nie napiszesz sterownika nie znając API systemowego, tu warto wybrać Linuksa lub Windowsa, bo najpopularniejsze. Wydaje mi się że Linux w tej kwestii jest przyjaźniejszy. Możesz też spróbować zaimplementować prosty system operacyjny (osdev, szkoda że większość materiałów jest miejscami przestarzała), wtedy lepiej byś zrozumiał i nie musiałbyś od razu ogarniać od API.
To taki zbiór słów kluczowych do ogarnięcia. Długa droga. :) Też może zainteresuj się Arduino lub Raspberry Pi (to drugie chyba łatwiejsze). Jakby co możesz napisać na priv, chętnie co pomogę w miarę możliwości. Powodzenia.

0

Doświadczenie zerowe, chcę podjąć pierwsze kroki. Myślałem nad jednym z kursów online:
https://strefakursow.pl/c_2.html lub kurs z forbota https://forbot.pl/blog/kurs-arduino-podstawy-programowania-spis-tresci-kursu-id5290
nie wiem czy warto?

4

Jak jesteś zielony to chyba lepiej zacząć od czegoś nowocześniejszego, Java mogłaby być dobrym wstępem. Może nie jest to najlepszy język, ale na podobną składnię. Jak przebrniesz przez podstawy będzie co łatwiej. Nie będziesz musiał się martwić o zarządzanie pamięcią, ani bawić we wskaźniki. Programowanie jest dosyć trudne żeby dokładać sobie nieoczywistych cech języka, które wynikają z tego jak działa procesor. Dopiero jak zrozumiesz na czym polega programowanie zaczniesz zgłębiać jak to wygląda od kuchni. Jak nie Java to może python ...?
I w sumie, zadałbym sobie pytanie, czemu taki kierunek? Ani to łatwe, czy efekciarskie, dochodowe też chyba nie, a pracy mało. Sama praca raczej mozolna niż ciekawa. Programowanie sterowników polega w większości na tłumaczeniu API systemowego na ABI urządzenia. Żadnych czarów. Wydaje się tajemnicze i kozackie, ale są znacznie ciekawsze rzeczy do roboty. Btw. Oprogramowanie dla samochodów pisze się m.in. w Javie (Android).
Nie to żebym chciał cię zniechęcić. Pochwalam zainteresowanie tymi zagadnieniami, ale chcę ci oszczędzic zachodu. Masz pracę na głowie. Ja tam mogłem się bawić w assemblerze, bo chodziłem do szkoły i miałem dużo czasu. Mając obowiązki i mało czasu, może być co ciężko.

0

Czemu taki kierunek? Jestem nastawiony (jak się uda) na pracę w firmie aptiv kiedyś delphi w Krakowie. Oni tam programują samochody odnośnie sztucznej inteligencji, jazdy autonomicznej, trzymania pasa ruchu itp. Dlatego chce się dowiedzieć czy dobrze szukam aby już coś zacząć w danym języku chyba że jestem w błędzie i źle szukam danego języka? Może serio zacząć od forbota?

1
Lukasz97 napisał(a):

Czemu taki kierunek? Jestem nastawiony (jak się uda) na pracę w firmie aptiv kiedyś delphi w Krakowie. Oni tam programują samochody odnośnie sztucznej inteligencji, jazdy autonomicznej, trzymania pasa ruchu itp. Dlatego chce się dowiedzieć czy dobrze szukam aby już coś zacząć w danym języku chyba że jestem w błędzie i źle szukam danego języka? Może serio zacząć od forbota?

To nie brzmi jak C w ogole

Edit: w sensie C tez ale nie tylko

3

Naukę programowania bym zaczął od Racket'a - htdp lub Realm of Racket
Dlaczego tak/nie?

2
Lukasz97 napisał(a):

. Oni tam programują samochody odnośnie sztucznej inteligencji, jazdy autonomicznej, trzymania pasa ruchu itp. Dlatego chce się dowiedzieć czy dobrze szukam

No to zdecydowanie pomyliłeś pojęcia. Takich rzeczy nie robi się w C. Jak sztuczna inteligencja to dobrze podpowiada @nullpt4, lisp jest stworzony do takich zadań (Racket to jedna z jego odmian)

1

No to zdecydowanie pomyliłeś pojęcia. Takich rzeczy nie robi się w C. Jak sztuczna inteligencja to dobrze podpowiada @nullpt4, lisp jest stworzony do takich zadań (Racket to jedna z jego odmian)

Sztuczna inteligencja/jazda autonomiczna jest programowana w** C/C++**

1

Jezyk C/C++ to to legendarne "C z klasami"?
Jak jest pisana w C++ to mow ze w C++. Jak w obu (trudno mi sobie wyobrazic AI w C ale w sumie to sie nie znam wiec nie wykluczam) to mow ze w C++ i C. No chyba ze to na samej gorze to prawda.

Najlepiej by bylo jakby ktos z Aptiv albo chociaz innego automotive sie wypowiedzial

1
elwis napisał(a):

Jak sztuczna inteligencja to dobrze podpowiada @nullpt4, lisp jest stworzony do takich zadań (Racket to jedna z jego odmian)

Lisp był pierwszym wysokokoziomowym (i prostym!) językiem programowania w którym można było wyrazić swoje myśli. Za konkurencję miał wtedy tylko Fortrana i nigdy porządnie nie skończonego Algola.
Dziś jest o wiele większy wybór innych języków programowania których można użyć do sztucznej inteligencji jak oczywiście:

  • Python z szybkimi bibliotekami napisanymi w C++ i/lub C
  • Scala z Apache Sparkiem, można używać też Apache Sparka z Pythonem
  • Inne języki dedykowane bardziej dla naukowców.

W tą ostatnią kategorię celuje chyba Racket, bo nie widziałem niestety ofert komercyjny projektów dla tego języka

2
stivens napisał(a):

Jezyk C/C++ to to legendarne "C z klasami"?
Jak jest pisana w C++ to mow ze w C++. Jak w obu (trudno mi sobie wyobrazic AI w C ale w sumie to sie nie znam wiec nie wykluczam) to mow ze w C++ i C. No chyba ze to na samej gorze to prawda.

Najlepiej by bylo jakby ktos z Aptiv albo chociaz innego automotive sie wypowiedzial

Ja pracuję w Automotive, ale nie w dziale odpowiedzialnym za autonomiczną jazdę.
Pisząc C/C++ miałem na myśli, że niektóre komponenty są pisane w C(np. drivery) a niektóre w C++(np. image processing). Mój błąd, powinienem napisać C i C++. Na jazdę autonomiczną składa się wiele ECU.

1

Dobrze, można pisać AI w każdym języku. Tim nie mniej polecam i tak lisp ma początek. Nie znam lepszego na poszerzenie horyzontów

0

Jeżeli interesuje cię ADAS, to rzeczywiście C i C++ (11/14). Czego dokładnie będziesz używał zależy w dużej mierze od projektu, stanowiska.

W przypadku mojej firmy, algorytmy to bardziej matlab i c niż python.

Generalnie automotive, to dość specyficzna branża i na entry level wystarczy znajomość systemów wbudowanych. Znajomość Ethernetu, ogólnie zagadnień sieciowych też plusuje, szczególnie w ADAS-ie.

2

@elwis:

Zanim kolega stanie wobec kontekstu do uzycia volatile to dużo wody w Odrze upłynie. Zanim naprawdę DOBRZE oswoi to będzie następna epoka lodowcowa...
Tak, w uK jest modne sr..ie tym słowem kluczowym, taki "cargo cult" i "już mamy dobry kod do przerwań". Tak że elwis MSZ troszkę palnąłeś kulą w płot

Ścieżka od szczypiorka do programisty w C sterowników, od których zależy życie mi się wydaje ... kontrowersyjna - albo bardzo długa.
O procedurach pisania kodu krytycznego, standardach i zwyczajach w automotive nie ma sensu na tym etapie pisać

Lukasz97 napisał(a):

Doświadczenie zerowe, chcę podjąć pierwsze kroki. Myślałem nad jednym z kursów online:
https://strefakursow.pl/c_2.html lub kurs z forbota https://forbot.pl/blog/kurs-arduino-podstawy-programowania-spis-tresci-kursu-id5290
nie wiem czy warto?

Kursy "dwa w jednym" mikrtokontroler plus C są jedną z najgorszych ścieżek jakie można wymyślić.
Wychodzi z tego świnka morska ... o przepraszam, świnka morska używjąca valatile
Raczej ucz się po prostu programowania, wzorców, struktur danyhc, algorytmów

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