Programowanie w systemie UNIX: Różnice pomiędzy wersjami

Z Wikibooks, biblioteki wolnych podręczników.
Usunięta treść Dodana treść
Linia 148: Linia 148:
## [[Programowanie w systemie UNIX/Valgrind|VAlgrind, memleax]]
## [[Programowanie w systemie UNIX/Valgrind|VAlgrind, memleax]]
## [[Programowanie w systemie UNIX/kcachegrind|kcachegrind]]<ref>[http://kcachegrind.sourceforge.net/html/Home.html|kcachegrind]</ref>
## [[Programowanie w systemie UNIX/kcachegrind|kcachegrind]]<ref>[http://kcachegrind.sourceforge.net/html/Home.html|kcachegrind]</ref>
## grafy
### Dependency graph
### call graph
## Statyczna analiza kodu<ref>[http://scc.ustc.edu.cn/zlsc/tc4600/intel/ssadiag_docs/index.htm#GUID-80DDBF45-7DE5-4E54-BB15-B4B21BD257B6.htm Static Analysis Problem Type Reference]</ref>
## Statyczna analiza kodu<ref>[http://scc.ustc.edu.cn/zlsc/tc4600/intel/ssadiag_docs/index.htm#GUID-80DDBF45-7DE5-4E54-BB15-B4B21BD257B6.htm Static Analysis Problem Type Reference]</ref>
### [[Programowanie w systemie UNIX/cppcheck |cppcheck]]
### [[Programowanie w systemie UNIX/cppcheck |cppcheck]]

Wersja z 08:00, 18 cze 2017

Ten podręcznik opisuje podstawy programowania w Linuksie

Wprowadzenie

  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

  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. ldconfig
    10. ldd
    11. ls
    12. od
    13. sed
    14. ssh
    15. 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

  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

  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, linkowanie, instalacja = budowanie. Jak zbudować program ze źródeł ?
    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. grafy
      1. Dependency graph
      2. call graph
    6. 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

  1. Literatura
  1. Library autotools
  2. [1]
  3. Static Analysis Problem Type Reference
  4. stack - is a static checker that detects unstable code in C/C++ programs
  5. KINT is a tool that uses scalable static analysis to detect integer errors in C programs.
  6. Sparse - a Semantic Parser for C