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.
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?
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.
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.
Jak znajdziesz, to warto też przeczytać FAQ Summita.
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.
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.
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.
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?
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.
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.
A przywróciłeś copyrighty Torvaldsa na repo, czy też udzielił ci uprawomocnień prawnych do ich wywalenia? xD
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?
- chcesz się udzielać na SO
- używasz aktywnie konta na githubie, w dodatku dałeś tam swoje zdjęcie i jakiś kod w javie...
- chcesz tracić czas na robotę za darmo dla OSS
- piszesz jakieś głupie artykuły
Nie daję Ci żadnych rad, zrób z tymi obserwacjami co chcesz.
widzę, że zakończyło się jak zwykle :D
"Student at Politechnika lubelska"
Github githubem, ale sesja na horyzoncie.