Skąd uczyć się C?

Skąd uczyć się C?

Wątek przeniesiony 2022-09-30 02:12 z C/C++ przez Riddle.

doskanoness
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 2 lata
  • Postów:81
0

Poleci ktoś jakąś książkę do nauki C, nie C++? Książka ANSI C wydaje mi się być za trudna na początek.

A ten kurs może być : https://videopoint.pl/kurs/jezyk-c-kurs-video-praktyczne-wprowadzenie-do-programowania-adam-bobowski,vprojc.htm#format/w ?

SP
SP
  • Rejestracja:prawie 3 lata
  • Ostatnio:ponad 2 lata
  • Postów:181
2

Ja chyba czytałem coś podobnego jak ANSI C i było fajne, ale wiele lat temu.
Weź przeczytaj i potem programuj i po jakimś roku odczytaj coś jeszcze i tyle, reszta to w trakcie doczytasz.

Każdy tutaj się uczy w ten sposób, że po małym kawału analizuje wszystko i jak będziesz wytrwały to każdy zakamarek sprawdzisz swojego języka i nie potrzebujesz żadnej książki i żadna książka ci tego nie da co własna ciekawość, tylko musisz testować i zastanawiać się czy da się coś w dany sposób zrobić i tego szukać, lub samemu wykombinować.


Knowledge Distiller
RE
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 17 godzin
3

wrzucałem ostantio do materiałów z sieci, stallman wypuścił darmowy podręcnzik do C
https://4programmers.net/Forum/C_i_C++/140817-Materialy_dostepne_w_sieci?page=4


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
Spearhead
Wygodniej chyba przeglądać przez repo niż PDF-a
RE
widziałem linka do pdf. Często też czytam na tablet więc pdf nie był by taki zły
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:8 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
5

Mało znany fakt: ( :P) Po ANSI C (zwanym też C89/C90) powstały też kolejne wersję C99, C11, C17 i trwają prace nad C2x prawdopodobnie będzie to C23. Szukając czegoś do nauki szukałbym właśnie żeby uwzględnione były nowe wersje czyli C11 i C17


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
edytowany 2x, ostatnio: KamilAdam
SP
Szalony Programista2
C++17 i C++20 to widziałem, ale C, jak mogłem nie widzieć serio dali nowe wersje? ja jeszcze nigdy nie widziałem niczego nowego w C, a w C++ cały czas mnie coś nowego zaskakuje i się uczę.
SP
Szalony Programista2
A dobra widzę memcpy dodali jakąś bezpieczniejszą wersję memccpy xd, niezauważalna różnica, mega subtelne są te upgrady, dlatego całe życie myślałem, że już nie ulepszają tego C, i to nie ulepszenie języka, a dodanie funkcji.
YA
Czytam, że zmiany w niektórych obszarach standardu języka, wprowadzane są z interesujący sposób "Even Microsoft, a main proponent of this interface, does not conform to the definition" :D
LukeJL
a co jest najbardziej popularne? Jeśli wziąłbyś przeciętny kod firmowy czy przeciętny kod open source z jakichś popularnych repozytoriów, to która wersja C dominuje, taka że większość ludzi używa?
doskanoness
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 2 lata
  • Postów:81
0
edytowany 1x, ostatnio: doskanoness
SP
Szalony Programista2
C jest bardzo prostym językiem, nauczy się struktur, pointerów, typów, pointerów na funkcje i lecisz, reszty się douczysz w trakcie. Prosty, ale zaawansowany.
SP
Szalony Programista2
Przeczytaj te Ansi i programuj, albo jak nie chce ci się czytać to programuj od razu, zadaj sobie jakieś pytania np. jak dodać dwie liczy i to zrób. Im bardziej zaawansowany będziesz tym bardziej skomplikowane pytania sobie zadasz i sam siebie będziesz rozwijał.
SP
Szalony Programista2
Jak jesteś mega początkującym to weź sobie tutorial, albo video tutorial zamiast książek jakiś z youtube przepisz jakieś egzemplarze słuchaj osoby co tłumaczy coś tam zawsze wyciągniesz wiedzy i potem będzie ci łatwiej, jakieś mega proste aplikacje napisz jak kalkulator lub cokolwiek im głupsze tym lepsze bo testują samą znajomość języka, a nie umiejętności algorytmiczne, a potem zwiększaj poziom i rób te rzeczy na jakie wpadniesz.
SP
Szalony Programista2
Wiedza to wiedza, nie ważne czy z książki, czy z tutoriala, czy z własnego umysłu wyciągnięta przez analizę.
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:3 minuty
  • Postów:4884
0

elwis
  • Rejestracja:ponad 18 lat
  • Ostatnio:11 dni
2

Trudna sprawa, nie wiem czy w ogóle istnieje cokolwiek godne polecenia, bo stare uznane ksiażki uczą starego C, nie biorą pod uwagę nowych cech jezyka, ani tego, że kompilatory co raz lepiej optymalizują kod. W sumie trudno oczekiwać innego stanu rzeczy, bo obecnie to już zupełnie niszowy język (nasuwa się pytanie, po co ci to)… Sam też w sumie nie czytałem żadnej książki o C. Po prostu robiąc zadania, na bieżąco szukałem rozwiązań w sieci, potem robiłem rzeczy na własne potrzeby… Może to jest sposób?


edytowany 1x, ostatnio: elwis
Marcin Marcin
  • Rejestracja:prawie 6 lat
  • Ostatnio:26 dni
  • Postów:610
0

kurs c dla zaawansowanych


Fan moderatora somekind
SP
SP
  • Rejestracja:prawie 3 lata
  • Ostatnio:ponad 2 lata
  • Postów:181
0

A jeszcze jedno umiesz jakiś język programowania czy to twój pierwszy?

C niby mi się wydaje, że się nie rozwija, ale podobno się rozwija.

Ale patrzę z perspektywy innych języków i mam pythona async dobra,
mam javascript async await ok,
mam C++ mam async ok.
Sprawdzam to samo w C i też mam async, ale każdy język reprezentuje zupełnie inny świat.

Mi tam pasuje, najlepsze języki to C i C++, C uczysz się podstaw i potem rozszerzasz się w C++.

W C masz wszystko strukturalnie, w C++ tylko to ładnie opakowujesz i rozwiązują z tobą problemy cały język.
Przykładowo masz obiekt i możesz go przekładać między obiektami zmieniając właściciela i osoba, która go odda ła nic nie dealokuje bo nic nie ma, dość niskopoziomowo to wszystko się odbywa, trzeba o wszystkim myśleć i z mojej perspektywy to jest bardzo interesujące, jak C dobrze opanujesz opanuj też C++, ale jak do pracy pewnie javascirpt i java będą ci bardziej służyły.


Knowledge Distiller
ZD
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:2310
1

@Szalony Programista2:

Dalece się nie zgodzę w obowiązek przejścia w C++. O ile C jest lingua franca programowania, należy go znać choćby kontynuować karierę w innych językach, to
a) znajomość C++ na piątkę to chyba tylko Pan Bóg
b) jest niszowy w skali produkcyjnej
c) de facto zabity przez szalony i chaotyczny rozwój - choć niestety jeszcze żyje

Szalony Programista2 napisał(a):

A jeszcze jedno umiesz jakiś język programowania czy to twój pierwszy?

Dopiero tzreci dobrze poznany jezyk odsłania głębokie patrzenie na pierwszy poznany.
Nie warto @doskanoness długo toczyć świętych wojen, jaki pierwszy poznać, bo prawie na pewno nie będziesz z niego zawodowo żył.


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
several
  • Rejestracja:ponad 15 lat
  • Ostatnio:około 10 godzin
4

Książka ANSI C wydaje mi się być za trudna na początek.

Nie zaczynaj od ANSI C. Ten standard to już nawet nie trąci myszką, ale śmierdzi starym trupem. Nawet Linus przyznał, że jakby odpowiednio wcześnie przerzucili się na C99 mieliby mniej błędów bezpieczeństwa.. Nie wliczając jakiejś egzotyki, każdy nowy projekt w tym również mikroprocki, dają możliwość programowania w C99 i od tego polecałbym zacząć. C99 jest bardzo popularny wśród programistów C programujących na PC lub konsole, więc na pewno jest sporo materiałów do znalezienia.


edytowany 1x, ostatnio: several
Zobacz pozostały 1 komentarz
ZD
Nagłowki funkcji w ANSI to na dziś koszmar
several
Jeżeli uczysz się C w 2022 roku to zaczynanie od ANSI C to masochizm, w dodatku zupełnie niepotrzebny. Różnica w wygodzie używania ANSI C a C99 jest na tyle spora, że nawet nie chce mi się wymieniać wszystkich zalet w prostym komentarzu. (edit) To co w C99 jest standardem, w ANSI C często było używane jako dodatek do kompilatora, dlatego niektórzy mogą nie widzieć różnicy.
SP
Szalony Programista2
Ja programuję w tym C od tylu lat i ja nie widzę żadnych zmian, wszystko jest takie zwykłe struktury, pointery nie ma nic nowego, albo ślepy jestem jakoś.
enedil
@Szalony Programista2: no a np. konieczność deklaracji wszystkich zmiennych na początku bloku?
SP
Szalony Programista2
@enedil: widzę, że są jakieś zmiany, ale jak się piszę w tym C to się nie wie czy coś się zmieniło czy zawsze tak było, ale widzę, że u standaryzowane są pewne operacje w tym C17, gdzie zwykle trzeba było pisać dyrektywy do innych systemów np. dla linuxa i windowsa inne liby, a tu pewne rzeczy są multiplatform, a tak to widzisz jakiś warning/error poprawiasz, ja do teraz myślałem, że nic się w tym C się nie zmienia.
EI
  • Rejestracja:ponad 2 lata
  • Ostatnio:ponad 2 lata
  • Postów:99
1

Z własnego doświadczenie strony mogę polecić:

  1. Czytanie i uruchamianie istniejących programów - prostych, przykładowych, np. pochodzących z dokumentacji lub dołączonych do środowiska programistycznego.

  2. Czytanie istniejących programów - praktycznych ("produkcyjnych"), ale bez przesady z ich skomplikowaniem. Np. stare wersje kernela Linux się do tego nadają, tylko trzeba podchodzić z rozsądkiem, żeby nie narobić sobie złych nawyków, bo sporo się pozmieniało.

  3. Czytanie dokumentacji. Jeśli chodzi o bibliotekę standardową C, to moim zdaniem nadaje się glibc, tu znajdziesz dokumentację:

  1. Oraz przede wszystkim manuale dostępne w systemie - polecenie man.

  2. Zrozumienie, czym różni się plik nagłówkowy od biblioteki i jaka jest różnica pomiędzy #include a linkowaniem :P

  3. Oprócz języka i biblioteki, poznawanie narzędzi towarzyszących normalnej pracy - zupełna podstawa to make i gdb.

  4. Pracę i pisanie pod różnymi systemami operacyjnymi (Linux, FreeBSD, OpenBSD). Można to robić np. wykupując VPSy z odpowiednimi systemami.

  5. Na każdym z powyższych etapów pisanie własnych programów i wykorzystywanie nowo poznawanych elementów języka i biblioteki na bieżąco.

KS
  • Rejestracja:prawie 4 lata
  • Ostatnio:7 dni
  • Postów:581
2

Pewnie lepsze byłyby książki od posixa ale...

Do C to tylko
K&R, reszty raczej nie warto. Nie przejmuj się, że tu niektórzy mówią, że ansi C to stare dziadostwo etc.
To nie jest język który się strasznie zmienił przez tyle lat. Nowinki szybko douczysz.
Polecam obczaić też #C na irc libera ( dawniej freenode ).

Jak coś napisz na priv. C to mój ukochany język i na pewno chętnie coś więcej doradzę ale
musiałbym wiedzieć co do tej pory umiesz i co byś chciał umieć. etc.

A ten kurs to sobie podaruj ( nie rób go ).

edytowany 4x, ostatnio: ksh
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)