Technologie informatyczne WYKŁAD a więc zaczynamy... Autor prezentacji: prof. dr hab. Maria Hilczer
Informacja to zbiór danych, zebranych w celu ich przetwarzania i otrzymania wyników (tzn. nowych informacji) Informacje przetwarzamy przy wykorzystaniu: sprzętu (hardware) i oprogramowania (software), które pozwalają na wykonanie przez komputer określonych zadań
definicja 1 Informatyka to dziedzina wiedzy i działalności człowieka, która zajmuje się przechowywaniem, przetwarzaniem i interpretowaniem informacji za pomocą komputerów i odpowiedniego oprogramowania
definicja 2 Informatyka to nauka o tym co można osiągnąć za pomocą procesów przetwarzania informacji (definicja niezależna od sprzętu) dziedziny informatyki: 1. rozwiązywanie zadań algorytmicznych 2. struktury danych 3. teoria języków programowania
Algorytm ścisły przepis prowadzący do rozwiązania określonego problemu. Algorytm można opisać słownie (w punktach), w postaci graficznej (schemat blokowy) lub jako program Język programowania to język umożliwiający zapisanie algorytmu w postaci pozwalającej na realizację komputerową. Typy: języki asemblera języki wysokiego poziomu języki specjalizowane
Asembler język programowania oparty na liście rozkazów procesora (inny dla różnych procesorów). Pozwala na szczegółowe zaprogramowanie działań, których nie można kontrolować w języku wysokiego poziomu. W asemblerze trudno jest pisać duże programy.
Języki wysokiego poziomu umożliwiają zapis algorytmów w sposób możliwie bliski językowi matematycznemu lub naturalnemu Basic - jeden z najprostszych C - połączenie języka wysokiego poziomu z elementami asemblera (najpopularniejszy C++) Fortran - powszechnie używany w zastosowaniach matematycznych i naukowych Java - przeznaczony głównie do tworzenia programów komputerowych działających w sieci Internet niezależnie od typu komputera posiadanego przez użytkownika
Pascal - język akademicki, stosowany np. do projektowania struktur danych Pearl - przeznaczony głównie do pracy z danymi tekstowymi, ale nie tylko (stosowany chętnie przez administratorów systemów komputerowych) Visual Basic - oparty na języku Basic ale unowocześniony, częściowo obiektowy (firmy Microsoft) Ruby - w pełni obiektowy język programowania stworzony w 1993 r. przez Japończyka Yukihiro Matsumoto Python 1991 r., zastosowania: wyszukiwarka Google, serwis YouTube, struktury NASA
Język programowania 2017 2012 2007 2002 1997 1992 1987 Java 1 2 1 1 15 - - C 2 1 2 2 1 1 1 C++ 3 3 3 3 2 2 5 C# 4 4 7 13 - - - Python 5 7 6 11 27 - - Visual Basic.NET 6 17 - - - - - PHP 7 6 4 5 - - - JavaScript 8 9 8 7 23 - - Perl 9 8 5 4 4 10 - Assembly language 10 - - - - - - Ranking popularności języków pragramowania firmy TIOBE (Eindhoven, Holandia)
Sposoby programowania programowanie proceduralne to sposób programowania zalecający dzielenie kodu programu na procedury, czyli fragmenty wykonujące ściśle określone operacje programowanie strukturalne to sposób zalecający hierarchiczne dzielenie kodu programu na bloki, z jednym punktem wejścia i jednym lub wieloma punktami wyjścia inaczej języki strukturalne to języki pozwalające na tworzenie własnych funkcji i procedur programowanie obiektowe to sposób programowania, w którym programy definiuje się za pomocą obiektów tzn. elementów łączących stan (czyli dane) i zachowanie (czyli metody). Obiektowy program komputerowy wyrażony jest jako zbiór takich obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań.
Przykłady języków umożliwiających: programowanie proceduralne wczesne wersje Fortranu programowanie strukturalne Algol, Pascal, Ada programowanie obiektowe Java, Python, Ruby
Języki specjalizowane języki dołączone do konkretnych aplikacji, np. języki makropoleceń w edytorach tekstu, AutoLisp w pakiecie AutoCad, Visual Basic dla aplikacji w pakiecie MS Office HTML (HyperText Markup Language) język do opisu dokumentów interpretowany przez przeglądarki internetowe i pozwalający na formatowanie elementów na stronach WWW PHP język skryptowy do generowania stron internetowych w czasie rzeczywistym (zastosowanie: np. Facebook)
Języki specjalizowane języki skryptowe w grach komputerowych służą do sterowania przebiegiem gry fabułą, dialogami, zachowaniem wirtualnych postaci, a czasem nawet do sterowania działaniem całego interfejsu graficznego SQL ( Structured Query Language) jeden z języków do obsługi baz danych
Kompilacja proces przekształcania programu napisanego w języku programowania na język elementarnych rozkazów procesora kod źródłowy kod maszynowy Kompilację umożliwiają programy nazywane kompilatorami Program po kompilacji (i ewentualnie konsolidacji) jest gotowy do wielokrotnego wykonania. Skompilowany program jest ściśle związany z typem procesora, który ma go realizować. Konsolidacja proces dołączenia do kompilowanego programu dodatkowych elementów, np. podprogramów pochodzących z bibliotek programów, procedur i funkcji.
Interpretacja proces przekształcania programu napisanego w języku programowania ale inaczej niż kompilacja kod źródłowy jest na bieżąco tłumaczony instrukcja po instrukcji i natychmiast wykonywany przez dodatkowy program zwany interpreterem Interpreter nie tworzy wykonywanej wersji programu. Przy każdym uruchomieniu programu tłumaczenie dokonywane jest na nowo.
Kompatybilność cecha oprogramowania oraz sprzętu, która umożliwia bezproblemową współpracę systemów komputerowych, w szczególności wymianę danych. (od ang. compatibility zgodność)
Przewidywane zarobki specjalistów w różnych językach programowania w USA w 2017 r. Źródło: Challengerocket.com
Wynagrodzenia całkowite doświadczonych programistów (w PLN) źródło: raport płacowy Sedlak & Sedlak dla branży IT 2016
obszary zastosowań informatyki programy użytkowe
Edytory tekstu - służą do redagowania na ekranie monitora tekstu przeznaczonego do druku Przykład: MS Word, WordPad, Writer Edytory graficzne - służą do tworzenia obrazów, rysunków, prezentacji graficznej danych a także do obróbki zdjęć, generowania obrazów 3D, tworzenia animacji, cyfrowego przetwarzania filmów, tworzenia grafiki prezentacyjnej Przykład: Paint, CorelDraw, Photoshop, GIMP, Draw, Impress, MS PowerPoint Arkusze kalkulacyjne - przeznaczone do obliczeń na tablicach danych liczbowych Przykład: MS Excel, Origin, Calc
Bazy danych - programy przeznaczone do gromadzenia powiązanych ze sobą w odpowiedni sposób danych w celu ich selektywnego wykorzystania Tworząc bazę danych musimy określić: jakiego rodzaju informacje chcemy przechowywać w bazie jaka jest struktura tych informacji i ich wzajemne powiązania czego oczekujemy po naszej bazie jakie informacje będziemy chcieli uzyskać z bazy Przykład: MS Access, MySQL, Base, Oracle
Programy dedykowane - przeznaczone do konkretnych zastosowań Przykład: programy do obsługi księgowości, kadr, magazynów, do ewidencji ludności, rejestracji w służbie zdrowia, prowadzenia rejestru pojazdów, itp.
Programy komunikacyjne - przeznaczone do połączenia komputerów w sieć lokalną w celu zapewnienia wewnętrznej komunikacji między pracownikami i korzystania ze wspólnych zasobów informacji oraz włączenia się i korzystania z Internetu. Przykład: sieciowe systemy operacyjne, przeglądarki internetowe z pocztą elektroniczną, np. Internet Explorer, Netscape, Mozilla Firefox, Google Chrome, Opera programy : itd. dla sklepów i usług elektronicznych do tworzenia i zarządzania witrynami WWW, np. MS Front Page, WordPress (osługa blogów) do pogawędek w sieci, np. Gadu-Gadu, Skype
Systemy DTP (DeskTop Publishing) umożliwiają opracowanie i drukowanie publikacji o jakości zbliżonej do jakości profesjonalnego składu drukarskiego Przykład: MS Publisher, Adobe Page Maker i InDesign, QuarkXPress Pakiety zintegrowane łączą w jednym programie wiele z wymienionych powyżej funkcji, np. MS Office czy Apache OpenOffice ich zaletą jest łatwość wymiany informacji pomiędzy różnymi programami takiego pakietu
Projektowanie wspomagane komputerem CAD (Computer Aided Design) - wykorzystanie komputera do projektowania np. obiektów architektonicznych, układów elektronicznych, części maszyn, itp. Przykład: AutoCAD firmy Autodesk, ArchiCAD, Inventor, Mechanical Desktop, SolidWorks
CAD obejmuje: tworzenie projektów na płaszczyźnie z możliwością przejścia do wizualizacji przestrzennej (modelowanie 3D) tworzenie rysunków złożeniowych z kilku detali automatyczną aktualizację rysunków złożeniowych po dokonaniu zmiany na pojedynczym detalu pracę wielu konstruktorów nad jednym większym projektem automatyczne itd. tworzenie listy detali produktu kosztorysowanie współpracę z magazynem pozyskiwanie informacji o wielkościach fizycznych i mechanicznych projektowanego detalu
Wytwarzanie wspomagane komputerem CAM (Computer Aided Manufacturing) stosowanie technologii komputerowej do generowania danych sterujących częścią lub całością procesu przemysłowego. CAM przetwarza model przestrzenny obiektu stworzony w programie CAD a dane wyjściowe tego przetwarzania to instrukcje dla urządzenia produkcyjnego np. dla obrabiarek sterowanych numerycznie Przykład: SURFCAM, AlphaCAM, MasterCAM czy EdgeCAM
Konstruowanie wspomagane komputerem CAE (Computer Aided Engineering) grupa programów wspomagających obliczenia inżynierskie (np. wytrzymałościowe) oraz umożliwiających przeprowadzenie symulacji zachowania się konstrukcji w warunkach rzeczywistej eksploatacji. Przykład: Ansys, Autogear, Cosmos, MathLab, MathCAD
Systemy eksperckie zbiór programów komputerowych wykorzystujących bazy wiedzy, modele wiedzy i procedury (reguły) wnioskowania w celu rozwiązywania problemów. Wiedza jest w nich zapisana w postaci faktów i reguł wnioskowania. Programy edukacyjne (Multimedia) technika prezentacji multimedialnej polega na łączeniu grafiki, tekstu, animacji, fragmentów filmów, zapisanej cyfrowo mowy, wysokiej jakości dźwięku, itd. w celu uzyskania najbardziej atrakcyjnej formy przekazu informacji. Stosowane w nauczaniu, reklamie czy zabawie
Fizyka komputerowa Matematyka komputerowa Cybernetyka Nauki komputerowe Sztuczna inteligencja Chemia komputerowa Ekonomia komputerowa Socjologia komputerowa Biocybernetyka Nauki o poznaniu Sieci neuronowe Kliometria Biologia komputerowa
Matematyka komputerowa Przykłady: Dowody twierdzeń matematycznych wymagające przeanalizowania ogromnej ilości przypadków Konstrukcja tablicy całek przy użyciu programów do algebry symbolicznej (np. Mathematica, MathLab) Używanie metod sztucznej inteligencji do dowodzenia twierdzeń i wysuwania hipotez matematycznych Zagadnienia matematyczne, które trudno jest traktować analitycznie
Metodyka Symulacji Komputerowej polega na wykorzystaniu algorytmów numerycznych do przewidywania właściwości bardzo precyzyjnie zdefiniowanych systemów modelowych
Fizyka komputerowa Przykłady: Symulacja komputerowa zjawisk fizycznych, np. zachowania się plazmy w różnych warunkach eksperymentalnych dziury ozonowej zanieczyszczeń atmosferycznych Symulacja ewolucji gwiazd, galaktyk, wszechświata Symulacje w dziedzinie fizyki jądrowej Symulacje w dziedzinie mechaniki kwantowej, przewidywanie właściwości ciał stałych czy cząstek Symulacje meteorologiczne
Chemia komputerowa Przykłady: Obliczenia metodami chemii kwantowej stosunkowo małych układów cząsteczek Symulacje techniką Dynamiki Molekularnej i Monte Carlo wyznaczenie właściwości cząsteczek lub ośrodków ciągłych (np. widma IR lub Ramana, współczynniki dyfuzji, struktura molekularna roztworu) Modelowanie molekularne (np. obliczanie właściwości białek) Projektowanie leków
Biologia i biocybernetyka komputerowa Przykłady: Symulacje makroskopowe przepływu substancji i energii w przyrodzie Symulacje mikroskopowe w genetyce i biologii molekularnej Problemy powstawania życia i kodu genetycznego Struktura przestrzenna białek, określana na podstawie sekwencji aminokwasów Symulacja działania różnych narządów dla potrzeb biologii i medycyny Symulacja działania organizmu ludzkiego i zwierzęcego Symulacja działania leków na żywy organizm
Sztuczna inteligencja to dziedzina nauki zajmująca się projektowaniem inteligentnych systemów Przykłady: Rozwiązywanie problemów logicznych techniki planowania i przewidywania w dobrze zdefiniowanych sytuacjach Rozumowanie logiczne, np. projektowanie układów logicznych obwodów scalonych Problemy związane ze zrozumieniem języka naturalnego Programowanie automatyczne na podstawie opisu algorytmu przy pomocy języka naturalnego Ekspertyzy, komputerowe systemy doradcze Robotyka i komputerowe widzenie