Wstęp do informatyki. Język maszynowy. Programowanie komputerów PC. Cezary Bolek

Podobne dokumenty
Wstęp do informatyki. Język asemblera. Język maszynowy. Programowanie komputerów PC. Cezary Bolek

Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

Magistrala danych Magistrala adresowa Magistrala steruj ROM, RAM CPU In/Out CPU RAM CPU Magistrala danych Magistrala adresowa Magistrala steruj

Podstawy Informatyki Języki programowania

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

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

Podstawy programowania

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

Wstęp do programowania

Podstawy programowania wykład

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

Język programowania PASCAL

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

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

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Algorytm. a programowanie -

Języki i metodyka programowania

Podstawy programowania. Wykład 1 Wstęp. Krzysztof Banaś Podstawy programowania 1

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Programowanie I. Wprowadzenie. Proces programowania

Programowanie komputerów

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

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

2.8. Algorytmy, schematy, programy

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

Algorytmika i pseudoprogramowanie

Podstawy Programowania. Języki programowania

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

Wstęp do informatyki Paradygmaty programowania

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Środowiska i platformy programistyczne

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

Paradygmaty Programowania dr inŝ. Cezary Bolek

Praktyka Programowania

Magistrala systemowa (System Bus)

Język ludzki kod maszynowy

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

Podstawy Programowania. Wykład 1

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Tworzenie oprogramowania

Wstęp do programowania

Informatyka. Prowadzący: Dr inż. Sławomir Samolej D102 C, tel: , WWW: ssamolej.prz-rzeszow.

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

Ćwiczenie nr 6. Programowanie mieszane

Programowanie w C. dr inż. Stanisław Wszelak

Wprowadzenie do programowania

Algorytmy od problemu do wyniku

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

ALGORYTMY I PROGRAMY

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

Translacja wprowadzenie

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Architektura komputerów

Zapisywanie algorytmów w języku programowania

TEST KOŃCOWY DLA KLASY III GIMNAZJUM- POGRAMOWANIE. Szkoła Podstawowa Nr 5. im. Księcia Mazowieckiego Siemowita IV w Gostyninie.

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA ALGORYTM. Język programowania PROGRAM. instrukcja-dla. instrukcja-przypisania.

Języki i paradygmaty programowania. I. Wprowadzenie

Wstęp do Informatyki dla bioinformatyków

Wstęp do programowania

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Programowanie w języku Python. Grażyna Koba

Wstęp do Informatyki i Programowania

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

1. WSTĘP. Dr inż. Robert Wójcik, p. 313, C-3, tel

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

Java EE produkcja oprogramowania

Algorytmy. Programowanie Proceduralne 1

Wstęp do programowania

Algorytmy i struktury danych

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Podstawy Programowania Algorytmy i programowanie

Wykład 1


Programowanie RAD Delphi

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!

Jerzy Nawrocki, Wprowadzenie do informatyki

Programowanie niskopoziomowe

Algorytmy. Programowanie Proceduralne 1

1 Wprowadzenie do algorytmiki

Języki programowania Język programowania Język maszynowy Kod maszynowy

Podstawy programowania w języku C

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

Podstawy programowania. Wprowadzenie

Historia modeli programowania

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

O (o)programowaniu. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

dr inż. Paweł Myszkowski Wykład nr 5 ( )

Proste algorytmy w języku C

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Paradygmaty programowania

Informatyka na UG... Witold Bołt

Geneza powstania języka C++

Programowanie I. Kornel Warwas. ATH Katedra Matematyki i Informatyki

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

1 Podstawy c++ w pigułce.

Wstęp do Informatyki Programowanie komputerów PC c.d.

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Transkrypt:

Wstęp do informatyki Programowanie komputerów PC Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Program komputera Komputer jest maszyną wykonującą polecenia odczytywane z pamięci operacyjnej (instrukcje procesora kod programu) Instrukcje procesora dotyczą prostych operacji na rejestrach wewnętrznych oraz odczycie i zapisie komórek pamięci. Interakcja maszyny z uŝytkownikiem odbywa się poprzez urządzenia we/wy, które zamieniają sygnały wysyłane przez człowieka i zamieniają je na postać cyfrową i odwrotnie. ROM, RAM CPU ALU In/Out Rejestry procesora Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 2 Język maszynowy Pamięć operacyjna ROM + RAM np. Instrukcja procesora (kod programu) w pamięci zapisane są w postaci liczb dwójkowych. Zapis programu za pomocą liczb, które mogą być bezpośrednio wykonywane przez maszyną nazywa się językiem maszynowym. 01001000 00001000 11001010 00001011 11111110 48 h 08 h CA h 0B h FE h, 48, 08, CA, 0B, FE, Pisanie programów w języku maszynowym przez człowieka jest bardzo Ŝmudne, ale było stosowane do programowania komputerów I i II generacji. Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 3 1

np. 48 h 08 h CA h 0B h FE h Język asemblera KaŜdej instrukcji procesora (która moŝe zajmować jeden lub więcej bajtów) moŝna przypisać skrót literowy (mnemonik), a kaŝdemu rejestrowi nazwę. Zapis programu za pomocą mnemoników nazywa się językiem asemblera, który jest znacznie łatwiejszy do opanowania przez człowieka. BL,8 ADD BL,B INC BL BL,8 ADD BL,B INC BL Program zapisany w języku asemblera nie moŝe być wykonywany bezpośrednio przez komputer i wymaga tłumaczenia na kod maszynowy za pomocą programu zwanego asemblerem. PoniewaŜ istnieje ścisły związek pomiędzy mnemonikami a instrukcjami maszynowymi, proces tłumaczenia (asemblacja) jest stosunkowo prosty. Proces odwrotny nazywa się deasemblacją (za pomocą disasemblera). BL,8 ADD BL,B INC BL Asembler, 48, 08, CA, 0B, FE, Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 4 Języki wysokiego poziomu Program zapisany w języku wysokiego poziomu charakteryzuje: Abstrakcja danych programista operuje na zmiennych bez konieczności organizacji wykorzystania rejestrów procesora i lokalizacji liczb w pamięci ZłoŜone struktury danych proste jest deklarowanie i korzystanie ze złoŝonych struktur liczb jak np. tablice (macierze), stosy, kolejki, drzewa, etc. Zaawansowane konstrukcje sterujące określenie kolejności wykonywania programu realizuje się z pomocą intuicyjnych konstrukcji warunkowych typu IF-THEN-ELSE, FOR, DO-WHILE, etc. Dowolność układu zapisu programu programista moŝe zapisywać program w postaci najbardziej dla niego czytelnej i zgodnej z upodobaniami. for (i=1; i<10, i++) { n=10+x*2 }; for (i=1; i<10, i++) { n=10+x*2 }; for (i=1; i<10, i++) { n=10+x*2 }; Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 5 Kompilacja programów Programy napisane w językach wysokiego poziomu muszą być tłumaczone na język maszynowy za mocą programu zwanego kompilatorem, a proces tłumaczenia nazywa się kompilacją. for (i=1; i<10, i++) { n=10+x*2 }; Kompilator, 48, 08, CA, 0B, FE, BL,8 ADD BL,B INC BL Kompilacja programów jest zadaniem bardzo złoŝonym, ze względu na mnogość moŝliwości realizacji zadania w języku asemblera. Kompilatory są jednymi z najbardziej zaawansowanych i złoŝonych programów dla komputerów osobistych. X = X + Y*Z MUL ADD AL,X BL,Y CL,Z CL,BL AL,CL X,AL lub MUL ADD AL,Y BL,Z MUL AL,BL ADD BL,X lub AL,BL X,AL AL,Z AL,Y CL,X X,AL Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 6 2

Przykład - algorytm Euklidesa Znajdowanie największego wspólnego podzielnika Największy Wspólny Dzielnik (NWD) dwóch liczb jest największą liczbą naturalną spośród tych, które dzielą obie te liczby bez reszty Np. NWD(24,18) = 6. Aby znaleźć Największy Wspólny Dzielnik dwóch liczb, to od większej liczby naleŝy odejmować mniejszą dotąd, aŝ obie liczby będą sobie równe. Wynik jest ich największym wspólnym podzielnikiem. NWD(24,15) 24-15 = 9 15-9 = 6 Od większej liczby odejmujemy mniejszą. Liczby 24 i 15 przechodzą w 15 i 9. PoniewaŜ nie są one równe, wykonujemy dalej odejmowanie Teraz otrzymujemy parę 9 i 6, która dalej nie składa się z liczb sobie równych, więc kontynuujemy odejmowanie. 9-6 = 3 Para 6 i 3 - odejmujemy dalej 6-3 = 3 Para 3 i 3 - otrzymaliśmy równość, więc liczba 3 jest największym wspólnym podzielnikiem liczb 24 i 15. Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 7 Lista kroków Przykład - algorytm Euklidesa K01: Czytaj a,b K02: Dopóki a b: wykonuj krok K03 K03: JeŜeli a > b, to a a - b. Inaczej b b a K04: nwd a K05: Zakończ algorytm Schemat blokowy Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 8 Algorytm Euklidesa kod maszynowy i asembler b9 18 00 00 00 b8 0f 00 00 00 3b c8 7e 04 2b c8 eb 02 2b c1 3b c8 75 f4 33 c0 c3 b9 18 00 00 00 b8 0f 00 00 00 3b c8 7e 04 2b c8 eb 02 2b c1 3b c8 75 f4 33 c0 c3 mov ecx, 24 mov eax, 15 cmp ecx, eax $L591: jle SHORT $L584 sub ecx, eax jmp SHORT $L585 $L584: sub eax, ecx $L585: cmp ecx, eax jne SHORT $L591 xor eax, eax ret 0 Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 9 3

Od języka wysokiego poziomu do kodu maszynowego program Euclide; var m,n : integer; begin readln(m); readln(n); while m <> n if m > n then m := m n else n := n - m; writeln(m); end. $L591: $L584: $L585: mov ecx, 24 mov eax, 15 cmp ecx, eax jle SHORT $L584 sub ecx, eax jmp SHORT $L585 sub eax, ecx cmp ecx, eax jne SHORT $L591 xor eax, eax ret 0 b9 18 00 00 00 b8 0f 00 00 00 3b c8 7e 04 2b c8 eb 02 2b c1 3b c8 75 f4 33 c0 c3 Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 10 Algorytm Euklidesa Język C i Ada Język C Język ADA with Text_IO; use Text_IO; procedure Euklides is a, b : Integer; begin a := 153; b := 1326; while (a /= b) loop if (a > b) then a := a - b; else b := b - a; end if; end loop; int main(int argc, char* argv[]) { int a,b; printf("podaj a.\n"); scanf("%d", &a); printf("podaj b.\n"); scanf("%d", &b); while (a!= b){ if (a > b) a -= b; else b -= a; } printf("nwd to: %d", a); return 0; } Put_Line("Największy wspólny dzielnik (NWD) to: " & Integer'Image(b)); end; Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 11 Kompilatory optymalizujące Kompilator optymalizujący (optimizing compiler) kompilator, który generuje kod maszynowy optymalny pod pewnym względem, np.szybkości działania lub rozmiaru kodu, korygując program, tak aby nie wpływało to na wyniki jego działania. Optymalizacja programu moŝliwa jest równieŝ poprzez optymalne wykorzystanie zasobów procesora (specyficzne instrukcje, tryby adresowania, wykorzystanie rejestrów wewnętrznych, etc.) FOR I:=1 TO 10 DO BEGIN FOR J:=1 TO 10 DO BEGIN A=I / 100; B:=A + J / 100; WRITE(B); END END oryginalny fragment programu FOR I:=1 TO 10 DO BEGIN A=I / 100; FOR J:=1 TO 10 DO BEGIN B:=A + J / 100; WRITE(B) END END przyspieszenie poprzez eliminację niepotrzebnych obliczeń zmiennej A Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 12 4

Kompilatory skrośne Kompilator skrośny (cross-compiler) kompilator, który generuje kod maszynowy na inny procesor, niŝ ten na którym jest uruchomiony. Kompilatory skrośne uŝywa się do tworzenia oprogramowania dla systemów komputerowych, w których jest to niemoŝliwe ze względu na rozmiary, zastosowanie czy wygodę pracy: telefony komórkowe palmtopy, notesy elektroniczne, gry elektroniczne, etc. sprzęt Audio-Video komputery wbudowane (sterowniki maszyn, ) np. JavaME (micro edition) kompilator programów w języku Java na telefony komórkowe (java.sun.com) Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 13 Debugging Debugging oznacza proces wykrywania błędów w skompilowanych programach w trakcie ich nadzorowanego uruchamiania. Nadzorowane uruchamianie programów polega na wykonywaniu poszczególnych linii programu (praca krokowa) i sprawdzaniu wartości zmiennych w dowolnym momencie wykonywania. Program do nadzorowanego uruchamiania nazywa się Debugger em Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 14 IDE zintegrowane środowisko programistyczne Integrated Develpement Environment (IDE) edytor + syntax highlighting, bracket matching, macros kompilator debugger Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 15 5

Biblioteki Biblioteka jest to zebrana razem grupa podprogramów realizujących określone zadania np. funkcje matematyczne. Podprogramy biblioteczne, skompilowane do kodu maszynowego, dołączane są do programu uŝytkownika podczas jego kompilacji. Proces łączenia plików bibliotecznych ze skompilowanym programem uŝytkownika nazywa się konsolidacją (linking). Program w języku wysokiego poziomu korzystający z funkcji bibliotecznych x=b*c a=sin(x) Biblioteka funkcji matemat. Kompilator Podprogramy biblioteczne Konsolidator instr1 instr2 CALL SIN instr4 instr5 STOP instr1 instr2 instr3 powrót Wykonywalny program w języku maszynowym Kompletny skonsolidowany program Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 16 Przenośność oprogramowania Oprogramowanie przenośne (portable) to takie, które moŝna skompilować i uruchomić pod róŝnymi systemami operacyjnymi, a jego działanie pozostaje niezmienione (np. Acrobat Reader, Netscape, ) Programy w językach wysokiego poziomu są zwykle przenośne, o ile nie koncentrują się na zaawansowanym wykorzystaniu urządzeń we/wy. Problem przenośności oprogramowania sprowadza się zwykle do istnienia przenośnych bibliotek dla języków wysokiego poziomu. np. www.fox-toolkit.org - wieloplatformowa biblioteka graficzna dla języka C++ Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 17 Kompilacja a interpretacja Wykonanie programu napisanego w języku wysokiego poziomu moŝe być realizowane na dwa sposoby: 1. kompilacja całego programu, a następnie jego uruchomienie 2. odczytywanie pojedynczych instrukcji języka, kompilacja w locie i natychmiastowe wykonywanie tzw. interpretacja (przez interpreter) (nigdzie nie jest tworzony kod maszynowy całego programu) Języki programowania moŝna podzielić na dwie kategorie, w zaleŝności od sposobu wykonywania: 1. języki kompilowane: Fortran, C, C++, Pascal, Delphi, Java (częściowo) 2. języki interpretowane: Basic, Java (częściowo), języki skryptowe: Perl, Tcl Zalety kompilacji: duŝa szybkość wykonywania programów, moŝliwość wykonywania się programów bez wspomagania innego oprogramowania. Zalety interpretacji: szybkie testowanie i modyfikowanie programów (brak etapu kompilacji), moŝliwość testowanie niekompletnych programów, znaczna przenośność oprogramowania, istnienie programu tylko w wersji źródłowej. Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 18 6

Języki programowania Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 19 Historia języków programowania 1 Plankalkül (1946, Niemcy) A-O (1951, USA) AutoCode (1952, Wlk.Brytania) FORTRAN I (1957, IBM, USA) pierwszy na świecie język programowania twórca Konrad Zuse, komputer Z3 kmdr. Grace Hopper opracowuje kompilator A-O znany takŝe pod nazwą AT-3 studentka Alick Glennie opracowuje w ramach studiów kompilator AutoCode dla komputera Manchester Mark I rozwinięcie kompilatora A-O; opublikowany pod nazwą Math-Matic; programy numeryczno-modelujące FORTRAN II (1958, IBM, USA) rozwinięcie FORTRAN-u I wprowadzenie podprogramów Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 20 Historia języków programowania 2 COBOL (1959, USA) LISP (1959, USA) Algol 60 (1960) APL (1961, USA) FORTRAN IV (1962, USA) język dla przetwarzania duŝych zespołów danych w systemach ewidencyjno-zarządczych (skrót: COmmon Business Oriented Language) John McCarthy publikuje specyfikację LISP-u (skrót: LISt Processing) międzynarodowy zespół publikuje specyfikację języka Algol 60 Keneth Iversson publikuje specyfikację języka APL ukierunkowanego na zagadnienia matematyczne publikacja specyfikacji czwartej wersji języka FORTRAN Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 21 7

Historia języków programowania 3 Snobol (1962, Bell Labs, USA) BASIC (1964, USA) PL/I (1964, IBM, USA) RPG (1964, IBM, USA) LOGO (1966, USA) język programowania ukierunkowany na przetwarzanie tekstów i wzorców językowych John Kemeny i Thomas Kurtz opracowują język BASIC (skrót: Beginners All-purpose Symbolic Instruction Code) publikacja specyfikacji języka PL/I przeznaczonego do ogólnych zastosowań publikacja specyfikacji języka RPG przeznaczonego do raportowania baz danych (skrót: Report Program Generator) język wzorowany na LISP-ie, ukierunkowany na nauczanie dzieci i osób poznających programowanie Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 22 Historia języków programowania 4 Simula (1967, Norwegia) PASCAL (1968, Szwajcaria) BCPL (1969, Wlk.Brytania) Forth (1970, USA) PROLOG (1970, Francja) język wzorowany na Algolu 60; wprowadzenie pojęcia klasy i obiektu; ukierunkowany na symulacje Niklaus Wirth opracowuje język PASCAL do nauki programowania strukturalnego język niskiego poziomu zawierający wyłącznie bardzo proste typy danych (skrót: Basic Combined Programming Language) Charles Moore opracowuje język wysokiego poziomu Forth stosujący odwrotną notację polską język wysokiego poziomu stosowany w badaniach nad sztuczną inteligencją (skrót: PROgramming LOGic) Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 23 Historia języków programowania 5 Smalltalk (1970, XEROX, USA) Icon (1970, USA) B (1970, USA) C (1972, Bell Labs, USA) Tiny BASIC (1975, USA) pierwszy język całkowicie obiektowy język programowania ukierunkowany na przetwarzanie tekstów i wzorców językowych język bazujący na BCPL opracowany dla komputera PDP-11 Dennis Ritchie opracowuje język C (bazujący na języku B) dla komputera PDP-11 dr Wong opracowuje miniaturową (tylko 2 KB pamięci) wersję BASIC-a dla mikroprocesorów Intela i Ziloga; jest to pierwszy program freeware; w programie uŝyto zastrzeŝeń: All Wrongs Reserved oraz Copyleft Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 24 8

Historia języków programowania 6 BASIC (1975, USA) Bill Gates i Paul Allen opracowują własną wersję BASIC-a, którą sprzedają dla firmy MITS produkującej mikrokomputer Altair, w którym stosowany jest mikroprocesor Intel 8080 DSL (1975, USA) ADA (1977, USA) Modula (1977, Szwajcaria) język będący poprzednikiem PostScriptu Jean Ichbiahn wraz z zespołem opracowują język ADA przyjęty później jako standardowy język programowania Ministerstwa Obrony USA Niklaus Wirth opracowuje język stosujący modularyzację i współbieŝność Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 25 Historia języków programowania 7 Modula-2 (1983, Szwajcaria) C++ (1983, Bell Labs, USA) Perl (1987) Java (1995, Sun, USA) C# (2000, Microsoft, USA) Niklaus Wirth opracowuje ulepszoną wersję języka Modula zespół Bjarne Stroustrupa opracowuje język C++ na bazie rozszerzonego języka C (C z klasami) udostępniona zostaje wersja 1.0 języka PERL opracowanego przez Larry ego Walla i Randala Schwartza; (skrót: Practical Extract and Report Language) zaprezentowano język programowania i środowisko opracowywane od roku 1991 przez zespół Jamesa Goslinga w Sun Microsystems Microsoft prezentuje język C# dla platformy.net będący kompilacją języków C++ i Java Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 26 Dlaczego tak duŝo języków programowania? Ewolucja Osobiste preferencje Specjalne zastosowania Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 27 9

Mnogość języków http://www.oreilly.com/news/graphics/prog_lang_poster.pdf Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 28 Obszary zastosowań Aplikacje naukowe (Fortran, TCE) Aplikacje biznesowe (Cobol) Sztuczna inteligencja (Lisp) Programowanie systemowe (C, C++) Aplikacje sieciowe (Java, C#) Języki bardzo wysokiego poziomu (perl) Języki wysoce specjalizowane (make, sh) Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 29 Co czyni język popularnym? Efektywność kodu Łatwość nauki Łatwość implementacji Open Source Dostępność kompilatorów, bibliotek Ekonomia, patronat, inercja Składnia podobna do języka C Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 30 10

Który język jest najpopularniejszy? http://www.tiobe.com/tpci.htm Ranking TIOBE porównanie popularności języków programowania Prowadzenie badań w oparciu o róŝne wyszukiwarki i źródła danych (WWW, grupy dyskusyjne, blogi) Nie najlepsza miara powszechności stosowania ale dająca ogólny pogląd. Określa częstość wzmiankowania w Internecie, czyli popularność Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 31 Który język jest najpopularniejszy? Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 32 Który język jest najpopularniejszy? Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 33 11

Paradygmaty programowania Imperatywne (C, Pascal, etc.) Funkcjonalne (Lisp, ML, Haskell) Logiczne (Prolog) Zorientowane obiektowo (C++, Java, CLOS) Wstęp do informatyki Cezary Bolek <cbolek@ki.uni.lodz.pl> 34 12