Instrukcja
Transkrypt
Instrukcja
Laboratorium Kierunki Rozwoju oprogramowania Ewolucja języka C++ 1. Instalacja najnowszego GCC. Dokładny opis https://gist.github.com/application2000/73fd6f4bf1be6600a2cf9f563 15a2d91#file-how-to-install-latest-gcc-on-ubuntu-lts-txt 2. Instalacja clang-4.0. Opis w sekcji Install (development branch) http://apt.llvm.org/ 3. Kompilacja przy użyciu GCC z wykorzystaniem wszystkich dostępnych funkcji z najnowszego standardu: gcc main.cpp -o main -std=c++1z -fconcepts 4. Kompilacja przy użyciu pakietu LLVM clang++ main.cpp -o main -std=c++1z -fconcepts 5. Otwórz plik nullptr_example.cpp, przeanalizuj go i zastanów się czy wszystkie linie kodu wykonają się/powinny się wykonać, a następnie skompiluj z wykorzystaniem kompilatora G CC w wersji nie wyższej niż 5. Przeprowadź tą samą procedurę z wykorzystaniem GCC6. Dlaczego kod pomimo niezgodności typów zachowuje się w ten sposób? 6. Otwórz plik 01.cpp, przeanalizuj go i postaraj się: ○ Zastąpić tablice wektorami ○ Usunąć (jeżeli to możliwe) allokowanie i deallokowanie pamięci ○ Usuńąć błędy logiczne i składniowe ○ Zastąpić (jeżeli możliwe) fragmenty kodu funkcjami lambda ○ Wykorzystać funkcje z STL <algorithm> ○ Zoptymalizować program (CPU Cache) Zachowaj źródło. 7. Otwórz plik rvo.cpp. Przeanalizuj jego zawartość a następnie skompiluj używając dodatkowej flagi -fno-elide-constructors. Skompiluj plik bez flagi i porównaj wynik. Zanotuj swoje przemyślenia. 8. Wykonaj powyższe polecenie dla pliku cheap-move.cpp (zamiast dodawania flagi do polecenia odkomentuj linijkę 9 i 13). Plik uruchamiaj z wykorzystaniem polecenia time: time ./main. Porównaj wynik i zastanów się skąd bierze się różnica. Opisz swoje przemyślenia. 9. Ściągnij i skompiluj przykłady z wykładu. Dodaj więcej wartości do wektora wejściowego (możesz użyć nagłówka <random> i generatora liczb pseudolosowych mt19937 z rozkładem równomiernym). Dodaj dodatkowe warunki jakie muszą być spełnione względem wektora wejściowego aby można go było przetworzyć (wszystkie/co najmniej jedna/żadna wartość nie spełnia warunku, funkcja warunkowa powinna być parametrem). Zadbaj o to by ziarno dla generatora liczb pseudolosowych było inne przy każdym uruchomieniu programu. Zachowaj kod źródłowy W sprawozdaniu powinien znaleźć się kod źródłowy z punktu 6 i 9, a także odpowiedzi na pytania z punktów 5, 7 i 8 w postaci pliku tekstowego. Całość spakuj do archiwum zip (“imię_nazwisko.zip”) i wyślij na adres e-mail prowadzącego z tytułem [ KRO][LAB01]Imię_nazwisko