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



Relevanta dokument
Imperativ programmering

Imperativ programmering. Föreläsning 3

Introduktion till programmering. Programspråk och paradigmer

Program & programmering

Exempel på typer av datorspråk EXCEL

Kompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2014

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?

TDP002 Imperativ programmering

Imperativ programmering. Föreläsning 2

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

The First Step Toward Sophistication: ALGOL 60

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-print

Föreläsning 23 Programmeringens historia och paradigmer

Exempel på typer av datorspråk EXCEL

TDP002 - Imperativ programmering

Kompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2009

IT OCH PROGRAMMERING I SKOLAN. Jan Erik Moström Peter Vinnervik

Introduktion till Datalogi DD1339. Föreläsning 1 8 sept 2014

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

TDP002 - Imperativ programmering

IT för personligt arbete F6

Föreläsning 1: Intro till kursen och programmering

DD1361 Programmeringsparadigm. Carina Edlund

Välkomna till NADA. Paradigm i datalogin. Vad är ett paradigm

Imperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur

Variabler, värden och typer

TDIU01 - Programmering i C++, grundkurs

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar.

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Föreläsning 1: Intro till kursen och programmering

Classes och Interfaces, Objects och References, Initialization

PROGRAMMERINGSMETODIK

Variabler, värden och typer

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Klassdeklaration. Metoddeklaration. Parameteröverföring

F5: Högnivåprogrammering

Föreläsning 2. Operativsystem och programmering

F5: Högnivåprogrammering

Deklarationer/definitioner/specifikationer

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Objektorienterad programmering

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Programmering A. Johan Eliasson

Programmeringsteknik II

Introduktion till programmering och Python Grundkurs i programmering med Python

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Grunderna i stegkodsprogrammering

Föreläsning 5 5DV086 - Programspråk

Objektorienterad programmering Föreläsning 2

Imperativ programmering. Föreläsning 4

Software Technology. Josef Svenningsson

CS - Computer science. Datateknik Informationsbehandling Datalogi Datavetenskap (ÅA 2008)

Skolverket Workshop i kursen TIATIL00S Tillämpad Programmering

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

PROGRAMMERINGSMETODIK

TDDE44 Programmering, grundkurs

SMD 134 Objektorienterad programmering

Datorarkitekturer med operativsystem ERIK LARSSON

Operativsystem ID2200 Tentamen TEN1 3.8 hp :00-18:00

Programspråkslingvistik. Sista delen av kursen. Ett programspråk

Sista delen av kursen

Språket Python - Del 1 Grundkurs i programmering med Python

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Läsöversikt. Föreläsningar 2-6. Genomförande av laborationer

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler

Obligatorisk uppgift 5

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Omgivningar. Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem.

Tentamen i. TDDC67 Funktionell programmering och Lisp

Sista delen av kursen

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Objektorienterad programmering

TDDC77 Objektorienterad Programmering

SKOLFS. beslutade den -- maj 2015.

Tentamen i. TDDA 69 Data och programstrukturer

Förra gången: Primitiva data

Abstraktion. Abstraktion... Abstraktion... Abstraktion...

Programmeringsparadigm - en jämförelse

Abstraktion. procedurabstraktion. DA2001 (Föreläsning 26) Datalogi 1 Hösten / 27

Programmeringsteknik med C och Matlab

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2

Presentation. Curriculum Vitae för Lars Kristiansson,

Programmering för språkteknologer I, VT2012. Rum

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Sammansatta datatyper Generics: Parametrisk polymorfism

Dagens föreläsning Programmering i Lisp Fö 5

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:15 19:15

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Transkript:

Kapitel 2 Evolutionen av de viktigaste programmeringsspråken ISBN 0-321-49362-1

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-2

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-3

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-4

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

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-6

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-7

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-8

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 Copyright 2007 Addison-Wesley. All rights reserved. 1-9

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) Copyright 2007 Addison-Wesley. All rights reserved. 1-10

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-11

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 Copyright 2007 Addison-Wesley. All rights reserved. 1-12

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 indexregister 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-13

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-14

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-15

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-16

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-17

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 Copyright 2007 Addison-Wesley. All rights reserved. 1-18

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

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-20

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-21

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-22

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-23

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

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-25

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-26

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