Projekt "droga do zawodowego programisty C"

Odpowiedz Nowy wątek
2019-10-31 14:49
8

Hey! Jestem studentem pierwszego roku informatyki na Politechnice Lubelskiej, który już jakiś czas (kilka lat) siedzi w programowaniu. Próbowałem różnych technologii i dziedzin IT, ale obecnie zdecydowałem się wyspecjalizować i "ograniczyć" do głównie jednej - programowanie embedded.

Pod tym postem będę opisywać daily progress, czyli co zrobiłem w danym dniu w kierunku zostania zawodowym programistą embedded. Będzie to swoisty "dziennik rozwoju".

Wiem, że embedded jest to nisza, więc jeśli nie uda mi się znaleźć pracy stacjonarnej, zdalnej lub wystartować na Upwork'u to podejmę się jej w innej technologii - przy pierwszej lepszej okazji, a następnie będę cały czas szukał i "czuwał" nad pracą w embedded.

Mam w planach do nauki i przerobienia następujące "zagadnienia":

  • Język C
  • Język C++
  • Osdev
  • Jądro Linuxa
  • Algorytmy, struktury danych
  • programowanie ARM, STM32
  • Linux ("użytkowanie"), bash
  • trochę Pythona (podstawy) do skryptowania
  • Git
  • Jakieś podstawy telekomunikacji, Ethernet, TCP, IP
  • CAN, I2C, SPI
  • FreeRTOS
  • Architektura AUTOSAR
  • Przetwarzanie sygnałów
  • Boost
  • STL
  • wielowątkowość i jej koncepty
  • Docker
  • Inne rzeczy związane z embedded

Część z tych rzeczy już znam w jakimś stopniu, więc niektóre "zagadnienia" będą szły szybciej, inne wolniej.

W ramach nauki tego wszystkiego chciałbym realizować różne projekty z "tego", udzielać się na stack overflow, prowadzić ten dziennik postępu oraz wrzucać kontrybucje do open-source (np. jądra Linuxa).

Kilka linków:
https://github.com/Grzegorz-Malyska
https://stackoverflow.com/users/12242086/grzegorz-ma%c5%82yska

Pozdrawiam, gjm

A jak tam https://4programmers.net/Forum/1299948 ? Może warto wznowić projekt? - kq 2019-10-31 15:03
Człowiek zmądrzał trochę :PP - gjmreborn 2019-10-31 15:08
@kq: nie przejrzałem jeszcze całego wątku ale skąd wiedziałeś, że to ta sama osoba? - kixe52 2019-10-31 15:57
Nie jestem pewien czy w tym wątku, czy później u Gyna na IRC-u podał swoje dane ;​) - kq 2019-10-31 16:02
nauczysz się tego wszystkiego i skończysz z depresją - euro2012spoko 2019-11-04 16:17
Dlaczego? :D - gjmreborn 2019-11-04 21:45

Pozostało 580 znaków

2019-11-05 16:08
0

Rozumiem, że chodzi o:
Język ANSI C. Programowanie. Wydanie II
Autorzy:
Brian W. Kernighan, Dennis M. Ritchie
Lepsza niż Praty?
Dlaczego AVR nie? To NXP to jest STM32?

NXP to konkurencja STM32 - rstack 2019-11-05 16:35

Pozostało 580 znaków

2019-11-05 16:40
0

Tak, chodzi o te książkę. Jest zwięźlejsza, Prata zbyt rozlegle opisuje temat - C to nie jest język trudny ze względu na jego rozmiar, tylko ze względu na pewne specyficzne fragmenty. Radzenia sobie z problemami C nie nauczy Cię żadna książka, więc po co Ci ponad 1000 stronnicowa biblia?

Co do AVR - przestarzała technologia, ot co. Prędzej komercyjnie spotkasz się z Arduino niż z czystym AVR. Do tego Arduino jest przyjaźniejsze.
NXP to firma produkująca płytki z procesorami Cortex.


Naprawdę Arduino jest teraz tak powszechnie wykorzystywane komercyjnie? - rstack 2019-11-06 09:55
A Prata przez 3/4 nie przepisuje manuala systemowego? Dawno nie widziałem na oczy ale tak to mniej więcej wyglądało. xD - Satanistyczny Awatar 2019-11-07 08:22

Pozostało 580 znaków

2019-11-05 16:42
0

Dziękuję za objaśnienie.
Czyli, która książka i jaki model nauki bo mi się wydaje, że się nigdy tego programowania i C nie nauczę...
Dodam, że nie chodzi mi o pisanie programów komputerowych w C tylko o wykorzystanie w projektach elektronicznych.

Pokaż pozostałe 13 komentarzy
Finalna wersja kiedyś latała za free po różnych forach i stronach, normalnie bywa dostępna do pobrania za opłatą ze strony komitetu standaryzującego. Ale ostatni draft zwykle wystarcza do poziomu "Boge enzi si" jeśli go przyswoisz. - Satanistyczny Awatar 2019-11-07 11:40
widzę właśnie. W sumie nie ma tego tak dużo, spodziewałem się więcej tekstu, ale nie wiem w zasadzie czemu xD - Tenonymous 2019-11-07 11:41
Samo C nie jest jakieś wielkie, najtrudniejsze co jest tam do ogarnięcia to wygłupy ze wskaźnikami i pamięcią. Nie licząc błędów na poziomie hardware to za czasów mej pracy w embedded to na tym wyłącznie polegały błędy w sofcie nad którymi pracowałem. Co do grubości standardu - to dokumentacja podstawowej architektury ARM jest kilka razy grubsza a są do niej nie mniej grube dodatki. - Satanistyczny Awatar 2019-11-07 11:51
czemu w ogóle dałeś sobie spokój z embedded i poszedłeś w adminke? - Tenonymous 2019-11-07 11:54
Embedded to bardzo specyficzna działka. Wielu ma jej po krótkim czasie dość, acz u mnie zadecydowały inne czynniki. Adminka zaś ze względu, że na dany moment miałem wieloletnie obycie z GNU/Linuxem w postaci kilku dystrybucji i wariantami BSD we własnym zakresie. Plus umiejętność poruszania się w kodzie C i znajomość kernela - co się kilkukrotnie przydało. Rozważałem ogólnie opcję administratorską jeszcze przed studiami, pomyślałem czemu by tego nie spróbować. - Satanistyczny Awatar 2019-11-07 12:31

Pozostało 580 znaków

2019-11-05 17:34
1

Jak znajdziesz, to warto też przeczytać FAQ Summita.

Pozostało 580 znaków

2019-11-05 23:45
0

Dzień 6 projektu.

Kontynuujemy naukę C z książki.

Z książki przerobiłem rozdział 11, wraz z pytaniami kontrolnymi i ćwiczeniami.
Jakie zagadnienia przerobiłem? Definiowanie łańcuchów, wczytywanie i wyświetlanie ich, znakowe IO, funkcje łańcuchowe, argumenty wiersza poleceń, konwersje łańcuchy <--> liczby.

Kontynuuj. :) Nie interesuje mnie C aż tak bardzo, ale fajnie widzieć, jak ktoś jest pewny tego, co robi. - Silv 2019-11-05 23:46
"fajnie widzieć, jak ktoś jest pewny tego, co robi. " - tzn? nie za bardzo zrozumiałem CHYBA :P - gjmreborn 2019-11-05 23:47
Skoro nie rezygnujesz, to jesteś pewny, że to właśnie chcesz robić: że chcesz uczyć się C, i że chcesz swoją naukę opisywać (opisywanie samo w sobie pomaga, przynajmniej ogólnie mówiąc). - Silv 2019-11-05 23:48
Ok, teraz zrozumiałem, thanks :P - gjmreborn 2019-11-05 23:49
Naprawdę zamierzasz pisac tu post codziennie? Nie lepiej zalozyc bloga i tam sie przeniesc zamiast robic taki watek tasiemiec? - Pole92 2019-11-06 08:23
Może w przyszłości - na razie jest to OK IMO - gjmreborn 2019-11-06 10:29

Pozostało 580 znaków

2019-11-06 19:54
0

OK. Hipotetycznie chcę wejść w STM32. Tylko co dalej? Bo chcę zacząć i szukam w internecie, czytam i wszystko jest jak zwykle pokręcone. ST ma swoje biblioteki HAL (niby je teraz polecają), czy to jest coś jak pisanie dla Arduino, a nie czyste C? Wydaje mi się, że jak się tego nauczę to nadal nie będę umiał C. Nie wiem jak się za to zabrać czyli to chyba nie dla mnie.

edytowany 1x, ostatnio: andijaw, 2019-11-06 19:55
Pokaż pozostałe 2 komentarze
@andijaw: to ucz sie tego co uwazasz za sluszne. Arduino to tylko platforma z AVR na pokładzie. Jak tylko nie bedziesz korzystal z ich kijowego IDE + bibliotek arduinowych tylko pisał w czystym C to będzie okej. ARM jest dużo trudniejszy, wiec latwiej Ci bedzie zaczac z AVR. - belzebub269 2019-11-06 22:39
Arduino zasadniczo nie musi być na AVR, bo jest możliwość odpalania Arduino (+bibliotek) na ESP8266 albo STM32. - Ktos 2019-11-06 23:04
Gdybym wiedział co jest słuszne to bym tutaj nie pytał. Chciałbym wykorzystać mikroprocesory do projektów hobbystycznych zdobywając przy okazji jak najbardziej uniwersalną i przydatną w przyszłości wiedzę. Dlatego zależy mi na czystym C, a nie jakiś udziwnieniach. - andijaw 2019-11-06 23:13
@andijaw: a co ktoś ma podjąć decyzję za Ciebie ?! za rączke chcesz iść ? Jeżeli nie umiesz wybrać czegoś z przedstawionych Ci opcji, a bierzesz sie za programowania to życzę sukcesów :) - belzebub269 2019-11-07 16:57
Dlatego pisałem gdzieś wcześniej, że to chyba nie dla mnie. A chodzi mi jedynie o to, że jest tyle technologii, bibliotek, nakładek, że nie wiadomo czego się uczyć żeby się nie okazało, że to już nieaktualne. - andijaw 2019-11-07 23:50

Pozostało 580 znaków

2019-11-06 22:20
0

Dzień 7 projektu.

Kontynuujemy naukę C z książki. Kończymy książkę <3

Z książki przerobiłem rozdziały 12-16, wraz z pytaniami kontrolnymi i ćwiczeniami.
Jakie zagadnienia przerobiłem? Klasy zmiennych, pliki, struktury, Unie, pola bitowe, typy wyliczeniowe, operacje bitowe, preprocesor

Teraz chciałbym przeleciec jeszcze szybko ANSI C i przejść do kolejnego punktu którym będzie Algorytmy i struktury danych.

Pozostało 580 znaków

2019-11-07 08:30
1

Teraz chciałbym przeleciec jeszcze szybko ANSI C

Szybko? A wskaźniki na wskaźnik na tablicę funkcji zwracających wskaźnik na funkcję zwracającą wskaźnik na tablicę funkcji już umiesz napisać? xD Już nie mówiąc, że IMHO standard C programiście C wypada przynajmniej raz w życiu przeczytać, a to niekoniecznie lektura "na szybko". Acz jakaś rozległa specjalnie też nie jest.

EDIT:

Jeszcze tematy do zapoznania się
Ostrzeżenie dla chcących zaczynać karierę w embedded Linux/BSD/FreeRTOS itp
Kilka lat embedded - co dalej?

edytowany 2x, ostatnio: Satanistyczny Awatar, 2019-11-07 12:46

Pozostało 580 znaków

2019-11-08 08:47
1

Dzień 8 projektu.

Przepraszam za to, że wczoraj zapomniałem umieścić wpis :(

Zrobiłem całą książkę ANSI C. W większości nie znalazłem tam nic nowego, oprócz kilku systemowych ciekawych funkcji :(

Napisałem również kilka "artykułów IT" na moim githubie.

Dziś chciałbym skończyć pisać to: https://github.com/Grzegorz-Malyska/MojePublikacjeIT
i przejść do algorytmów i struktur danych.

Pozostało 580 znaków

2019-11-08 09:02
5

W temacie tych "artykułów" - to chyba trochę za duże słowo. Raczej jest to zebranych parę definicji, ale w sposób, który za wiele nie wnosi do sprawy. Zamiast ich zrobić kilka(naście), ale po łebkach, wolałbym, jakbyś przysiadł do jednego zagadnienia i ogarnął je kompleksowo.

Przykładowo:

Zmienne rejestrowe przechowywane są w rejestrach procesora, a nie w pamięci komputera.

Nie możemy pobierać ich adresów. Są to zmienne automatyczne, lokalne.

Definiowanie:

  register int fastVariable;

Zmienna rejestrowa nie musi być przechowywana w rejestrze procesora, jeśli obecnie nie będzie żadnego wolnego rejestru. Definiowanie takiej zmiennej jest prośbą dla kompilatora o przechowanie jej w rejestrach procesora. Jeśli nie będzie to możliwe, zmienna zostanie standardowo przechowywana w pamięci.

Tak naprawdę jest to po prostu skopiowana skądś definicja. Ale czy to cokolwiek wyjaśnia? Ja po przeczytaniu tego tak właściwie nie wiem niczego więcej, niż przed czytaniem. Nie wiem:

  • po co te zmienne są trzymane w rejestrach
  • jaki są plusy takiego rozwiązania
  • jakie są minusy tego rozwiązania
  • co dla mnie oznacza, że "nie mogę pobrać ich adresu"? W czym to przeszkadza? Czy da się to jakoś obejść?
  • skoro rejestrów w procku jest ograniczona ilość, to ile takich zmiennych da się zadeklarować i używać?
  • piszesz, że jeśli nie ma wolnego rejestru, to zmienna będzie przechowywana w pamięci. Czy będę o tym jakoś poinformowany? Czy odczuję różnicę? Jakiego typu to będzie różnica?
  • do czego się wykorzystuje taki typ zmiennych?

Czytając ten cały wątek, z jednej strony podziwiam Twój zapał, entuzjazm i wytrwałość, ale z drugiej mam wrażenie, że idziesz na ilość, a nie jakość. Chcesz szybko "odhaczyć" jak najwięcej tematów. O ile w przypadku szkoły, takie coś jeszcze da się zrozumieć (zasada 3Z), to przy nauce dla siebie, wydaje mi się, że mocniejsze zagłębienie tematu byłoby wskazane. Chociażby cała książka o C w jeden dzień - oczywiście, da się to przejrzeć, ale nie jestem pewien, czy po takim pobieżnym przejrzeniu już znasz każdy aspekt języka. To raczej tak nie działa. I pytanie do Ciebie do zastanowienia się - czy wolisz mieć bardzo ogólne pojęcie o wszystkim, czy raczej dość konkretne, ale w bardziej sprecyzowanym zakresie. Obecnie mam wrażenie, że kierujesz się w stronę opcji numer 1. Nie mówię, że to źle, aczkolwiek ja osobiście raczej wolę drugi wariant.


That game of life is hard to play
I'm gonna lose it anyway
The losing card I'll someday lay
So this is all I have to say
Dzięki za feedback! Postaram się bardziej kompleksowo opracowywać te "artykuły IT", a tamte edytować :) - gjmreborn 2019-11-08 09:07
A mi się trochę wydaje że ten wątek jest mocno atencyjny. Forumowicze wytykają pewnie aspekty które autor traktuje z "nienależytym szacunkiem" (nie mnie oceniać) a ten dalej swoje ciągnie bez oglądania się na opnie innych. Po co jest forum jak nie od tego aby zaczerpnąć zdania innych ludzi? Na opinie zresztą też odpowiada wyrywkowo. Nie traktowałbym wątku poważnie. - MrMadMatt 2019-11-08 20:15

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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