logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Uczenie się "systemowego" C (gcc) na podstawie Linuxa/Unixa

lukagrom 11 Gru 2017 13:46 678 9
REKLAMA
  • #1 16883516
    lukagrom
    Poziom 16  
    Posty: 195
    Pomógł: 29
    Ocena: 12
    Pytanie jak w temacie. Przeglądam kilka książek poświęconym tematyce programowania w C w Linuxie, gdzie omawiane są zagadnienia związane z pisaniem aplikacji w C obejmujących przykłady oscylujące wokół wykorzystywania kompilacji, bibliotek, procesów, wątków, sygnałów, urządzeń, wywołań systemowych, systemu plików, wykorzystanie w kodzie asemblera, bezpieczeństwa i różnych funkcji wewnętrznych unixowych. Na chwilę obecną ta wiedza jest już "archaiczna" i znajduje jedyne uzasadnienie w pasji poznawczej, czy też dzięki znajomości tych technik i umiejętności, można coś zawojować? (rynek pracy, zlecenia , podstawa do wyjścia w jakieś nowe obszary, etc.)
  • REKLAMA
  • #2 16883607
    Konto nie istnieje
    Konto nie istnieje  
  • #3 16883649
    lukagrom
    Poziom 16  
    Posty: 195
    Pomógł: 29
    Ocena: 12
    Coś jest na rzeczy - google- programowanie jądra - pierwsza oferta - "programista jądra Linux/Android" - znajomość gcc(debugger, komplator,linker,make), C/C++, algorytmika, schematy elektr, -11 tys (Warszawa)
  • REKLAMA
  • #4 16883713
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #5 16883735
    lukagrom
    Poziom 16  
    Posty: 195
    Pomógł: 29
    Ocena: 12
    Chyba więc "Język ANSI C" z 1978r Ritchiego i Kernighana niekoniecznie oddawać na makulature.
  • #6 16883809
    JacekCz
    Poziom 42  
    Posty: 8670
    Pomógł: 760
    Ocena: 1461
    lukagrom napisał:
    Pytanie jak w temacie. Przeglądam kilka książek poświęconym tematyce programowania w C w Linuxie, gdzie omawiane są zagadnienia związane z pisaniem aplikacji w C obejmujących przykłady oscylujące wokół wykorzystywania kompilacji, bibliotek, procesów, wątków, sygnałów, urządzeń, wywołań systemowych, systemu plików, wykorzystanie w kodzie asemblera, bezpieczeństwa i różnych funkcji wewnętrznych unixowych. Na chwilę obecną ta wiedza jest już "archaiczna" i znajduje jedyne uzasadnienie w pasji poznawczej, czy też dzięki znajomości tych technik i umiejętności, można coś zawojować? (rynek pracy, zlecenia , podstawa do wyjścia w jakieś nowe obszary, etc.)


    Pracując poza kernelem Linuxa chyba dwa razy w życiu musiałem przeczytać kod C z głęboko unixowym/posixowym API (w celu spatchowania czy obejścia). MIlion lat temu nawet spatchowałem sobie jakiś sterownik (w wersji alfa siedział manualny błąd, akurat sam siebie podał na tacy). Warto wiedzieć "o co kaman" na poziomie czytania kodu.

    Podobnie jak zwichnięcie nauki C na mikroprocesorach, na głębokim API uniksowym tez źle się uczyć samego języka.
    Dodano po 3 [minuty]:
    Pong.Chu napisał:
    Elektroda to słabe miejsce na takie pytania nie znajdziesz tutaj ludzi mogących dać Ci odpowiedź...


    ale za to w makrach do offisa rozwijanych metodyką Copiegoi & Pasta, oraz budowaniu prowizorek ... eldorado
    Dodano po 2 [minuty]:
    lukagrom napisał:
    Chyba więc "Język ANSI C" z 1978r Ritchiego i Kernighana niekoniecznie oddawać na makulature.


    a z lat 80tych może być?
    Nie był jeszcze wtedy ANSI.

    Język poszedł do przodu, sens jest ten sam.
    Chyba najdalsze od współczesności jest ówczesne definiowanie funkcji z typami argumentów w body (nawet nie pamiętam dokładnie jak to się pisało)
    Zdecydowanie ten obszar warto pochwalić, nauka samego języka. Tam chyba tylko wzmianka jest na temat ioctl() , żeby wiedzieć, że gdzieś dzwonią.
  • #7 16883828
    lukagrom
    Poziom 16  
    Posty: 195
    Pomógł: 29
    Ocena: 12
    "Body" to chyba w HTML-u, argumenty funkcji C chyba nie podlegały ewolucji zapisu.
  • #8 16883832
    JacekCz
    Poziom 42  
    Posty: 8670
    Pomógł: 760
    Ocena: 1461
    lukagrom napisał:
    "Body" to chyba w HTML-u, argumenty funkcji C chyba nie podlegały ewolucji zapisu.


    ok, niekoniecznie 'body' w ścisłym sensie, ale coś w tym rodzaju.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    wklejka jest za StackOverflow, ale umiejscowienie w epoce chyba prawidłowe.
    W konsekwencji (chyba) kompilatory nie mogły wychwycić rozbieżności typów, stąd ówczesne defaulty "wszystko, co nie zadekalrowane to ineteger" itd)

    Realne kompilatory (Borland czy MS) ok 1985-87 już to akceptowały w konwencji ANSI. Starszej konwencji nie znam w własnego klepanego kodu, tylko właśnie z książki WNT.
  • #9 16883846
    lukagrom
    Poziom 16  
    Posty: 195
    Pomógł: 29
    Ocena: 12
    Mnie już zniechęca na samym początku -getopt_long, tą podstawową funkcję dla przetwarzania lini poleceń, pisali ewidentnie obcy, Za cienki jestem w te klocki, pozostawiam bystrzejszym.
  • REKLAMA
  • #10 16883855
    JacekCz
    Poziom 42  
    Posty: 8670
    Pomógł: 760
    Ocena: 1461
    lukagrom napisał:
    Mnie już zniechęca na samym początku -getopt_long, tą podstawową funkcję dla przetwarzania lini poleceń, pisali ewidentnie obcy, Za cienki jestem w te klocki, pozostawiam bystrzejszym.


    ZTCP nigdy, na żadnym etapie podobne funkcje nie były w rdzeniu biblioteki standardowej (ani posixowej itd), tylko w dodatkowych utilsach. Było sporo rozwiązań, niektóre całkiem przyjemne. Nawet nie wiem dokładnie, o której mówisz.
    Rdzeń języka to argc, argv.

Podsumowanie tematu

✨ Dyskusja dotyczy nauki programowania w języku C w kontekście systemów Linux/Unix, z naciskiem na zastosowanie technik takich jak kompilacja, biblioteki, procesy, wątki, sygnały, wywołania systemowe oraz bezpieczeństwo. Uczestnicy podkreślają, że znajomość tych zagadnień może być cenna na rynku pracy, zwłaszcza w kontekście programowania jądra Linuxa. Wskazują na konkretne oferty pracy, które wymagają umiejętności związanych z gcc, C/C++, oraz algorytmiką. Dyskusja porusza również ewolucję języka C, w tym różnice między składnią ANSI a wcześniejszymi wersjami, oraz wyzwania związane z przetwarzaniem argumentów w funkcjach.
Wygenerowane przez model językowy.
REKLAMA