Programowanie w systemie UNIX
Ten podręcznik opisuje podstawy programowania w Linuksie
Wprowadzenie
edytuj- Wstęp
- architektura komputera/CPU
- Karta graficzna, GPU
- dostęp
- Pamięć
- licencja
Języki programowania i narzędzia
edytuj- asymptote - The Vector Graphics Language, online: You can even run it in your browser without installing it, using the Asymptote Web Application
- BASH
- C : CPU, GPU, obliczenia numeryczne, grafika, ...
- C++
- D
- Erlang
- Fortran
- GNU Data Language (GDL) – otwarta implementacja środowiska do obliczeń i wizualizacji IDL
- Go
- Haskell
- Icon
- Java
- JavaScript
- Julia
- Jupyter Notebook - może potocznie odnosić się do dwóch różnych koncepcji, albo aplikacji skierowanej do użytkownika do edycji kodu i tekstu, albo bazowego formatu pliku, który jest interoperacyjny w wielu implementacjach
- Lisp - Common Lisp, Scheme, Clojure, Elisp, ...
- Lua
- OCaml
- Pascal
- Perl
- PHP
- PostScript
- Prolog
- Python
- R (język programowania)
- Ruby
- Rust
- swift
- Vala ( and Gtk)
Metody/technologie/specjalistyczne programy/zastosowania
edytuj- Dane
- typy
- wg możliwości odczytu:
- Dane do odczytu maszynowego
- Dane do odczytu przez człowieka
- Dane do odczytu zarówno przez człowieka jak i przez komputer: XML
- wg zawartości
- wg ilości i złożoności danych
- małe zbiory
- średnie zbiory
- Big data
- wg możliwości odczytu:
- Bazy danych
- wyszukiwanie 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
- CAD
- Grafika - komputerowe przetwarzanie obrazów
- Dane tekstowe w obrazach, metadata
- Drukowanie grafiki - Jak przygotować plik do druku ?
- color menagment
- Programy graficzne
- GIMP
- gnuplot
- Processing
- Nvidia unity engine
- Context Free is a program that generates images from written instructions called a grammar grafika żółwia
- Skia: The 2D Graphics Library
- asymptote - The Vector Graphics Language, online: You can even run it in your browser without installing it, using the Asymptote Web Application
- WebGl
- WebCl
- ImageMagic
- OpenImageIO - C++, Python, CLI
- OpenCV C++ / Python
- 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
- komunikacja
- Algorytmy
- planowanie: sformułowanie problemu i opis algorytmu w języku naturalnym = od problemu do programu
- Jaki język programowania wybrać ?
- 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, cmake, premake
- Apache Ant
- SCons
- bazel - projekt open source do tworzenia i testowania wielojęzycznych i wieloplatformowych projektów
- Rake - Ruby Make
- ninja (build-system) i gn - meta system, który generuje pliki kompilacji dla Ninja ( meta-build system)
- Flex_i_Bison
- Pants, Apache Maven, gradle, sbt
- Cake ( for C23 )
- linkowanie (konsolidacja) i zależności (ang. dependencies) i menadżery pakietów
- ręcznie wpisana ścieżka [1]
- pkg-config
- conan The open-source C/C++ package manager
- vcpkg C++ Library Manager for Windows, Linux, and MacOS
- spack -Elastyczny menedżer pakietów obsługujący wiele wersji, konfiguracji, platform i kompilatorów
- Odpluskwiane (ang. debugging), testy bezpieczeństwa
- testowanie
- optymalizacja (profilowanie) : Najpierw profiluj, potem optymalizuj !
- instalacja i odinstalowanie ( usuwanie) programów
- Praca grupowa