Projekt "droga do zawodowego programisty C"

0

K&R do nauki C to najlepsza pozycja.
Co do AVR to najlepiej tego unikać. Arduino jest bez szału, ale na początek lepsze. Ja zaczynałem od razu od NXP, konkretnie LPC1347 z cortexem. Jakoś specjalnie trudnie nie było a elektronicznym ekspertem nie jestem.

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?

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.

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.

1

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

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.

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.

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.

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ę
https://4programmers.net/Forum/Kariera/282620-ostrzezenie_dla_chcacych_zaczynac_kariere_w_embedded_linuxbsdfreertos_itp?page=1
https://4programmers.net/Forum/Kariera/320047-kilka_lat_embedded_co_dalej?p=1551791#id1551791

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.

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.

4

A przywróciłeś copyrighty Torvaldsa na repo, czy też udzielił ci uprawomocnień prawnych do ich wywalenia? xD

0

Takie pytanko kogoś, kto dopiero zaczyna naukę programowania.
Da się ze zrozumieniem opanować książkę Praty (w przypadku C++ 1100 stron) w tydzień tak jak tutaj?
Mi to zajmuje od cholery czasu i dla mnie jest to nierealne biorąc pod uwagę, że sobie klepie kody jakieś codziennie po prostu żeby opanować to co znam do perfekcji i powoli wprowadzać nowe rzeczy.
Czy jak się pozna jeden język perfekcyjnie to nauka reszty przyjdzie znacznie łatwiej?

0
  1. chcesz się udzielać na SO
  2. używasz aktywnie konta na githubie, w dodatku dałeś tam swoje zdjęcie i jakiś kod w javie...
  3. chcesz tracić czas na robotę za darmo dla OSS
  4. piszesz jakieś głupie artykuły

Nie daję Ci żadnych rad, zrób z tymi obserwacjami co chcesz.

2

widzę, że zakończyło się jak zwykle :D

2

"Student at Politechnika lubelska"

Github githubem, ale sesja na horyzoncie.

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