Języki programowania Język programowania Język maszynowy Kod maszynowy



Podobne dokumenty
Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Języki i metodyka programowania

Język programowania PASCAL

Podstawy programowania wykład

Podstawy programowania

Wstęp do Informatyki. Program, proces tworzenia programu Środowisko programistyczne Języki programowania

Technologie cyfrowe semestr letni 2018/2019

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Informatyczna Wieża Babel, czyli o różnych językach programowania. Informatyczna Wieża Babel, czyli o różnych językach programowania

Podstawy programowania. Wprowadzenie

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Języki i paradygmaty programowania. I. Wprowadzenie

Podstawy programowania skrót z wykładów:

Podstawy Programowania. Wykład 1

Programowanie obiektowe - 1.

Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie.

Algorytmy od problemu do wyniku

1 Podstawy c++ w pigułce.

Wstęp do programowania. Wykład 1

Technologie cyfrowe semestr letni 2018/2019

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Programowanie komputerów

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA ALGORYTM. Język programowania PROGRAM. instrukcja-dla. instrukcja-przypisania.

Podstawy Programowania Obiektowego

Programowanie w języku C++ Grażyna Koba

1 Podstawy c++ w pigułce.

INFORMATYKA TECHNICZNA Badanie możliwości wykorzystania języka AutoLISP i środowiska VisualLISP w systemie CAx

Technologie informacyjne - wykład 12 -

Programowanie obiektowo zorientowane. Mirosław Głowacki Wykład w języku C++

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Podstawy Informatyki Języki programowania

Podstawy programowania w języku C

Techniki Programowania

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Metodyka i Technika Programowania 1

Architektura komputerów

Podstawy Programowania

Wprowadzenie do programowania

Wstęp do programowania

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Historia modeli programowania

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Programowanie w języku Python. Grażyna Koba

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Praktyka Programowania

Programowanie - wykład 4

Środowiska i platformy programistyczne

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Języki programowania zasady ich tworzenia

Programowanie obiektowe i C++ dla matematyków

Programowanie RAD Delphi

Style programowania - krótki przeglad

TEST KOŃCOWY DLA KLASY III GIMNAZJUM- POGRAMOWANIE. Szkoła Podstawowa Nr 5. im. Księcia Mazowieckiego Siemowita IV w Gostyninie.

Paradygmaty programowania

Podstawy i języki programowania

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Języki programowania wprowadzenie

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

Jerzy Nawrocki, Wprowadzenie do informatyki

Wstęp do Programowania Obiektowego. Wykład 13 Paradygmaty. Składnia i semantyka.

Programowanie w języku C++ Podstawowe paradygmaty programowania

Programowanie obiektowe W1 Wprowadzenie. Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki

Podstawy programowania. Wykład 1 Wstęp. Krzysztof Banaś Podstawy programowania 1

Paradygmaty programowania

Wykład 1

Translacja wprowadzenie

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 25 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 38

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Pascal - wprowadzenie

Język ludzki kod maszynowy

Podstawy Programowania Algorytmy i programowanie

Warunki i sposoby realizacji podstawy programowej kształcenia ogólnego w klasie IV i VII szkoły podstawowej z informatyki.

Java EE produkcja oprogramowania

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 3. Instrukcje wyboru

C# /.NET. Copyright by 3bird Projects 2018,

Style programowania - krótki przeglad

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Wstęp do programowania

Programowanie proceduralne w języku C++ Pętle, tablice

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

Transkrypt:

Języki programowania Język programowania pozwala programiście na precyzyjne przekazanie maszynie, jakie dane mają ulec obróbce i jakie czynności należy podjąć w określonych warunkach. Język maszynowy język programowania, w którym zapis programu wymaga instrukcji bezpośrednio jako liczb, które są rozkazami i danymi bezpośrednio pobieranymi przez procesor wykonujący ten program. Kod maszynowy to postać programu komputerowego (zwana postacią wykonywalną lub binarną) przeznaczona do bezpośredniego lub prawie bezpośredniego wykonania przez procesor, przeznaczona na konkretny typ procesora (i zgodne z nim) wyrażona w postaci kodów rozkazów procesora i ich argumentów, praktycznie nieczytelna dla człowieka. W systemach z rodziny DOS/Windows w kodzie maszynowym zapisane są programy w plikach typu "com" oraz "exe", w systemach unixowych są to pliki typu elf 1

Kod maszynowy jest (współcześnie) generowany za pomocą translatora (kompilatora lub interpretera), który przekształca czytelny dla programisty kod w języku programowania w kody instrukcji maszynowych. Kod maszynowy nie może być wykonywany przez procesory innego typu. Niesie to za sobą wiele problemów związanych z przenośnością programów. 2

Języki niskiego poziomu Język niskiego poziomu typ języka programowania, który w małym stopniu abstrahuje od konstrukcji jednostki centralnej komputera. Innymi słowy, język ten wykazuje duże podobieństwo do kodu maszynowego, zaś kompilacja jest w miarę nieskomplikowana. Najbardziej typowym przykładem języka niskiego poziomu są asemblery. W asemblerach zasadniczo jedno polecenie odpowiada jednemu rozkazowi procesora. Są to języki powstałe na bazie języka maszynowego poprzez zastąpienie liczb odpowiadających fragmentom rozkazów kodu maszynowego ich symbolicznymi odpowiednikami. Dzięki zamianie liczb na tzw. mnemoniki można pisać programy w miarę zrozumiałe dla człowieka, a jednocześnie bezpośrednio tłumaczone na kod maszynowy procesora, co pozwala zapewnić duży stopień kontroli programisty nad zachowaniem procesora. 3

Przykład: pseudokod: pętla od i = 1 do n (instrukcje w pętli) kolejne instrukcje asembler: LD 0,i (załaduj stałą 0 pod adres i) PĘTLA CMP n,i (porównaj wartości pod adresami n oraz i) IF RESZTA(jeśli równe, to skocz do instrukcji o etykiecie RESZTA) ADD 1,i (dodaj stałą 1 do wartości pod adresem i) (...) (instrukcje w pętli) JMP PĘTLA (skocz do instrukcji o etykiecie pętla) RESZTA (kolejne instrukcje programu) 4

Współcześnie praktycznie nie używa się asemblera do pisania całych programów dla komputerów osobistych. Jest on za to wciąż używany do pisania fragmentów wymagających bardzo wysokiej wydajności lub mających inne specjalne wymagania, np. dla oprogramowania mikrokontrolerów o niewielkich rozmiarach pamięci programu. 5

Języki wysokiego poziomu Język wysokiego poziomu typ języka programowania, którego składnia i słowa kluczowe mają maksymalnie ułatwić rozumienie kodu programu dla człowieka, tym samym zwiększając poziom abstrakcji i dystansując się od sprzętowych niuansów. Kod napisany w języku wysokiego poziomu nie jest bezpośrednio zrozumiały dla komputera większość kodu stanowią tak naprawdę normalne słowa, np. w języku angielskim. Aby umożliwić wykonanie programu napisanego w tym języku należy dokonać kompilacji (lub interpretacji). Język proceduralny (ang. procedural language) język programowania umożliwiający tworzenie oprogramowania w postaci programu głównego oraz wielu procedur (lub podprogramów), z których każda realizuje określoną funkcję i może być wywoływana wielokrotnie przez program główny. 6

Język nieproceduralny (ang. non-procedural language) - język programowania pozwalający na pisanie programów jedynie w postaci ciągłej sekwencji instrukcji (niepodzielonej na procedury). Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która definiuje programy za pomocą "obiektów" elementów łączących stan (czyli dane) i zachowanie (czyli procedury, tu: metody). Obiektowy program komputerowy wyrażony jest jako zbiór takich obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań. Podejście to różni się od tradycyjnego programowania proceduralnego, gdzie dane i procedury nie są ze sobą bezpośrednio związane. Programowanie obiektowe ma ułatwić pisanie, konserwację i wielokrotne użycie programów lub ich fragmentów. [historia języków programowania] 7

FORTRAN (Formula Translator) (1957) Pierwszy język programowania wysokiego poziomu, stworzony w latach 50. i nadal będący w użyciu. Jego głównym zastosowaniem są obliczenia naukowe i analiza numeryczna oraz arytmetyczna. FORTRAN I-IV, 66, 77 c deklaracje zmiennych, stałych, tablic integer a, i, n real c, d(100), e double precision f parameter (f = 1000.0d0) d(1) = 5.5d2 c instrukcje wejścia/wyjścia read(*,*) a a = a + 5 write(*,*) a 8

c instrukcja warunkowa c WERSJA DLA FORTRAN I if (a.gt. 0) then if (a.gt. 0) goto 10 a=a+1 a=a-1 c=a**3 c=a/3 else goto 20 a=a-1 10 a=a+1 c=a/3 c=a**3 endif 20 continue c pętle c niektóre kompilatory akceptują: do 55 i=1, 100 do i=1,100 write(*,*) d(i) (...) 55 continue enddo i=1 15 if (i.ls. 100) then write(*,*) d(i) i=i+1 goto 15 endif 9

c c procedura subroutine licz(n, x) (...) end subroutine funkcja real function silnia(n) (...) silnia = (...) end function 10

Karta do wprowadzania kodu FORTRAN 90, 95, 2003, 2008 wiele udoskonaleń, unowocześniona składnia, wiele nowych standardowych funkcji (np. operacje na macierzach), dynamiczna alokacja tablic 11

COBOL (Common Business Oriented Language) (1959) przeciwieństwo Fortranu język przeznaczony do prac programistycznych w dziedzinach ekonomii i biznesu. IDENTIFICATION DIVISION. Program-Id. BazaDanych. * ENVIRONMENT DIVISION. * DATA DIVISION. * 01 PLIK-UNIWERSYTECKI 02 STUDENT occurs 100 times 03 NAZWISKO pic A(15) 03 PRZEDMIOT occurs 30 times 04 NAZWA-PRZEDMIOTU pic AAAA999 04 OCENA pic 9 03 NUMER-ALBUMU pic 99999 02 WYDZIAL occurs 20 times 03 NAZWA-WYDZIALU pic A(50) 03 PRZEDMIOT occurs 80 times 04 NAZWA-PRZEDMIOTU pic AAAA999 04 PROWADZĄCY pic A(20) 12

PROCEDURE DIVISION. Sortuj. DISPLAY "Sorting...". SORT PLIK-UNIWERSYTECKI ON KEY STUDENT. * Stop Run. MULTIPLY B BY B GIVING B-SQUARED. MULTIPLY 4 BY A GIVING FOUR-A. MULTIPLY FOUR-A BY C GIVING FOUR-A-C. SUBTRACT FOUR-A-C FROM B-SQUARED GIVING RESULT-1. COMPUTE RESULT-2 = RESULT-1 **.5. SUBTRACT B FROM RESULT-2 GIVING NUMERATOR. MULTIPLY 2 BY A GIVING DENOMINATOR. DIVIDE NUMERATOR BY DENOMINATOR GIVING X. Złośliwości: Compiles Only Because Of Luck, Completely Over and Beyond reason Or Logic, Completely Obsolete Business Oriented Language 13

Pascal (1970) Dawniej jeden z najpopularniejszych języków programowania, uniwersalny, ogólnego zastosowania. Pierwotnie służył celom edukacyjnym do nauki programowania strukturalnego. c := 5; a := a+5; for i:=1 to 10 do begin (...) end; while(w = 0) do begin (...) end; repeat (...) until (w > 0); if a > 0 then b := 2; Zalety Pascala czytelność kodu, rygorystyczna kontrola typów danych, wraz z pojawieniem się C stały się dla programistów wadami, m.in. przez co drastycznie spadła jego popularność. Popularność Pascala wzrosła ponownie z pojawieniem się Delphi środowiska programistycznego, opartego na obiektowym Pascalu, pozwalającego na błyskawiczne tworzenie atrakcyjnych wizualnie aplikacji pod Windows. 14

Prolog (Programming In Logic) (1971) Język opiera się na klauzulach, stwierdzających że pewne fakty logiczne wynikają ze zbioru innych faktów. Program składa się ze zbioru znanych (tzn. podanych przez programistę) faktów, na podstawie których program usiłuje odpowiadać na zapytania. ZJADA(koty, myszy) ZJADA(psy, koty) ZJADA(myszy, żaby) ZJADA(x, y) :- zjada(x,z), zjada(z,y)?-zjada(kto, żaby) 15

Lisp (List Processing) (1958) Język oparty na przetwarzaniu list setq lista1 (list 1 2 'abc) (setf (third lista1) 'def) setq lista2 (list 1 2 (list 3 4)) (+ 1 2 3 4) (+ lista2) 16

Python (1990) Nowoczesny, interpretowany, strukturalny język programowania. Może zająć miejsce Pascala w nauce programowania. Bogata biblioteka funkcji i procedur. if a > 0: a=a+1 c=a*3 else: a=a-1 c=a/3 for i in range(1:n+1): print i print i*i Ada Język ogólnego zastosowania, podobny w składni do mieszaniny Fortranu, Pascala i C 17

C / C++ / C# (C Sharp) Nowoczesny język wszechstronnego zastosowania, dość trudna i często niespójna składnia. W C++ / C# wprowadzono mechanizm obiektowości. #include <iostream> using namespace std; double factorial(int); int main() { int n; cin >> n; cout << factorial(n); } double factorial(int n) { if (n == 0) return 1; else return n * factorial(n-1); } 18

Smalltalk Czysto obiektowy wszystko jest obiektem, nawet liczby. Java Język obiektowy, będący pochodną C++ i Smalltalka. Składnia bardzo podobna do C++, wyeliminowano pewne naleciałości z C. Wirtualna maszyna środowisko uruchomieniowe zapewniające przenośność kodu. PHP Język programowania służący przede wszystkim do tworzenia dynamicznych stron WWW i wykonywany w tym przypadku po stronie serwera, z możliwością zagnieżdżania w HTML. Składnia podobna do C++ 19

Perl (Practical Extraction and Report Language) Perl został zaprojektowany jako praktyczne narzędzie do analizy plików tekstowych i tworzenia raportów. $_ = "Wybrana liczba to 150\n"; print; s/ (\d+) / $1 * 2 /ex; print; Wizualne języki programowania Języki (środowiska programistyczne), pozwalający w prosty sposób programować aplikacje z graficznym interfejsem użytkownika. Delphi, Visual C++, Tcl, Visual Basic 20

Pseudojęzyki HTML Język programowania składający się ze znaczników (ang. tags) stosowany do pisania stron WWW. TeX/LaTeX System składania publikacji, szczególnie przydatny do składania tekstów naukowych. PostScript Język komend dla drukarek XML Język przechowywania danych 21