# data[].attributes.attachment_link.title
Jak efektywnie uczyć się informatyki? część 1

# data[].attributes.attachment_link.title
Jak efektywnie uczyć się informatyki? - część 2

# data[].attributes.attachment_link.readable_text
Programowanie dla dzieci i nastolatków - zwłaszcza we współcześnie scyfryzowanym świecie - jest zajęciem tak samo ważnym, jak nauka czytania czy liczenia. Szkoła Giganci Programowania przekaże wiedzę, która nie tylko potencjalnie przygotuje do zawodu związanego z IT, ale też zaciekawi, pozwalając lepiej poznać i zrozumieć świat nowych technologii.

Jestem przekonany, że to co odróżnia ludzi, którzy odnieśli sukces od tych, którym się nie udało, to czysty upór.
Steve Jobs

Do szkoły programowania dla dzieci i młodzieży zapraszamy od siódmego do dziewiętnastego roku życia - wiemy, że niezależnie od wieku, to motywacja odgrywa kluczową rolę w nauce, dlatego wciąż rozbudowujemy naszą ofertę o kolejne kursy, by każdy z naszych uczniów mógł rozwijać się w obszarze, który go najbardziej interesuje.

# data[].attributes.attachment_link.keywords[]
nauka programowania dla dzieci i młodzieży

# data[].attributes.attachment_link.title
Giganci programowania {#} Nauka programowania dla dzieci i młodzieży ⓵

# data[].attributes.attachment_link.description
Programowanie dla dzieci i nastolatków - zwłaszcza we współcześnie scyfryzowanym świecie - jest zajęciem tak samo ważnym, jak nauka czytania czy liczenia. Szkoła Giganci Programowania przekaże wiedzę, która nie tylko potencjalnie przygotuje do zawodu związanego z IT, ale też zaciekawi, pozwalając lepiej poznać i zrozumieć świat nowych technologii.

# data[].attributes.attachment_link.readable_text
Informatyka ( niem. Informatik, ang. computer science, computing, computer engineering, IT, ICT) - nauka ścisła oraz techniczna zajmująca się przetwarzaniem informacji, w tym również technologiami przetwarzania informacji oraz technologiami wytwarzania systemów przetwarzających informacje. Zajmuje się rozwiązywaniem problemów obliczeniowych, opisem procesów algorytmicznych oraz tworzeniem programów komputerowych i częściowo sprzętu komputerowego (z wyłączeniem zagadnień materialnych i energetycznych). Informatyka początkowo stanowiła część matematyki, z czasem wyodrębniła się do oddzielnej dyscypliny. W języku polskim termin „informatyka" zaproponował w październiku 1968 r. Romuald Marczyński (w Zakopanem, na ogólnopolskiej konferencji podczas wykładu zatytułowanego „Informatyka, czyli maszyny matematyczne i przetwarzanie informacji"), na wzór francuskiego informatique i niemieckiego Informatik.

Etymologia

Termin ﻿ informatics nie mógł zostać wprowadzony do słownictwa amerykańskiego z uwagi na problemy prawne - istniało tam przedsiębiorstwo o nazwie Informatics Inc(inne języki), co zablokowało chęć zmiany nazwy ACM na Society for Informatics. Wówczas popularny był już tam termin computer science - dosłownie: „nauka o komputerze" - co może być mylące, stąd spotykał się często z krytyką środowisk akademickich. Proponowano wiele alternatywnych nazw, m.in. Computer Studies, Computics, Computing Science, Computation Science, Information engineering, Information Technology. Association for Computing Machinery będące najważniejszą organizacją branżową przyjął termin computing na nazwę ogólnej dyscypliny. Częściowo powrócono jednak później do computer science ze względu na to, że termin ten się silnie zakorzenił. Współcześnie określenie computing odnosi się do całej dyscypliny, a computer science to jej część w której obowiązuje rygor naukowy, podczas gdy informatyka techniczna skupia się na aspektach praktycznych i traktowana jest jako nauka inżynierska. W informatyce technicznej można wyróżnić szereg specjalności, takich jak inżynieria komputerowa ( computer engineering, technische Informatik) związana z tworzeniem sprzętu komputerowego i oprogramowania wbudowanego, technologia informacyjna ( information technology), współcześnie najczęściej spotykana w tworzeniu oprogramowania dla zastosowań biznesowych, inżynieria oprogramowania ( software engineering), odnosząca się ogólnie do programowania, lecz ściśle związana z zarządzaniem procesem wytwarzania oprogramowania. SE i IT są czasem na wzór niemiecki zbiorczo nazywane informatyką praktyczną (niem. praktische Informatik).

Przetwarzanie informacji jest różnie interpretowane, przez co istnieją różne definicje informatyki. Uniwersytet Edynburski definiuje ją jako naukę o systemach obliczeniowych, w której centralną notacją jest transformacja informacji. Według Petera J. Denninga podstawowym pytaniem leżącym u podstaw informatyki jest: „Co można zautomatyzować?". Według teorii Stuarta C. Shapiro, informatyka jest nauką przyrodniczą, która bada procedury. Adam Olszewski wyróżnił pięć rodzajów obiektów, które są przedmiotem zainteresowania informatyki: funkcje efektywnie obliczalne, algorytmy, programy komputerowe, realizacje i maszyny. W roku 2005, w ACM Computing Curricula przedstawiono następujący opis:

Ogólnie rzecz biorąc, możemy zdefiniować informatykę (computing) jako jakąkolwiek zorientowaną na cel działalność wymagającą, korzystającą z lub tworzącą maszyny obliczeniowe. W związku z tym informatyka obejmuje projektowanie i budowanie systemów sprzętu i oprogramowania do szerokiego zakresu celów; przetwarzanie, strukturyzację i zarządzanie różnymi rodzajami informacji; obliczeniowe badania naukowe; sprawianie, by systemy komputerowe zachowywały się inteligentnie; (...) Lista jest praktycznie nieskończona, a możliwości są ogromne.

Przegląd dyscyplin informatycznych

Informatyka jest tylko o komputerach, tak jak astronomia tylko o teleskopach.

Jako dyscyplina informatyka obejmuje szereg tematów, od teoretycznych badań nad algorytmami i teorią obliczalności po praktyczne zagadnienia związane z implementowaniem systemów obliczeniowych zarówno w warstwie sprzętowej, jak i oprogramowaniu. CSAB, dawniej zwana Computing Sciences Accreditation Board - w skład której wchodzą przedstawiciele Association for Computing Machinery (ACM) oraz IEEE Computer Society (IEEE CS) - identyfikuje cztery obszary, które uważa za kluczowe dla informatyki: teoria obliczeń, algorytmy i struktury danych, języki i metodologia programowania oraz budowa i architektura komputerów. Oprócz tych czterech podstawowych obszarów, CSAB identyfikuje również takie dziedziny, jak inżynieria oprogramowania, sztuczna inteligencja, sieci komputerowe i komunikacja, systemy baz danych, obliczenia równoległe, obliczenia rozproszone, interakcja człowiek-komputer, grafika komputerowa, systemy operacyjne oraz metody numeryczne i symboliczne jako będące ważnymi dziedzinami informatyki.

Początkowo towarzystwa ACM i IEEE CS publikowały własne oddzielne zalecenia dotyczące programów studiów. Z czasem postanowiono utworzyć wspólną dyscyplinę oraz wspólne zalecenia dotyczące programów kształcenia. W pracach nad ujednoliceniem programów studiów uczestniczyły organizacje: ACM, IEEE Computer Society, Association for Information Systems, ACM SIG Information Technology Education, British Computer Society, International Federation for Information Processing, ABET and CSAB. Wyróżniono 5 głównych specjalizacji: inżynieria komputerowa (ang. computer engineering, CE), informatyka naukowa (ang. computer science, CS), systemy informacyjne (ang. information systems, IS), technologia informacji (ang. information technology, IT), inżynieria oprogramowania (ang. software engineering, SE). W 2020 podobna grupa organizacji przygotowała programy studiów dla kolejnych 2 specjalizacji: cyberbezpieczeństwo (ang. cybersecurity) oraz danologię (ang. data Science). W Niemczech zwyczajowo dzieli się natomiast na informatykę teoretyczną, techniczną, praktyczną oraz realizacje i stosowaną.

Architektur der Informatik

Peter J. Denning z kolei w swoim artykule o informatyce pogrupował treści w następujące działy: algorytmy i struktury danych, języki oprogramowania, architektura komputerów i oprogramowania, systemy operacyjne i sieci, inżynieria oprogramowania, bazy danych i wyszukiwanie informacji, sztuczna inteligencja i robotyka, grafika komputerowa, interakcja człowiek-komputer, symulacje komputerowe i obliczenia numeryczne, informatyka ekonomiczna, bioinformatyka. Jednocześnie dla każdego z tych obszarów zaproponował podział na trzy podejścia dotyczące strony teoretycznej, abstrakcyjnej oraz twórczej.

Teoretyczna informatyka (ang. theoretical computer science) ma ducha matematycznego i abstrakcyjnego, ale motywację czerpie z praktycznych i codziennych obliczeń. Jej celem jest zrozumienie natury obliczeń, w konsekwencji czego wprowadza ich coraz bardziej efektywne metody. Jest ona częścią matematyki i informatyki, która grupuje matematyczne podstawy informatyki. Jej najważniejsze obszary to teoria obliczeń, teoria informacji oraz algorytmika. Informatyka teoretyczna stara się odpowiedzieć na fundamentalne pytania w informatyce np. P versus NP problem i stanowi trzon dla bardziej praktycznych dziedzin.

Algorytmika to więcej niż dział informatyki. Tkwi ona w centrum wszystkich działów informatyki.

Algorytmika zajmuje się projektowaniem i analizą algorytmów i struktur danych. Jest najstarszą i jedną z najważniejszych dziedzin informatyki. Wśród jej podstawowych obszarów można wymienić projektowanie i analizę algorytmów, geometrię obliczeniową, optymalizację kombinatoryczną oraz logikę algorytmiczną. Historycznie podstawowymi zagadnieniami są algorytmy sortowania, kompresji, przeszukiwania czy szyfrowania oraz metody numeryczne. Algorytmy podlegają klasyfikacji, wyróżniając np. algorytmy zachłanne jak algorytm Dijkstry czy algorytm Kruskala, metody generowania liczb losowych, metody optymalizacji itd. Do podstawowych struktur danych należą rekord, tablica, stos, lista, kolejka, drzewa czy grafy. Próbą połączenia idei struktur danych i algorytmów jest paradygmat programowania obiektowego.

Teoria obliczeń dzieli się na trzy główne części: teorię automatów, teorię obliczalności oraz teorię złożoności. Teoria automatów zajmuje się definicjami i własnościami modeli obliczeń, matematycznymi modelami maszyn liczących. W uproszczeniu zajmuje się ona odpowiedzią na pytanie czym jest komputer, teoria obliczalności zajmuje się odpowiedzią na pytanie, które problemy dają się rozwiązać przy pomocy komputera, a teoria złożoności - odpowiedzią na pytanie jak szybko da się to zrobić. Przykładowymi zagadnieniami są Maszyna Turinga czy Hipoteza Churcha-Turinga. Języki formalne stanowią podstawę badań nad językami komputerowymi, jak i naturalnymi w lingwistyce. Systemy formalne są tworzone i badane zarówno jako samodzielne abstrakcyjne twory, jak i systemy opisu rzeczywistości.

Matematyczna teoria informacji zajmuje się problematyką informacji, w tym podstawami teoretycznymi dla przetwarzania i przesyłania informacji, np. w celu ich transmisji lub kompresji. Przykładowo wprowadza takie pojęcia jak komunikat, entropia, ciało skończone czy bit będący podstawową jednostką w informatyce. Teoria kodowania zajmuje się tworzeniem i analizą reprezentacji danych w komputerze. Wyróżnia się m.in. kodowanie znaków czy kodowanie transportowe, do których należą np. kod stałopozycyjny.

Informatyka kwantowa to gałąź informatyki łącząca ją z mechaniką kwantową, w której do przetwarzania informacji wykorzystywane są własności układów kwantowych. Elementarnym nośnikiem informacji kwantowej jest kubit, kwantowy odpowiednik bitu. Stan kubitu opisany jest przez dowolną kombinację liniową stanów bazowych. W najbardziej popularnym modelu kwantowego przetwarzania informacji, operacje na kubitach są reprezentowane za pomocą bramek kwantowych. Najbardziej spektakularny sukces informatyki kwantowej to kwantowa kryptografia. Natomiast najbardziej obiecującym kierunkiem badań są prace dotyczące idei kwantowego komputera. Dynamiczny rozwój technologii w ostatnich latach spowodował, że gałąź ta wyłamuje się poza czysto-teoryczne rozważania. Stworzono pewne realizacje bramek kwantowych, a na targach CES w 2018 roku amerykańskie przedsiębiorstwo informatyczne IBM zaprezentowała swój działający, 50-kubitowy komputer kwantowy.

Teoria języków programowania (ang. Programming language theory, PLT) to dziedzina informatyki zajmująca się projektowaniem, wdrażaniem, analizą, charakteryzacją i klasyfikacją języków programowania oraz ich indywidualnymi cechami. Przykładowymi obszarami PLT są semantyki formalne (ang. formal semantics), teoria typów (ang. type theory) czy metaprogramowanie. Na języki programowania składa się składnia, semantyka i biblioteki standardowe, zazwyczaj posiadają co najmniej obsługę wejścia-wyjścia, obsługę plików, obsługę wielowątkowości, zarządzanie pamięcią operacyjną, podstawowe typy danych, funkcje do zarządzania nimi np. operacje na ciągach znaków. Ważnym obszarem PLT jest też teoria kompilacji, na której proces składa się wykonanie poleceń preprocesora, analiza leksykalna, analiza składniowa, analiza semantyczna, optymalizacja kodu wynikowego i generacja kodu. Języki klasyfikuje się według poziomu abstrakcji na którym operują na języki niskiego poziomu oraz języki wysokiego poziomu, wyróżnia się także wiele paradygmatów programowania.

Inżynieria komputerowa

Inżynieria komputerowa (ang. computer engineering, niem. Technishe Informatik) - zajmuje się tworzeniem systemów komputerowych. Do jej zadań należy projektowanie, wytwarzanie, integracja i eksploatacja sprzętu cyfrowego, w tym urządzeń sieciowych. Początkowo zajmowała się głównie tworzeniem procesorów, a współcześnie ważną jej rolę stanowi także tworzenie sprzętu i sterowników dla systemów wbudowanych, które wraz z pojawieniem się koncepcji IoT mają coraz większe znaczenie. Do jej zagadnień należy architekturą i organizacją systemów komputerowych na poziomie sprzętowym oraz oprogramowania sprzętowego.

Technika cyfrowa zajmuje się projektowaniem i analizą układów cyfrowych. Do jej elementarnych zagadnień należą bramki logiczne, rejestry, układy sekwencyjne i układy kombinacyjne. Obejmuje syntezę logiczną i odwzorowanie technologiczne. Współcześnie jej zagadnienia są kształtowane z jednej strony przez języki opisu sprzętu, a z drugiej przez bezpośrednio programowalne macierze bramek. Układy logiczne początkowo implementowano jako układy mechaniczne, następnie jako elektromechaniczne i dominujące współcześnie układy elektroniczne.

Architektura komputerów ( AK) to główny obszar inżynierii komputerowej zajmujący się projektowaniem i podstawową strukturą systemów komputerowych oraz budową i organizacją ich podzespołów. Główny obszar AK stanowi architektura procesorów na którą składa się model programowy procesora oraz mikroarchitektura procesora. Procesory są głównym elementem systemów komputerowych. Szczególna uwaga jest poświęcona na sposobie, w jaki procesor wykonuje instrukcje i uzyskuje dostęp do adresów w pamięci. Przykładowe zagadnienia to DMA czy kontroler. Ważnymi obszarami AK są także magistrale oraz pamięci komputerowe. Pamięcią komputerową nazywa się różnego rodzaju urządzenia i bloki funkcjonalne komputera, służące do przechowywania danych i programów ( systemu operacyjnego oraz aplikacji). Istnieje jej wiele rodzajów, m.in. rejestry procesora, pamięć podręczna procesora, pamięć RAM, dyski półprzewodnikowe (SSD), dyski twarde (HDD). Wyróżnia się pamięci zewnętrzne i wewnętrzne. Magistralę komunikacyjną (ang. bus) definiuje się jako zespół linii przenoszących sygnały oraz układy wejścia-wyjścia służące do przesyłania sygnałów między połączonymi urządzeniami w systemach mikroprocesorowych.

Obliczenia równoległe to obszar badający możliwość obliczeń, w której wiele instrukcji jest wykonywanych jednocześnie. Taka forma przetwarzania danych była wykorzystywana przez wiele lat, głównie przy wykorzystaniu superkomputerów, a szczególne zainteresowanie zyskała w ostatnich latach, z uwagi na fizyczne ograniczenia uniemożliwiające dalsze zwiększanie częstotliwości taktowania procesorów. Obliczenia równoległe stały się dominującym wzorcem w architekturze komputerowej, głównie za sprawą upowszechnienia procesorów wielordzeniowych. Ze względu na skalę można wyróżnić obliczenia równoległe na poziomie: bitów, instrukcji, danych i zadań. Współbieżność jest właściwością systemów, w których obliczenia wykonuje się jednocześnie i potencjalnie korzystają ze wspólnych zasobów i/lub wchodzą w interakcje ze sobą. Opracowano wiele modeli obliczeń równoległych, w tym sieci Petriego, rachunek procesowy (ang. process calculus) i model maszyny dostępu równoległego (ang. parallel random-access machine, PRAM). Kiedy wiele komputerów jest podłączonych do sieci podczas korzystania ze współbieżności, jest to nazywane systemem rozproszonym. w którym to komputery mają własną pamięć, a informacje są wymieniane, by osiągnąć wspólne cele.

Oprogramowanie niskopoziomowe pisze się w językach niskiego poziomu. Są to głównie języki asemblera, stanowią symboliczny zapis instrukcji procesora i danych, który w prosty sposób odpowiada zapisowi binarnemu. Języki asemblerowe wprowadzone w celu czytelnej dla człowieka reprezentacji języków maszynowych komputerów. W przeciwieństwie do języków wysokiego poziomu, typowe języki asemblerowe charakteryzują się strukturą liniową (wierszową). Każdy wiersz tekstu może zawierać pojedynczą instrukcję procesora lub dyrektywę asemblera.

Sieci komputerowe to gałąź informatyki mająca na celu tworzenie sieci między komputerami nazywanych węzłami, umożliwiając im współdzielenie zasobów. W sieciach komputerowych urządzenia komputerowe wymieniają się danymi za pomocą warstw sieciowych. W modelu OSI wyróżnia się warstwę aplikacji, prezentacji, sesji, transportową, sieciową, łącza danych i fizyczną, a w modelu TCP/IP - będącym podstawą struktury internetu - wyróżnia się warstwy aplikacji, transportową, internetową i dostępu do sieci. Te łącza danych są ustanawiane za pomocą mediów kablowych, takich jak skrętka lub kable światłowodowe, oraz mediów bezprzewodowych, takich jak np. Wi-Fi. Jednymi z podstawowych zagadnień sieci są protokoły oraz urządzenia sieciowe. Do najpopularniejszych urządzeń sieciowych należy karta sieciowa, router, koncentrator, przełącznik, punkt dostępowy, most, ekspander zasięgu Wi-Fi (repeater Wi-Fi), adaptery PowerLine, serwery wydruku, kamery IP, bramki VoIP orazy telefony IP. Protokołem komunikacyjnym nazywa się zbiór ścisłych reguł i kroków postępowania, które są automatycznie wykonywane przez urządzenia sieciowe w celu nawiązania łączności i wymiany danych. Definiują one syntaksę, semantykę, synchronizację komunikacji oraz możliwe metody naprawiania błędów. Protokoły te mogą zostać wdrożone za pomocą hardware'u, oprogramowania lub obu jednocześnie.

Systemy operacyjny pełnią szczególną rolę w informatyce. Jest to oprogramowanie zarządzające systemem komputerowym, tworzące środowisko do uruchamiania i kontroli zadań. Najważniejszym elementem systemu operacyjnych jest jego jądro wykonujące i kontrolujące zadania m.in. planisty czasu procesora, ustalającego które zadanie i jak długo będzie wykonywane czy przełącznika zadań, odpowiedzialnego za przełączanie pomiędzy uruchomionymi zadaniami. System operacyjny posiada także swoją powłokę, czyli specjalny program komunikujący użytkownika z systemem operacyjnym oraz system plików - sposób ustrukturyzowanego zapisu danych na nośniku. Osoby administrujące systemami nazwa się administratorami (pot. adminami). Współcześnie najważniejszą rodziną systemów operacyjnych jest GNU/Linux oraz Windows.

Programowanie komputerów to proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów komputerowych w tym dla urządzeń mikroprocesorowych ( mikrokontrolery). Programowanie pod różnymi postaciami jest obecne w większości działów informatyki. Kod źródłowy jest napisany w języku programowania, z użyciem określonych reguł, może on być modyfikacją istniejącego programu lub czymś zupełnie nowym. Programowanie wymaga wiedzy i doświadczenia w wielu dziedzinach, jak projektowanie aplikacji, algorytmika, struktury danych, języki programowania i narzędzia programistyczne, kompilatory, czy sposób działania podzespołów komputera. Między programistami trwają debaty, czy programowanie komputerów jest sztuką, rzemiosłem czy procesem inżynieryjnym. Bezpośrednią formą sztuki w tej dziedzinie jest demoscena. Programowanie komputerów integruje ze sobą większość gałęzi informatyki. Istnieje wiele gałęzi rozwoju technik programowania, jednak wszystkie z nich bazują na wspólnych podstawach. Niezależnie czy to będzie aplikacja webowa w Javascript, gra komputerowa w C++ czy program mikrokontrolera w C, używają one podstawowych konstrukcji programistycznych. Podstawymi pojęciami od których zaczyna się naukę programowania są między innymi zmienne, tablice, instrukcje warunkowe, pętle, wskaźniki, łańcuchy, funkcje, debugowanie, biblioteki oraz zarządzanie pamięcią. Języki dzieli się na generacje: 2GL, 3GL, 4GL, 5GL. Wyróżnia się między innymi języki akcji, języki algorytmiczne, języki dziedzinowe, języki interpretowane, języki kompilowane, języki mnemoniczne, języki nieproceduralne, języki niezależne komputerowo, języki niskiego poziomu, języki opisu zadań, języki problemowe, języki proceduralne, języki symulacyjne, języki uniwersalne i języki wysokiego poziomu. Do najpopularniejszych języków programowania zalicza się: Java, C, Python, C++, Visual Basic .NET, C#, JavaScript, PHP, SQL, Język Asemblera, Swift, Objective-C, Ruby, Groovy, Go, Perl, MATLAB, Visual Basic, Object Pascal.

Grafika komputerowa to dział informatyki zajmujący się cyfrową syntezą i manipulacją treści wizualnych. Ze względu na reprezentację danych dzieli się na grafikę rastrową i wektorową, a ze względu na charakter danych na grafikę dwuwymiarową, trójwymiarową i ruchomą. Obejmuje także obecnie szybko rozwijające się przetwarzenie obrazów. Grafikę komputerową można także podzielić na teoretyczną skupiającą się algorytmach graficznych i praktyczną, skupiającą się manipulacji obrazem czy modelowaniu 3D np. w programie Blender. Grafika komputerowa stanowi podstawę współczesnych gier, animacji, symulacji czy wizualizacji komputerowych. Renderowanie polega na analizie stworzonego wcześniej modelu danej sceny oraz utworzenie na jej podstawie dwuwymiarowego obrazu wyjściowego w formie statycznej lub animacji. Podczas renderowania rozpatrywane są m.in. odbicia, cienie, załamania światła, wpływy atmosfery (w tym mgła), efekty wolumetryczne itp.

Inżynieria oprogramowania, także inżynieria systemów informatycznych - zajmuje się procesem i metodykami tworzenia systemów informatycznych: od analizy i określenia wymagań, przez projektowanie i wdrożenie, aż do ewolucji gotowego oprogramowania. Termin inżynieria oprogramowania po raz pierwszy został użyty w przełomie lat 1950/60 (ale oficjalnie za narodziny tej dyscypliny podaje się lata 1968 i 1969, w których miały miejsce dwie konferencje sponsorowane przez NATO, odpowiednio w Garmisch i Rzymie). Wyróżnia fazy produkcji oprogramwania: specyfikacji, projektowania, implementacji, integracji i ewoluacji, a także dostarcza systematycznych metodyk jego tworzenia, jak m.in. model kaskadowy, prototypowy czy zwinny, w tym scrum. Wprowadza takie pojęcia jak np. cykl życia programu czy metryka oprogramowania. Wyróżnia się także jej specjalizacje np. inżynieria systemów mobilnych, inżynieria systemów baz danych, inżynieria sytemów wbudowanych czy inżynieria gier komputerowych. Wzorcem projektowym ( ang. design pattern) nazywa się uniwersalne, sprawdzone w praktyce rozwiązanie często pojawiających się, powtarzalnych problemów projektowych. Pokazuje powiązania i zależności pomiędzy klasami oraz obiektami i ułatwia tworzenie, modyfikację oraz utrzymanie kodu źródłowego. Jest opisem rozwiązania, a nie jego implementacją. Architekturą oprogramowania nazwywa podstawową organizację systemu wraz z jego komponentami, wzajemnymi powiązaniami, środowiskiem pracy i regułami ustanawiającymi sposób jego budowy i rozwoju. Metody formalne - tworzenie specyfikacji, projektowania i weryfikacji oprogramowania lub systemów informatycznych w języku formalnym. Metody formalne najlepiej opisać jako zastosowanie dość szerokiej gamy podstaw teoretycznych informatyki, w szczególności rachunku logicznego, języków formalnych, teorii automatów, systemu dynamiki zdarzeń dyskretnych i semantyki programów, a także systemów typów i typów danych algebraicznych do specyfikacji i weryfikacji problemów w oprogramowaniu i sprzęcie.

Kryptologia dzieli się na kryptografię, czyli gałąź wiedzy o utajnianiu wiadomości oraz kryptoanalizę, czyli gałąź wiedzy o przełamywaniu zabezpieczeń oraz o deszyfrowaniu wiadomości przy braku klucza lub innego wymaganego elementu schematu szyfrowania ( szyfru). Przykładowe metody to atak brute force czy kryptoanaliza liniowa. Bezpieczeństwo komputerowe (ang. computer security'', pot. cybersecurity, hacking) zajmuje się zapewnianiem poufności i bezpieczeństwa danych. Osoby posiadające szeroką i zaawansowaną wiedzę informatyczną, lecz nieetycznie z niej korzystający nazywani są cracker. Ich szczególnym zainteresowaniem jest wyszukiwanie luk (dziur) w systemach operacyjnych, programach, sieciach komputerowych czy urządzeniach do niej podłączonych w celu przejęcia nad nimi zdalnej kontroli. Wyróżnia się wiele klasycznych ataków komputerowych takich jak na przykład DDoS, HTTP Flood, UDP flood, smurf attack, session hijacking, a także wiele rodzajów wirusów komputerowych, trojanów, snifferów czy rootkitów. W odpowiedzi powstało wiele technik obrony systemów informatycznych, np. obrona w głąb, security through obscurity czy głębokie ukrycie.

Danologia (ang. Data science) wykorzystuje metody naukowe, procesy, algorytmy, narzędzia i systemy informatyczne do wydobywania wiedzy i spostrzeżeń z wielu danych strukturalnych i nieustrukturyzowanych, tzw. Big data. Eksploracją danych (ang. data mining) nazywa się jeden z procesów uzyskiwania wiedzy z baz danych. Idea eksploracji danych polega na wykorzystaniu szybkości komputera do znajdowania ukrytych dla człowieka (właśnie z uwagi na ograniczone możliwości czasowe) prawidłowości w danych zgromadzonych w hurtowniach danych. Big data to termin odnoszący się do dużych, zmiennych i różnorodnych zbiorów danych, których przetwarzanie i analiza jest trudna, ale jednocześnie wartościowa. Obecne użycie terminu big data zwykle odnosi się do użycia analizy predykcyjnej, analizy zachowania użytkownika lub niektórych innych zaawansowanych metod analizy danych, które wydobywają wartość z danych, a rzadko do określonego rozmiaru zestawu danych. Baza danych to zorganizowany zbiór danych, ogólnie przechowywanych i dostępnych z systemu komputerowego. Tam, gdzie bazy danych są bardziej złożone, często są opracowywane przy użyciu formalnych technik projektowania i modelowania. System zarządzania bazą danych (DBMS) to oprogramowanie, które współdziała z użytkownikami końcowymi, aplikacjami i samą bazą danych w celu przechwytywania i analizy danych. Oprogramowanie DBMS obejmuje dodatkowo podstawowe narzędzia do zarządzania bazą danych.

Systemy informatyczne (ang. information processing systems) może opisać jako zbiór powiązanych ze sobą elementów, które przetwarzają informacje, najczęściej z wykorzystaniem sprzętu i oprogramowania komputerowego.

Sztuczna inteligencja (SI, ang. Artificial intelligence, AI) to obszar informatyki zajmujący się komputerowym symulowaniem inteligencji - tworzeniem modeli zachowań inteligentnych oraz systemów komputerowych symulujących te zachowania. Szczególnym zainteresowaniem darzy się problemy które nie są bezpośrednio algorytmizowalne, jak rozpoznawanie obrazów, tłumaczenie maszynowe czy rozpoznawanie mowy. Sztuczna inteligencja jest związana z logiką rozmytą, algorytmami ewolucyjnymi, sieciami neuronowymi, robotyką i sztucznym życiem. SI bywa nazywane także inteligencją obliczeniową (ang. Computational Intelligence, CI). Uczeniem maszynowym (ang. Machine learning, ML) nazwa się analizę procesów uczenia się oraz tworzeniem systemów, które doskonalą swoje działanie na podstawie doświadczeń z przeszłości. Jedną z wiodących technologii jest TensorFlow. Systemy te posiadają zdolność do samouczenia się i nazywa się je systemami samouczącymi. Podstawowymi metodami ML są symboliczne uczenie się (nazywane także indukcyjnym, ang. symbolic/inductive learning) oraz sztuczne sieci neuronowe (ang. artificial neural networks). Nazywa się tak połączone grupy węzłów, podobne do rozległej sieci neuronów w ludzkim mózgu. Głębokie sieci neuronowe (także głębokie uczenie maszynowe, ang. deep learning lub differential programming) to podkategoria uczenia maszynowego - nazywa się tak metody oparte na sztucznych sieciach neuronowych z uczeniem reprezentatywnym (ang. feature learning lub representation learning). Uczenie się może być nadzorowane, częściowo nadzorowane lub nienadzorowane. Sztuczne życie (ang. artificial life, AL, niem. Künstliches Leben, KL) to kierunek badań, zorientowany na zrozumienie i wykorzystanie istoty życia. Pomysłodawcą i ojcem chrzestnym tego podejścia był amerykański matematyk i informatyk Christopher Langton, który zaproponował je w 1986 roku. Dziedzina obejmuje między innymi: tworzenie różnorodnych modeli życia oraz prowadzenie symulacji w środowisku programowym, sprzętowym i biochemicznym, symulacje ewolucji biologicznej oraz innych procesów biologicznych za pomocą metod informatycznych, badania i symulacje układów niebiologicznych, zachowujących się podobnie jak układy biologiczne (np. automatów komórkowych), algorytmy ewolucyjne i ewolucję programów komputerowych.

Systemy wbudowane to systemy komputerowe specjalnego przeznaczenia, który staje się integralną częścią obsługiwanego przez niego sprzętu komputerowego ( hardware). System wbudowany musi spełniać określone wymagania ściśle zdefiniowane pod kątem zadań, które ma wykonywać. Każdy system wbudowany oparty jest na mikroprocesorze (lub mikrokontrolerze) zaprogramowanym do wykonywania ograniczonej liczby zadań lub nawet wyłącznie do jednego zadania. W systemach wbudowanych najpopularniejszymi modelami programowymi procesorów są RISC oparte na zasadach architektury harvardzkiej lub ARM. W systemach czasu rzeczywistego wynik i efekt działania jest zależny od chwili wypracowania tego wyniku. Systemy wbudowane współcześnie znajdują zastosowania np. w autonomicznych pojazdach, w internecie rzeczy czy w urządzeniach rozrywkowych.

Rozpoznawanie wzorców (ang. pattern recognition) to pole badawcze w obrębie uczenia maszynowego. Może być definiowane jako działanie polegające na pobieraniu surowych danych i podejmowaniu dalszych czynności zależnych od kategorii do której należą te dane. W rozpoznawaniu wzorców dąży się do klasyfikacji danych (wzorców) w oparciu o wiedzę aprioryczną lub o informacje uzyskane na drodze statystycznej analizy danych służącej wydobywaniu cech obiektów. Klasyfikowane wzorce to zazwyczaj grupy wyników pomiaru lub obserwacji definiujące położenie odpowiadających im punktów w wielowymiarowej przestrzeni cech.

Sygnały cyfrowe to strumienie bitów informacji, ich przetwarzanie polega na wykonaniu na nich pewnych operacji oraz ich interpretacja. Do głównych zastosowań należy przetwarzanie dźwięku, kompresja dźwięku, segmentacja obrazów, kodowanie wideo, przetwarzanie mowy, rozpoznawanie mowy oraz telekomunikacja cyfrowa.

Gry komputerowe to rodzaj oprogramowania komputerowego przeznaczonego do celów rozrywkowych lub edukacyjnych, wymagające od użytkownika ( gracza) rozwiązywania zadań logicznych lub zręcznościowych. Gry komputerowe mogą być uruchamiane na komputerach osobistych, specjalnych automatach, konsolach do gry, telewizorach, telefonach komórkowych oraz innych urządzeniach mobilnych. Gry, podobnie jak symulacje komputerowe mają wirtualizować pewien fragment rzeczywistości. Zaawansowane gry i symulacje są pisane w czystych językach programowania, najczęściej obiektowych - jak Simula czy C++ lub są oparte na silnikach jak Unity. Dla mniej wymagających symulacji powstały także uniwersalne programy.

Interakcją człowiek-komputer nazywa się wzajemne oddziaływanie między człowiekiem a komputerem zachodzące poprzez interfejs użytkownika, czyli część sprzętu i oprogramowania zajmującą się obsługą urządzeń wejścia-wyjścia przeznaczonych dla interakcji z użytkownikiem. Istnieje wiele rodzajów interfejsów, są to m.in. wiersz poleceń, interfejs tekstowy czy interfejs graficzny. Obecnie prowadzone są intensywne badania nad wirtualną rzeczywistością, a także interfejsami mózg-komputer.

Aplikacja internetowa (ang. web application), zwana również aplikacją webową - program komputerowy, który pracuje na serwerze i komunikuje się poprzez sieć komputerową z hostem użytkownika komputera z wykorzystaniem przeglądarki internetowej użytkownika, będącego w takim przypadku interaktywnym klientem aplikacji internetowej. Od komputerów mobilnych (np. smartfony, tablety) oczekuje się, że mogą być swobodnie transportowane podczas normalnego użytkowania, oraz pozwalają na przesyłanie danych, głosu i wideo. System mobilny, także przetwarzanie mobilne (ang. mobile computing) obejmuje komunikację mobilną oraz sprzęt i oprogramowanie mobilne. Kwestie komunikacyjne obejmują sieci ad hoc, infrastrukturę sieci, a także właściwości komunikacyjne, protokoły, formaty danych i konkretne technologie. Typowy sprzęt mobilny zawiera często różne sensory, np. akcelerometry, które są w stanie wykrywać i odbierać sygnały. Najważniejsze mobilne systemy operacyjne to iOS oraz Android Linux, gdzie dominują języki Java i Kotlin.

Bioinformatyka (z niem. Bioinformatik) - interdyscyplinarna dziedzina obejmujmująca rozwój metod obliczeniowych służących do badania struktury, funkcji i ewolucji genów, genomów i białek. Ponadto odpowiada za rozwój metod wykorzystywanych do zarządzania i analizy informacji biologicznej gromadzonej w toku badań genomicznych oraz badań prowadzonych z zastosowaniem wysokoprzepustowych technik eksperymentalnych.

Chemioinformatyka (z niem. Chemoinformatik), także informatyka chemiczna to nauka zajmująca się wykorzystaniem informatyki do rozwiązywania różnorodnych problemów chemicznych jak np. teoria grafów chemicznych czy badania przestrzeni chemicznej. Te techniki, nazywane często metodami in silico, wykorzystywane są do przeprowadzania obliczeń w blisko związanej z nią chemii obliczeniowej oraz w chemii kwantowej i procesie projektowania leków. Nauka ta znajduje zastosowanie w wielu gałęziach przemysłu chemicznego do analizy i przetwarzania danych chemicznych.

Neuroinformatyka (z niem. Neuroinformatik) znajduje zastosowania w kognitywistyce, przy badaniu przetwarzania informacji przez systemy nerwowe w celu zastosowania ich w systemach technicznych, m.in. w tworzeniu modeli obliczeniowych, narzędzi analitycznych i baz danych do udostępniania, integracji i analizy danych eksperymentalnych oraz rozwoju teorii na temat funkcji układu nerwowego. W kontekście INCF neuroinformatyka odnosi się do informacji naukowych na temat podstawowych danych eksperymentalnych, ontologii, metadanych, narzędzi analitycznych i modeli obliczeniowych układu nerwowego. Informatyka kognitywna także odnosi się do zastosowań w kognitywistyce. Jednym z najbardziej znanych specjalistów kognitywstyki w Polsce jest Włodzisław Duch. Kolejnym powiązanym obszarem jest informatyka afektywna.

Geoinformatyka - zajmuje się numerycznym przetwarzaniem i analizowaniem informacji geograficznej (geoinformacji). Geoinformatyka jest opisywana jako nauka i technika zajmująca się strukturą i charakterem informacji geograficznych, jej przechwytywaniem, klasyfikacją, przetwarzaniem, przedstawieniem i wizualizacją. Do zastosowań geoinformatyki zalicza się kartografię, geodezję, GPS, fotogrametrię, teledetekcję, analizę danych przestrzennych, mapowanie webowe i nawigację.

Informatyka śledcza - dostarcza cyfrowych środków dowodowych dotyczących przestępstw popełnionych cyfrowo lub przy użyciu systemów teleinformatycznych. Jej zadaniami są: zbieranie, odzyskiwanie, analiza i prezentacja cyfrowych danych, znajdujących się na różnego rodzaju nośnikach (dyski twarde komputerów, dyskietki, płyty CD, pamięci przenośne, serwery, telefony komórkowe itp.), oraz w coraz popularniejszych ostatnio systemach i serwisach zdalnego gromadzenia, przechowywania i przetwarzania danych, takich jak serwisy społecznościowe, przestrzeń dyskowa w chmurze czy wyszukiwarki internetowe.

Informatyka mechaniczna, także mechainformatyka (z niem. Maschinenbauinformatik) - zastosowania informatyki w mechanice. Zajmuje się m.in. informatycznymi aspektami druku 3D, programowania CNC, mechaniki komputerowej, oraz oprogramowaniem do projektowania CAD.

Informatyka medyczna - zajmuje się zbieraniem, przetwarzaniem, przechowywaniem, udostępnianiem i przesyłaniem danych medycznych oraz metodami tworzenia urządzeń i systemów informatycznych wykorzystywanych w medycynie. Informatyka medyczna znajduje zastosowania między innymi w systemach wspomagania diagnostyki (np. IBM Watson for Oncology), oprogramowaniu robotów medycznych, systemach rejestracji, przetwarzania i analizy sygnałów i obrazów medycznych oraz systemach teleinformatycznych dla telemedycyny.

Informatyka materiałowa - zastosowania informatyki w materiałoznawstwie i inżynierii materiałowej.

Szkoła podstawowa, liceum i technikum

W ramach I etapu edukacji (klasy I-III) uczniowie mają zajęcia z edukacji informatycznej w ramach edukacji wczesnoszkolnej. Klasy IV-VIII (II etap edukacyjny) realizują przedmiot informatyka. Najważniejszym celem kształcenia informatycznego uczniów jest rozwój umiejętności myślenia obliczeniowego (z ang. computational thinking), skupionego na kreatywnym rozwiązywaniu problemów z różnych dziedzin ze świadomym i bezpiecznym wykorzystaniem przy tym metod i narzędzi wywodzących się z informatyki. Takie podejście, rozpoczęte w szkole podstawowej, jest kontynuowane w liceum ogólnokształcącym i technikum zarówno w zakresie podstawowym, jak i rozszerzonym. Przedmiot informatyka jest realizowany przez wszystkich uczniów w każdej klasie, począwszy od klasy I szkoły podstawowej i jest kontynuowany w liceum ogólnokształcącym i technikum.

Studia wyższe

Informatyka jest wykładana na uniwersytetach oraz na politechnikach. Na politechnikach programy studiów są nastawione na zagadnienia inżynierskie, a na uniwersytetach na zagadnienia naukowe. Istnieją także programy studiów nastawione na praktyczne zastosowania. Z uwagi na ograniczoną liczbę miejsc oraz fakt że informatyka jest chętnie wybieranym kierunkiem studiów, obowiązują na nią stosunkowo wysokie progi punktowe. W roku akademickim 2018/2019 zgłosiło się 42759 chętnych. W najlepszych uczelniach w kraju w pierwszej kolejności są przyjmowani finaliści Olimpiady Informatycznej. Spośród najlepszych jest wyłaniana reprezentacja Polski na różne międzynarodowe konkursy informatyczne np. Akademickie mistrzostwa świata w programowaniu zespołowym.

Linki zewnętrzne

# data[].attributes.attachment_link.title
Informatyka - Wikipedia, wolna encyklopedia

# data[].attributes.attachment_link.description
Informatyka ( niem. Informatik, ang. computer science, computing, computer engineering, IT, ICT) - nauka ścisła oraz techniczna zajmująca się przetwarzaniem informacji, w tym również technologiami przetwarzania informacji oraz technologiami wytwarzania systemów przetwarzających informacje. Zajmuje się rozwiązywaniem problemów obliczeniowych, opisem procesów algorytmicznych oraz tworzeniem programów komputerowych i częściowo sprzętu komputerowego (z wyłączeniem zagadnień materialnych i energetycznych).

# data[].attributes.attachment_link.title
Samsung C49HG90DMUX [1ms, Freesync 2, HDR] | cena, raty - sklep Komputronik.pl

# data[].attributes.attachment_link.description
Samsung C49HG90DMUX [1ms, Freesync 2, HDR] - Mamy To! Wybierz nas, mamy świetne ceny, możliwość zakupu na raty, dostawa i odbiór w sklepach Komputronik za darmo! Wybierz 20 letnie doświadczenie i gwarancję najlepszej obsługi.

# data[].attributes.attachment_link.title
Komputronik IEM Certified PC 2018 [LC001] | cena, raty - sklep Komputronik.pl

# data[].attributes.attachment_link.description
Core i9 7980XE | Intel X299 | RAM 32GB 3200 MHz | SSD 512GB M.2 | SSD 1TB | 2x NV GTX 1080 Ti 11GB | Win10 Pro 64-bit | Autorski zestaw chłodzenia LC

# data[].attributes.attachment_link.title
3DConnexion SpaceMouse Enterprise KIT | cena, raty - sklep Komputronik.pl

# data[].attributes.attachment_link.description
3DConnexion SpaceMouse Enterprise KIT - Mamy To! Wybierz nas, mamy świetne ceny, możliwość zakupu na raty, dostawa i odbiór w sklepach Komputronik za darmo! Wybierz 20 letnie doświadczenie i gwarancję najlepszej obsługi.

# data[].attributes.attachment_link.description
KRZESŁO MIRA LOUNGE CHAIR firmy DE LA ESPADA w kategorii Krzesła / Meble - lampy, tapety, meble / dekopark.pl

# data[].attributes.attachment_link.description
BIURKO HAROLD DESK firmy DE LA ESPADA w kategorii Stoliki / Meble - lampy, tapety, meble / dekopark.pl

# data[].attributes.attachment_link.title
Słuchawki HiFiMan Susvara - Opinie i ceny na Ceneo.pl

# data[].attributes.attachment_link.description
HiFiMan Susvara od 29900,00 zł ✅ Opinie ✅ Słuchawki Nauszne. Ceny w 2 sklepach. Podziel się opinią na Ceneo!

# data[].attributes.attachment_link.readable_text
Jeśli poszukamy odpowiedzi na pytanie postawione w tytule tego wpisu, to najczęściej spotkamy się ze stwierdzeniami typu:

programować każdy może

nie ma w tym nic trudnego

to zależy w jakim języku, w X jest łatwo, w Y trudno

Gdy nie prowadziłem jeszcze szkoleń, nie tworzyłem kursów internetowych, to byłem bardzo podobnego zdania. Z czasem zacząłem sobie jednak zdawać sprawę, że z punktu widzenia osoby z kilkuletnim doświadczeniem w dowolnej dziedzinie wszystko wydaje się łatwe, a z punktu widzenia osoby nie mającej o tym pojęcia wszystko wydaje się trudne. Punkt widzenia mocno się zmienia, gdy masz możliwość kontaktu z wieloma osobami, które zaczynają z punktu 0.

Problem polega na tym, że większość programistów udzielających się w tego typu tematach na forach, czy blogach tak jakby zapomniało jak sami stawiali pierwsze kroki. Wielu programistów ma syndrom Boga i próbuje pokazać młodszym jacy to oni nie są super i jak to wszystko wiedzą. Wychodząc z takim podejściem ludzie tacy często piszą, że jakiegoś języka można się nauczyć się w dwa tygodnie, czy miesiąc. Prawda jest taka, że o ile podstaw samego języka faktycznie można nauczyć się w takim czasie, to w praktyce będą to podstawy, które nie pozwolą napisać nic bardziej skomplikowanego, będzie to dopiero punkt wyjścia daleki od podjęcia pierwszej pracy, który większość osób stawia sobie jako punkt docelowy.

Trudność w nauce programowania nie jest zależna od języka programowania

No może z małymi wyjątkami. W większości przypadków jeśli spojrzymy np. na najpopularniejsze języki, czyli Javę, C#, Pythona, JavaScript, PHP, to różnice pomiędzy nimi, przynajmniej jeśli chodzi o podstawy, są marginalne. We wszystkich z nich powtarzają się te same słowa kluczowe: if, while, int, double, public, class itd. Zdecydowana większość popularnych języków programowania łączy te same paradygmaty programowania - obiektowe i funkcyjne, podstawowe konstrukcje różnią się tym czy i gdzie postawić nawiasy, czy jakiej kolejności słów kluczowych użyć.

Dopiero na wyższym poziomie pojawiają się różnice, które mogą sprawić dodatkowe trudności i krzywa uczenia może wyglądać różnie dla różnych języków, ale to wykracza poza określenie nauka programowania jako takie i wkracza raczej na pole specjalizacji w danej technologii. To tak samo jak można określić się świetnym mechanikiem, ale można specjalizować się w samochodach niemieckich, albo japońskich.

Programowanie wymaga czasu

Jedna z rzeczy, która przytłacza większość osób rozpoczynających swoją przygodę z programowaniem to ilość czasu jaką trzeba na to poświęcić. Niestety popularne jest promowanie teorii, że programowania da się nauczyć w miesiąc, czy dwa i to od zera, samodzielnie i po tym czasie iść do pracy. Częściowo wynika to z agresywnego marketingu szkół programowania, częściowo z postów na forach od „Bogów programowania", którzy zapomnieli już, że sami uczyli się programować przez kilka lat na studiach.

W rzeczywistości programowanie jest nauką dla wytrwałych. Jeśli trafisz na szkolenie z programowania, to musisz zdawać sobie sprawę z tego, że jeśli trwa ono np. 100 godzin, to kolejne 2-3 razy tyle czasu będzie trzeba poświęcić samodzielnie w domu na powtórki i utrwalenie wiedzy. Tutaj nie ma drogi na skróty. Jeśli założysz sobie 2-3 godziny dziennie na naukę, to bierz pod uwagę, że aby dojść do poziomu młodszego programisty, czy nawet stażysty niezbędne będzie poświęcenie na to przynajmniej kilku miesięcy i to raczej 6 niż 2.

Programowanie trzeba lubić

Wiele osób decyduje się na naukę programowania ze względu na niezadowolenie z aktualnie wykonywanej pracy lub niskich zarobków. Niektórzy decydują się zapłacić za naukę nawet ponad 10 tysięcy złotych nie biorąc pod uwagę tego, że programowanie wcale nie musi być dla nich przyjemnością i że zanim zaczną zarabiać dobre pieniądze minie prawdopodobnie kilka lat. Programowanie oznacza siedzenie przy komputerze co najmniej 8 godzin dziennie. Bycia programistą nie można porównać do wielu zawodów „na etacie". Pewnie są wyjątki osób, które ograniczają się do do pracy od 8 do 16 i zapominają o byciu programistą, ale zdecydowana większość, która chce być lepsza i chce zarabiać więcej poświęca na to dodatkowo swój prywatny czas. Czyta książki i blogi, chodzi na spotkania i konferencje, rozwija swoje dodatkowe projekty. Przygotuj się na to, że jeśli już dostaniesz pierwszą pracę, to nie będziesz zarabiać 5 tys zł, przygotuj się na to, że będziesz spędzać przy komputerze do 12 godzin pracując i ucząc się.

Zanim wydasz więc kilka, czy kilkanaście tysięcy zł na szkolenie (niezależnie czy u nas, czy gdziekolwiek indziej) polecam tańsze alternatywy - nasz kurs internetowy, książkę, jakiekolwiek darmowe materiały. Sprawdź na ile wytrwałości starczy Ci przy samodzielnej nauce. Dopiero jeśli zauważysz, że jest to dla Ciebie ciekawe rozważ opcję przyspieszenia swojej nauki pod okiem kogoś doświadczonego.

No więc, czy programowanie jest trudne?
Jest i nie jest, ale na pewno wymaga ogromnego zaangażowania i wytrwałości a przede wszystkim trzeba to lubić.
Jeśli siedzenie przy komputerze sprawia Ci trudności, masz problem ze skupieniem uwagi przez dłuższy czas, wolisz spędzać czas aktywnie i szybko się denerwujesz, czy poddajesz, to polecam przemyśleć, czy angażowanie się na siłę w naukę programowania jest dobrym wyborem. Nie każdy musi być programistą, tak samo jak nie każdy musi być lekarzem.

Jeżeli natomiast programowanie będzie sprawiało Ci przyjemność od początku, jeżeli nauka i siedzenie przy komputerze (nie w kontekście przeglądania youtube i facebooka) sprawia Ci satysfakcję, to prawdopodobnie nauka programowania będzie Ci się wydawała stosunkowo prosta, a przynajmniej nie trudniejsza od jakiejkolwiek innej dziedziny. Z czasem zauważysz, że pisanie kodu to połączenie rozwiązywania łamigłówek z pracą twórczą, a satysfakcja z tego, że będziesz tworzyć produkty, z których korzystają później dziesiątki, setki, czy tysiące osób będzie ogromna.

Przede wszystkim spróbuj i się przekonaj, nie wierz nikomu na słowo. Źródeł nauki, zarówno płatnych jak i darmowych jest ogromna ilość, na pewno znajdziesz coś dla siebie.
Jeśli masz pytania zachęcamy do komentowania.

# data[].attributes.attachment_link.title
Czy programowanie jest trudne i ile zajmuje czasu? - Blog JavaStart.pl

# data[].attributes.attachment_link.description
Jeśli poszukamy odpowiedzi na pytanie postawione w tytule tego wpisu, to najczęściej spotkamy się ze stwierdzeniami typu: programować każdy może nie ma w tym nic trudnego to zależy w jakim języku, w X jest łatwo, w Y trudno Gdy nie prowadziłem jeszcze szkoleń, nie tworzyłem kursów internetowych, to byłem bardzo podobnego zdania.

# data[].attributes.attachment_link.readable_text
Kto może zostać programistą

Programowanie to zajęcie, które wymaga znajomości wielu zagadnień. To wiedza, którą zdobywa się przez kilka ładnych lat. Nie znam żadnego programisty, który nauczył się wszystkiego w jeden wieczór. To jest po prostu niemożliwe. Tak i na tym blogu będziemy razem przechodzili przez serię artykułów, które pomogą Ci zgłębić podstawowe zagadnienia. Pokażę Ci dalszą drogę, która pomoże Ci zostać programistą.

Programowanie jako zajęcie wymaga pewnych umiejętności. Umiejętności te są pomocne przy zgłębianiu niezbędnej wiedzy. Poza umiejętnościami bardzo istotne jest także zaangażowanie i wytrwałość. Oczywiście "talent" pomaga, jednak ciężka, systematyczna praca to podstawa. Bez talentu można programować, jednak bez ciężkiej pracy włożonej w naukę już nie (jestem tego bardzo dobrym przykładem).

Nie bez powodu piszę blog po polsku. Zależy mi na tym, żeby ludzie, którzy nie czują się swobodnie czytając angielskie teksty również znaleźli coś dla siebie. Jednak muszę to powiedzieć z pełną stanowczością. Język angielski to podstawa. Jest to uniwersalny język komunikacji, który każdy programista po prostu musi znać. Jeśli go nie znasz zachęcam do przyłożenia się do zajęć z języka angielskiego. Jeśli nie masz dostępu do takich zajęć w internecie można znaleźć bardzo dużo darmowych materiałów pomagających w nauce.

Mówi się, że programista powinien charakteryzować się analitycznym myśleniem, rozumieć zagadnienia matematyczne. Oczywiście ścisły umysł to predyspozycja, która bardzo pomaga - sam znam architektów (tych od budownictwa) czy chemików, którzy samodzielnie nauczyli się programowania. Jednak mam wrażenie, że przy odpowiedniej ilości ciężkiej pracy i humanista też w programowaniu znajdzie coś dla siebie. Spróbuj, to na pewno nie zaszkodzi! :)

Podsumowując:

ucz się języka angielskiego, na pewno przyda się nie tylko do programowania,

nie bój się przedmiotów ścisłych,

wkładaj dużo pracy w naukę programowania.

Rozmowa z komputerem

Do porozumiewania się ze swoimi przyjaciółmi, znajomymi używamy dobrze znanych słów i zwrotów. Rozumiemy się nawzajem, jesteśmy w stanie przekazać sobie pewne informacje. Jeśli posługujemy się językami obcymi porozumiemy się swobodnie z większą grupą ludzi. Podobnie jest z komputerem. Jeśli chcesz się z nim porozumieć musisz mówić jego językiem. Nie chcę Cię tu zanudzać wpisem o zerach i jedynkach fruwających w pamięci komputera jednak pewne podstawy są tu potrzebne.

Język programowania to nic innego jak język, który rozumieją programiści. Są w stanie się nim swobodnie posługiwać, który następnie tłumaczony jest do języka komputera. Słowa przetłumaczone są na ciąg zer i jedynek zrozumiały przez komputer. Ten etap tłumaczenia możemy nazwać kompilacją (ang. compile).

Języki programowania możemy podzielić na języki niskopoziomowe i wysokopoziomowe. Te pierwsze są bardzo trudne do samodzielnego używania. Programy napisane przy ich pomocy mogą być uruchamiane tylko na konkretnych rodzajach komputerów. Na przykład program napisany w języku niskiego poziomu na Twój komputer nie może być uruchomiony na komputerze Twojego kolegi.

Tego typu ograniczenia sprawiają, że języków niskiego poziomu nie używa się powszechnie a jedynie do bardzo specyficznych zastosowań, które są bardzo odległe od podstaw i nauki programowania :) Dzięki tym samym ograniczeniom języki wysokiego poziomu zyskują na popularności.

Polski? Angielski? Niemiecki? Rosyjski? Francuski?

F? Erlang? JavaScript? Java? Perl? Ruby? Podobnie jak istnieje wiele języków, którymi mówią ludzie istnieje także wiele języków programowania. Każdy z tych języków charakteryzuje się specyficzną składnią (ang. syntax). Każdy z nich ma również specyficzny zakres zastosowań. Po prostu jego właściwości sprawiają, że lepiej nadaje się np. do pisania gier komputerowych niż tworzenia interaktywnych stron internetowych.

W ramach pierwszego kursu dostępnego na blogu skupimy się na języku Java. Wybór padł na ten język ponieważ Google nadal raportuje spore zainteresowanie tym językiem, jak i jest on w miarę uniwersalny i bardzo powszechny. W następnym artykule skupimy się na omówieniu podstaw tego języka jednak zanim do tego dojdzie chciałbym Wam przybliżyć następujące pojęcia:

język obiektowy (ang. objective language)

maszyna wirtualna (ang. virtual machine)

Czym jest język obiektowy?

Weźmy za przykład stół i jego projekt. Fabryka produkuje setki stołów, wszystkie według tego samego projektu. Podobne projekty istnieją w języku programowania. Stół możemy uznać za tak zwaną instancję (ang. instance) lub obiekt (ang. object) klasy stół.

Innymi słowy projekt służy nam do tworzenia obiektów/instancji. Odpowiednikiem projektu w języku programowania jest klasa (ang. class).

Język obiektowy jest językiem, który pozwala na tworzenie swoich własnych klas. Mając definicję klasy jesteśmy w stanie stworzyć jej instancję.

Czym jest maszyna wirtualna?

Maszyna wirtualna to program napisany w języku niższego poziomu. Program ten pozwala na pewną abstrakcję, upraszcza niektóre aspekty rozmowy z komputerem. Jako przykład podam tu maszynę wirtualną języka Java. Maszyna ta do pewnego stopnia zwalnia programistę z odpowiedzialności zarządzania pamięcią.

Instancje klas, które tworzymy zajmują pamięć. Komputer musi dokładnie wiedzieć ile pamięci ma zarezerwować na daną instancję. Jeśli język korzysta z maszyny wirtualnej wspomagającej zarządzenie pamięcią programista nie musi się tym przejmować (oczywiście jest to pewne uproszczenie, ale na tym etapie zaawansowania w zupełności wystarczy).

Na dzisiaj wystarczy. Dzisiaj było bardzo mocno teoretycznie, następnym razem zaczniemy bawić się programowaniem. Czy którykolwiek z elementów wydał się dla Ciebie niezbyt jasny? Proszę daj mi znać o tym w komentarzu. Jeśli uznasz wpis za ciekawy proszę podziel się nim ze swoimi znajomymi.

Do następnego razu! :)

# data[].attributes.attachment_link.description
No to zaczynamy. Programowanie to nic innego jak ciekawe zajęcie. To ciągłe rozwiązywanie zagadek i problemów w kreatywny sposób. To też żmudna i pracochłonna praca wymagająca zaangażowania i ciągłej nauki. Mimo swoich wad zajmuję się tym od ładnych paru lat, moim zdaniem zalet jest znacznie więcej!

# data[].attributes.attachment_link.title
Programowanie komputerów - Wikipedia, wolna encyklopedia

# data[].attributes.attachment_link.description
Programowanie komputerów - proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów komputerowych lub urządzeń mikroprocesorowych ( mikrokontrolery). Kod źródłowy jest napisany w języku programowania, z użyciem określonych reguł, może on być modyfikacją istniejącego programu lub czymś zupełnie nowym.

# data[].attributes.attachment_link.readable_text
Gdyby zapytać studenta, jaka nauka zajmuje się przetwarzaniem informacji, z pewnością tylko niewielki procent respondentów wskazałby na informatykę. Tymczasem definicja informatyki jest bardzo oczywista i nie budzi większej dyskusji. Można łatwo rozpoznać w tej nazwie dwa składniki, pierwszy z nich to "informacja", a drugi kojarzy się z automatyką, a więc słowem oznaczającym maszynę. Konstruowanie systemów zdolnych do samodzielnego przetwarzania danych wymaga doskonałej znajomości matematyki, dlatego zajmuje ona bardzo ważne miejsce w programie kształcenia tych studiów.

Jak przygotować się na studia informatyczne, by uzyskać indeks dobrej uczelni?

Konkurencja jest ogromna! O indeksy najlepszych politechnik walczy nawet kilkunastu kandydatów na jedno miejsce. Aby zwiększyć pozycję na liście rankingowej postaraj się, na długo przed maturą, przeanalizować, w jaki sposób przebiega rekrutacja, w uczelni, do której zamierzasz aplikować. Uwzględnij te dane przy wyborze przedmiotów maturalnych oraz zajmij się zgłębianiem wiedzy, która zagwarantuje Ci maturalny sukces. Kiedy jasno postawisz swoje cele, łatwiej będzie Ci wytłumaczyć, dlaczego nie udało Ci się uzyskać celującej oceny z Wychowania Fizycznego. Nie zapomnij o nauce języków obcych, za kilka lat z pewnością będzie to czynnik decydujący o Twojej karierze!

Czym charakteryzują się studia informatyczne?

Niezależnie od uczelni studia mają za zadanie wyposażyć przyszłego absolwenta w wiedzę i umiejętności związane z programowaniem, przetwarzaniem informacji, sieciami komputerowymi, projektowaniem i zarządzaniem bazami danych, algorytmiką i wieloma innymi dziedzinami niezbędnymi w pracy zawodowej informatyka. Laboratoria oraz konwersatoria wspierają studentów w przyswajaniu umiejętności o charakterze praktycznym. Teoria oraz wprowadzenia do poszczególnych obszarów informatycznej wiedzy przekazywane są w trakcie wykładów. Student Informatyki ma dość duże możliwości uzyskania konsultacji w trakcie realizacji swoich projektów. Uczelnie starają się zapewnić swoim żakom bardzo zindywidualizowane podejście, ponieważ trudna materia studiów oraz wielość możliwych rozwiązań, stawianych przed nimi problemów, domagają się spersonalizowanego przebiegu kształcenia.

Co decyduje o sukcesie zawodowym informatyka?

Na początku warto wymienić trzy parametry:

uczelnia, która zapewniła absolwentowi wykształcenie (niektóre, mają bardzo dobrą opinię i stanowią świetną przepustkę do kariery);

portfolio zrealizowanych projektów (na studiach nie warto próżnować, ostatnie lata nauki to świetny czas na rozpoczęcie przyjmowania indywidualnych zleceń na drobne oraz bardziej zaawansowane prace informatyczne);

znajomość języków obcych.

Jeżeli początek kariery zawodowej był dobry i udało się od razu rozpocząć pracę w porządnej firmie, osiągając niezłe zarobki, nie pozostaje nic innego jak tylko kolekcjonować swoje projekty, zdobywać kolejne certyfikaty i piąć się po szczeblach kariery. Badania pokazują jasno, że informatyków na rynku pracy jest wielu, nieliczni jednak odznaczają się umiejętnościami i kompetencjami, najbardziej poszukiwanymi przez pracodawców.

# data[].attributes.attachment_link.description
Gdyby zapytać studenta, jaka nauka zajmuje się przetwarzaniem informacji, z pewnością tylko niewielki procent respondentów wskazałby na informatykę. Tymczasem definicja informatyki jest bardzo oczywista i nie budzi większej dyskusji. Można łatwo rozpoznać w tej nazwie dwa składniki, pierwszy z ni...

# data[].attributes.body
komputer

# data[].attributes.attachment_link.description
Shop the Ace leather embroidered sneaker by Gucci. The Ace in leather embellished with a pierced heart appliqué over the green and red grosgrain Web. The back of each shoe has a green or red snake detail.

# data[].attributes.body
Łączna cena zestawu wynosi  109 200 zł

# data[].attributes.attachment_link.title
..::Interkl@sa :: Polski Portal Edukacyjny::..

# data[].attributes.attachment_link.description
Projekt Polski Portal Edukacyjny Interkl@sa powstał i był realizowany w latach 2000-2011 dzięki wsparciu Polsko-Amerykańskiej Fundacji Wolności.