Co dalej po zapoznaniu się z językiem C?

0

Załóżmy, że użytkownik jakiejś wielkiej książkowej „cegły” (lub dobrego kursu) dotyczącej składni tego języka i jego przykładów zastosowań ujętych w takich zagadnieniach j (zazwyczaj linuksowych) jak: procesy, wątki, semafory i gniazda, które te tematy mniej lub więcej opanuje, co dalej może robić? Nie chodzi mi może o sytuację zawodową związaną z rynkiem pracy, tylko bardziej czy poniższe zagadnienia „uprawniają” do wyspecjalizowaniu się w jakimś rodzaju tworzonych aplikacji? Prościej, czy jest to wiedza bardziej dla wiedzy, czy też już znając taki zakres „zagadnieniowy” można coś ambitniejszego robić? A jeśli tak to co? Lub w którym kierunku dalej pójść, posługując się tym zestawem narzędziowym i go twórczo jednocześnie wykorzystując? Ktoś naturalnie odpowie, że tematów na forum C/C++, ale to w większości prośby o poprawę składni, algorytmika, czy zaliczanie przedmiotów.

1

Jak zawodowo to trzeba by sprawdzić oferty pracy. Jak hobbystycznie to zrób jakiegoś ticketa z linuxa

1

Właśnie, pytanie czy hobbystycznie chcesz poszerzać wiedzę czy zawodowo?
Można się uczyć algorytmiki, systemów, optymalizacji, architektury CPU/GPU, arduino a może innego bardziej nowoczesnego języka?
Z C byłoby spoko przejście na Rusta/GO myślę.

2

Naucz się innych języków. Rust, Go, Dart?

0

Zdecydowanie hobbystycznie. Jako, że nie mam aspiracji ani zawodowych, ani rozwojowych w tym kierunku, bardziej zadałem pytanie w kontekście mozliwości wykorzystania tego zakresu umiejętności. Programowanie to nie moja działka, zostanę przy tym C jako zjawisku do poznawania, niż jakiś ambitniejszych celach. Dziękuje za podpowiedzi.

6

Prościej, czy jest to wiedza bardziej dla wiedzy, czy też już znając taki zakres „zagadnieniowy” można coś ambitniejszego robić? A jeśli tak to co?

Twój umysł zmierza w dobrym kierunku, ale nie potrafisz jeszcze tego nazwać. To o co chcesz się zapytać, to czy znająć język programowania umiesz programować. Bo widzisz, jedno nie równa się drugiemu choć słownictwo podobne. Niestety przez internetowe medium możemy tylko zgadywać a jeśli musisz o takie rzeczy pytać to będę strzelał, że jeszcze nie umiesz. I nie bierz tego do siebie, w końcu nic o Tobie nie wiem i wypowiadam się tylko na podstawie kilku zdań na forum.

Lub w którym kierunku dalej pójść, posługując się tym zestawem narzędziowym

Nie wymieniłeś tych narzędzi także znowu pozostaje zgadywać. IMHO zbuduj coś nietrywialnego (w sensie nie jakiś kolejny hello world) co działa to będziesz wiedział. Może jakieś proste reverse proxy, albo może snake'a?

Naucz się innych języków. Rust, Go, Dart?

To dobra rada jak już ktoś umie programować. Dla osoby, która jeszcze nie jest tego pewna bardzo szkodliwa.

1

Jak będziesz troszkę doświadczony to nie będziesz miał czasu na zastanawianie się co napisać tyle będziesz miał projektów w głowie.

Sam programuję w C już chyba 10 lat, dla mnie język bajka, nie zamieniłbym na coś nowego. Zresztą po co tracić czas na naukę nowych lepszych języków. Zostaw to osobnikom którzy nie mają co robić ze swoim życiem i przepisują potem cały swój kod na nowy hiper mega super dobry język. Kompletna strata czasu. Psychiatryk

0
davout napisał(a):

Zdecydowanie hobbystycznie. Jako, że nie mam aspiracji ani zawodowych, ani rozwojowych w tym kierunku, bardziej zadałem pytanie w kontekście mozliwości wykorzystania tego zakresu umiejętności. Programowanie to nie moja działka, zostanę przy tym C jako zjawisku do poznawania, niż jakiś ambitniejszych celach. Dziękuje za podpowiedzi.

Znaczy potrzebujesz inspiracji?

patrz na link do YT w moim koncie (pod wpisem)

3

Ja bym radził po nauczeniu się C zdobyć trochę doświadczenia pisząc własne programy, a jeżeli już je masz, to polecam zacząć naukę Javy. Osobiście miałem tak, że jak zaczynałem się uczyć programowania, to jednym z języków, które mnie zainteresowały była właśnie Java, ale nie mogłem zrozumieć sensu większości jej elementów, więc uznałem ją za dziwny język i zabrałem się za naukę C. Później, po jakichś 3-4 latach wróciłem do Javy i nagle wszystko okazało się naturalnym uzupełnieniem C - sens poszczególnych elementów Javy stał się dla mnie jasny w krótkim czasie, ponieważ programując w C postawiłem się na miejscu wszystkich programistów w momencie powstania i popularyzacji Javy. No i taka droga ma jeszcze taki plus, że z tego co mi się wydaje, to znaleźć pracę w Javie jest o niebo łatwiej niż w C, a nauka Javy przy wcześniejszej znajomości C jest wyjątkowo szybka. Zresztą tak będzie z większością języków powstałych po C, jako że to właśnie język C stanowił pewien punkt zwrotny - podsumował wszystkie stare HLL-e biorąc z każdego z nich to, co najlepsze oraz stał się bazą dla nowszych - popatrz choćby na nawiasy klamrowe oraz średniki, elementy składni obecne w prawie każdym nowoczesnym języku w takim samym znaczeniu jak w C, przy czym oczywiście to jest bardzo przyziemny przykład.

1

Jeśli chodzi o C, to najlepiej sprowadza się do programowania systemowego w Linuksie, bo praktycznie każdy element systemu jest zaimplementowany w C. Można więc wziąć kod źródłowy i go dostosowywać do swoich potrzeb. Na przykład menedżer okien DWM jest bardzo fajny, bo dużo można zrobić optymalizacji pracy na tym poziomie, a jest tam tylko jakieś 2k linii kodu, bardzo prosto ogarnąć. Mam swojego forka i zabawa nim daje sporo radości. :) Hakowanie kernela to jeszcze daleka droga moim zdaniem, bardzo skomplikowane rzeczy.

Natomiast jak zacznie Cię szlag trafiać ile błędów popełniasz pisząc w C, pora nauczyć się Rusta (ewentualnie C++ jeśli Rust wciąż jest za trudny). Wcześniej raczej nie. Narzędzi należy uczyć się w miarę potrzeb, a nie na zasadzie gadżeciarstwa. No chyba, że to język, który uczysz się żeby poszerzyć horyzonty, ale to raczej Lisp, Haskell, Prolog. C++ stosunkowo niewiele zmienia w stosunku do C, jeśli chodzi o sposób myślenia.

1

Jak chcesz być w stanie pisać systemy operacyjne od zera czy zoptymalizowane tak bardzo, że ja p*******ę algorytmy i struktury danych (co się przydaje przy pisaniu bibliotek kodeków, kompresji, kryptografii, portowaniu oprogramowania tak wyższego jak i niższego poziomu, pisaniu kompilatorów, serwerów usług obsługujących gigantyczny ruch ala FAANG) - to bym polecił przyjrzeć się budowie CPU i jego komunikacji z pamięcią. Branch prediction, cache prefetching, cache lines, memory management unit, pipelining, jak wygląda kwestia startu. Potem bebechy systemów operacyjnych. Równolegle z tymi rzeczami algorytmika i matematyka dyskretna przynajmniej liźnięta na zasadzie wiedzieć jakich rzeczy możesz w tej działce matematyki szukać na przyszłość. Czytanie kupy research papers z tych działek gdzie algorytmy są optymaizowane by korzystać z dobrodziejstw wymienionych wcześniej bebechów procesora czy działania części składowych systemu operacyjnego, który może być zawalidrogą na ścieżce do najszybszego możliwego działania programu.

0
davout napisał(a):

Załóżmy, że użytkownik jakiejś wielkiej książkowej „cegły” (lub dobrego kursu) dotyczącej składni tego języka i jego przykładów zastosowań ujętych w takich zagadnieniach j (zazwyczaj linuksowych) jak: procesy, wątki, semafory i gniazda, które te tematy mniej lub więcej opanuje, co dalej może robić?

Nauczyć się czegoś praktycznego. To co napisałeś jest bardzo ważne, ale to taka wiedza good to have. Są programiści piszący kod mający praktyczne zastosowania, którzy nie wiedzą czym jest semafor albo wątek. Przykładowo ostatnio widziałem post jakiegoś NodeJSowca na forum go, który zadawał pytanie pokazującego jego absolutny brak wiedzy w tej dziedzinie

davout napisał(a):

? Nie chodzi mi może o sytuację zawodową związaną z rynkiem pracy, tylko bardziej czy poniższe zagadnienia „uprawniają” do wyspecjalizowaniu się w jakimś rodzaju tworzonych aplikacji?

Do głowy przychodzi mi tylko embedded. W C pisze się też zaawansowane rzeczy takie jak kernele albo bazy danych, ale jako początkujący nie będziesz się za to brał.

Jak chcesz pisać coś innego niż embedded to naucz się jakiegoś wysokopoziomowego języka. Najpraktyczniejszy jest JS, bo z żadnym innym językiem nie napiszesz tyle odmiennych aplikacji

2
several napisał(a):

To dobra rada jak już ktoś umie programować. Dla osoby, która jeszcze nie jest tego pewna bardzo szkodliwa.

Zanim byłem w stanie napisać snejka miałem za sobą styczność z 4 językami programowania. Nie pamiętam bym odniósł z tego tytułu szkody. W ostatniej dekadzie ukształtował się jakiś kult monogamistycznej wierności tylko jednemu językowi - znanie więcej niż jednego języka napawa ludzi strachem i bywa nawet demonizowane. Gdy ja zaczynałem programować to naturalnym było, że poznaje się kilka stosunkowo wcześnie. Wręcz nie wypadało ograniczać się do jednego.

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