tomasz.bold@fis.agh.edu.pl



Podobne dokumenty
INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

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

KARTA KURSU. Języki skryptowe

Tworzenie oprogramowania

Programowanie komputerów

Wzorce projektowe. dr inż. Marcin Pietroo

Java EE produkcja oprogramowania

Podstawy programowania wykład

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

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Podstawy programowania. Wprowadzenie

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

PRZEWODNIK PO PRZEDMIOCIE

Wstęp do Informatyki dla bioinformatyków

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Wzorce projektowe Michał Węgorek

Wykład 0 Informacje Podstawowe

Bash - wprowadzenie. Bash - wprowadzenie 1/39

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

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

Domain-specific Languages. Języki dziedzinowe. Adam Robaszyński-Janiec

Biorąc udział w projekcie, możesz wybrać jedną z 8 bezpłatnych ścieżek egzaminacyjnych:

Zaawansowane programowanie obiektowe - wykład 5

Liczba godzin. N (nauczyciel) studia niestacjonarne

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Programowanie Zespołowe

DSL w środowisku Eclipse. Grzegorz Białek Architekt techniczny, Sygnity S.A.

NAZWA PRZEDMIOTU/MODUŁU KSZTAŁCENIA:

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

Programowanie w języku Python. Grażyna Koba

Podstawy informatyki

Budowanie interfejsów do baz danych

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

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

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Specjalnościowy Obowiązkowy Polski Semestr 5

Podstawy programowania.

Paradygmaty programowania

Wykład Ćwiczenia Laboratorium Projekt Seminarium

TEI. Dr Wojciech Palubicki

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

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Scenariusz lekcji. Scenariusz lekcji 1 TEMAT LEKCJI: 2 CELE LEKCJI: 2.1 Wiadomości: 2.2 Umiejętności: 3 METODY NAUCZANIA: 4 ŚRODKI DYDAKTYCZNE:

Konsola i interpreter poleceń

Wprowadzenie do programowania aplikacji mobilnych

Od programowania wizualnego do tekstowego

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

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

Języki programowania do zastosowań biomedycznych

INFORMATYKA TECHNICZNA Metody wprowadzania obiektów w programie AutoCAD za pomocą języka AutoLISP

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

Spis treści. Wprowadzenie 15

METODY REPREZENTACJI INFORMACJI

Zaawansowane programowanie w C++ (PCP)

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

KARTA MODUŁU KSZTAŁCENIA

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

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

Funkcje i instrukcje języka JavaScript

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

Języki skryptowe. zasady zaliczania literatura wprowadzenie

KARTA PRZEDMIOTU. Egzamin / zaliczenie na ocenę*

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!

PRZEWODNIK PO PRZEDMIOCIE

Wzorce projektowe cz. I. Wzorce projektowe cz. I 1/33

Wykład 1 Wprowadzenie

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

Podstawy i języki programowania

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

KARTA KURSU. Języki hipertekstowe i tworzenie stron WWW. Opis kursu (cele kształcenia) Warunki wstępne. Efekty kształcenia. Nazwa

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

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

INŻYNIERIA OPROGRAMOWANIA

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

Szczegółowy opis zamówienia:

Zaawansowane programowanie w języku C++

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript

System zarządzający grami programistycznymi Meridius

Programowanie Komponentowe WebAPI

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

Technika mikroprocesorowa. Języki programowania mikrokontrolerów

Instrukcja laboratoryjna cz.0

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

Oracle11g: Programowanie w PL/SQL


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

OBC01/TOPMOB Projektowanie w języku Objective-C

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

Scala - programowanie obiektowo-funkcyjne

Technologie informacyjne - wykład 12 -

KARTA MODUŁU KSZTAŁCENIA

Imię, nazwisko i tytuł/stopień KOORDYNATORA (-ÓW) kursu/przedmiotu zatwierdzającego protokoły w systemie USOS Dr Adam Naumowicz

1 Przygotował: mgr inż. Maciej Lasota

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

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

(wybrane) Wzorce projektowe. Programowanie Obiektowe Mateusz Cicheński

(wybrane) Wzorce projektowe. Programowanie Obiektowe Mateusz Cicheński

Wzorce projektowe i refaktoryzacja

Języki formalne i automaty Ćwiczenia 6

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Transkrypt:

tomasz.bold@fis.agh.edu.pl 1

Organizacja zajęć Wykłady naprzemiennie z laboriatorami Wykład 1 wstępne informacje o językach skryptowych... trochę historii, zasosowania itp. Wykład 2 bash i okolice, przetwarzanie tekstu laboratoria x 2 pokaz projektów z dyskusją i zbiorowym ulepszaniem i poprawą Wykład 3 python ( nie tak dogłębnie jak na przedmiocie: python ) laboratoria x 3 pokaz projektów Wykład 4 ROOT/CINT laboratoria x 3 pokaz projektów Wykład 4 JavaScript Laboratoria x 1 Pokaz projektów Dodatkowo 3/4 projekty, po jednym z każdego z tych tematów 2

Ocenianie 30% lab 70% projekty na laboratoriach na początku będziemy robić 5-10 minutowy sprawdzian na początku każdych zajęć (na kartkach) z poprzedniego laboratorium sprawdzian z wiedzy teoretycznej w celu motywowania systematyczności 3/4 projekty z każdego zaganienia projekty jedno- osobowe, skrypt do waszych innych zajęć może być projektem na j. skryptowych 3

Do dzieła 4

Dzisiejszy wykład Dlaczego języki skryptowe Kiedy skrypt nie jest najlepszym rozwiązaniem Rozprzestrzenienie języków sktyptowych, rys historyczny i przegląd języków skryptowych Wzorce programistyczne, w szczególności wzrorce skryptowe 5

Czym właściwie jest program skryptowy? (skrypt/script) A script is something you give the actors. A program is what you give the audience. Larry Wall Brak kompilacji Nastawienie na prduktywność, prostota konstrukcji (składnia TCL to ok. 11 pargrafów, dwie strony druku) W sczególności automatyczne zarządzanie pamięcią, zoptymalizowane wbudowane użyteczne typy (np. napisy, tablice asocjacyjne) Często brak kontroli typów (np. wszysto jest napisem) 6

Do czego służą skrypty Nie służą do pisania kompletnych i rozbudowanych programów, przeciwnie, są klejem do składania wielu programów w jeden system! nazywaje czasem systems integrations languages (znów przykład TCL, Julia) Rozbudowa/dopasowanie funkcjonalności programów Ułatwienie integracji komponentów Skrypty są bardzo małe i ich szybkość zależy od szybkości programów/komponentów przez nie używanych 7

Dlaczego czasem warto używać języków skryptowych Wydajność pracy programisty : M/N N linii programu! M instrukcji CPU Najprostszą miarą wykonanej pracy przez programistę jest LOC (Line Of Code)! kloc komentarze? styl? LOC! język programowania! liczba instrukcji/linie kodu 8

N/M przykłady Jedna linia skryptu bash to ok 300 instrukcji maszynowych Przeciętny program w pythonie jest od 3 do 10 razy krótszy niż w Javie Czas programowania (" Wasz czas!) z reguły o wiele krótszy Stąd nazwa VHLL very high programming languages 9

Więcej przykładów Lutz Prechelt An empirical comparison of seven programming languages. IEEE Computer 33(10):23-29, October 2000. Program: konwerter nr. telefonu! słowo: 048-5653399687 == 048- koledzy- 687 3 j. systemowe (C, C++, Java) 4 j. skryptowe (Perl,python, Rexx, TCL), studenci i wolontariusze z usenet 10

Wyniki empirycznych pomiarów Czas pisania programu / ilość linii: 11

Wyniki empirycznych pomiarów Szybkość programów / zużycie pamięci: 12

Program skryptowy: skrypt uruchomienie Nazwa (script: scenariusz) Interpretowany linia po linii wraz z interpretacją następuje: 1. walidacja (analiza syntaktyczna) 2. interepretacja (semantyka) Instrukcje warunkowe powodują pominięcie bloków instrukcji skryptu Pominięte linie te mogą zawierać błędne instrukcje których walidacja (analiza syntaktyczna) nie następuje (być może nigdy). Przykład: konfigurator trygera, walidator konfiguracji, błąd składniowy wykryty po 4 latach działania. 13

Co w zamian za kompilację? Kompilator naszym przyjacielem (i wrogiem) doświadczony programista poprawia błąd kompilacji w ok ~2min. 2min x koszt pracy jest ceną za naprawę usterki Ale niestety ten cykl nie jest jedyny następne etapy dłuższe (czasowo) Nowy raczej złośliwy klolega (personifikacja kompilatora): - kompilator się czepia... - kompilator nie pozwala... - przed chwilą pokazywał jeden błąd a teraz 10... niejednodowne (uruchomienie, debugowanie... zupełnie różne) 14

Cykl pracy z kodem programu Języki kompilowane edit compile execute test & debug najtańszy cykl (max. kilka minut) b. drogi cykl Języki skryptowe edit execute debug 15

(Nie)stosowalność języków skryptowych Program: algorytmy + struktury danych Nie wszystkie j. skryptowe pozwalają na definicje złożonych struktur danych (np. bash to tylko tekst, ew. tablice) Bądź złożonych algorytmów (np. bash nie obsługuje operacji na liczbach zmienno- przecinkowych) 16

Apostołowie najlepszych rozwiązań Podchodź ostrożnie do podpowiedzi ekspertów, którzy nie muszą wysłuchać do końca opisu twojego problemu a już wiedzą jakie jest najlepsze rozwiązanie. 17

Rys historyczny JCL (Job Control language) IBM mainframe!...! shell systemów wielozadaniowych (bash) SETL (lata 60 NY)! ABC (80 Holandia)! Python(91 Holandia) JavaScript (94 Netscape)! ECMA (standaryzacja) ROOT/CINT (91 CERN)! tendencja podchwycona przez przemysł w postaci interpretera zintegrowanego z kompilatorem clang (CLING) 18

The big 6 JavaScript web apps. + natywny HTML5 + MS Windows + grafika Perl przetwarzanie tekstu PHP (LAMP)! Linux+Apache+MySql+PHP Python prawie wszędzie, idealny klej TCL pionier, zaprojektowany do współpracy z modułami w C VisualBasic w Excelu (najwięcej linii kodu na świecie) 19

Inne języki o których powinniście usłyszeć + DSL LUA! superszybki, używany do programowania gier (scenariusze, plansze np. Roblox) lisp AWK, sed DSL: HTML, SQL, YACC, Mathematica, matlabl 20

Wzorce programistyczne Podobne do sposobów rozwiązywania całek: Jeśli w liczniku jest wielomian a w mianowniku... to wtedy przez części... a dalej Podobnie jest ze wzrorcami programistycznymi: Jeśli musisz skonstruować złożony obiekt... użyj wzorca builder. Część wzorców OO stosuje się do programów skryptowych. Możliwe i b. przydatne są inne wzorce implementowalne tylko w j. skryptowych. 21

Wzorce OO Konstrukcja: Singleton-, Fabryka-, Metoda konstrukcyjna+, Budowniczy+, Prototyp+ Zachowania: Łańcuch odpowiedzialności+, Wiadomość+, Interpreter, Iterator-, Mediator+, Memento-, Obwerwator+, Strategia+, Metoda szablonowa+, Wizytator-, Struktura: Adapter, Most-, Kompozyt+, Dekorator+, Pyłek+, Zastępca+ 22

Wzrorce OO w skryptach Wzorce konstrukcyjne z reguły nie mają zastosowania: jeśli wytworzenie obiektu/pliku/... jest złożone/powtarzalne zwykle dobrze jest oddzielić je od logiki programu Wzorce zachowań: Łańcuch odpowiedzialności! łączenie inctrukcji w potoki: cat dane grep xyz grep v ala > filtrowane Wiadomość: generacja skryptów Interpreter: oh yes, bez wysiłku Iterator: z reguły wbudowane, nawet w bashu Mediator, obserwator: rzadko potrzebny... inne techniki jeszcze rzadziej potrzebne Wzorce strukturalne: także rzadko potrzebne 23

Specyficzne wzrorce skryptowe Dane jako skrypt! - - - Active file Normalnie dane (np. wynik częściowy) składuje się w formacie niezależnym od kodu programu Należy z reguły wybrać format (np. XML, binary) napisać kod odpowiadający za konwersję: transient $! persitent W przypadku języków skryptowych można dane zapisać jako kod skryptu: transient! persistent (persitent! transient automatyczny) Tak można bardzo wygodnie dodać konfigurator naszego skryptu: np. bash source ~/.lab.conf... 24

Specyficzne wzrorce skryptowe Ładowacz - - - Bootstrap script Zamiast przetwarzać dane (np. skomplikowane pliki) najpierw konwertujemy dane do postaci skryptów Aliasowanie - - - Command interceptor W przypadku gdy zachodzi potrzeba rozbudowy zachowania jakiejs komendy (np. rm - > mv ~/.trash) Albo wtedy gdy chcemy uprościć wykonanie jakiegoś polecenia: alias ls= ls ltr sort k5 n Interpreter - - - Wykonywanie skryptu w skrypcie bardzo częste i przydatne 25

Podsumowanie Języki skryptowe są i wiele sprawniejsze jako języki integracyjne systemów (klej) Są niezastąpione jako automatyzatory Są o wiele prostsze od języków systemowych Nie nadają się jednak do wszystkich zadań! 26

Następny wykład Następny wykład wstęp do przetwarzania tekstu w bash 27