ISBN 0-321-49362-1 Kapitel 2 Evolutionen av de viktigaste programmerings- språken.

Slides:



Advertisements
Liknande presentationer
Selektion, iteration och datastrukturer
Advertisements

Felaktig/Missvisande uppgift i marknadsföring : :6 Marknadsföring utan delägares uppdrag :8 Marknadsföring utan skriftligt.
9. Gör ritningen innan Du bygger huset
Programstruktur: C för enchipsdatorer
Introduktion till C för enchipsdatorer
Funktioner och programorganisation
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella.
Repetition inför provet
Datatyper C# C/C++ Java VB Fortran Pascal bool boolean Boolean
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning.
Att programmera i språket Java
Introduktion Logikprogrammering HT-02 Staffan Larsson.
Grundläggande programmering
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Databaser i B2KUNO Johan Eklund. Hur går jag vidare? Avancerade tillämpningar:  Analysera data  Generera information Utveckla följande färdigheter:
IT för personligt arbete F6
Copyright © 2007 Addison-Wesley. All rights reserved.1-1 “The First Step Toward Sophistication: ALGOL 60” Utvecklingsomgivning –FORTRAN hade (just och.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 11: Implementation av filsystem.
Prolog PROgramming LOGic (programmation en logique)
i olika programmeringsspråk
Java. Kortfattat om Java Syntaxen påminner i hög grad om C++ Stöd för objektorientering Kod kan köras i en virtuell maskin som finns tillgänglig för nästan.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Programmering B PHP Lektion 2
INTRODUKTION TILL PROGRAMMERING
1 Funktioner Nr 3 Funktionstyper, högre ordningens funktioner och polymorfism.
Pekare och speciell programstruktur i inbyggda system
Programmeringsbegrepp
Programmering B PHP Lektion 2
Programmering B PHP Lektion 3
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Från Gotland på kvällen (tågtider enligt 2007) 18:28 19:03 19:41 19:32 20:32 20:53 21:19 18:30 20:32 19:06 19:54 19:58 20:22 19:01 21:40 20:44 23:37 20:11.
DATABASHANTERING för programmerare Lektion 3 Mahmud Al Hakim
TÄNK PÅ ETT HELTAL MELLAN 1-50
1 Programmeringsmetodik, 8p ML-delen Programmering Programmeringsmetodik Programspråk NR 1.
Föreläsning 3 Programmeringsteknik och Matlab DD1312
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
Internet A Javaskript.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning Singel mot multipelt.
Programspråk Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande program och kompilerande program. Python är ett interpreterande.
Funktioner, styrstrukturer, manipulering av matriser
Grundläggande programmering
OOPJ I, 5p Objektorienterad Programmering i Java.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Träning 13 Makroprogrammering
UTVECKLING MED RAMVERKET.NET Marcus Medina. Dagens visdomsord “Det verkar alltid omöjligt tills dess att det är gjort” Nelson Mandela.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
Namnrum, räckvidd och rekursion Linda Mannila
F. Drewes, Inst. f. datavetenskap1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella språk LISP, ML och.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 1: Inledning administrativt o dyl kursens mål varför programspråksteori? språkkategorier användningsområden.
Objektorienterad Programmering i C++ I
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 2 ( ) INNEHÅLL: -Variabler och datatyper -Tilldelning av variabler -Aritmetiska.
Problemlösningsmetodik
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Presentation of I. Name: Disputerat nu vår Forskningsintresset är:
Anders Broberg, Programspråksteoridelen DVA Moment 2 1 Variabler Abstraktion av en minnescell En förvaringslåda som kan beskrivas med 6 attribut –Namn.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
Anders Broberg, Programspråksteoridelen DVA Moment 2 1 Epost: Hemsida: Tel: Rum: D438.
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
Program. Symboliska samband Symboliska beteenden Matematisk kausalitet (orsak – verkan) 2x = y, y = x^2, y = kx + l.
Lennart Edblom & Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
OOP&M - teori1 OOP&M – Föreläsning 3 kap 2-4 Repetition Föreläsning-datayper-syntax-tilldelning.
KPP053, HT2015 MATLAB, Föreläsning 4
Presentationens avskrift:

ISBN Kapitel 2 Evolutionen av de viktigaste programmerings- språken

Copyright © 2007 Addison-Wesley. All rights reserved.1-2 Kapitel 2 teman Zuses Plankalkül Minimal Hardware Programming: Pseudokoder IBM 704 och Fortran Funktionell programmering: LISP Första steget mot sofistikering: ALGOL 60 Datorisering av business records: COBOL Början till timesharing: BASIC

Copyright © 2007 Addison-Wesley. All rights reserved.1-3 Kapitel 2 teman (forts.) “Everything for Everybody”: PL/I Två tidiga dynamiska språk: APL och SNOBOL Början till dataabstraktion: SIMULA 67 Ortogonal design: ALGOL 68 Några tidiga ättlingar till ALGOLs Logikbaserad programmering: Prolog “History's Largest Design Effort”: Ada

Copyright © 2007 Addison-Wesley. All rights reserved.1-4 Kapitel 2 teman (forts.) Objektorienterad programmering: Smalltalk Kombination av imperativa och objektorienterade drag: : C++ Ett imperativt baserat objektorienterat språk: Java Skriptspråk : JavaScript, PHP och Python Ett C-baserat språk för det nya millenniet: C# Markup/ Hybridspråk

Copyright © 2007 Addison-Wesley. All rights reserved.1-5 Genealogin av välkända språk

Copyright © 2007 Addison-Wesley. All rights reserved.1-6 Zuses Plankalkül Byggde en serie datorer under tidiga 40- talet (hemma i föräldrarnas vardagsrum) Efter kriget Z4 ensam kvar; Plankalkül skulle utgöra dess programmeringsspråk Utvecklades 1945, publicerades först 1972 Avancerade datastrukturer –floating point, arrays, records Algoritmer för flera icketriviala problem –sortering, schackspel, konnektivitet av en graf Invarianter, assertationer Implementerades aldrig

Copyright © 2007 Addison-Wesley. All rights reserved.1-7 Plankalküls syntax (läs som musik!) Tilldelningssats för att tilldela värdet av uttrycket A[4] + 1 till A[5] | A + 1 => A V | 4 5 (index) S | 1.n 1.n (datatyper)

Copyright © 2007 Addison-Wesley. All rights reserved.1-8 Minimal Hardware Programming: Pseudokoder Varför inte använda maskinkod? –Dålig läsbarhet –Dålig modifierbarhet (absolut adressering!) –Långtråkigt att koda uttryck! –Bristfällig maskinarkitektur – ingen indexering eller flyttalsoperationer tillgängliga “Pseudokod” ≠ modern mening Slutet av 40-tal – början av 50-tal

Copyright © 2007 Addison-Wesley. All rights reserved.1-9 Pseudokoder: Short Code Short Code utvecklades av Mauchly i 1949 för BINAC-datorer (en av de första datorer med lagrat program) –Uttryck var kodade, vänster till höger –Exempel på operationer: 01 – 06 abs value 1n (n+2)nd power 02 ) n (n+2)nd root 03 = 08 pause 4n if <= n 04 / 09 ( 58 print and tab

Copyright © 2007 Addison-Wesley. All rights reserved.1-10 Pseudokoder: Short Code Ex. på variabler: X0, Y0 X0 = SQRT(ABS(Y0)) skulle kodas som 00 X Y0 (00 är “padding” för att fylla ett ord)

Copyright © 2007 Addison-Wesley. All rights reserved.1-11 Pseudokoder: Speedcoding Tolkande system utvecklades för att åstadkomma flyttalsoperationer Speedcoding utvecklades av Backus i 1954 för IBM 701 Konverterade 701 till en virtuell 3-adress flyttalskalkylator Pseudo ops för aritmetiska och andra matematiska funktioner (sqrt, sin, arc tan, exp, log) –Villkorliga och ovillkorliga hoppinstruktioner –Självinkrementerande register för arrayaccess –Slow! (“add” tog 4.2 ms) –Only 700 words left for user program

Copyright © 2007 Addison-Wesley. All rights reserved.1-12 Pseudokoder: besläktade system The UNIVAC Compiling System –Utvecklades av en team under ledning av Grace Hopper, –Pseudokod expanderades till maskinkod David J. Wheeler (Cambridge University) –Utvecklade en metod där man använder block av relokerbara addresser för att lösa problemet med absolut addressering Maurice V. Wilkes (Cambridge Univ.) –vidareutvecklade tanken till ett assemblerprogram som kunde kombinera valda subrutiner och allokera utrymme

Copyright © 2007 Addison-Wesley. All rights reserved.1-13 IBM 704 och Fortran FORmula TRANslating system (Backus & co.) Fortran 0: ej implementerat Fortran I:1957 –Designat för den nya IBM 704, som hade index- register och flyttalshårdvara –Utvecklingsomgivning: Datorerna var små (till minneskapacitet) och opålitliga Applikationerna var naturvetenskapliga (matematik, fysik,...) Ingen programmeringsmetodologi eller verktyg Maskineffektivitet var viktigast; programmerare var jämförelsevis billiga

Copyright © 2007 Addison-Wesley. All rights reserved.1-14 Fortrans designprocess Omgivningens inflytande på Fortran I –Inget behov av dynamiskt minneshantering –Behövs: bra arrayhantering och räknande loopar –Ingen stränghantering, decimal aritmetik, eller utvecklad input/output (“commercial stuff”)

Copyright © 2007 Addison-Wesley. All rights reserved.1-15 Fortran I översikt Den första implementerade versionen av Fortran –Namn kunde bestå av upp till sex tecken –Post-test counting loop ( DO ) –Formaterad I/O –Användardefinierade subprogram –Trevägs selektionssats (aritmetisk IF ) –Inga datatypdeklarationer –Namn som började med I, J, K, L, M, N => int –Resten flyttal

Copyright © 2007 Addison-Wesley. All rights reserved.1-16 Fortran I översikt (forts.) Första implementerade versionen av FORTRAN –Ingen separat kompilering av subrutiner –Kompilatorn släpptes i April 1957, efter en ansträngning på 18 årsverk –Program större än 400 rader kompilerades sällan korrekt, närmast pga 704:ans bristande pålitlighet –Koden blev mycket snabb (satsning på optimering, med goda resultat) –Vann snabbt terräng (1958: hälften av koden för 704 skrevs på FORTRAN)

Copyright © 2007 Addison-Wesley. All rights reserved.1-17 Fortran II Distribuerades i 1958 –Subrutinerna kunde kompileras separat –  färdigt kompilerade subrutiner kunde infogas –  större program kunde nu kompileras korrekt –“Fixed the bugs”

Copyright © 2007 Addison-Wesley. All rights reserved.1-18 Fortran IV Fortran III blev aldrig brett distribuerat Fortran IV utvecklades –Ett av de mest använda språken av sin tid –Explicita typdeklarationer –Logisk selektionssats (IF - THEN) –Namn på subprogram kunde ges som parametrar till andra subprogram –ANSI-standard 1966

Copyright © 2007 Addison-Wesley. All rights reserved.1-19 Fortran 77 Den nya standarden1978 –Hantering av teckensträngar –Logisk loop ( WHILE ) –IF-THEN-ELSE statement

Copyright © 2007 Addison-Wesley. All rights reserved.1-20 Fortran 90 Stora ändringar från Fortran 77 –Kravet på bestämda kolumnpositioner (ett arv från hålkort) för olika kommandodelar avskaffades före detta skulle labels skrivas i positionerna 1-5, och själva satsen kunde inte börja före position 7. motsvarande krav vid inmatningen –Moduler –Dynamiska arrays –Pekare –Rekursion –CASE-sats –Type checking av parametrar

Copyright © 2007 Addison-Wesley. All rights reserved.1-21 Fortran 90 och framåt... Få ändringar 95 – Forall -struktur som möjliggjorde parallellisering Fortran 2003 –stöd för objektorientering –parametriserade deriverade typer –pekare till procedurer –gränssnitt mot C Fortran 2008 –Submoduler, coarray, do concurrent (för oberoende loopar), contiguous (för minnesallokering)

Copyright © 2007 Addison-Wesley. All rights reserved.1-22 Fortran: utvärdering Högt optimerande kompilatorer (alla versioner före 90) –  Typen och minnet för alla variabler bestämdes före run time –  Inga nya variabler/minne kunde allokeras under run time –  Ingen rekursion –  Inga dynamiska datastrukturer “Dramatically changed forever the way computers are used” Beskrevs som datorvärldens lingua franca

Copyright © 2007 Addison-Wesley. All rights reserved.1-23 Funktionell Programmering: LISP LISt Processing language – Designad vid MIT av McCarthy AI-forskning behövde ett språk för –Listprocessering (snarare än arrays) –Symbolmanipulering (snarare än numeriska beräkningar): lingvistik, psykologi, matematik Endast två datatyper: atomer och listor Syntax baserad på lambda-kalkyl –Church 1941: att definiera anonyma funktioner –att specificera funktionens parametrar och mappning, ex. λ(x)x*x*x (λ(x)x*x*x)(2) = 8

Copyright © 2007 Addison-Wesley. All rights reserved.1-24 Representation av två LISP-listor

Copyright © 2007 Addison-Wesley. All rights reserved.1-25 LISP: utvärdering Pionjär inom funktionell programmering –Inga variabler, inga tilldelningssatser –Kontroll genom rekursion och villkorsuttryck Fortfarande dominant inom AI COMMON LISP och Scheme är de moderna LISP-dialekterna ML (SML, Standard Meta Language), Miranda och Haskell är besläktade språk –metalanguage = språk om språk –ML utvecklades som ett metaspråk för formell programverifiering

Copyright © 2007 Addison-Wesley. All rights reserved.1-26 Scheme Utvecklades vid MIT i mitten av 1970-talet Litet Använder sig av statiskt räckvidd Funktioner som första klassens entiteter –kan tilldelas till variabler, skickas som parametrar, returneras från funktioner, utgöra listelement Enkel syntax och litenhet gör Scheme idealt som undervisningsspråk

Copyright © 2007 Addison-Wesley. All rights reserved.1-27 COMMON LISP Ett försök att kombinera drag från olika LISP-dialekter till ett enda Stort, komplext