Programowanie/Wstęp/Plan nauki

Plan nauki programowania

edytuj

Program minimum

edytuj

Nauka programowania jest ogólnie pracochłonna. Niniejszy podręcznik ma za zadanie przedstawić jedynie podstawy. Do nauki programowania w typowych językach niezbędna jest znajomość podstaw programowania imperatywnego, określonego języka programowania oraz algorytmów i struktur danych pozwalających rozwiązywać określone problemy. To z zasadzie minimum.

Oprócz znajomości samej teorii i narzędzi informatycznych często ważne jest dobre poznanie innych interesujących nas dziedzin życia, w których możemy zastosować komputerowe przetwarzanie informacji. Dzięki temu nauka programowania nie musi być tylko matematyczną łamigłówką.

Dalsza lektura

edytuj

Dobrze jest przeczytać parę książek o języku C, algorytmach, strukturach danych a także znalezienie interesujących nas problemów, które chcemy rozwiązywać. Sam proces nauki potrwa zapewne kilka lat. Możliwe, że język C nie będzie wtedy optymalnym narzędziem, niemniej jednak bez niezbędnych podstaw ciężko zdobywać góry.

Skoro Czytelnik czyta wolną książkę, to najprawdopodobniej ma otwarty umysł:) Zatem może myśleć o tworzeniu otwartego oprogramowania na otwarte systemy operacyjne.

programowanie systemu UNIX

edytuj

Język C powala na bezpośrednią komunikację z Unixowymi systemami operacyjnymi - przykładem jest biblioteka GNU glibc. Manual programisty Unixa jest dostępny nawet na stronach man. Istnieją inne książki opisujące tą tematykę.

Programowanie obiektowe

edytuj

Programowanie obiektowe jest stosowane w bardziej skomplikowanych projektach. Typowym językami obiektowymi są: C++, Java, C#.

C++ jest bardziej zgodny duchowo z językiem C (dobra kontrola zarządzania pamięcią). Jest stosowany w grach, inżynierii, symulacjach komputerowych.

Z kolei języki Java i C# korzystają z automatycznego odśmiecania pamięci. Pisanie aplikacji jest szybsze, jednak sprawdza się to tylko przy prostych aplikacjach nie wymagających alokowania dużej ilości pamięci oraz niskich wymaganiach wydajnościowych.


Programowanie obiektowe jest tematyką obszerną, zawiera różne zagadnienia inżynierii oprogramowania. Typowym tematem są wzorce projektowe - zbiór przepisów na rozwiązanie typowych problemów projektowych.

Programowanie równoległe i rozproszone

edytuj

Obecne komputery mają procesory wielordzeniowe. Czasami można przyśpieszyć obliczenia poprzez wykonanie równoległe wielu zadań. Wykorzystuje się m.in. biblioteki Posix Threads (pthreads), OpenMP (omp), czy też nowe funkcjonalności języków C11 i C++11.

Do komunikowania się z innym komputerem poprzez sieć (i być może koordynowania skomplikowanych obliczeń) wykorzystuje się np. mechanizm gniazdek (socket). Jest to opisane w standardzie POSIX.

Programowanie grafiki trójwymiarowej

edytuj

Grafika trójwymiarowa jest wykorzystywana w grach, obrazowaniu symulacji komputerowych itp. Do jej tworzenia wykorzystuje się m.in. bibliotekę OpenGL. OpenGL jest zbiorem funkcji języka C sterujących wyświetlaniem grafiki. Nowe wersje OpenGL wymagają korzystania z innych bibliotek napisanych w C++.

Interfejsy GUI

edytuj

Być może chcemy napisać aplikację z interfejsem okienkowym. Możemy rozważyć wówczas biblioteki GTK+, WxWidgets lub FLTK.


Dla prawdziwych informatyków

edytuj

Przykładowy plan prestiżowych studiów informatycznych jest dostępny na stronie internetowej Instytutu Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego (serwer: http://wazniak.mimuw.edu.pl). Poziom wymagań na innych uczelniach może być inny.