Podstawy Programowania

Podobne dokumenty
Informatyka 1. Języki programowania

Informatyka 1. Języki programowania

Podstawy Programowania. Języki programowania

Podstawy Programowania

Podstawy Programowania. Języki programowania

Podstawy Programowania

Podstawy Programowania. Języki programowania

Podstawy Programowania. Języki programowania

Podstawy Programowania. Języki programowania

Podstawy Programowania

Podstawy Programowania. Języki programowania

Informatyka I. Wyk lad XI. ezyki programowania

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

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

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

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

Języki programowania do zastosowań biomedycznych

Oprogramowanie komputerowych systemów sterowania

Programowanie obiektowe

Środowiska i platformy programistyczne

Programowanie I. Wprowadzenie. Proces programowania

Szablony funkcji i szablony klas

Wstęp do programowania

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Wprowadzenie do UML, przykład użycia kolizja

Podstawy programowania. Wprowadzenie

Wykład 1: Wprowadzenie

Programowanie współbieżne i rozproszone

Języki i paradygmaty programowania. I. Wprowadzenie

Podstawy programowania wykład

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

Informatyka na UG... Witold Bołt

Paradygmaty programowania

Zagadnienia egzaminacyjne AUTOMATYKA I ROBOTYKA. Stacjonarne I-go stopnia TYP STUDIÓW STOPIEŃ STUDIÓW SPECJALNOŚĆ

Programowanie w języku C++ Podstawowe paradygmaty programowania

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

INFORMATYKA Pytania ogólne na egzamin dyplomowy

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

Programowanie obiektowe Wykład 1. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20

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

Diagramy UML, przykład problemu kolizji

Przegląd i ewaluacja narzędzi do szybkiego tworzenia interfejsu użytkownika (RAD).

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

Języki i paradygmaty programowania

Programowanie obiektowe - 1.

Programowanie obiektowe. Wprowadzenie

Wprowadzenie do szablonów szablony funkcji

Wykład 1 Informacje Podstawowe

dr inż. Paweł Myszkowski Wykład nr 5 ( )

Wprowadzenie do szablonów szablony funkcji

Kierunek: Informatyka Poziom studiów: Studia I stopnia Forma studiów: Stacjonarne. audytoryjne. Wykład Ćwiczenia

Język ludzki kod maszynowy

Programowanie. Technologie Informacyjne

Wprowadzenie do programowania

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

Narzędzia CASE dla.net. Łukasz Popiel

przedmiot kierunkowy (podstawowy / kierunkowy / inny HES) obowiązkowy (obowiązkowy / nieobowiązkowy) polski semestr I

Wykład 1 Informacje Podstawowe

Języki i metodyka programowania

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

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

Jarosław Kuchta Jakość Systemów Informatycznych Jakość Oprogramowania. Pomiary w inżynierii oprogramowania

Nazwa przedmiotu: MODELOWANIE I ANALIZA SYSTEMÓW INFORMATYCZNYCH. Modeling and analysis of computer systems Forma studiów: Stacjonarne

Paradygmaty i języki programowania. Wprowadzenie. dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ 1

Geneza powstania języka C++

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

STUDIA STACJONARNE I STOPNIA Przedmioty kierunkowe

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

Języki programowania wprowadzenie

Programowanie Obiektowe i C++

Wstęp do programowania obiektowego. Wykład 2

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Programowanie. Technologie Informacyjne

Informatyczne fundamenty

Cel wykładu. Literatura. Wyższa Szkoła Menedżerska w Legnicy. Modelowanie wymagań Wykład 2

Zakład Sterowania Systemów

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 2

Mechatronika Uniwersytet Rzeszowski

Wprowadzenie do szablonów klas

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Praca z aplikacją designer

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

przedmiot kierunkowy (podstawowy / kierunkowy / inny HES) obowiązkowy (obowiązkowy / nieobowiązkowy) polski semestr I

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

LITERATURA. C. J. Date; Wprowadzenie do systemów baz danych WNT Warszawa 2000 ( seria Klasyka Informatyki )

Języki i paradygmaty programowania - 1

Wstęp do Informatyki dla bioinformatyków

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

Podyplomowe Studium Informatyki w Bizniesie Wydział Matematyki i Informatyki, Uniwersytet Łódzki specjalność: Tworzenie aplikacji w środowisku Oracle

Co to jest jest oprogramowanie? 8. Co to jest inżynieria oprogramowania? 9. Jaka jest różnica pomiędzy inżynierią oprogramowania a informatyką?

Języki programowania

Informatyka- wykład. Podstawy programowania w Pythonie. dr Marcin Ziółkowski

Metodologie programowania

Podstawy programowania

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.


Języki i metody programowania Java. Wykład 2 (część 2)

Paradygmaty programowania

Techniki Programowania

Transkrypt:

Podstawy Programowania Wykład XII Języki programowania Robert Muszyński Katedra Cybernetyki i Robotyki, PWr Zagadnienia: generacje języków progamowania, kod maszynowy, asembler, drzewo genealogiczne języków wysokiego poziomu, języki: imperatywne, aplikatywne, deklaratywne, symboliczne, obiektowe; środowiska programistyczne, języki idealnie nieproceduralne, generatory aplikacji, inteligentne systemy wiedzy. Copyright c 27 218 Robert Muszyński Niniejszy dokument zawiera materiały do wykładu na temat podstaw programowania w językach wysokiego poziomu. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych, prywatnych potrzeb i może być kopiowany wyłącznie w całości, razem ze stroną tytułową. Skład FoilTEX Języki programowania 1 Generacje języków programowania Pierwsza generacja kod maszynowy Druga generacja asemblery Trzecia generacja języki wysokiego poziomu języki imperatywne (proceduralne) języki aplikatywne (funkcjonalne) języki deklaratywne (regułowe) języki symboliczne języki obiektowe ;-) Generacja trzy i pół środowiska programistyczne Czwarta generacja języki idealnie nieproceduralne, generatory aplikacji Piąta generacja inteligentne systemy wiedzy Języki programowania 2 Języki programowania 3 Przykłady języków wysokiego poziomu języki imperatywne (proceduralne) Fortran, ALGOL, COBOL, C języki aplikatywne (funkcjonalne) Lisp, Scheme, Haskel języki deklaratywne (regułowe) Prolog, CLIPS, SQL języki symboliczne Lisp, Prolog, thematica, ple języki obiektowe Smalltalk, Ada95, Lisp, C++, Java Drzewo genealogiczne języków wysokiego poziomu (domniemane) Prolog Lisp COBOL FORTRAN ALGOL 6 APL PL/I BCPL Środowisko programistyczne ML FORTRAN 77 Basic ALGOL 68 Simula B Język programowania wysokiego poziomu + wbudowane funkcje dla systemów informacyjnych (obsługa ekranu, bazy danych itp.) + interfejs graficzny buildery i wizardy Hope Haskell FORTRAN 9 ALGOL W ABC Pascal Modula-2 Ada Smalltalk D C# C C++ Java Python Perl

Języki programowania 4 Co więc wybrać Wyjątki z listy 5 najbardziej popularnych języków programowania (www.tiobe.com/tiobe-index/ ): 16 Asembler (1949) 39 Fortran (1957) 27 Lisp (1958) 13 BASIC (1964) (Visual Basic.NET (21) 6 miejsce) 37 Prolog (1972) 2 C (1972) (15% rynku, przyrost 8,9%) 3 C++ (1985) (8% rynku, przyrost 2,61%) 14 Perl (1987) 4 Python (199) 1 Java (1995) (15% rynku, przyrost,88%) Języki programowania 5 Jak wybrać Obserwacja: Typowy programista, inżynier oprogramowania (architekt:) z kilkuletnim doświadczeniem programuje w kilkunastu językach Zamiast pytać: Jaki język programowania jest obecnie najpopularniejszy? warto zapytać: Który język programowania jest obecnie niedoceniany i pozwala robić rzeczy, których inni programiści nie są w stanie zrobić, tym samym dając mi unikalne umiejętności? Wniosek: Nowe języki powstają ustawicznie i koegzystują ze starszymi Języki programowania 6 Języki programowania 7 Popularne kryteria wyboru języka programowania do nauki: Wysokość uposażenia Popularność ogrom różnorodnych ofert pracy Wzrostowa tendencja popularności Łatwość nauczenia, komfort pracy Języki, które dobrze rokują : Python Elixir Perl Scala C# R Ruby plus biblioteki! Rust Warto zapamiętać także, że: Tworzone aplikacje działają w jakimś środowisku sprzętowym, zazwyczaj pod nadzorem jakiegoś systemu operacyjnego, więc... Popularność według dziedzin oprogramowanie niskiego poziomu, sprzętowe, jądro systemu: C, asembler oprogramowanie zorientowane sprzętowo: C/C++, asembler, Lua, Java automatyka przemysłowa: PLC (Siemens, Allen-Bradley, Mitsubishi Electric, Beckhoff), SCADA, DCS Industrial IoF (Python, Java, C/C++ z protokołami komunikacji), MATLAB, LabVIEW (język G) robotyka: C/C++, Python, Java, C#/.NET, tlab, asembler, HDLs (FPGA), Lisp,języki programowania robotów RAPID (ABB), KRL (Kuka), Karel (Fanuc), AS (Kawasaki), INFORM (Yaskawa), VAL3 (Staubli), URScript (Universal Robots), ROS Industrial aplikacje www: np. Java, Python, Ruby (wraz z platformami takimi jak Django, Ruby on Rails itp.) aplikacje mobilne: HTML, Swift, C++, C#, Java gry: C/C++, Java, C#, Visual Basic.NET, Swift, Lua, Python, Lisp, Perl, Smalltalk z dedykowanymi bibliotekami (SDL, Allegro), API i SDK chmury obliczeniowe: SQL, XML, R, Clojure, Haskell, Scala, OCaml, F#, Common Lisp, Scheme blockchain: C++, Java, Python, Simplicity, Solidity, Serpent, LLL roboty Boston Dynamics: C, C++, Python z ROSem robot Sophia: Java, C#, C++, OSGi, CogChar, Prolog, AIML, ChatScript, SingularityNET

Języki programowania 8 Kod maszynowy i asemblery Dodanie dwóch liczb na MC68HC75J1A (Motorola, 8-bitowy) Kod maszynowy Asembler Komorka Pamieci Zawartosc 3 A6 31 2 32 AB 33 2 34 CC 35 3 36 4 7FE 3 7FF To samo w S-rekordach S1C3A62AB2CC34C8 S157FE3F2 S93FC org $3 DODAJ lda #2 ;zaladuj do akumulatora 2 add #2 ;dodaj do akumulatora 2 PETLA jmp PETLA ;skocz do PETLA org $7FE dw DODAJ ;adres startu po resecie Po przetworzeniu 3 1 org $3 3 A62 2 DODAJ lda #2 32 AB2 3 add #2 34 CC34 4 PETLA jmp PETLA 7FE 5 org $7FE 7FE 3 6 dw DODAJ Symbol Table PETLA 34 DODAJ 3 Języki programowania 9 Języki wysokiego poziomu język imperatywny C int dodaj() { int a = 2; int b = 2; return(a + b);} int l = dodaj(); język aplikatywny Lisp (defun dodaj() ;aplikatywnie ((lambda (x y) (+ x y)) 2 2)) (defun dodaj() ;imperatywnie (let (x y)(setq x 2)(setq y 2)(+ x y))) (dodaj) język deklaratywny Prolog dodaj(x) :- X is 2 + 2. dodaj(x). język symboliczny thematica dodaj := Module[{a = 2, b = 2}, a + b]; l = dodaj; język obiektowy C++ class CDodaj { public: int a; int b; CDodaj() { a = 2; b = 2;}; int Dodaj() { return(a + b);} }; /statycznie/ Cdodaj d; int l = d.dodaj(); /dynamicznie/ Cdodaj d = new CDodaj; int l = d->dodaj(); Języki programowania 1 Języki czwartej generacji Elementy składowe języka czwartej generacji: fizyczny słownik danych formater ekranu generator raportów język zapytań specyfikator dialogu generator kodu język wysokiego poziomu Języki programowania 11 Języki czwartej generacji: CASE Computer Aided Software Engineering Oracle Komercyjny pakiet zawierający: maszynę relacyjnej bazy danych; interfejs bazy danych narzędzia do integracji baz danych z językami wysokiego poziomu; kreator formularzy; kreator raportów; kreator reprezentacji graficznych; narzędzia do wyszukiwania UML Unified Modeling Language

Języki programowania 12 UML Dodanie dwóch liczb Symulacja systemu robotycznego SystemRobotyczny KolejkaZadañ() DodajZadanie() UsuñZadanie() Cz³onek 1.. Robot KolejkaZadañ() DodajZadanie() UsuñZadanie() Do tego należy utworzyć: diagram obiektów diagram implementacji diagram rozmieszczenia 1 1.. Cz³onek Dodaj a = 2 b = 2 dodaj(){return(a+b)} SystemWizyjny PobierzObraz() UstawKamery() Przegub 1.. Nr Po³o enie Przesuñ() Zablokuj() U ywa Diagram klas Kamera 1.. Nr Po³o enie PobierzObraz() Przesuñ() Sterownik 1 1 KolejkaRuchów() DodajRuch() UsuñRuch() diagram zachowań diagram sekwencji diagram interakcji Języki programowania 13 C++ Symulacja systemu robotycznego cd. class CRobot { private: int id public: char [42]; C ; CPrzegub Przeguby; CRezolwer Rezolwery; CKolejka Kolejka = NULL; CRobot() { Przeguby=new CPrzegub[5]; /.../ Inicjuj(); /.../}; int KolejkaZadan(){/ definicja /}; int DodajZadanie(/.../){/ def. /}; int UsunZadanie(/.../){/ def. /};}; CRobot Robot1 = new CRobot; try{robot1.dodajzadanie(/.../);} catch(cexception blad){/ obsluga /} C struct SRobot { int id char [42]; S ; SPrzegub Przeguby; SRezolwer Rezolwery; SKolejka Kolejka = NULL;}; int DodajRobota(SRobot Robot) { Robot = malloc(sizeof(srobot)); Robot->Przeguby=malloc(5sizeof(SPrzegub)); Inicjuj(); /.../}; int UsunRobota(SRobot Robot){/.../}; int KolejkaZadan(/.../){/ def. /}; int DodajZadanie(/.../){/ def. /}; int UsunZadanie(/.../){/ def. /};}; SRobot Robot1; DodajRobota(Robot1); if blad = DodajZadanie(/.../) then / obsluga / Języki programowania 14 Symulacja systemu robotycznego cd. Asembler i kod maszynowy 98: float CRobot::UstalKrok(float Krok, int Kp) 99: { 42828 push ebp 42829 mov ebp,esp 4282B sub esp,ch 4282E mov dword ptr [ebp-8],ecx 1: float delta =.1; 42831 mov dword ptr [delta],3a83126fh 11: switch(kp){ 42838 mov eax,dword ptr [Kp] 4283B mov dword ptr [ebp-ch],eax 4283E cmp dword ptr [ebp-ch], 42842 je CRobot::UstalKrok(x4284c)+24h 42844 cmp dword ptr [ebp-ch],1 42848 je CRobot::UstalKrok(x42857)+2Fh 4284A jmp CRobot::UstalKrok(x42862)+3Ah 12: case : Krok += delta; 4284C fld dword ptr [Krok] 4284F fadd dword ptr [delta] 42852 fstp dword ptr [Krok] 13: break; 42855 jmp CRobot::UstalKrok(x42869)+41h 14: case 1: Krok -= delta; 42857 fld dword ptr [Krok]... Języki programowania 15 Sqrt[4] 2 Sqrt[ 4] 2i Sqrt[a] a Sqrt[a]ˆ2 + a + 3b + 5b 2a + 8b Solve[xˆ2 + 5x + 4 ==, x] {{x 4}, {x 1}} Języki symboliczne thematica Solve[Sqrt[x] + a == 2x, x] {{ x 1 8 ( 1 + 4a 1 + 8a )}, { x 1 8 ( 1 + 4a + 1 + 8a )}} Integrate[Sqrt[x] Sqrt[a + x], x] (a ) x a + x 4 + x3/2 2 1 4 a2 log [ x + a + x ] x a + xdx (a ) x a + x 4 + x3/2 2 1 4 a2 log [ x + a + x ] NDSolve[{x [t]+x[t]ˆ3 == sin[t], x[] == x [] == }, x, {t,, 5}] {{x InterpolatingFunction[{{., 5.}}, <>}} Solve[axˆ2 + bx + c ==, x] ParametricPlot[Evaluate[{x[t], x [t]}/.%], {t,, 5}]; {{ x b b 2 4ac} { 2a, x b+ b 2 4ac}} 2 2a -2-1 1 1-1 -2

Języki programowania 16 Języki symboliczne thematica Języki programowania 17 Inne języki 1-1 -25 25 5 4 2-2 -4 ParametricPlot3D[{u cos[u](4 + cos[v + u]), u sin[u](4 + cos[v + u]), u sin[v + u]}, {u,, 4π}, {v,, 2π}, PlotPoints {6, 12}]; Show[Graphics3D[Flatten[Table[If[Mod[Multinomial[x, y, z], 2] == 1, Cuboid[1.2{x, y, z}], {}], {x,, 15}, {y,, 15}, {z,, 15}]]]] języki opisu strony html, TEX/L A TEX języki manipulowania tekstem sed, awk meta-języki Lex/Flex, Yacc/Bison APL A Programming Language FIB N [1] A 1 1 [2] 2 N>ϱA A, +/ 2 A Języki programowania 18 Klasyfikacja styli programowania Zagadnienia pokrewne programowanie transformacyjne programowanie reaktywne styl imperatywny bez i z procedurami styl imperatywny z modułami/pakietami styl obiektowy styl aplikatywny styl programowania sterowanego danymi Techniki i metody tworzenia systemów informacyjnych Planowanie i zarządzanie systemami informacyjnymi Ocena systemów informacyjnych Więcej w Paul Beynon-Davies, Inżynieria systemów informacyjnych, WNT 24. Języki programowania 19 Zagadnienia podstawowe Podsumowanie 1. Wskaż podstawowe różnice w procesie programowania w językach niskiego i wysokiego poziomu. 2. Z jakiego języka wywodzi się język C? 3. Jaką podstawową zaletę posiada język C++ w porównaniu z językiem C? 4. Czym się wyróżniają języki regułowe? 5. Czym jest środowisko programistyczne i jakie są jego podstawowe elementy? 6. Czym się różni środowisko programistyczne od języka programowania? 7. Jak klasyfikuje się style programowania? Czym one się różnią? 8. Czy styl programowania jednoznacznie wynika z rodzaju użytego języka programowania? A jaki wpływ na styl ma wybrany kompilator języka (środowisko programistyczne)? Zagadnienia rozszerzające 1. Jakie style programowania można stosować w języku C? 2. Jakie rodzaje diagramów definiowane są w języku UML? Do czego służą? 3. Podaj jakie są dziedziny zastosowań każdego z języków wysokiego poziomu wymienionych na 2 stronie prezentacji.