Plan wykładów. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 1. Konkurs programistyczny. Literatura. Dr inż. Tomasz Olas

Podobne dokumenty
Automatyzacja kompilacji. Automatyzacja kompilacji 1/28

Make jest programem komputerowym automatyzującym proces kompilacji programów, na które składa się wiele zależnych od siebie plików.

Fragment wykładu z języka C ( )

Automatyzacja kompilacji. Automatyzacja kompilacji 1/40

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 11

Kompilacja i scalanie programów w linii poleceń gcc i make

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Programowanie w C++ Wykład 10. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 10) Programowanie w C++ 1 / 21

Programowanie Proceduralne

Metryki. Narzędzia do pomiaru złożoności modułowej i międzymodułowej oprogramowania. autor: Zofia Kruczkiewicz

Tworzenie oprogramowania

Wprowadzenie do narzędzia MAVEN

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

Programowanie niskopoziomowe

Zbuduj mi ten projekt, prosz.

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

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!

Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Autotools. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

Wprowadzenie do biblioteki klas C++

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

Java jako język programowania

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

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

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

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Lifehacking dla R. Przemyślenia i rozwiązania w temacie reprodukowalności analiz i organizacji pracy

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

Zaawansowane programowanie w języku C++

WPROWADZENIE DO INFORMATYKI

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

Utworzenie pliku. Dowiesz się:

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

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

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

NETBEANS PROFILER TOMASZ ŁUKASZUK

Zdalne monitorowanie i zarządzanie urządzeniami sieciowymi

Podstawy programowania. Wykład 9 Preprocesor i modularna struktura programów. Krzysztof Banaś Podstawy programowania 1

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

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Programowanie komputerów

Laboratorium 3: Preprocesor i funkcje ze zmienną liczbą argumentów. mgr inż. Arkadiusz Chrobot

X P.I.W.O. Portowanie Tizena na nowe architektury na przykładzie ARMv6. Maciej Wereski Samsung R&D Institute Poland. 17 Maj Poznań, Polska

Systemy Operacyjne. Ćwiczenia

Podstawy wykorzystania bibliotek DLL w skryptach oprogramowania InTouch

PRZEWODNIK PO PRZEDMIOCIE

Programowanie obiektowe zastosowanie języka Java SE

MentorGraphics ModelSim

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

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

REFERAT PRACY DYPLOMOWEJ

Testowanie I. Celem zajęć jest zapoznanie studentów z podstawami testowania ze szczególnym uwzględnieniem testowania jednostkowego.

Programowanie Systemów Wbudowanych

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

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

Uniwersytet Mikołaja Kopernika w Toruniu Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Instytut Fizyki

Szablony funkcji i klas (templates)

Budowa aplikacji webowej w oparciu o Maven2 oraz przykłady testów jednostkowych. Wykonał Marcin Gadamer

Programowanie Komponentowe WebAPI

1. Metryki złożoności modułowej i międzymodułowej Chidamber & Kemerer (CK)

1.Wstęp. 2.Generowanie systemu w EDK

WPROWADZENIE DO JĘZYKA JAVA

Tworzenie oprogramowania

Javadoc. Piotr Dąbrowiecki Sławomir Pawlewicz Alan Pilawa Joanna Sobczyk Alina Strachocka

Międzyplatformowy interfejs systemu FOLANessus wykonany przy użyciu biblioteki Qt4

Dokumentacja kompilacji źródeł aplikacji 1.0

Programowanie współbieżne... (10) Andrzej Baran 2010/11

Podstawy Programowania

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

Zaawansowane programowanie w języku C++ Wstęp

Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

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

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Praktyka programowania projekt

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Pracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki. Podstawy Informatyki i algorytmizacji

1 Zapoznanie się ze środowiskiem Xenomai.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

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

Programy użytkowe (utilities)

Uniwersytet Mikołaja Kopernika. Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej

PROGRAM PRAKTYKI ZAWODOWEJ. Technikum Zawód: technik informatyk

Krótkie wprowadzenie do ModelSim i Quartus2

Systemy operacyjne. Informatyka Stosowana, I rok. Krzysztof Wilk. Katedra Informatyki Stosowanej i Modelowania

Monitorowanie i zarządzanie urządzeniami sieciowymi przy pomocy narzędzi Net-SNMP

Szablony funkcji i szablony klas

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Środowiska i platformy programistyczne

Programowanie Systemów Czasu Rzeczywistego

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

Sieciowa instalacja Sekafi 3 SQL

Laboratorium 2: Biblioteki statyczne i dynamiczne w języku C. mgr inż. Arkadiusz Chrobot

K. Konopko; Toolchain. Jądro Linuksa. dr inż. Krzysztof Konopko

Warsztaty szkoleniowe. Technologia SafetyLon w systemach związanych z bezpieczeństwem funkcjonalnym Narzędzia SafetyLon Moduł 4.5.

Instrukcja laboratoryjna cz.0

Transkrypt:

Plan wykładów Oprogramowanie i wykorzystanie stacji roboczych Dr inż. Tomasz Olas olas@icis.pcz.pl Wybrane narzędzia wspomagajace proces tworzenia oprogramowania Podstawy systemu X Window Biblioteka Qt Tworzenie grafiki trójwymiarowej na przykładzie blioteki OpenGL Programowanie wielowatkowe Poprawa wydajności oprogramowania Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska p. 1/24 Literatura Konkurs programistyczny N. Matthew, R. Stones: Zaawansowane programowanie w systemie Linux, Helion, 2002. D. Solin: Poznaj programowanie przy u yciu biblioteki Qt w 24 godziny, Infoland, 2001 www.trolltech.com. J. D. Folley i inni: Wprowadzenie do grafiki komputerowej, WNT. R. S. Wright jr, M. Sweet: OpenGL księga ekperta. Helion, 1999 P. Andrzejewski, J. Kurzak: Wprowadzenie do OpenGL, Kwantum 2000. Witryna internetowa projektu OpenGL: www.opengl.org. B. Lewis, D. J. Berg: Multithreaded Programming with Pthreads, Sun Microsystems Press, 1998. B. Nichols, D. Buttlar: Pthreads Programming, O Reilly 1996. Adres strony www konkursu: www.power.com.pl/pl/konkurs p. 3/24

Konstrukcja wielomodułowa programów Make Zapewnia logiczna strukturę i poprawia czytelność programu. Niezależne moduły moga być oddzielnie testowane i po kompilacji wykorzystywane w różnych programach. Umożliwia wykorzystywanie w programie w języku C/C++ procedur napisanych w innych językach programowania. Zwiększa szybkość kompilacji w trakcie modyfikowania programu. Make jest narzędziem automatycznie określajacym, które fragmenty kodu wymagaja ponownej kompilacji i wykonuje ich kompilację. Plik makefile (Makefile) - opisuje relacje pomiędzy plikami w projekcie oraz polecenia służace do uaktualniania poszczególnych plików. wywołanie: make make -f makefile_name make nazwa_reguly Reguły, dyrektywy i definicje makr powinny rozpoczynać się w pierwszej kolumnie tekstu, natomiast polecenia musza być poprzedzone co najmniej jednym znakiem pustym. p. 5/24 Make - reguły Make - makrodefinicje Można rozróżnić dwa rodzaje reguł: Reguły jawne: zbiór_uakt [zbiór_uakt [...]]: {{ścieżki}][zbiór-uzal...] polecenie foo.o : foo.c defs.h gcc -c -g foo.c Reguły niejawne: [katalog_źródł].rozsz_źródł[katalog_docelowy].rozsz_docelowe: polecenie.c.o: gcc -c $< Definiowanie makrodefinicji: nazwa_makrodefinicji=tekst_rozwinięcia PROGRAM=bierki OBJS=foo.c Rozwijanie makrodeficji: $(nazwa_makrodefinicji) $(PROGRAM): $(OBJS) g++ -c $(OBJS) -o $(PROGRAM) p. 7/24

Make - makrodefinicje predefiniowane Make - przykład $* - Makro to rozwija się w nazwę zbioru uzależniajacego (ze ścieżka dostępu, lecz bez rozszerzenia). $< - Makro to działa tak jak $*, z ta różnica, że uzyskana nazwa zbioru zawiera rozszerzenie. $@ - Makro to rozwija się w nazwę zbioru uzależnianego (wraz z jego rozszerzeniem). $: - Ta makrodefinicja rozwija się w ścieżkę dostępu do zbioru, ale bez jego nazwy. Jeśli występuje w regułach jawnych, to uzyskana zostanie ścieżka zbioru docelowego, w niejawnych zaś ścieżka zbioru przetwarzanego. PROJECT = bierki INC =./include INSTALLBIN = $(HOME)/opt/bin CXX = g++-2.95 CXXFLAGS += -I$(INC) OBJS = $(PROJECT).o okno.o all: $(PROJECT) %.o: %.cpp $(CXX) $(CXXFLAGS) -c -o $@ $< $(PROJECT): $(OBJS) $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) clean: -rm -rf *.o realclean: clean -rm -rf $(PROJECT) p. 9/24 ake - automatyczne generowanie zależności Make - reguły standardowe Kompilator gcc posiada opcje -M, -MM, które generuja zależności od plików nagłówkowych dla przetwarzanego pliku źródłowego. Przykład: depend: $(CXX) -MM $(CXXFLAGS) *.cpp > depend.mk... include depend.mk Przykładowe wygenerowane zależności: domain.o: src/domain.cpp include/domain.h include/fxdrstream.h \ include/except.h fxdrstream.o: src/fxdrstream.cpp include/fxdrstream.h mpi_wrapper.o: src/mpi_wrapper.cpp include/mpi_wrapper.h Istnieje zbiór reguł, których stosowanie powoduje, że pliki makefile sa znacznie prostsze do zrozumienia i stosowania: all test clean dist distclean realclean install uninstal p. 11/24

Narzędzia wspierajace program make GNU Autoconf (I) makedepend - służy do automatycznego generowania zależności pomiędzy plikami w projekcie. Dostarczany razem z systemem X Window. Imake - służy do mechanicznego generowania plików makefile dla systemu X. Opiera się na wywołaniu programu makedepend autoconf - generuje skrypt powłoki configure dopasowany do projektu. automake - narzędzie podobny do autoconf - umożliwia generowanie plików makefile, posiadajacy jednak wbudowane mechanizmy badania zależności (podobna do programu Imake). tmake - narzędzie firmy TrollTech pierwotnie utworzone dla biblioteki Qt, ale może być wykorzystywane również w innych projektach. Autoconf jest narzędziem (zestawem makr M4) służacym do generownia skryptów powłoki, które pozwalaja na automatyczne dostosowanie pakietów oprogramowania (w postaci kodu źródłowego) do specyfiki wielu różnych systemów operacyjnych. Wygenerowane skrypt konfiguracyjny (configure) jest niezależny od narzędzia Autoconf i podczas kompilacji pakietu nie jest ono wymagane. Skrypt configure wykonuje szereg testów majacych na celu sprawdzenie, czy i ewentualnie gdzie w systemie znajduja się narzędzia, biblioteki, pliki nagłówkowe niezbędne do poprawnego utworzenia programu. Po określeniu środowiska w którym kompilowany jest program skrypt ten powinien wygenerować odpowiednie definicje i opcje kompilacji. Często narzędzie Autoconf jest stosowany w połaczeniu z programami Automake i Autoheader. p. 13/24 GNU Autoconf (II) Tworzenie skryptu configure Szczególnie ważna kwestia przy tworzeniu plików wejściowych dla programu Autoconf jest określenie, co należy sprawdzać przy kompilacji programu na różnych platformach systemowych. Plik konfiguracyjny tworzy się w oparciu o makra sprawdzajace: Autoconf zawiera zbiór makr sprawdzajacych dla teypowych elementów, w przypadku braku gotowego testu dla danego elementu (pliku nagłówkowego, bibilioteki, funkcji) można wykorzystać test ogólny (np. na obecność pliku w systemie plików), w ostateczności należy utworzyć fragment testujacy w języku Bourne shella. W celu wygenerowania skryptu configure należy utworzyć plik konfiguracyjny dla programu Autoconf: configure.ac (lub configure.in). Przykładowa struktura pliku configure.ac: Uworzenie pliku configure nastapi po uruchomieniu programu autoconf. p. 15/24

Autoconf - przykład (I) Autoconf - przykład (II) AC_INIT(sample,0.1) AC_PROG_CXX # Checks for performing tests CPPUNIT="no" AC_ARG_ENABLE(test, [--enable-test enable test suite [default=yes]],,enable_test="yes") if test! "x$enable_test" = "xno"; then AC_PATH_PROG(CPPUNIT_CONFIG,cppunit-config,no) if test "x$cppunit_config" = "xno"; then AC_MSG_ERROR([cppunit is needed but not found.]) fi CPPUNIT="yes" CPPUNIT_CFLAGS= $CPPUNIT_CONFIG --cflags CPPUNIT_LIBS= $CPPUNIT_CONFIG --libs AC_SUBST(CPPUNIT_CFLAGS) AC_SUBST(CPPUNIT_LIBS) fi AC_SUBST(CPPUNIT) AC_CONFIG_FILES(Makefile) AC_OUTPUT Plik Makefile.in:... # CppUnit flags ifeq ($(CPPUNIT), yes) CXXFLAGS += @CPPUNIT_CFLAGS@ LDFLAGS += @CPPUNIT_LIBS@ endif $(OBJ)/%.o: $(SRC)/%.cpp $(CXX) -c $(CXXFLAGS) -o $@ $< $(PROGRAM): $(OBJS) $(CXX) -o $(PROGRAM) $(LDFLAGS) $(OBJ) p. 17/24 Jam Jam kontra Make Jednym z ciekawszych projektów, które w przyszłości moga zastapić program make jest Jam. Zalety: Zwiększenie projektu nie prowadzi do tak drastycznego zwiększania się pliku konfiguracyjnego jak ma to miejsce w przypadku programu make. Automatycznie generowane sa zależności od plików nagłówkowych. Jam buduje duże projekty rozmieszczone w wielu katalogach za jednym podejściem, bez rekursywnego nawracania jak to robi make, śledzac wszystkie pliki jednocześnie. Może pracować na wielu procesorach. Jam jest mały (np. 92 kb), praktycznie nie obciaża procesora, i nie tworzy dodatkowych plików (jak np. nmake, SunOS make). Może być dowolnie konfigurowany poprzez tzw. reguły (Jamrules). Plik konfiguracyjny dla programu Make: progam: data.o main.o io.o gcc data.o main.o io.o -o progam data.o: data.c gcc -c data.c main.o: main.c gcc -c main.c io.o: io.c gcc -c io.c io.o: io.h main.o: io.h data.h data.o: data.h io.h Plik konfiguracyjny dla programu Jam: Main progam : data.c main.c io.c ; p. 19/24

Apache Ant (I) Apache Ant (II) Apache Ant jest częścia projektu Apache Jakarta. Opiera się na podobnym założeniu co make jeżeli chodzi o zależności i reguły, ale nie zakłada że sa to pliki i że głównym celem reguł jest uaktualnienie zadań. Używa języka XML. Jest w pełni niezależny od platformy. Został napisany z myśla o Javie, ale posiada również wsparcie do tworzenia projektu w innych językach programowania (również w C++). Ant jest napisany całkowicie w Javie. Plik konfiguracyjny dla programu Ant jest plikiem w formacie XML. Zazwyczaj nosi nazwę build.xml. Składa się on z różnej ilości różnych tagów, zwanych <target> (cel). Może to być np. kompilacja, utworzenie archiwum, utworzenie dokumentacji czy też wysłanie poczty elektronicznej. Każdy cel składa się z dowolnej ilości wykonywanych zadań <task>. Jest to prosta czynność, która będzie wykonywana, np. tworzenie katalogu, kopiowanie pliku, kompilacja kodu źródłowego. Każde zadanie może posiadać parametry i być zależne od innych zadań. p. 21/24 Apache Ant - przykładowy plik build.xml Kontrola wersji <?xml version="1.0" encoding="iso-8859-2"?> <project name="first" basedir="." default="compile"> <path id="log4jclasspath"> <pathelement location="${basedir}"/> <pathelement location="/../wspolne.jar"/> </path> <target name="compile"> <javac srcdir="." classpathref="classpath" /> </target> <target name="run"> <java classpathref="" classname="org.gridwise.simple" /> </target> </project> p. 23/24 Kod ewoluuje. W czasie gdy projekt zmienia się z prototypu w wersję ostateczna przechodzi przez wiele cykli, w których programiści badaja nowe trendy, usuwaja błędy i stabilizuja swoje osiagnięcia. Ewolucja kodu powoduje wiele problemów, które moga być źródłem konfliktów i dodatkowej pracy, zmniejszajac w ten sposób efektywność. Jednym z ważniejszych problemów jest możliwość powrotu do starej wersji. Równie ważna jest możliwość rejestracji zmian. Kolejnym problemem jest śledzenie błędów. Często otrzymywany jest raport o błędzie w konkretnej wersji programu, podczas