Języki programowania


Języki programowania

Na czym polega programowanie? Podstawowe pojęcia:

Po co programować, skoro są gotowe programy? Rynki niszowe potrzebują nietypowych aplikacji.
Czy zapotrzebowanie na programistów spadnie?

Na czym polega programowanie?
Od przełączania kabli i pisania ciągów bitów do symbolicznych, algorytmicznych języków programowania.
Języki maszynowe i symboliczne języki programowania: zbiór abstrakcyjnych definicji i reguł syntaktycznych, które potrafimy przełożyć na kod maszynowy.

Implementacja języka: konkretną realizacją danego języka dla maszyn określonego typu.
Język i implementacja często mają tą samą nazwę.

Program = zbiór poleceń wybranych zgodnie z dopuszczalnymi przez dany język regułami.
Programy tłumaczące języki symboliczne na języki maszynowe, czyli translatory:

Konsolidacja, linkowanie ( link): scaleniu binarnych fragmentów programu w jedną całość i dołączeniu procedur systemowych, procedur wejścia/wyjścia, funkcji matematycznych z bibliotek systemowych i innych elementów koniecznych do działania programu.

Kompilacja przyrostowa: kompilowanie kolejnych wierszy programu

Debuggery: programy, ułatwiające śledzenie wykonywania się danego programu, nazywane są debugerami, czyli „odpluskwiaczami” lub „odrobaczaczami”. Nazwa "debugging" powstała w 1945 roku, w elektromechanicznym komputerze Mark II były karaluchy w przekaźnikach.

Architektura programu:
moduły - części wykonujące logicznie różne operacje, lokalizacja efektów w modułach.

Paradygmaty programowania:
Programowanie liniowe - wszystko w jednym worku, go to !
Programowanie strukturalne - moduły operujące na lokalnych danych i zmiennych, komunikacja przez przekazywanie parametrów, każdy moduł testowany osobno. Wada: zmiana struktur danych wymaga zmiany wielu modułów.
Programowanie zorientowane obiektowo - dane i programy tworzą jeden obiekt.
Programowanie funkcyjne - odwołania do funkcji.

Style programowania:
Top-down czyli z góry do dołu; najpierw planuje się całość a potem dochodzi do szczegółów.
Bottom-up, czyli z dołu w górę - z elementów składa się całość.

Cykl życia” (life cycle) programu: projekt programu (program design), napisanie programu,  uruchamianie (edycja - poprawianie, translacja, wykonanie), testowanie, rozwijanie, naprawianie i pielęgnacja (maintanence) programu.

Narzędzia do tworzenia oprogramowania: edytory narzędziowe, kompilatory i interpretery, debugery i programy wspomagające tworzące środowisko pracy programisty.

Klasyfikacja języków:

Języki niskiego i wysokiego poziomu (rzędu)

W czym programować?
Ponad 2000 opublikowanych języków programowania!

0x01 graphic

Asembler

0x01 graphic

Asembler - najbliższy kodu maszynowego, wymaga śledzenia zawartości rejestrów, np. dodanie dwóch liczb:

LD rejestr1 adres1
LD rejestr2 adres2
ADD rejestr1 rejestr2

Disasembler: tłumaczy kod maszynowego na asembler

Języki wyższego rzędu często tłumaczą najpierw na asembler, potem na kod maszynowy.

0x01 graphic

Basic

0x01 graphic

BASIC = Begginers All-purpose Symbolic Instruction Code
Co to jest Basic? Standard ANSI dla „pełnego” Basicu z 1987 roku i „minimalnego” Basicu z 1978 roku nie jest przestrzegany.

Zaawansowane cechy:
manipulacja na wybranych bajtach RAM - instrukcje PEEK (zajrzyj) i POKE (wścib),
bezpośredni dostęp do portów zewnętrznych
instrukcje graficzne - brak standardu.

Implementacje: od 5 instrukcji po rozbudowane języki.
Zwykle interpretery, wygodne w interakcyjnej pracy, ale są też kompilatory i kompilatory przyrostowe.

Przykłady:
BASICA, GWBASIC - nieudane wersje Microsoftu.
Professional Basic (Morgan Computing Co) - interpreter, pracuje okienkowo nawet w DOSie.
BetterBasic (SummitSoftware Technology) - kompilator przyrostowy, struktura modułowa.
Turbo Basic (Borland) i Quick Basic (Microsoft) - dwie udane implementacje, środowisko programisty.
QBasic - uproszczona wersja Quick Basic bez środowiska programisty.

Visual Basic - programowanie pod Windows, dostep do funkcji systemu, elementów interfejsu, współpraca z bazami danych.

Dyskusje w grupie Usenetu:  alt.lang.basic

0x01 graphic

Fortran

0x01 graphic

FORmula TRANslation, czyli „tłumacz formuł".

Standard ANSI (American National Standards Institute)
Historia standaryzacji: Fortran II, Fortran IV, 77, 90, 95
Implementacje IBM Fortran G, H.

Z reguły kompilatory, interpreter o nazwie „Watfive” mało popularny.

Nadal się rozwija, chociaż C. Dijkstra, tak pisał o Fortranie już w 1972 roku:

... wady ujawniły się dopiero po 10 latach intensywnego używania, ludzie go projektujący godni są podziwu... jednak im prędzej zapomnimy, że FORTRAN kiedykolwiek istniał, tym lepiej, bo jako nośnik myśli nie jest on już wystarczający: marnuje nasze władze umysłowe, jest zbyt ryzykowny i dlatego zbyt drogi by go używać. ... Modlę się codziennie za moich towarzyszy-programistów, by więcej z nich znalazło sposób na uwolnienie się od przekleństwa kompatybilności.

Jednakże Fortran się rozwinął, Algol upadł. Teoretycy rzadko potrafili przewidzieć rozwój informatyki.

Zastosowania numeryczne, naukowe i inżynierskie, duża szybkość programów,
rozbudowane biblioteki procedur numerycznych.0x01 graphic

Duży stopień standaryzacji: od PC do superkomputerów.
Fortran 90/95 - najlepszym językiem do zastosowań numerycznych?

HPC, High Performance Fortran, Fortran 90, Fortran M

Język F: opracowany w połowie lat 90-tych, rozwiniecie Fortranu do nauki programowania, programy modularne, łatwo zrozumiałe i łatwo się je rozwija. Moduły F można wykorzystywać wielokrotnie podobnie jak obiekty.
F - modułowo zorientowane programowanie, łatwiejsze od obiektowo zorientowanego.

program Sieve_Of_Eratosthenes
!  Znajdź kolejne liczby pierwsze korzystając z sita Erastotenesa.

  integer                            :: last_number
  integer, dimension(:), allocatable :: numbers
  integer                            :: i, number_of_primes, ac

   do    ! początek pętli
      print *, "What is the last number you want to check?"
      read *, last_number
      select case (last_number)
       case (0)
          exit   !   zero ends the testing
       case (:-1, 1, 2)
          print *, "That's not possible, try again"
       case (3:100000)
          allocate (numbers(last_number))
          !  Initialize numbers array to 0, 2, 3, ..., last_number
          !  Zero instead of 1 because 1 is a special case for primes.
          numbers = (/ 0, (ac, ac = 2, last_number) /)
          do i = 2, last_number
             ! if this number is prime, eliminate all multiples
             if (numbers(i) /= 0) then
                numbers(2*i : last_number : i) = 0
             endif
          enddo

          !  Count the primes.
          number_of_primes = count (numbers /= 0)

          deallocate (numbers)

....................

       case default
          print *, "That's too large a value to try"
      end select
   end do
end program Sieve_Of_Eratosthenes

Wady: brak środowisk programistów porównywalnych z innymi jezykami, brak standardu grafiki.

To się zmienia: odrodzenie Fortranu?
Digital Visual Fortran - doskonałe środowisko do programowania w Fortranie 90/95, używa środowiska Microsoft Developer Studio, zintegrowany z Microsoft Visual C++ 5.0 i Visual Studio '97, biblioteki graficzne i numeryczne, etc.

0x01 graphic

APL

0x01 graphic

APL, czyli A Programming Language; APL
W USA w środowisku inżynierów 80% programów w APL

0x01 graphic
   IEEE SIG APL (Special Interest Group - APL)

Specjalne klawiatury do APL, greckie litery.
Komputera jako superkalkulator, rekursja daje wielkie możliwości.
Wielowymiarowe tablice liczb - główne struktury danych.
+/A   sumowanie wszystkich elementów tablicy

Przykład kodu z zamianą symboli specjalnych na ASCII:

[5]

Q{<-}R{<-}{iota}N

@ the ball queue, and a reference copy

[6]

M{<-}H{<-}{iota}0

@ 5-minute and hour tracks

[7]

I{<-}0

[8]

L1:

@ Loop for each five-minute period

[9]

M{<-}M,Q[5]

@ add 5th ball to the 5-minute track

[10]

Q{<-}(5{drop}Q),{reverse}4{take}Q

@ requeue the other 1-minute balls

[11]

{->}(12>{rho}M)/L1

@ If 12 balls in the 5-min track,

[12]

H{<-}H,{neg}1{take}M

@ move the last ball onto the hour track

[13]

Q{<-}Q,{reverse}{neg}1{drop}M

@ requeue the other 5-min balls

[14]

M{<-}{iota}0

@ empty the 5-min track

[15]

{->}(12>{rho}H)/L1

@ If 11 moveable balls in the hour track,

[16]

Q{<-}Q,1{rotate}{reverse}H

@ requeue the hour balls

Język J - nowsza wersja APL, nie wymagającą znaków specjalnych na klawiaturze.

0x08 graphic

APL2 - lansowany przez IBM jako interakcyjne narzędzie do rozwiązywania problemów, wizualizacji danych i dostępu do baz danych.



0x01 graphic

Pascal

0x01 graphic

Zaprojektował go w 1971 roku N. Wirth z Politechniki w Zurychu.
Popularność zdobył dzięki implementacji TurboPascal (1983) firmy Borland.
TP ma wiele rozszerzeń, dobre zintegrowane środowisko: edytor, debuger, projekty, doskonała pomoc, stosunkowo duża szybkość kompilacji i wykonania, ale bardzo długo ograniczenia pamięci do 64 K.
Jest to pierwszy język, którego naucza się informatyków.

Wiele udanych kompilatorów i narzędzi do programowania w Pascalu.

Siła języka - rozbudowane struktury danych.
Typ prosty porządkowy, wyliczeniowy, okrojony, całkowity (shortint, longint, byte), logiczny znakowy (bajt), rzeczywisty (single, double, extended, comp), łańcuchowy, strukturalny, tablicowy, rekordowy, zbiorowy, plikowy, wskaźnikowy.

0x01 graphic

Modula i Oberon

0x01 graphic

Niklaus Wirth niezadowolony z Pascala opracował Modulę - bardziej modularny język nadający się do budowy dużych programów, można w nim też wygodnie pisać kompilatory czy całe systemy operacyjne.

Moduł zawiera związane ze sobą procedury i dane, podobnie jak obiekty, składa się z części definiującej oddziaływanie z innymi modułami i części określającej jego funkcje.

Język pozwala odwoływać się bezpośrednio do sprzętu.

Modula-Prolog do programowania logicznego
Modula/R, od programowania baz danych

Ulepszenia: Modula-2 i  Modula-3 o orientacji obiektowej (DEC Software Research Center)

Wady: brak standaryzacji.

Oberon, Oberon-2 to kolene dwa języki Wirtha, zbliżone do języków obiektowych, mało znane.

0x01 graphic

Język C

0x01 graphic

Na PC najczęściej obecnie używany język.
System Unix napisany w C, standard na stacjach roboczych, stąd jego popularność.

C ma duże możliwości, pozwala dobierać się do rejestrów procesora podobnie jak asembler, łatwo przenosić programy C między różnymi systemami komputerowymi.

Struktury danych w C prostsze niż w Pascalu.

Zawody na najbardziej pokrętne użycie języka C

main(n,i,a,m){while(i=++n)
for(a=0;a<i?a=a*8+i%8,i/=8,m=a==i|a/8==i,1:(n-++m||printf("%o\n",n))&&n%m;);}

"Pisanie programów w C jest jak szybki taniec z brzytwami na śliskiej podłodze".

Narzędzia djgpp do C i C++, zawiera kompilator GCC - wszystko za darmo!
R++, czyli rozszerzenie C++ w stronę logicznych reguł

0x01 graphic

Ada

0x01 graphic

 0x01 graphic
    Ada Lovelace (1811-1852) 0x01 graphic

przyjaciółka Babbage'a, uznawana za pierwszą programistkę na świecie.

Język powstał na zlecenie Departamentu Obrony (DoD) USA, gdyż żaden istniejący język nie spełniał ich wymagań.
Wymagania: zmniejszyć koszty oprogramowania, zapewnić bezbłędność programu (bezpieczeństwo), ułatwić dalszy rozwój oprogramowania (czytelność), stosować naturalne konstrukcje, zapewnić sprawność.

Ada 95 - rozszerza wymagania o większe możliwości współpracy z innymi językami, giętkość konstrukcji języka (używanie obiektów), kontrolę nad zarządzaniem bazami danych i synchronizacją rozproszonych danych oraz standaryzacją bibliotek oprogramowania.

Ada 95 jest pierwszym obiektowo zorientowanym językiem, który przeszedł przez proces standaryzacji.
Jest uniwersalnym językiem programowania, nadaje się również do programowania w czasie rzeczywistym (sterowanie procesami).
Pozwala nawet wstawiać fragmenty kodu maszynowego do programu.
Ada jest językiem bogatym, niełatwo go dobrze opanować.

Przeprowadzone w połowie lat 90-tych badania efektywności programowania w C i w Adzie pokazały, ze koszty rozwoju programów w C były dwukrotnie wyższe. Składa się na to kiepska czytelność programów napisanych w C i trudności w usuwaniu w nich błędów. Na etapie tworzenia programów zanotowano 70% mniej błędów, a na etapie obsługi klienta aż 90% mniej błędów korzystając z Ady zamiast C.

Kompilatory muszą przejść ostre testy zgodności ze standardem.
GNAT to darmowy kompilator Ady 95.

0x01 graphic

Forth

0x01 graphic

Ciekawy język, opracowany przez Charlesa Moore około 1970 roku do sterowania radioteleskopem, początkowo realizacje na 8-bitowych komputerach, 1994 - standard ANSI Forth.

Prosty język, programy są niewielkie, efektywne ale mało czytelne.

Odwrotna Polska notacja (Reverse Polish Notation, RPN), używaną również w popularnych kalkulatorach Hewletta-Packarda. Np. (3+4)*5 trzeba napisać:

3 4 + 5 * . __35 ok

Programowanie = definiowanie słów z listy ok. 30 słów bazowych, słowa kompilowane są w całość i dodawane do listy słów. Hierarchia słów = program.

Wady: mało używany i nie ma chyba szans na rozpowszechnienie.

0x01 graphic

Logo

0x01 graphic

Logo stworzone zostało w latach 60-tych przez Daniela Bobrowa i Wallace'a Feurzeiga z firmy Bolt, Beranek and Newman, Inc.oraz Seymura Paperta, profesora informatyki z MIT.

Logo "ucieleśnia" wiele idei Piageta dotyczących sposobu uczenia się dzieci. Język programowania ma umożliwiać łatwy start - już siedmiolatki mogą go używać - a przy tym stwarzać nieograniczone możliwości w miarę nauki.

Sterowanie "żółwiem" na ekranie lub prawdziwym robotem.
"DOPRZODU 10" (FORWARD 10)  lub "WPRAWO 90" (RIGHT 90)

Duże możliwości przetwarzania list, nie gorzej niż Lisp.

Object Logo (Paradigm Software) na komputery Macintosh i klocki Lego/Logo

Wady: niestety mało rozpowszechniony, a szkoda.

0x01 graphic

Cobol i PL/I

0x01 graphic

COBOL jest akronimem od Common Business Oriented Language;
Głównie do zagadnień finansowych, dla banków, mniej administracyjnych (brak bazy danych), bardzo wielu programistów i wielkie na nich zapotrzebowanie, gdyż problem roku 2000 - głównie z powodu programów napisanych w Cobolu.

Ostatni standard ISO/ANSI wprowadzony w 1985 roku.
The Cobol Foundation dba o rozwój języka.

Konstrukcje zbliżone do naturalnego opisu problemu w języku angielskim, autodokumentacja.
Programy długie ale łatwo zrozumiałe. Rozbudowane struktury danych, np. rozgałęzione typu drzewa, rekordy.

Dobre kompilatory na PC, również darmowe.
Środowiska do budowania graficznego interfejsu użytkownika i środowiska 4 generacji.

Złośliwości: "Cobol, czyli o związkach programowania z łupaniem kamienia."

PL/I, opracowany w 1964 roku, był połączeniem Fortranu i Algolu z COBOLem.
Rozbudowane i niezależne od sprzętu typy danych, dynamiczna alokacja pamięci, prawie 200 wbudowanych operacji na zmiennych numerycznych i tekstowych, dobra komunikacja z urządzeniami zewnętrznymi.

Nigdy nie zdobył większej popularności. 

0x01 graphic

LISP, Prolog i języki sztucznej inteligencji

0x01 graphic

LISt Processing, oparty na matematycznym formalizmie zwanym "lambda-rachunkiem".

Prowadzenia dialogu w języku naturalnym, programy diagnostyki medycznej, systemy algebry symbolicznej.

Język aplikatywny: wszystkie konstrukcje LISPu są wynikiem zastosowania funkcji do argumentów.
Np. wyrażenie x^2+y wymaga funkcji
plus i times: (plus (times x x) y).
Rekurencja, programy jak i dane są listami, programy mogą zmieniać siebie.

Wiele implementacji: Common LISP (1984), rozszerzenia, np. CLOS, CLIM, Iterate i Screamer.

Snobol, String Oriented Symbolic Language, czyli język symboliczny zorientowany w stronę łańcuchów znaków tekstowych.

PROgramming in LOGic czyli ProLog.

Rozwijany od początku lat 70-tych, Marsylia, Edynburg.
Łatwiejszy niż LISP, reprezentacja logiczna wiedzy, analiza języka naturalnego.
Wbudowana baza danych, rekurencja.

Wszystkie projekty w LISPi
e a prototypy programów w Prologu.

Program = zbiór faktów, powiązań (klauzul logicznych) pomiędzy nimi, oraz dyrektyw, czyli zapytań.
Podstawowa struktura danych to drzewo - szczególny rodzaj listy.

Stwierdzenie: "Bocian zjada żaby" zapiszemy jako
ZJADA(Bocian,Żaby)

Pytanie "co zjada bocian".
ZJADA(Bocian,X)

Dobre realizacje na PC, np. TurboProlog (Borland).
Liczne rozszerzenia, Prolog II, Prolog III, Prolog ++ (obiektowy), Visual Prolog.

Expert system shells - powłoki systemów ekspertowych, wystarczy wpisać wiedzę by prowadzić rozumowania.

Przykłady:
CLIPS ( C Language Integrated Production System) i wersja współbieżna PCLIPS - podobny do LISPu
OPS5 - On-line Process Synthesizer, czyli interakcyjny syntezer procesów.
KEE - Knowledge Engineering Environment, czyli Środowisko Inżynierii Wiedzy.
LOOKS - system reprezentacji wiedzy do projektowania systemów doradczych korzystających z programowania logicznego;
POP (Package for On-Line Programming, czyli pakiet programowania interakcyjnego) i
nowsze wersje: POP-11, POP++, POPLER, POPLOG (środowisko), PopTalk do programowania systemów doradczych.

Autoprogramowanie i języki naturalne: do prostych zastosowań, np. raportów z baz danych.
The Last One - język autoprogramowania, napisany już w 1982 roku ...

0x01 graphic

Języki zorientowane obiektowo

0x01 graphic

OOP (Object-Oriented Programming), rozwija się od 1981 roku, pierwszym językiem OOP był Smalltalk.

Klasa jest pewnym wzorcem rzeczy, działania, zjawiska którego dotyczy nasz program.
Najprostsza klasa: liczby określonego rodzaju, np. liczby całkowite lub zmiennoprzecinkowe.
Klasa zawiera również metody, czyli funkcje i procedury, które dają się zastosować do danej klasy.
W przypadku liczb całkowitych są to operacje arytmetyczne.
Konkretne elementy (realizacje) danej klasy to właśnie obiekty.
Obiekty zawierają w sobie zarówno metody (programy) jak i dane.

Program przesyła informację pomiędzy obiektami; działanie programu polega na komunikacji obiektów, tworzeniu zależności między obiektami i modyfikacji ich cech.
Nowe obiekty buduje się w oparciu o już istniejące, poprzez dziedziczenie cech innych obiektów i dodawanie nowych cech.
Do obiektu można wysłać komunikat (dane), obiekt użyje dostępnych mu metod przetwarzania informacji i wyśle komunikaty do innych obiektów.
Nową klasę utworzyć można z innych klas przez dziedziczenie ich danych i metod oraz dodawanie nowych lub zmianę odziedziczonych danych i metod.
Powiązania między klasami wygodnie jest przedstawić w postaci drzewa, na którym zaznacza się klasy-rodziców i ich klasy-potomstwo.

Większość systemów programowania obiektowego zawiera narzędzia pozwalające na przeglądanie takich powiązanych klas ("class browsers" lub "object browsers", czyli przeglądarki klas lub obiektów).

Języki OOP oferują narzędzia do tworzenia obiektów, czyli hermetyzacji (enkapsulacji, zwinięcia) danych i programu w obiekt. Obiekty są wielokrotnie używalne, biblioteki obiektów pozwalają na składanie programu z klocków. Polimorfizm (czyli wielopostaciowość) umożliwia ukrycie wewnętrznej struktury obiektów przez wyposażenie ich w jeden zunifikowany interfejs.

Object Management Group (OMG) opracowała wymagania dla języków zorientowanych obiektowo.

Niezależne testowanie ułatwia pielęgnację programu, oszczędza czas dzięki wielokrotnemu wykorzystaniu obiektów, np. elementów systemu graficznego dialogu z użytkownikiem.

Smalltalk - uniwerslany język, dla potrzeb muzyki, gry komputerowe, inteligentne bazy danych, programy dla robotów, przetwarzanie sygnałów z oscyloskopu, zarządzanie centralami telefonicznymi w USA, systemem kolejkowania na dużych instalacjach komputerowych, testowaniem półprzewodników i oceną kosztów produkcji samochodów, zastosowania w systemach informacyjnych dla potrzeb biznesu.

Sporo udanych implementacji, darmowy kompilator GNU Smalltalk

Eiffel - metoda konstrukcji oprogramowania i dobry język do nauczania programowania.
Sather, wzorowany na Eiffel.

C++, najczęściej stosowany język obiektowy - nie jest to język czysto obiektowy, ma pewne ograniczenia.
Ogromne rozbudowanie i trudne do opanowania środowiska, pełne bardzo rzadko używanych obiektów.

Wiele udanych realizacji: Borland C++ Builder, środowisko 4GL dla C++

Visual C++ 0x01 graphic

Warsztat Programisty (Visual Workbench), środowisko tworzenia programów pozwalające na edycję, kompilację i śledzenie błędów w opracowywanym programie;
Studio Aplikacji (AppStudio) do budowania graficznego systemu dialogu z użytkownikiem i edycji programów;
Czarodziej Aplikacji (AppWizard), szybkie "składanie" obiektów znajdujących się w bibliotece i tworzenie szkieletu programu;
Czarodziej Klas (ClassWizard) , śledzenie wykonywania programu i modyfikację obiektów.

0x01 graphic

DBMS - języki do zarządzania bazami danych

0x01 graphic

SQL, czyli Structured Query Language, najbardziej popularny jezyk DBMS.

Bazy danych zawierają własne języki, np.: Oracle, Ingres, Informix, Paradox, dBase, FoxPro, MS Access ...

Obliczenia w biznesie - np. język ABAP/4, język czwartej generacji.
Jest połączeniem SQL'a i języka wysokiego poziomu. Używany w systemach SAP R/3.

0x01 graphic

Języki czwartej generacji, 4GL

0x01 graphic

CA-Visual Objects, reklamowany jako software "który myśli" ... 0x01 graphic

Delphi  i Delphi Resources

PowerBuilder Enterprise firmy 0x01 graphic

Team Enterprise (Symantec Corp), oraz późniejsza wersja, Enterprise Developer
Oracle Power Objects
0x01 graphic

Plastic Software

Wiele innych: Clarion, Magic, Matrix Layout, Plastic Software, Team Enterprise, Vermont Views, 4th Dimension ...

0x01 graphic

Programowanie wizualne

0x01 graphic

Visual Programming Languages, VPL
Journal of Visual Languages and Computing (Academic Press)

Program w postaci powiązanych ze sobą obiektów zamiast tekstu.

0x01 graphic

AppWare, firmy MicroBrew 0x01 graphic

Wiele innych: Prograph (Pictorius Incorporated), Iconicode (Meta Software), Layout (Objects Inc), VPLus (SimPhonics, Inc), N!Power (Signal Technology), SynchroWorks (Oberon Software, Inc), Synergy (Prodea Software Corp), VisualAge (IBM).

Do zastosowań multimedialnych służą:
Authorware (Macromedia, Inc),
IconAuthor (AimTech Corp),
ForShow (Bourbaki, Inc),
HSC InterActive (HSC Software).

Języki do zadań specjalnych: ARK (The Alternate Reality Kit) i VIPR, programowanie obiektów dla wirtualnej rzeczywistości; Self (Sun Labs), Agentsheets, do tworzenia autonomicznych "agentów programowych";

Do zbierania i przetwarzania danych z eksperymentów:
LabVIEW (National Instruments)
Khoros (Khoral Research).

Do projektowania i testowania systemów komputerowych:
Dataflow MP (Dynetics, Inc.),
Design/CPN (Meta Software).

0x01 graphic

Języki symulacyjne

0x01 graphic

Polskie Towarzystwo Symulacji Komputerowych.

Symulacje i języki wizualne: Matrix_x (Integrated Systems Inc), Simula, Simulink (Matlab)

0x01 graphic

VRML - przykład, przydatny w trójwymiarowej nawigacji hipermedialnej.

VRBL, Virtual Reality Behavior Language, Język Opisu Zachowania w Wirtualnej Rzeczywistości.

0x01 graphic

Języki funkcyjne

0x01 graphic

Ulubione języki informatyków teoretycznych ale na razie mało użyteczne w praktyce.
Pismo: The Journal of Functional Programming

Przykłady:
ML (Meta-Language, czyli meta-język, obejmujący różne wersje, takie jak SML, Lazy ML, CAML),
Haskell, ma duże archiwa;
ASpecT, Concurrent Clean, FP, Gofer, Hugs, Hope, IFP, Miranda, NESL, OPAL, Oz, Sisal.
Grupa dyskusyjna Usenetu comp.lang.functional

0x01 graphic

Programowanie współbieżne

0x01 graphic

Klasyczne języki rozszerzone o możliwości synchronizacji procesów.
Model Linda programowania współbieżnego.

OCCAM i Transputery - specjalna architektura i język.

Fortran FM (Fortran M Programming Language), Parallel Fortran
Współbieżne wersje C++, np. CC++ lub pC++/Sage++
GLU Parallel Programming System
CODE - wizualny system programowania współbieżnego.
Erlang - język programowania współbieżnego stosowany w systemach czasu rzeczywistego.
NESL (A Nested Data-Parallel Language) - funkcyjny język programowania współbieżnego.
 

0x01 graphic

Modelowanie matematyczne

0x01 graphic

Języki numeryczne wyższego rzędu i języki operujące matematycznymi symbolami 0x08 graphic

Derive (Soft Warehouse)
Macsyma Inc
Maple (Waterloo Maple Inc) 
0x01 graphic

Matlab firmy Ma
thWorks , translator mcc, czyli z MATLABA do C
Mathcad firmy Mathsoft
Mathematica, Wolfram Research
TKSolver firmy Universal Technical Systems, Inc.
(UTS)  0x08 graphic

Eureka, Mercury
S, język dla celów statystycznych.
Musimp; Reduce (jeden z najstarszych języków do obliczeń symbolicznych);
Theorist

0x01 graphic

Języki opisu stron i programowania dokumentów

0x01 graphic

Postscript Level 1-3 firmy Adobe
HPGL i PCL 5 firmy Hewlett-Packard
Script/X Apple, Borland, Lotus, WordPerfect i Kaleida Labs, język środowiska multimedialnego.

Authorware - systemy składania interakcyjnych, multimedialnych dokumentów
Toolbook 
0x01 graphic

Tex, Latex, HTML0x01 graphic
  i jego rozwinięcie - XGML

0x01 graphic

0x01 graphic

Java i programowanie stron WWW 0x01 graphic

0x01 graphic

Applety Javy - tysiące programów w Javie jest w Internecie.
Edytory HTML wpomagające wstawianie apletów Java.

Ciekawe gotowe applety: Anfy Team
Przykłady:
podmiana, tunelowanie, transformacje.

Języki skryptowe - JavaScript, CGI, PHP, Perl, DHTML, ActiveX, do programowania stron WWW
Języki skryptowe są interpretowane, np.
JavaScript, VBScript i JScript.

DHTML, dynamiczny HTML, czyli HTML + interaktywne rozszerzenia.
Zwykle są to skrypty JavaScript i kaskadowe arkusze stylów (CSS).
Są różnice interpretacji pomiędzy przeglądarkami.
Typowe efekty: przeciągane rysunki, podświetlane menu, zmiana koloru, kształtu elementu po jego wskazaniu ...
Zalety: dynamiczne, multimedialne, małe strony, wykonywane po stronie klienta.

CSS (Cascading Style Sheet), kaskadowe arkusze stylów.
Skrypty przypisujące style elementom języków HTML i XML, pozwalają na tworzenie złożonych stron WWW.

CGI (Common Gateway Interface).
Najstarszy sposób tworzenia interaktywnych stron WWW;
służy wymianie informacji między serwerami WWW a zewnętrznymi programami.
Zamienia serwer w bramę (gateway) do źródła informacji, np. bazy danych.
Skrypt wywołuje zewnętrzny program podając parametry zaznaczone na stronie przez użytkownika; wynik zwracany jest jako strona HTML.

JavaScript - język obiektowy, niezależny od platformy, interpretowany zwykle przez przeglądarkę WWW.
Typowe efekty: rollover - wskazanie elementu graficznego powoduje jego zamianę na inny obrazek, tekst przesuwa się w okienku lub pojawia się czas i data.

PERL, Practical Extraction and Reporting Language.
Szybkie i łatwe przeszukiwanie dużych zbiorów tekstowych, tworzenie interakcyjnych stron WWW - np. książek gości czy sklepów internetowych.
Perl dostępny jest za darmo dla Linuxa i Windows.
Wady: zawiła składnia poleceń, np. skomplikowane funkcje przetwarzania łańcuchów tekstowych.

PHP (Personal Home Page Tools), PHP: Hypertext Preprocesor.
Darmowy język, licencja open source - dostępny razem z kodem źródłowym.
Jest to język skryptowy + interpreter wykonujący skrypty po stronie serwera.
Kod PHP umieszcza się w dokumencie HTML; przed wysłaniem do przeglądarki serwer przekazuje dokument HTML interpreterowi PHP, który tłumaczy komendy PHP oraz wykonuje odpowiadające im operacje.

SunLabs stworzył bardzo popularny język Tcl/Tk (Tool Command Language/Tool Kit)

0x01 graphic

Programowanie systemów operacyjnych

0x01 graphic

JCL (Job Control Language), stary język dla komputerów centralnych IBM.
Języki skryptowe, np. Shell scripts dla Unixa.
REXX, uniwersalny język poleceń systemowych, działa na komputerach centralnych IBM i PC.
AppleScript, WinScript - języki skryptowe dla komputerów Apple i PC.

0x01 graphic

CASE

0x01 graphic

CASE, czyli Computer Aided Software Engineering, to Komputerowo Wspomagana Inżynieria Oprogramowania.

CASE to rozbudowane narzędzia, środowisko działania programisty biorącego udział w dużych projektach.
Plan całości za pomocą opisu diagramatycznego.
Kilka standardów tworzenia diagramów, np. notacja Gane & Sarson, Bachman, Chen

Większość narzędzi CASE powstała w dużych firmach przemysłowych, które tworzyły złożone oprogramowanie, np:
CASE*Designer (Oracle Systems), MacDonnel Douglas pakiet
Prokit Workbench, S-Designor (Powersoft), SilverRun (Computer Systems Advisers), Excelerator II (Intersolv), ERwin (Logic Works); Application Development Workbench (KnowledgeWare), Systems Architect (Popkin Software & Systems)

0x01 graphic

Przysłowia programisty i ranking języków

0x01 graphic

Zapotrzebowanie na ekspertów od różnych języków programowania: ankieta Computerworld USA
Metodologia programowania; notacja węgierska.

Przysłowia programisty

0. Nie łam reguł, dopóki ich nie poznasz.
1. Zdefiniuj dokładnie swój problem.
2. Najpierw pomyśl, potem programuj.
3. Programuj z góry w dół.
4. Pamiętaj o innych podejściach.

0x01 graphic

Co można zaprogramować?

0x01 graphic

Nie wszystko da się efektywnie zaprogramować!
Zagadnienia NP-trudne, czyli perypetuum mobile informatyki

Krótka historia języków programowania

Ponad 2000 oficjalnie opublikowanych języków komputerowych
 

Rok

Język 

Twórca, wersje, dialekty, uwagi

1952

asemblery

Do 1959 roku ok. 200 języków programowania!

1957

Fortran

John Backus, IBM, Fortran II, Fortran IV (1966), Fortran 77 (1977), Fortran 90 (1991)

1960

LISP 

J. McCarthy, MIT, InterLisp, MacLisp, PSL, Common LISP (1984), Scheme (dialekt LISPu)

1960

Algol

Algol 60, Algol 68

1960

COBOL

główne zmiany 1968 i 1974, ostatnia COBOL 85

1962

APL

Ken Iverson (Harvard) APL/PC, APL*PLUS

1962

SIMULA

Kristen Nygaard & Ole-Johan Dahl, pierwsza implementacja 1964, SIMULA 67

1964

BASIC

John G. Kemeny & Thomas E. Kurtz, Dartmouth College, wiele dialektów 

1964

PL/I

George Radin, dialekty: EPL, PL/S, XPL etc

1971

Prolog

Alain Colmerauer and Phillipe Roussel, Univ. Aix-Marseille, Prolog-2, Prolog++, Prolog-D-Linda

1972

C

Dennis Ritchie, Bell Labs, C* do programów współbieżnych, dialekty: Visual C

1975

Pascal

N. Wirth, ETH, dialekty: Pascal Plus, TurboPascal, Pascal/R, wiele innych

1979

Modula-2

N. Wirth, ETH, wersja I z 1977 roku, dialekty: Modula-2+, Modula-3, Modula-P, Modula/R 

1980

dBASE II

wersje późniejsze: dBASE III, III+, IV, V

1983

Smalltalk-80

Xerox PARC, pod kierownictwem Alana Kay'a, rozwój od 1970 roku, Smalltalk/V na PC. 

1983

Ada

Jean Ichbiah, CII Honeywell, standard Ada 83, rozszerzenia Ada++, Ada 9X nowy standard

1986

C++

Bjarne Stroustrup, AT&T, liczne implementacje

1988

Mathematica

Steven Wolfram, oparta na języku SMP, ver. 2

1995

Java, Visual
Fortran 95

SunSoft, DEC



Wyszukiwarka

Podobne podstrony:
31 Jezyki programowania
wyklad5.cpp, JAVA jest językiem programowania obiektowego
Języki programowania zaliczenie wykłady Języki programowania3
Języki programowania zaliczenie wykłady Wykład 5
Języki programowania wykłady
Algorytmy i jezyki programowania(4)
4 jezyki programowania 3
jezyki programowania
Języki programowania i ich klasyfikacja
zestawy-labC++-kolokwium 2 2006-2007, Politechnika Śląska MT MiBM, Semestr III, Języki programowania
OPRACOWANIE 3 rok + moje, MECHATRONIKA, IV Semestr, Języki programowania
11 Jezyki programowania Histor Nieznany
Języki programowania wykłady
Języki programowania zaliczenie wykłady Opracowanie1 2
Prezentacja Języki programowania sterowników PLC
Języki programowania, ściągi
pytania z wykładu sciaga jezyki programowania

więcej podobnych podstron