Programowanie w systemie UNIX: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
m →Języki programowania i narzędzia: nowa strona |
|||
Linia 17: | Linia 17: | ||
# [[BASH]] |
# [[BASH]] |
||
## ack - "lepszy niż grep" napisany w Perlu |
## ack - "lepszy niż grep" napisany w Perlu |
||
## [ |
## [[Programowanie_w_systemie_UNIX/ag|ag] - The Silver Searcher. Narzędzie do wyszukiwania kodu podobne do ack, z naciskiem na szybkość autorstwa Geoffa Greera i 204 współpracowników |
||
## [[Programowanie_w_systemie_UNIX/awk|awk lub gawk (gnu awk)]] |
## [[Programowanie_w_systemie_UNIX/awk|awk lub gawk (gnu awk)]] |
||
## [[Programowanie_w_systemie_UNIX/bc|bc]] |
## [[Programowanie_w_systemie_UNIX/bc|bc]] |
Wersja z 11:09, 17 lip 2022
Ten podręcznik opisuje podstawy programowania w Linuksie
Wprowadzenie
- Wstęp
- architektura komputera/CPU
- dostęp
- Pamięć
- licencja
Języki programowania i narzędzia
- BASH
- ack - "lepszy niż grep" napisany w Perlu
- [[Programowanie_w_systemie_UNIX/ag|ag] - The Silver Searcher. Narzędzie do wyszukiwania kodu podobne do ack, z naciskiem na szybkość autorstwa Geoffa Greera i 204 współpracowników
- awk lub gawk (gnu awk)
- bc
- cut
- dc
- du
- diff
- file
- find
- grep
- hexdump
- ldconfig
- ldd
- locate
- ls
- ltrace - a library call tracer
- objdump
- od = octal dump
- patch
- readelf
- sed
- ssh
- strings
- time
- wc
- C : CPU, GPU, obliczenia numeryczne, grafika, ...
- C++
- D
- Erlang
- Fortran
- Go
- Haskell
- Icon
- Java
- JavaScript
- Julia
- Lisp - Common Lisp, Scheme, Clojure, Elisp, ...
- Lua
- OCaml
- Pascal
- Perl
- PHP
- PostScript
- Prolog
- Python
- Ruby
- Rust
- swift
- Vala ( and Gtk)
Metody/technologie/specjalistyczne programy
- Dane
- typy
- wg możliwości odczytu:
- Dane do odczytu maszynowego
- Dane do odczytu przez człowieka
- wg zawartości
- tekstowe
- numeryczne (liczbowe)
- obrazy
- wg ilości i złożoności danych
- małe zbiory
- średnie zbiory
- Big data
- wg możliwości odczytu:
- Bazy danych
- typy
- Pliki
- Obliczenia
- obliczenia symboliczne (CAS) i numeryczne (wektorowe (macierzowe), równoległe)
- Programy
- biblioteki
- konwersja danych numerycznych do symbolicznych :
- Statystyczne
- Obliczenia współbiezne, równoległe i rozproszone
- obliczenia symboliczne (CAS) i numeryczne (wektorowe (macierzowe), równoległe)
- www
- Grafika - komputerowe przetwarzanie obrazów
- tekst: obsługa biura / przetwarzanie tekstów / publikacje
- Pliki tekstowe, kodowanie i formatowanie
- Pliki mieszane : tekst i obraz ( pdf, ps)
- WYSIWYG (ang. What You See Is What You Get – widzisz to, co dostajesz)
- LibreOffice, OpenOffice.org
- Emacs
- Vim
- Gedit
- języki znaczników
- Przetwarzanie tekstu w językach ogólnego przeznaczenia
Budowanie programu
- planowanie: sformułowanie problemu i opis algorytmu w języku naturalnym
- Dokumentacja kodu
- Formatowanie kodu (ang. indent)
- Numery wersji - jak oznaczać nowe wersje programu ?
- Kontrola wersji
- ręcznie lub łaty i diff
- scentralizowane
- rozproszone (zdecentralizowane)
- Git
- Mercurial
- Kompilacja, linkowanie, instalacja = budowanie. Jak zbudować program ze źródeł ?
- Ręczne (ang. "hand compilation", aka "manual build")
- Automatyczne: Narzędzia wspomagające budowę aplikacji
- Make = build system
- Apache Ant
- SCons
- Rake - Ruby Make
- Flex_i_Bison
- Pants, Apache Maven, gradle, sbt
- linkowanie (konsolidacja):
- ręcznie wpisana ścieżka [1]
- pkg-config
- zależności (ang. dependencies)
- Odpluskwiane (ang. debugging), testy bezpieczeństwa
- z użyciem printf: "printf is the world’s simplest debugger" John L. Miller in Quora
- gdb
- VAlgrind, memleax
- kcachegrind[2]
- grafy
- Dependency graph
- call graph
- Statyczna analiza kodu[3]
- testowanie
- optymalizacja (profilowanie) : Najpierw profiluj, potem optymalizuj !
- instalacja i odinstalowanie ( usuwanie) programów
- Praca grupowa