Programowanie w systemie UNIX

Z Wikibooks, biblioteki wolnych podręczników.
Skocz do: nawigacja, szukaj
NewTux.svg

Ten podręcznik opisuje podstawy programowania w Linuksie

Wprowadzenie[edytuj]

  1. Wstęp
  2. dostęp
    1. Konsola - tryb tekstowy
      1. Zdalny dostęp (ang. remote acces): ssh
      2. Przekierowania, łączenie poleceń (potok, polecenia złożone)
    2. tryb graficzny
  3. Pamięć
  4. licencja

Języki programowania i narzędzia[edytuj]

  1. BASH
    1. ack - "lepszy niż grep" napisany w Perlu
    2. awk lub gawk (gnu awk)
    3. bc
    4. dc
    5. du
    6. diff: różnice, łaty
    7. file
    8. grep
    9. ldd
    10. ls
    11. od
    12. sed
    13. ssh
    14. wc
  2. C : CPU, GPU, obliczenia numeryczne, grafika, ...
  3. C++
  4. D
  5. Erlang
  6. Fortran
  7. Go
  8. Haskell
  9. Icon
  10. Java
  11. JavaScript
  12. Julia
  13. Lisp - Common Lisp, Scheme, Clojure, Elisp, ...
  14. Lua
  15. OCaml
  16. Pascal
  17. Perl
  18. PHP
  19. Prolog
  20. Python
  21. Ruby
  22. Rust
  23. swift

Metody/technologie/ specjalistyczne programy[edytuj]

  1. Dane
    1. typy
      1. wg możliwości odczytu:
        1. Dane do odczytu maszynowego
        2. Dane do odczytu przez człowieka
      2. wg zawartości
        1. tekstowe
        2. numeryczne (liczbowe)
        3. obrazowe
      3. wg ilości i złożoności danych
        1. małe zbiory
        2. średnie zbiory
        3. Big data
    2. Bazy danych
      1. SQL
        1. MySql w PHP
  2. Pliki
    1. tekstowe
    2. binarne
  3. Obliczenia
    1. obliczenia symboliczne (CAS) i numeryczne
      1. Programy
        1. Maxima
        2. GNU Octave
        3. PARI/GP
      2. biblioteki
    2. Statystyczne
      1. R, czyli języku programowania i środowisku do obliczeń statystycznych i wizualizacji wyników
    3. Obliczenia równoległe
      1. OpenMP
      2. OpenMPI
      3. GPGPU
        1. OpenGl
        2. OpenCl
        3. CUDA
        4. ArrayFire
        5. par4all
        6. Vulkan API
  4. www
    1. Django
    2. PHP
  5. Grafika - komputerowe przetwarzanie obrazów
    1. GIMP
    2. gnuplot
    3. Processing
    4. WebGl
    5. WebCl
    6. ImageMagic
    7. Dane tekstowe w obrazach, metadata
  6. tekst: obsługa biura / przetwarzanie tekstów / publikacje
    1. Pliki tekstowe, kodowanie i formatowanie
    2. WYSIWYG (ang. What You See Is What You Get – widzisz to, co dostajesz)
      1. LibreOffice, OpenOffice.org
      2. Emacs
      3. Vim
      4. Gedit
    3. języki znaczników
      1. TeX
        1. LateX
      2. markdown format
    4. Przetwarzanie tekstu w językach ogólnego przeznaczenia
      1. Wyrażenia regularne

Budowanie programu [edytuj]

  1. planowanie: sformułowanie problemu i opis algorytmu w języku naturalnym
  2. Dokumentacja kodu
  3. Formatowanie kodu (ang. indent)
  4. Kontrola wersji
    1. ręcznie lub łaty i diff
    2. scentralizowane
      1. Subversion
      2. CVS
    3. rozproszone (zdecentralizowane)
      1. Git
      2. Mercurial
  5. Kompilacja
    1. Ręczne (ang. "hand compilation", aka "manual build")
    2. Automatyczne: Narzędzia wspomagające budowę aplikacji
      1. Make = build system
      2. Apache Ant
      3. SCons
      4. Rake - Ruby Make
      5. Flex_i_Bison
      6. Pants, Apache Maven, gradle, sbt
  6. linkowanie (konsolidacja):
    1. ręcznie wpisana ścieżka [1]
    2. pkg-config
    3. zależności (ang. dependencies)
  7. Odpluskwiane (ang. debugging), testy bezpieczeństwa
    1. z użyciem printf
    2. gdb
    3. VAlgrind, memleax
    4. kcachegrind[2]
    5. Statyczna analiza kodu[3]
      1. cppcheck
      2. lint
      3. stack [4]
      4. kint [5]
      5. sparse [6]
  8. testowanie
  9. optymalizacja (profilowanie)
    1. gprof
  10. instalacja i odinstalowanie ( usuwanie) programów
  11. Praca grupowa
    1. Jak rozwijać gotowe projekty?
    2. Jak zadawać pytania?

Literatura[edytuj]

  1. Literatura