Redigerer
Algol 60
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
{{Infoboks programmeringsspråk}} '''Algol 60''' (forkortelse for [[algoritme|'''Algo'''rithmic]] '''L'''anguage 19'''60''') er et [[prosedyrisk programmering|prosedyrisk]], [[imperativ programmering|imperativt]] og [[strukturert programmering|strukturert]] [[programmeringsspråk]] i familien [[ALGOL (programmeringsspråk)|ALGOL]], som ble utviklet av den [[danske]] [[informatikk|informatikeren]] [[Peter Naur]] (1928–2016).{{#tag:ref| Noen ganger brukes skriveformen '''ALGOL 60''', med store bokstaver liksom de andre ALGOL-språkene. Dette var tilfelle på enkelte derivater av [[stormaskin]]er. I den opprinnelige rapporten til [[Peter Naur]] brukes imidlertid små bokstaver, og i denne artikkelen brukes derfor denne navneformen.|group="lower-alpha"|name="navn"}} Språket ble utviklet i perioden 1958–1963 som etterfølgeren til [[ALGOL 58]]. Den første versjonen ble presentert i januar 1960, og en revidert versjon i januar 1963.<ref name="timeline"/> == Historikk == 1959 ble noen forslag til en forbedring av [[ALGOL 58]] presentert i tidsskriftet ''Communications of the ACM''. November samme år avholdt ''Gesellschaft für Angewandte Mathematik und Mechanik'' (GAMM) et møte i [[Paris]], [[Association for Computing Machinery]] (ACM) et møte i [[Washington D.C.]] for å velge 7 delegerte fra Europa og 7 fra Amerika til Algol 60-konferansen.<ref name="timeline"/> Denne ble avholdt i Paris fra 11. til 16. januar 1960 med «Report on the Algorithmic Language ALGOL 60» som resultat. Redaktør var [[Peter Naur]].<ref name="evolving"/> 2. og 3. april 1962 ble et møte avholdt i [[Roma|Rom]] for å løse opp detaljer der utkastet ikke var konsekvent. Den endelige versjonen ble derpå offentliggjort som «Revised Report on the Algorithmic Language ALGOL 60», også med Peter Naur som redaktør.<ref name="evolving"/> == Struktur == Algol 60 var nyskapende. Det introduserte blokkstuktur, som finnes i nesten alle programmeringsspråk som ble utviklet senere, denne gjør lokale [[variabel|variabler]] mulig. I tillegg kom parameteroverføringsmodi som ''call by value'' og ''call by name'', slik at en kunne lage [[rekursjon|rekursive]] funksjoner. Algol 58s '''if'''-betingelse ble utvidet med alternativet '''else''' samtidig som betingete uttrykk ble innført. Alle variabler måtte deklareres med en [[identifikator]] før bruk. Dynamiske [[matrise]]r (arrays) kunne allokeres dynamisk under kjøring og måtte ikke spesifiseres når programmet ble laget. Feilprøving ble nå også foretatt under utføring av programmet. En nyvinning var også at syntaksen til Algol 60 ble formelt definert i form av en [[formell grammatikk|grammatikk]]. Denne var i såkalt [[Backus-Naur form]] (BNF), og dette er i dag den vanligste måten å spesifisere et programmeringsspråk. Standardiserte [[I/O]] metoder var ikke definert, dette førte til at de forskjellige [[kompilator]]ene kunne bli så forskjellige at en [[portering]] av programmer kunne være vanskelig. == Implementeringer av Algol 60 == Her er bare noen få eksempler vist.<ref name="dialects"/> * DASK ALGOL for [[Regnecentralen]] ble utviklet fra februar 1959 til august 1960, samtidig som Algol 60 ble definert. * [[GIER|GIER Algol]] var også utviklet ved Regnesentralen og var ferdig til bruk august 1962. * Case Institute of Technology i [[Cleveland]] hadde skrevet en Algol-kompiler for [[UNIVAC]] 1107 i 1964. Denne ble videre utviklet ved [[NTNU|NTH]] sammen med [[Norsk Regnesentral]] under navnet NU ALGOL (Norwegian University ALGOL) og ble også tilpasset UNIVAC 1108. Kompileren ble solgt til Sperry Rand Norway 1970. * Algol W ble presentert 1966 av [[Niklaus Wirth]] og implementert ved [[Stanford University]], denne versjonen ble grunnlaget for [[Pascal (programmeringsspråk)|Pascal]] * September 1966 ble [[Simula]] presentert av [[Ole-Johan Dahl]] og [[Kristen Nygaard]] og ble videre utviklet til [[Simula 67]]. Det var blant annet planlagt å implementere Simula 67 på UNIVAC 1108 med NU ALGOL som grunnlag. * 1967 ble ALGOL (F) for [[IBM]] System/360 tatt i bruk. == Eksempler på programmering i Algol 60 == Dette programmet regner ut gjennomsnittet av absoluttverdiene for alle elementene i et array, det er skrevet i referanse-Algol. I en konkret implementasjon ville det ha et avvikende utseende. '''comment''' the main program (this is a comment); '''begin''' '''integer''' N; Read Int(N); '''begin''' '''real array''' Data[1:N]; '''real''' sum, avg; integer i; sum:=0; '''for''' i:=1 '''step''' 1 '''until''' N do '''begin''' '''real''' val; Read Real(val); Data[i]:='''if''' val<0 '''then''' -val '''else''' val '''end'''; '''for''' i:=1 '''step''' 1 '''until''' N '''do''' sum:=sum + Data[i]; avg:=sum/N; Print Real(avg) '''end''' '''end''' == Noter == {{Løpenummer|lower-alpha}} <references group="lower-alpha" /> == Referanser == <references><ref name="timeline">{{Kilde www |ref = |url = http://www.softwarepreservation.org/projects/ALGOL |tittel = History of ALGOL - Timeline |besøksdato = 2013-05-21 |utgiver = Computer History Museum |dato = 2013-03-21 }}</ref> <ref name="dialects">{{Kilde www |ref = |url = http://www.softwarepreservation.org/projects/ALGOL/algol60impl |tittel = Algol 60 implementations and dialects |besøksdato = 2013-05-21 |utgiver = Computer History Museum |dato = 2013-03-21 }}</ref> <ref name="evolving">{{Kilde www |ref = |url = http://www.softwarepreservation.org/projects/ALGOL/standards/#ALGOL_60_report |tittel = Evolving algorithmic language |besøksdato = 2013-05-25 |utgiver = Computer History Museum |dato = 2012-09-23 }}</ref> </references> == Eksterne lenker == * [http://www.masswerk.at/algol60/report.htm Revised Report on the Algorithmic Language Algol 60] av Peter Naur m. fl., definisjon av ALGOL * [https://web.archive.org/web/20140822141312/http://bernhard.userweb.mwn.de/Algol-BNF.html ALGOL 60s syntaks på BNF-form] {{programmeringsspråk}} {{Autoritetsdata}} [[Kategori:Programmeringsspråk]]
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Maler som brukes på denne siden:
Mal:Autoritetsdata
(
vis kilde
) (beskyttet)
Mal:Bilde fra Wikidata
(
rediger
)
Mal:Hlist/styles.css
(
rediger
)
Mal:ISOtilNorskdato
(
rediger
)
Mal:Infoboks/styles.css
(
rediger
)
Mal:Infoboks bilde
(
rediger
)
Mal:Infoboks dobbeltrad
(
rediger
)
Mal:Infoboks overskrift
(
rediger
)
Mal:Infoboks programmeringsspråk
(
rediger
)
Mal:Infoboks rad
(
rediger
)
Mal:Infoboks slutt
(
rediger
)
Mal:Infoboks start
(
rediger
)
Mal:Kilde www
(
rediger
)
Mal:Løpenummer
(
rediger
)
Mal:Navboks
(
rediger
)
Mal:Nummerering
(
rediger
)
Mal:Nummerering/style.css
(
rediger
)
Mal:Programmeringsspråk
(
rediger
)
Modul:Arguments
(
rediger
)
Modul:Citation/CS1
(
rediger
)
Modul:Citation/CS1/COinS
(
rediger
)
Modul:Citation/CS1/Configuration
(
rediger
)
Modul:Citation/CS1/Date validation
(
rediger
)
Modul:Citation/CS1/Identifiers
(
rediger
)
Modul:Citation/CS1/Utilities
(
rediger
)
Modul:Citation/CS1/Whitelist
(
rediger
)
Modul:External links
(
rediger
)
Modul:External links/conf
(
rediger
)
Modul:External links/conf/Autoritetsdata
(
rediger
)
Modul:Genitiv
(
rediger
)
Modul:ISOtilNorskdato
(
rediger
)
Modul:Navbar
(
rediger
)
Modul:Navbar/configuration
(
rediger
)
Modul:Navboks
(
rediger
)
Modul:Navbox/configuration
(
rediger
)
Modul:Navbox/styles.css
(
rediger
)
Modul:Reference score
(
rediger
)
Modul:Reference score/conf
(
rediger
)
Modul:Reference score/i18n
(
rediger
)
Modul:String
(
rediger
)
Modul:Wikidata2
(
rediger
)
Modul:WikidataBilde
(
rediger
)
Modul:WikidataDato
(
rediger
)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Side
Diskusjon
norsk bokmål
Visninger
Les
Rediger
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon