Języki i paradygmaty programowania. Wykład 1 wstęp

Podobne dokumenty
Informatyka II stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

Języki i paradygmaty programowania. I. Wprowadzenie

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

Programowanie I. Wprowadzenie. Proces programowania

Wykład 0 Informacje Podstawowe

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

Wykład 1 Informacje Podstawowe

PRZEWODNIK PO PRZEDMIOCIE

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

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

Wykład 1 Wiadomości wstępne

Wykład 1 Informacje Podstawowe

Paradygmaty programowania

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

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

E5 potrafi zaprojektować i zaimplementować prosty model

Podstawy programowania wykład

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

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

Rok akademicki: 2012/2013 Kod: ZIE s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Paradygmaty programowania

Języki programowania zasady ich tworzenia

Algorytmy i struktury danych Metody programowania Języki i paradygmaty programowania Nazwa jednostki prowadzącej przedmiot Instytut Matematyki

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

Spis treści. 1 Java T M

Języki i paradygmaty programowania

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

Języki i paradygmaty programowania

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

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Programowanie Obiektowe i C++

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Modele Obliczeń. Wykład 1 - Wprowadzenie. Marcin Szczuka. Instytut Matematyki, Uniwersytet Warszawski

Java EE produkcja oprogramowania

Języki programowania imperatywnego

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

Informatyka I stopień ogólnoakademicki niestacjonarne Teleinformatyka Zakład Informatyki dr inż. Adam Krechowicz mgr inż.

Programowanie Obiektowe i C++ Marcin Benke

Podstawy Programowania

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

Teoretyczne podstawy informatyki

Typy danych. Przemysław Gawroński D-10, p lutego Wykład 1. (Wykład 1) Typy danych 25 lutego / 11

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

wstęp (podstawowe pojęcia związane z programowaniem, przegląd języków programowania, sieci działań, ogólne zasady programowania zorientowanego

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

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++

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

Wstęp do informatyki Paradygmaty programowania

Elektrotechnika I stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

Paradygmaty Programowania dr inŝ. Cezary Bolek

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

Wykład 1 Informacje Podstawowe

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

Języki programowania do zastosowań biomedycznych

Laboratorium Programowania Kart Elektronicznych

Wstęp do Informatyki dla bioinformatyków

przedmiot specjalnościowy obowiązkowy polski semestr V semestr zimowy nie

Programowanie obiektowe Object programming. Elektrotechnika II stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny)

KARTA KURSU. Programowanie obiektowe

Nazwa modułu kształcenia Programowanie 2 Nazwa jednostki prowadzącej moduł. Kod modułu

Podstawy programowania.

Języki Programowania z Programowaniem Obiektowym laboratorium (30 godzin/semestr)

Technologie cyfrowe semestr letni 2018/2019

Scala - programowanie obiektowo-funkcyjne

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

Programowanie obiektowe

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

PRZEWODNIK PO PRZEDMIOCIE

Podstawy programowania. Wprowadzenie

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Przedmioty kierunkowe

Wykład 9: Polimorfizm i klasy wirtualne

Programowanie obiektowe. Wprowadzenie

KARTA PRZEDMIOTU. Języki i paradygmaty programowania C7. Programming languages and paradigms

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

PRZEWODNIK PO PRZEDMIOCIE

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013

PARADYGMATY PROGRAMOWANIA

Metodologie programowania

Wstęp do programowania obiektowego. Wykład 1 Algorytmy i paradygmaty Podstawowe pojęcia PO

KARTA PRZEDMIOTU. Egzamin / zaliczenie na ocenę*

KARTA KURSU. Wstęp do programowania

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

Spis treści. Wprowadzenie 15

PARADYGMATY PROGRAMOWANIA Wykład 4

Programowanie obiektowe - 1.

Wykład 8: klasy cz. 4

KARTA KURSU. Student zna podstawy analizy, projektowania i programowani obiektowego oraz podstawy języka C++.

Przyszłość programowania Języki funkcyjne na przykładzie Clojure

Obliczenia inspirowane Naturą

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

KARTA PRZEDMIOTU. 1. NAZWA PRZEDMIOTU: Algorytmizacja i programowanie. 2. KIERUNEK: Matematyka. 3. POZIOM STUDIÓW: I stopnia

KARTA KURSU (realizowanego w module specjalności)

Opisy efektów kształcenia dla modułu

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie obiektowe 2 - opis przedmiotu

PODSTAWY PROGRAMOWANIA STRUKTURALNEGO (C) SYLABUS A. Informacje ogólne

Transkrypt:

Języki i paradygmaty programowania Wykład 1 wstęp

Paradygmat z gr. παρα δειγµα (para deigma) = WZORZEC, SPOSÓB WIDZENIA, PRZYKŁAD KOPALINSKI, Słownik wyrazów obcych i zwrotów ocojęzycznych: późn. łac. paradigma, dpn. paradigma\s 'przykład, wzór' z gr. paradeigma 'j.p' od paradeiknynai 'zestawiać; porównywać'; 2

Paradigm paradigm ˈparəˌdīm Noun 1 technical a typical example or pajern of something; a model: there is a new paradigm for public art in this country. a worldview underlying the theories and methodology of a par\cular scien\fic subject: the discovery of universal gravita\on became the paradigm of successful science. 2 a set of linguis\c items that form mutually exclusive choices in par\cular syntac\c roles: English determiners form a paradigm: we can say a book or his book but not a his book. Oqen contrasted with syntagm. (in the tradi\onal grammar of La\n, Greek, and other inflected languages) a table of all the inflected forms of a par\cular verb, noun, or adjec\ve, serving as a model for other words of the same conjuga\on or declension. ORIGIN late 15th cent.: via late La\n from Greek paradeigma, from paradeiknunai show side by side, from para- beside + deiknunai to show. 3

Paradygmaty programowania PROGRAMOWANIE IMPERATYWNE DEKLARATYWNE PROCEDURALNE FUNKCYJNE STRUKTURALNE LOGICZNE OBIEKTOWE 4

Paradygmaty, a języki liczba paradygmatów: p liczba języków: j = 2 p - 1 p ~ 10 - > j ~ 1000 Wszystkich nie omówimy! Prawdę mówiąc, to p > 40 (plakat; Van Roy) 5

TIOBE TIOBE Soqware BV has been founded 1st of October 2000 with the aid of a major investment of Swiss company Synspace and some private investors. The name TIOBE stands for "The Importance Of Being Earnest". This is also the name of a comedy play wrijen by Oscar Wilde at the end of the Nineteenth Century. hjp://www.\obe.com/index.php/content/paperinfo/tpci/index.html 6

Position Feb 2013 Position Feb 2012 Delta in Position Programming Language Ratings Feb 2013 Delta Feb 2012 Status 1 1 Java 18.387% +1.34% A 2 2 C 17.080% +0.56% A 3 5 Objective-C 9.803% +2.74% A 4 4 C++ 8.758% +0.91% A 5 3 C# 6.680% -1.97% A 6 6 PHP 5.074% -0.57% A 7 8 Python 4.949% +1.80% A 8 7 (Visual) Basic 4.648% +0.33% A 9 9 Perl 2.252% -0.68% A 10 12 Ruby 1.752% +0.19% A 11 10 JavaScript 1.423% -1.04% A 12 16 Visual Basic.NET 1.007% +0.21% A 13 13 Lisp 0.943% +0.04% A 14 15 Pascal 0.932% +0.12% A 15 11 Delphi/Object Pascal 0.886% -1.08% A 16 14 Transact-SQL 0.773% -0.07% A-- 17 75 Bash 0.741% +0.61% A-- 18 26 MATLAB 0.648% +0.15% B 19 24 Assembly 0.640% +0.12% B 20 19 Ada 0.631% 0.00% B 7

Popularność? 8

TIOBE: Historia... 9

TIOBE: Zwycięzcy 2013 10

Program wykładu Wymagania wstępne Podstawy logiki Podstawy teorii mnogości Podstawy algorytmiki Język C, Pascal, C++, Java lub inny 11

cd A. Pojęcia wstępne: składnia i semantyka języków programowania analiza leksykalna i składniowa nazwy typy i konwersja typów struktury kontrolne przekazywanie parametrów do podprogramów abstrakcyjne typy danych przeciążanie operatorów i metod polimorfizm 12

cd Programowanie imperatywne: zmienne wyrażenia struktura blokowa wiązanie statyczne i dynamiczne podprogramy organizacja wywołań podprogramów przydział pamięci na stosie i na stercie przykłady z języka C 13

cd Programowanie obiektowe: abstrakcyjne typy danych klasy dziedziczenie polimorfizm dynamiczne wiązanie przykłady z języków C++, Java 14

cd Programowanie funkcyjne: funkcje jako model programowania Churcha rachunek lambda dopasowywanie wzorca nadawanie typów rekursja leniwa ewaluacja funkcje wyższego rzędu przykłady z języków Lisp, Clojure, Haskell 15

cd Programowanie w logice: rachunek predykatów Listy Programowanie współbieżne Obliczenia kwantowe elementy 16

Literatura 1 1. R. Sebesta: Concepts of Programming Languages: Addison- Wesley, 2011. (podręcznik obowiązkowy) 2. B. Tate: Siedem języków programowania, Helion, 2012. (B. Tate: SevenLanguages in seven weeks. Pragma\c Programmers., 2010;) (podręcznik obowiązkowy) 3. J. Bylina, B. Bylina: Przegląd języków i paradygmatów programowania.skrypt. Lublin 2011. 4. B. Stroustrup: hjp://www.stroustrup.com + Książki: C++ (fragmenty podręcznika; obowiązkowe) 5. J. Gosling, H. McGilton: The Java Language Environment. A White Paper,October 1995, A Sun Microsystems 17

Literatura 2 1. K. Arnold, J. Gosling: The Java Programming Language. Addison Wesley,2005; Java, Wydawnictwa Naukowo - - Techniczne, Warszawa. 2. R. Bird: Introduc\on to Func\onal Programming using Haskell. Pren\ce Hall, 1988. 3. J. Reynolds: Theories of Programming Languages. Cambridge UniversityPress, 1998. 4. Stanford Engineering Everywhere, Introduc\on to Computer Science 5. Programming Paradigms: hjp://see.stanford.edu/ see/courses.aspx - - > 6. Programming paradigms - - > Lectures (by John Cain) 18

Literatura uzupełniająca 1. R. Penrose: Nowy umysł cesarza. PWN, Warszawa 1995 - Rozdzialy 1-4. 2. Matematyka współczesna, Dwanaście esejów. Pod red. L. A. Steana. WNT, Warszawa 1983, Rozdział: Czym jest obliczanie, wg. M(ar\na) Davisa, str. 261. 3. P. Van Roy, S. Haridi: Concepts, Techniques, and Models of Computer Programming. MIT Press, 2004. 4. K. Slonneger, B. L. Kurtz: Formal Syntax and Seman\cs of Programming Languages, Addison- Wesley, 1995. (Rozdział 5: Lambda calculus) 19

LABORATORIUM Języki (zależnie od prowadzącego i innych okoliczności) ruby, python, perl io scala prolog lisp, clojure erlang haskell 20

LABORATORIUM Co 2-3 tygodnie zmienia się język programowania. Zadaniem studenta jest samodzielne poznanie podstaw nowego języka i sporządzenie właściwej notatki na ten temat. Notatka stanowi jedną z podstaw zaliczenia ćwiczeń Zadania programistyczne będą ogłaszane albo przez prowadzącego zajęcia w laboratorium albo w internecie W laboratorium Studenci realizują aktualne zadania programistyczne Kolokwia 2 lub 3 Oceny otrzymane w trakcie realizacji ćwiczeń I na kolokwiach są podstawą zaliczenia laboratorium Obecność w laboratorium jest obowiązkowa i stanowi jeden z warunków zaliczenia ćwiczeń. 21

Język (L = language) Definjcja A = alfabet, zbiór znaków (np. ASCII) L = skończony podzbiór zbioru A* gdzie * oznacza dowolną ilość znaków alfabetu, w praktyce skończoną, wziętych w dowolnej kolejności, z możliwością powtórzeń. 22

Język Języki można definiować, używając gramatyk formalnych reguł zapisanych w metajęzyku, np. Extended BNF (Backus Naur Form) (ExtBNF, ISO/IEC 14977) Słowa języka posiadają jakieś ustalone znaczenie; ciągi słów zdania powinny posiadać jakiś sens (semantyka) Składnia języka podlega ustalonym regułom (gramatyce formalnej; syntaktyka) 23

Przykład Ext. BNF lejer = "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z" ; digit = "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" ; symbol = "[" "]" "{" "}" "(" ")" "<" ">" "'" '"' "=" " " "." "," ";" ; character = lejer digit symbol " " ; iden\fier = lejer, { lejer digit " " } ; terminal = "'", character, { character }, "'" '"', character, { character }, '"' ; lhs = iden\fier ; rhs = iden\fier terminal "[", rhs, "]" "{", rhs, "}" "(", rhs, ")" rhs, " ", rhs rhs, ",", rhs ; rule = lhs, "=", rhs, ";" ; grammar = { rule } ; 24

Przykłady generowania słów Parzysta liczba zer alfabet = (0,1) automat DFA: L = (100, 1001, 10110, ) 25

Przykłady generowania słów Liczby podzielne przez 3: (Stan końcowy: podwójne kółko) (przykłady z Wikipedii) 26

Kryteria oceny języków * * Sebesta (dalej * oznacza to samo) 27

Komputer von Neumanna* 28

Komputer* 29

Kompilacja* 30

Interpretacja* 31

Realizacja hybrydowa* 32

Listy w Java import java.u\l.iterator; import java.u\l.list; import java.u\l.arraylist; public class ListEx { public sta\c void main(string[] args) { Napisz program listy.cpp. Jak to jest w ruby? Natychmiast! // List Example implement with ArrayList List<String> ls=new ArrayList<String>(); ls.add("one"); ls.add("three"); ls.add("two"); ls.add("four"); // remove list object ls.remove(2); // remove by index number ls.remove("four"); // remove by object (przykład z internutu) Iterator it=ls.iterator(); while(it.hasnext()) { String value=(string)it.next(); } } } System.out.println("Value :"+value); 33