Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avSimon Pettersson
1
ISBN 0-321-49362-1 Kapitel 2 Evolutionen av de viktigaste programmerings- språken
2
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
3
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
4
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
5
Copyright © 2007 Addison-Wesley. All rights reserved.1-5 Genealogin av välkända språk
6
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
7
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)
8
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
9
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 ) 07 + 2n (n+2)nd root 03 = 08 pause 4n if <= n 04 / 09 ( 58 print and tab
10
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 X0 03 20 06 Y0 (00 är “padding” för att fylla ett ord)
11
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
12
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, 1951-53 –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
13
Copyright © 2007 Addison-Wesley. All rights reserved.1-13 IBM 704 och Fortran FORmula TRANslating system (Backus & co.) Fortran 0: 1954 - 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
14
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”)
15
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
16
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)
17
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”
18
Copyright © 2007 Addison-Wesley. All rights reserved.1-18 Fortran IV Fortran III blev aldrig brett distribuerat Fortran IV utvecklades 1960-62 –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
19
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
20
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
21
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)
22
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
23
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
24
Copyright © 2007 Addison-Wesley. All rights reserved.1-24 Representation av två LISP-listor
25
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
26
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
27
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
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.