Języki programowania wprowadzenie



Podobne dokumenty
Języki programowania zasady ich tworzenia

Podstawy Programowania Obiektowego

Programowanie obiektowe - 1.

Języki i paradygmaty programowania. I. Wprowadzenie

Modelowanie i Programowanie Obiektowe

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

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

Programowanie w języku C++ Podstawowe paradygmaty programowania

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

Język programowania. Andrzej Bobyk

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

Programowanie Obiektowe i C++

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

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

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

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

Technologie informacyjne - wykład 12 -

Języki programowania deklaratywnego

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

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Technologie i usługi internetowe cz. 2

Języki i metodyka programowania

hierarchie klas i wielodziedziczenie

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

Programowanie Obiektowe i C++ Marcin Benke

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

Historia modeli programowania

Podstawy programowania

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

Wykład 1 Wiadomości wstępne

Paradygmaty programowania

Wprowadzenie: języki, symbole, alfabety, łańcuchy Języki formalne i automaty. Literatura

Style programowania - krótki przeglad

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

Programowanie komputerów

Programowanie obiektowe

Programowanie obiektowe

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

Bazy danych. Zachodniopomorski Uniwersytet Technologiczny w Szczecinie. Wykład 3: Model związków encji.

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Algorytmy zapisywane w pseudojęzyku programowania. Klasa 2 Lekcja 6

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

Wykład 1 Informacje Podstawowe

Technologie cyfrowe semestr letni 2018/2019

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski

Paradygmaty programowania

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

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

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

Wykład I. Podstawowe pojęcia. Studia Podyplomowe INFORMATYKA Architektura komputerów

JAO - Wprowadzenie do Gramatyk bezkontekstowych

Języki programowania imperatywnego

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Podstawy programowania wykład

ZARZĄDZANIU. Wykład VI. dr Jan Kazimirski

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Java EE produkcja oprogramowania

Programowanie obiektowe. Wprowadzenie

Programowanie I. Wprowadzenie. Proces programowania

Programowanie w języku Python. Grażyna Koba

Style programowania - krótki przeglad

Maszyna Turinga języki

Wykład 1 Informacje Podstawowe

Lingwistyka Matematyczna Języki formalne i gramatyki Analiza zdań

Paweł Kurzawa, Delfina Kongo

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

Efektywna analiza składniowa GBK

Wstęp do programowania

Szablony funkcji i klas (templates)


Informatyka. Michał Rad

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Algorytmy, reprezentacja algorytmów.

Technologie obiektowe

Pisząc okienkowy program w Matlabie wykorzystujemy gotowe obiekty graficzne, lub możemy tworzyć własne obiekty dziedzicząc już zdefiniowane.

Programowanie Obiektowe

Typy, klasy typów, składnie w funkcji

Języki programowania deklaratywnego

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

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Podstawy Informatyki Języki programowania

Wprowadzenie do programowania

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Podstawy Języka Java

Języki i paradygmaty programowania

Zapisywanie algorytmów w języku programowania

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

Środowiska i platformy programistyczne

Zadanie analizy leksykalnej

Podstawy Programowania. Języki programowania

Język ludzki kod maszynowy

Programowanie w Javie nazwa przedmiotu SYLABUS A. Informacje ogólne

Informatyka na UG... Witold Bołt

2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego

Wykład 1. Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych systemach usług, rzeczy i multimediów.

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

Wprowadzenie. Teoria automatów i języków formalnych. Literatura (1)

Transkrypt:

Języki programowania wprowadzenie Prof. dr hab. inż. Mariusz J. Giergiel KRiDM AGH

dr hab. inż.. Mariusz Giergiel, prof. n. AGH Pok. 412, VIp, D-1 konsultacje czwartek 10:00 11:00 giergiel@agh.edu.pl Telefon 012-6173675 Materiały do laboratorium http://kridm.imir.agh.edu.pl/material/jezyki_p/

Definicja językaj Podstawą każdego języka jest słownik Elementy języka zazwyczaj nazywane są słowami; w świecie języków formalnych nazywa się je symbolami Cechą charakterystyczną języków jest to, że pewne ciągi słów rozpoznawane są jako poprawne, dobrze zbudowane zdania języka,

Definicja języka j c.d. Decydujące znaczenie ma gramatyka, czyli inaczej mówiąc składnia lub struktura języka Składnię definiujemy jako zbiór reguł lub formuł, określający zbiór formalnie poprawnych zdań. Ważne jest, że taki zbiór reguł nie tylko pozwala decydować, czy dany ciąg słów jest zdaniem, ale także dla konkretnego zdania określa jego strukturę, która jest pomocna w rozpoznawaniu znaczenia zdania

Języki programowania Składnia i semantyka (znaczenie) są blisko ze sobą powiązane Dlatego definicje strukturalne traktuje się jako pomocnicze dla ważniejszych celów. Rozważmy przykładowe zdanie: Koty śpią. Zdanie to należy do języka, który może być zdefiniowany za pomocą następującej składni:

Języki programowania c.d. <zdanie> ::= <podmiot> <orzeczenie> <podmiot> ::= koty psy <orzeczenie> ::= śpią jedzą Trzy powyższe wiersze pozwalają stwierdzić, że:

Języki programowania c.d. (1) Zdanie składa się z podmiotu i następującego po nim orzeczenia (2) Podmiot jest albo pojedynczym słowem koty albo psy (3) Orzeczenie jest albo słowem śpią albo jedzą

Koncepcja językaj Podstawowa koncepcja jest następująca: Zdanie języka można wyprowadzić z początkowego symbolu <zdanie> stosując reguły zastępowania Reguły mogą (powinny) być zapisywane za pomocą pewnych formalizmów, z których jeden ma szerokie znaczenie

Koncepcja języka j programowania Formalizm, za pomocą którego zapisywane są reguły w odniesieniu do języków programowania zwany jest notacją BNF (Bacus-Naur-Form). Był on po raz pierwszy użyty do zdefiniowania języka Algol Konstrukcje zdaniowe <zdanie>, <podmiot> i <orzeczenie> nazywa się symbolami końcowymi (terminalnymi)

Koncepcja języka j programowania c.d. Reguły nazywane są produkcjami Symbole ::= i nazywa się metasymolami notacji BNF Jeżeli w celu skrócenia zapisu użyjemy pojedynczych wielkich liter do oznaczenia symboli pomocniczych, małych do symboli końcowych, to możemy zdefiniować język

Definicja przykładowego języka S ::= AB A ::= x y B ::= z w Język zdefiniowany przez powyższą składnię zawiera cztery zdania: xz, yz, xw, yw

Języki programowania Od czasów von Neumana istota programowania pozostaje niezmienna Von Neuman jako pierwszy zaproponował schemat maszyny sterowanej przez przechowywany w pamięci program

Języki programowania - Pierwszy język programowania to kod maszynowy (zerojedynkowy język samej maszyny) - Język asemblera czyli kod maszynowy w zapisie symbolicznym - Języki tzw. Wysokiego poziomu: - Fortran,, Cobol, Basic - C/C+, Pascal, Ada

Cechy językj zyków w programowania Wszystkie języki programowania maja wspólna cechę: Programista musi z dużą dokładnością opisać jak obliczyć wynik, a nie co powinno być obliczone Program napisany w tych językach zawiera ciąg instrukcji, z których każda opisuje akcję, jaką ma wykonać komputer x := 120 * x + 10;

Języki imperatywne. Współczesne języki programowania są zasadniczo imperatywnymi. Zapisane w nich programy zawierają głównie instrukcje określające akcje, które należy wykonać. Służą do opisu zachowania prowadzącego do osiągnięcia pożądanego celu

Języki imperatywne Nasze myślenie ma podobny charakter, częściej jednak bywa inaczej. Pierwsze pytanie zadawane odnośnie programu komputerowego brzmi: Co on robi? a nie Jak on to robi

Program imperatywny a deskryptywny Program {main} read(x,y); if x > y then print(x) else print(y); end.

Języki deskryptywne Alternatywą dla imperatywnego języka programowania zawierającego elementy deskryptywne jest język deskryptywny ze składnikami imperatywnymi. W języki takim programy składają się głównie z opisowych definicji pewnego zbioru funkcji lub relacji Wykonanie programu deskryptywnego polega na użyciu tych definicji do znalezienia wyniku będącego w określonej relacji z danymi wejściowymi

Języki deskryptywne c.d. Określony sposób użycia definicji podczas obliczania wyniku nadaje każdej definicji również znaczenie imperatywne, czyli proceduralne. Biorąc je pod uwagę możemy dokonywać wyboru między dwoma zbiorami definicji lub ulepszać efektywność obliczeń, przez wprowadzenie do definicji dodatkowych warunków sterujących, nieistotnych często przy czysto deskryptywnej interpretacji. To już jest praktyka programowania w języku deskryptywnym, jednakże program wciąż pozostaje opisem tego, co chcemy wykonać a nie sposobu wykonania zadań czy obliczeń.

Prolog Lisp Maple Języki programowania deskryptywne

Problemy z pakietami GUI OK. jeżeli zadanie jest dobrze uwarunkowane i wymagania są małe Syndrom bacy piłującego gałąź Ogólne zagadnienia wiarygodności, rzetelności i fachowości projektanta

Problemy z pakietami GUI c.d. prof. Max Cox w biuletynie NPL z lipca 1997 (bada i zauważa): procedury numeryczne ukryte za symbolami GUI różnych pakietów jeden wylicza średnią geometryczną zbioru liczb jako 0 (liczby bliskie 1/2) zdecydowana większość posługuje się naiwnymi algorytmami OK. jeżeli zadanie jest dobrze uwarunkowane i wymagania są małe

Ewolucja programowania Ponieważ operowanie kodem binarnym było dość uciążliwe, przypisano poszczególnym ciągom zerojedynkowym łatwiejsze do zrozumienia skróty mnemotechniczne. Tak powstał język symboliczny, zwany asemblerem. Jest on uważany za język programowania niskiego poziomu, gdyż jest bezpośrednio związany z kodami języka maszynowego. Programowanie w języku asemblera było bardzo trudne, wymagało znajomości rejestrów procesora i struktury pamięci. Poza tym było związane z konkretnym typem procesora. Wkrótce powstały języki wysokiego poziomu. Jednym z pierwszych języków tego typu jest FORTRAN, który powstał w 1957 roku i do dziś jest podstawowym językiem programowania obliczeń naukowych. Z czasem rozszerzono możliwości języków wysokiego poziomu, takich jak BASIC, PASCAL i C++ o narzędzia wizualne (Rapid Application Development), które znacznie ułatwiają konstruowanie programu.

Programowanie obiektowe Tradycyjne podejście do programowania, zwane programowaniem proceduralnym charakteryzuje się rozdzieleniem danych od operujących na nich funkcji. Odizolowanie danych od kodu może prowadzić do przypadkowych zmian danych przez funkcje, które nie są z nimi logicznie związane. Ponadto modyfikacja programu napisanego w ten sposób jest trudna do realizacji, gdyż nawet niewielka zmiana działania programu może spowodować konieczność wprowadzenia poprawek w wielu miejscach.

Programowanie obiektowe c.d. Takich wad pozbawione jest programowanie obiektowe, będące po programowaniu strukturalnym kolejnym etapem w rozwoju języków programowania.

Właściwości 1). Programowanie obiektowe jest stylem programowania, w którym do tworzenia programów używa się obiektów. obiekt = dane + metody 2). Styl taki powstał w wyniku postrzegania rzeczywistości jako zbioru obiektów różnego typu, które mogą wykonywać określone czynności, potrafią się ze sobą komunikować i na siebie wzajemnie oddziaływać. 3). Obiekty w programie często odzwierciedlają cechy i umiejętności swoich odpowiedników ze świata rzeczywistego.

Mechanizmy OOP Programowanie obiektowe wywodzi się z pewnych własności języka SIMULA, który powstał w latach sześćdziesiątych. Pierwszym językiem programowania obiektowego lub jak nazywają to jego twórcy - językiem obiektowo zorientowanym (Object Oriented Language) był Smalltalk skonstruowany na początku lat 80 -tych zeszłego stulecia. Głównym jego twórcą jest Adele Goldberg.

Mechanizmy OOP c.d. Do podstawowych mechanizmów programowania zorientowanego obiektowo (Object Oriented Programming) należą: enkapsulacja -definiowanie nowego typu danych, łączącego dane i działające na nich metody w jedną całość. dziedziczenie - definiowanie nowego typu obiektowego, zwanego potomnym, na podstawie typu istniejącego, zwanego bazowym. Operacja dziedziczenia powoduje przeniesienie danych i metod z typu bazowego do typu potomnego. polimorfizm - definiowanie metod wirtualnych, które mają tę samą nazwę w typie bazowym i potomnym, ale określają różne działanie.

Obiektowy język j programowania Obiektowy język programowania to taki, który umożliwia lub zachęca do stosowania obiektowych metod programowania.

Języki obiektowe Simula (1967), język stworzony do programowania symulacji komputerowych, była prawdopodobnie pierwszym językiem posiadającym podstawowe cechy języka obiektowego, podstawowym przykładem jest zapewne Smalltalk, przy tworzeniu którego rozwinięto sporą część teorii programowania obiektowego. Java, Eiffel i Python, zaprojektowane głównie do programowania obiektowego, ale posiadające także pewne elementy proceduralności; wreszcie języki takie, jak C++ i Perl, które historycznie rzecz biorąc są językami proceduralnymi, wzbogaconymi o elementy obiektowości.

Języki obiektowe c.d. Niektóre języki posiadają wsparcie dla abstrakcyjnych typów danych, ale nie wszystkie cechy obiektowości. Dziedziczenie i polimorfizm są zwykle używane w celu redukcji zbędnego puchnięcia kodu (ang. code bloat), natomiast abstrakcja i enkapsulacja służą zwiększeniu czytelności kodu. Do języków tych zaliczamy języki "czysto" obiektowe - jak Smalltalk i Ruby, zaprojektowane celowo do ułatwienia lub wręcz wymuszenia stosowania metod programowania obiektowego.

Podstawowe założenia paradygmatu obiektowego Abstrakcja Enkapsulacja Polimorfizm Dziedziczenie

Co to jest paradygmat w rozumieniu wprowadzonym przez filozofa Thomasa Kuhna w książce Struktura rewolucji naukowych (The Structure of Scientific Revolutions) opublikowanej w 1962 r. - to zbiór podstawowych pojęć i teorii tworzących podstawy danej nauki. Teorii i pojęć tworzących paradygmat raczej się nie kwestionuje, przynajmniej do czasu kiedy paradygmat jest twórczy poznawczo - tzn. za jego pomocą można tworzyć teorie szczegółowe zgodne z danymi doświadczalnymi (historycznymi), którymi zajmuje się dana nauka.

Co to jest paradygmat cd. Paradygmat od dogmatu odróżnia kilka cech: nie jest on dany raz na zawsze - lecz jest wypracowany w toku wieloletnich, rzetelnych badań i przyjęty na zasadzie konsensusu większości badaczy; podlega on stałym, powolnym zmianom lub, od czasu do czasu, ulega bardzo głębokim przemianom zwanym rewolucją naukową; nikt nie twierdzi, że jest on na pewno absolutnie słuszny, natomiast każdy kwestionujący go ma obowiązek udowodnienia tego zarzutu.

Co to jest paradygmat cd. Dobry paradygmat posiada kilka cech, i m. in. musi: być spójny logicznie i pojęciowo; być jak najprostszy i zawierać tylko te pojęcia i teorie, które są dla danej nauki rzeczywiście niezbędne; dawać możliwość tworzenia teorii szczegółowych zgodnych ze znanymi faktami

Co to jest paradygmat fleksyjny Paradygmat fleksyjny leksemu to zbiór wszystkich form fleksyjnych danego wyrazu. Na opis paradygmatu oprócz informacji, w jakich formach fleksyjnych może dany wyraz występować, składa się także informacja o właściwych poszczególnym formom końcówkach fleksyjnych.

Co to jest paradygmat??? Paradygmat, w filozoficznej teorii poznania i metodologii ogólnie uznane osiągnięcie naukowe, które dostarcza modelowych rozwiązań w danej dziedzinie nauki, może też pociągać za sobą modelowe rozwiązania w dziedzinach pokrewnych i stawać się istotnym składnikiem poglądu na świat. Przykładami paradygmatów są np.: system Kopernikański (heliocentryczna teoria), mechanika I.Newtona, teoria względności A. Einsteina.

Różne podejścia do realizacji paradygmatu w niektórych językach każda klasa musi mieć nadklasę w niektórych językach nadklas może być więcej niż jedna Tekst Tekst Tekst

Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming (http://www.wikipedia.org/wiki/objectoriented_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.

Gdzie można uzyskać więcej informacji Lista dyskusyjna pl.comp.objects oraz archiwum listy Thinking in Java http://www.mindview.net/books/tij/ The Java Tutorial http://java.sun.com/docs/books/tutori al/ http://www.techbooksforfree.com/