Obliczenia Symboliczne I. Python - Składnia Typizacja



Podobne dokumenty
Python. Wprowadzenie. Jolanta Bachan

Kurs rozszerzony języka Python

Podstawy programowania: Python. Wprowadzenie. Jolanta Bachan

Zaawansowany kurs języka Python

Komunikacja Człowiek-Komputer

Język Python (2) Język Python (2) 1/36

Przegląd języka Python. Łukasz Anwajler

Język Python. Język Python 1/35

Python wstęp do programowania dla użytkowników WCSS

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Podstawy programowania w Pythonie

Python. Skąd taka nazwa? Kurs systemu UNIX 1

Programowanie obiektowe

Wątki i komunikacja między nimi w języku Python

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Programowanie obiektowe

Wstęp do programowania

Środowisko programisty

Koło Studentów Informatyki Uniwersytetu Wrocławskiego

Wykład nr 1 Język Ruby i framework Rails

Zaawansowany kurs języka Python

Wstęp do programowania

Wprowadzenie do języka Java

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

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

Python w dydaktyce informatyki podstawy języka

Wstęp do Pythona. Janusz Szwabiński. Python w obliczeniach numerycznych (C) 2005 Janusz Szwabiński p.1/36

Microsoft IT Academy kurs programowania

Programowanie obiektowe

Programowanie obiektowe

Algorytmy i struktury danych

Python dla początkujących. Małgorzata Niewiem AGH, GGiOŚ, Katedra Geoinformatyki i Informatyki Stosowanej SATIM Satelitarny Monitoring

Pobieranie argumentów wiersza polecenia

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

Laboratorium Programowania Kart Elektronicznych

Programowanie w Ruby

JavaScript funkcyjność

Tworzenie aplikacji w języku Java

Programowanie i projektowanie obiektowe

WYKORZYSTANIE JĘZYKA GROOVY W TESTACH JEDNOSTKOWYCH, INTEGRACYJNYCH I AUTOMATYCZNYCH. Mirosław Gołda, Programista Java

Wstęp do ruby dla programistów javy

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Laboratorium Programowania Kart Elektronicznych

Języki i metody programowania

Installation of EuroCert software for qualified electronic signature

Automatyczne generowanie testów z modeli. Bogdan Bereza Automatyczne generowanie testów z modeli

Plan. krótkie opisy modułów. 1 Uwagi na temat wydajności CPython a. 2 Podstawowe techniki poprawiające wydajność obliczeniową

Zdecyduj: Czy to jest rzeczywiście prześladowanie? Czasem coś WYDAJE SIĘ złośliwe, ale wcale takie nie jest.

Podstawy programowania w Pythonie

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Technologie Informacyjne

OpenPoland.net API Documentation

Kurs języka Python. Wykład 11. Marcin Młotkowski. 4 stycznia Kontrola poprawności podczas biegu programu. 2 Testowanie oprogramowania

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

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

Wstęp do programowania

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

SSW1.1, HFW Fry #20, Zeno #25 Benchmark: Qtr.1. Fry #65, Zeno #67. like

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

Wstęp do programowania

Redis, skrypty w języku Lua

Metody numeryczne. Artur Wymysłowski, prof. PWr. Wrocław

Java. Programowanie Obiektowe Mateusz Cicheński

Bardzo formalny, odbiorca posiada specjalny tytuł, który jest używany zamiast nazwiska

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

PyPy's Approach to Virtual Machine Construction

rozdział 4: ZMIENNE I INSTRUKCJE

Języki skryptowe w programie Plans

Programowanie w Internecie. Java

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

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

Zaawansowane aplikacje WWW - laboratorium

PROGRAMOWANIE W ŚRODOWISKU FLASH wykład 2

Spis treści. Funkcje. 1 Funkcje 1.1 Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie 7

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

Tychy, plan miasta: Skala 1: (Polish Edition)

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

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

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Technologie cyfrowe semestr letni 2018/2019

Kurs rozszerzony języka Python

PROGRAMOWANIE W JĘZYKU PYTHON

Programowanie obiektowe

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

Wprowadzenie do Objective-C

How to share data from SQL database table to the OPC Server? Jak udostępnić dane z tabeli bazy SQL do serwera OPC? samouczek ANT.

Python! Lekcja 1 podstawy języka, typy danych

Programowanie i projektowanie obiektowe

Spis treści. Dekoratory. 1 Dekoratory 1.1 Zadanie Zadanie Zadanie Zadanie 4

Wojewodztwo Koszalinskie: Obiekty i walory krajoznawcze (Inwentaryzacja krajoznawcza Polski) (Polish Edition)

Metaprogramowanie w Ruby

Programowanie obiektowe zastosowanie języka Java SE

SZCZEGÓŁOWY SPIS TREŚCI

Platformy Programistyczne Podstawy języka Java

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Transkrypt:

Obliczenia Symboliczne I Python - Składnia Typizacja

Sprawy organizacyjne Tryb zaliczenia ćwiczeń Zakres i tematyka wykładu http://home.agh.edu.pl/~korzycki/osi/ <under construction>

Zakres tematyczny wykładu Python... i inne języki Skryptowe (Groovy, Ruby, JavaScript) Przetwarzanie tekstu i symboli Programowanie funkcjonalne Glue Languages Web Frameworks

Python "Python is fast enough for our site and allows us to produce maintainable features in record times, with a minimum of developers," Cuong Do, Software Architect, YouTube.com.

Python Centrum Wiskunde & Informatica Amsterdam Hollandia 1sza implementacja XII 1989 Guido van Rossum Benevolent Dictator For Life

Python Wersja 1.0 I 1994 Wersja 2.0 16 X 2000 Pełen Garbage collector Unicode (!) 2.2 wszystko stało się obiektem, wprowadzono generatory z Icona Wersja 3.0 3 XII 2008 Na wykładzie korzystamy z wersji 2.6

Python Na wykładzie korzystamy z wersji 2.6 3.0? We don't need no stinkin' 3.0! from future import *

Python Python jest językiem: Wysoko poziomowym (programowanie funkcjonalne!) Skryptowym (ale ma bytecode jak Java) Bo można w nim pisać skrypty...... ale i duże aplikacje Ogólnego zastosowania (!) o wysokiej czytelności składni Dynamicznie typowanym... i gdzie używa się wcięć zamiast bloków

Python Python ZEN

#!/usr/bin/python import sys def parrot(param): print param, ' is dead' if name == ' main ': for i in sys.argv: parrot(i))

Python import dołącza plik z PYTHONPATH:.:/usr/local/lib/python. import test Do x w test odwołujemy się przez "test.x". from test import x Do x w test odwołujemy się przez "x". from test import * Wczytuje wszystko z test. Do x w test odwołujemy się przez "x". Nie zalecane import test as thetest Do x w test odwołujemy się przez "thetest.x".

Moduły Zmienna name zawiera nazwę bieżącego pakietu #!/usr/bin/python # Filename: using_name.py if name == ' main ': print 'This program is being run by itself' else: print 'I am being imported from another module'

Moduły $ python using_name.py This program is being run by itself $ python >>> import using_name I am being imported from another module >>>

Moduły >>> import sys >>> dir(sys) # get list of attributes for sys module [' displayhook ', ' doc ', ' excepthook ', ' name ', ' stderr ', ' stdin ', ' stdout ', '_getframe', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'exc_clear', 'exc_info', 'exc_type',...

Pakiety sound/ Top-level package init.py Initialize the sound package formats/ Subpackage for format conversions init.py wavread.py wavwrite.py aiffread.py aiffwrite.py auread.py auwrite.py >>> from sound.formats import wavwrite

number = 23 running = True while running: guess = int(raw_input('enter an integer : ')) if guess == number: print 'Congratulations, you guessed it.' running = False # this causes the while loop to stop #break - but we can't use break here -> no else then elif guess < number: print 'No, it is a little higher than that.' else: print 'No, it is a little lower than that.' else: print 'The while loop is over.' # Do anything else you want to do here print 'Done'

For for i in range(1, 5): print i else: print 'The for loop is over' W for może wystąpić dowolny typ sekwencyjny: str, unicode, list, tuple, buffer, xrange Range zwraca listę, lista: [1,2,3,4] Tuple (krotka) tworzona operatorem, : 1,2,3 (3,) () 'ala', makota (rzutowanie str() ) u'ala', u makota (rzutowanie unicode() ) Operacje na sekwencjach: Operacje: x in s, x not in s, s+t, s * n, s[i], s[i:j], s[i:j:k] Operacje: len(s), min(s), max(s)

Typy sekwencyjne >>> lists = [[]] * 3 >>> lists [[], [], []] >>> lists[0].append(3) >>> lists [[3], [3], [3]] >>> lists = [[], [], []] >>> lists[0].append(3) >>> lists[1].append(5) >>> lists[2].append(7) >>> lists [[3], [5], [7]]

Slicing >>> word= Hello >>> word[0:2] 'He' >>> word[2:4] 'll' >>> word[:2] # The first two characters 'He' >>> word[2:] # Everything except the first two characters 'llo' >>> word[-2:] # The last two characters 'lo' >>> word[:-2] # Everything except the last two characters 'Hel' >>> word[1:5:3] # Slice from 1 to 5 with step 3 'eo'

Slicing +---+---+---+---+---+ H e l l o +---+---+---+---+---+ 0 1 2 3 4 5-5 -4-3 -2-1

Deklaracja funkcji i zmiennych globalnych Funkcje def say(message, times = 1): print message * times say(times=3,message= hello ) Zmienne globalne def func(): global x print 'x is', x x = 2 print 'Changed global x to', x x = 50 func()

Typizacja Python, Groovy, JavaScript, Ruby są dynamicznie typowalne (dynamic typing) Typ związany z wartością nie zmienną x=5 x= 5 C/C++, Java są statycznie typowalne (static typing) Typ związany ze zmienną nie wartością, czasem niejawnie: int main() { length::meter a(5); force::newton b(6); BOOST_AUTO(c, a * b); }

Typizacja Python jest silnie typowalny (strongly typed) Kontrolowane są operacje czy są wykonalne na danym typie >>> a="a" >>> a=a+3 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects JavaScript jest słabo typowalny (weakly typed) Rzutowania wykonywane są w locie Python ma bezpieczną typizację (type-safe) C nie ma bezpiecznej typizacji (type-unsafe) rzutowanie z/na void*

Duck Typing class Duck: def quack(self): print "Quaaaaaack!" def feathers(self): print "The duck has white and gray feathers." class Person: def quack(self): print "The person imitates a duck." def feathers(self): print "The person takes a feather and shows it."

Duck Typing def in_the_forest(duck): duck.quack() duck.feathers() def game(): donald = Duck() john = Person() in_the_forest(donald) in_the_forest(john) game()

Python - problemy Nie jest tak szybki jak C/C++ Dynamiczna typizacja może być niebezpieczna Global Interpreter Lock

Unladen Swallow JVM dla Pythona od Google We want to make Python faster, but we also want to make it easy for large, well-established applications to switch to Unladen Swallow. 1. Produce a version of Python at least 5x faster than CPython. 2. Python application performance should be stable. 3. Maintain source-level compatibility with CPython applications. 4. Maintain source-level compatibility with CPython extension modules. 5. We do not want to maintain a Python implementation forever; we view our work as a branch, not a fork. In addition, we intend to remove the GIL and fix the state of multithreading in Python. We believe this is possible through the implementation of a more sophisticated GC

Alternatywne implementacje Psyco JIT Jython interpreter w Javie PyPy interpreter w Pythonie (sic!)... JIT Zawężony zakres języka (RPython) Stackless Python