Ohjelmointikielten historia

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 11. syyskuuta 2015 tarkistetusta versiosta . tarkastukset vaativat 105 muokkausta .

Tietotekniikan kehitys on määrittänyt uusien monimuotoisten merkkijärjestelmien syntymisprosessin ohjelmointikielialgoritmien kirjoittamiseen. Tällaisen kielen ulkonäön tarkoitus on yksinkertaistaa ohjelmakoodia.

Ohjelmointikielet on yleensä jaettu viiteen sukupolveen. Ensimmäinen sukupolvi sisältää kieliä, jotka luotiin 50-luvun alussa, kun ensimmäiset tietokoneet syntyivät. Se oli ensimmäinen kokoonpanokieli, joka luotiin "yksi ohje - yksi rivi" -periaatteella.

Alku

Konekoodi ja kokoaja

Tietokoneen elektronisten laitteiden fyysiset toimintaperiaatteet ovat sellaiset, että tietokone voi hyväksyä komentoja, jotka koostuvat vain ykkösistä ja nollista - jännitehäviöjen sarjasta, eli konekoodista. Tietokoneiden kehityksen alkuvaiheessa ihmisen oli välttämätöntä kirjoittaa ohjelmia tietokoneelle ymmärrettävällä kielellä, konekoodeilla. Jokainen käsky koostui opkoodista ja operandiosoitteista, jotka ilmaistiin erilaisina 1:n ja 0:n yhdistelminä. Joten mikä tahansa prosessorin ohjelma katsoi aikaa ykkösten ja nollien sarjana.

Kuten tietokoneen kanssa kommunikoinnin käytäntö myöhemmin osoitti, tällainen kieli on hankalaa ja hankalaa. Sitä käytettäessä on helppo tehdä virhe kirjoittamalla väärään järjestykseen 1 tai 0. Ohjelmaa on erittäin vaikea hallita. Lisäksi konekoodeilla ohjelmoitaessa tulee tuntea hyvin tietokoneen sisäinen rakenne, kunkin lohkon toimintaperiaate. Ja pahinta sellaisessa kielessä on se, että tämän kielen ohjelmat - hyvin pitkät ykkösten ja nollien sekvenssit - ovat koneriippuvaisia, eli jokaisen tietokoneen piti luoda oma ohjelmansa ja konekoodeilla ohjelmointi vaatii paljon aikaa, työ, ohjelmoijan lisääntynyt huomio .

Melko pian kävi selväksi, että konekoodin generointiprosessi voidaan automatisoida. Jo vuonna 1950 ohjelmien kirjoittamiseen alettiin käyttää muistikieltä, assembly-kieltä. Assembly-kieli mahdollisti konekoodin esittämisen ihmisystävällisemmässä muodossa: binäärikoodien sijaan kirjaimia tai lyhennettyjä sanoja käytettiin osoittamaan komentoja ja objekteja, joilla nämä komennot suoritetaan, mikä heijasti komennon olemusta. Esimerkiksi kokoonpanokielessä käsky lisätä kaksi numeroa on merkitty sanalla add, kun taas sen konekoodi voi olla: 000010.

Assembler on matalan tason ohjelmointikieli. Matalan tason ohjelmointikieli on ohjelmointikieli, joka keskittyy tietyntyyppiseen prosessoriin ja ottaa huomioon sen ominaisuudet. Tässä tapauksessa "matala" ei tarkoita "huonoa". Tämä tarkoittaa, että kielioperaattorit ovat lähellä konekoodia ja keskittyvät tiettyihin prosessoriohjeisiin. Assembly-kielen tulo helpotti suuresti ohjelmoijien elämää, sillä nyt heidän silmissään väreilevien nollien ja ykkösten sijaan he pystyivät kirjoittamaan ohjelman komennoilla, jotka koostuivat tavallista kieltä lähellä olevista symboleista. Tuohon aikaan tämä kieli oli innovaatio ja suosittu, koska se mahdollisti pienten ohjelmien kirjoittamisen, mikä on näille koneille tärkeä kriteeri.

Mutta suurten ohjelmistojärjestelmien kehittämisen monimutkaisuus siinä johti kolmannen sukupolven kielten - korkean tason kielten - syntymiseen. Mutta assemblerin käyttö ei päättynyt tähän, se on suosittu kapeissa piireissä tähän päivään asti. Nyt sitä käytetään erillisten ohjelmien osien kirjoittamiseen tai joskus itse ohjelmien kirjoittamiseen. Esimerkkejä voi olla monia, mutta silmiinpistävin on assemblerin käyttö ohjaimien, pelien ja käyttöjärjestelmän latausohjelmien kirjoittamisessa. Älä unohda, että tämä kieli on myös suosittu hakkereiden keskuudessa, koska tuloksena olevan ohjelman nopeus on paljon suurempi kuin korkean tason ohjelmointikielellä kirjoitetun ohjelman nopeus. Tämä johtuu siitä, että tuloksena oleva ohjelman koko on hyvin pieni. Virustentorjuntakehittäjät käyttävät myös assembleria joissakin ohjelmiensa moduuleissa, mikä myös varmistaa niiden nopeuden. [yksi]

Ensimmäiset korkean tason ohjelmointikielet

50-luvun puolivälissä. nopea kehitys ohjelmoinnin alalla. Ohjelmoinnin rooli konekoodeissa alkoi pienentyä, uudentyyppisiä ohjelmointikieliä alkoi ilmestyä välittäjänä koneiden ja ohjelmoijien välillä. Ohjelmointikielten toisen ja kolmannen sukupolven aika on tullut.

XX vuosisadan 50-luvun puolivälistä lähtien. alkoi luoda ensimmäisiä korkean tason ohjelmointikieliä (korkean tason ohjelmointikieliä). Näitä kieliä ei ollut sidottu tietyntyyppiseen tietokoneeseen (koneista riippumaton). Jokaiselle niistä kehitettiin omat kääntäjät . Kääntäminen on korkean tason lähdekielellä kirjoitetun ohjelman kääntämistä vastaavaksi ohjelmaksi matalan tason kielellä, joka on lähellä konekoodia (absoluuttinen koodi, objektimoduuli, joskus kokoonpanokieli).

FORTRAN-ohjelmointikieli

Ensimmäisen korkean tason kielen Fortran loi vuosina 1954-1957 ohjelmoijien ryhmä, jota johti John Backus IBM Corporationista. Se oli tarkoitettu tieteellisiin ja teknisiin laskelmiin. Nimi Fortran on lyhenne sanoista FORmula TRANslator (Formula Translator).

Kielen historia

Vuoden 1953 lopulla John Backus ehdotti tehokkaan vaihtoehdon kehittämistä IBM 704 PC:n ohjelmointiin assemblerille. Vuoden 1954 puoliväliin mennessä Fortran-kielen spesifikaatioluonnos valmistui. Ensimmäinen Fortranin käsikirja ilmestyi lokakuussa 1956, samoin kuin ensimmäinen kääntäjä, joka toimitettiin huhtikuussa 1957. Kääntäjä oli optimoimassa, koska asiakkaat kieltäytyivät käyttämästä korkean tason ohjelmointikieltä, joka tuotti koodia, jonka suorituskyky oli heikompi kuin assemblerin.

Tuolloin yhteisö suhtautui skeptisesti uuteen ohjelmointitapaan eikä uskonut, että Fortran tekisi ohjelmoinnista nopeampaa ja tehokkaampaa. John Backuksen itsensä mukaan suuri osa hänen työstään oli tarkoitettu "laiskaksi". Hän ei hirveästi halunnut kirjoittaa ohjelmia IBM 701:lle assemblerissä.

Tiedemiehet ovat omaksuneet kielen laajalti laskennallisesti vaativien ohjelmien kirjoittamiseen. Monimutkaisen tietotyypin sisällyttäminen on tehnyt siitä erityisen sopivan teknisiin sovelluksiin.

Vuoteen 1960 mennessä Fortranista oli versioita IBM 709, 650, 1620, 7090. Sen suuri suosio kannusti kilpailevia tietokonevalmistajia luomaan Fortran-kääntäjiä tietokoneilleen. Vuoteen 1963 mennessä eri alustoille oli siis yli 40 kääntäjää. Tästä syystä Fortrania pidetään ensimmäisenä laajalti käytettynä ohjelmointikielenä. [2]

Fortran Neuvostoliitossa

Fortran ilmestyi Neuvostoliitossa myöhemmin kuin lännessä, koska aluksi Neuvostoliitossa Algolia pidettiin lupaavampana kielenä. Neuvostoliiton fyysikkojen kommunikaatio kollegoidensa kanssa CERNistä, jossa 1960-luvulla lähes kaikki laskelmat suoritettiin Fortran-ohjelmilla, oli tärkeä rooli Fortranin käyttöönotossa.

Ensimmäinen Neuvostoliiton Fortran-kääntäjä luotiin vuonna 1967 Minsk-2- koneelle , mutta se ei saanut paljon mainetta. Fortranin laaja käyttöönotto alkoi BESM-6-koneen FORTRAN-DUBNA-kääntäjän luomisen jälkeen vuonna 1968. Vuonna 1972 ilmestyneissä ES-tietokoneissa oli jo Fortran-kääntäjä ("lainattu" IBM/360 :stä muiden ohjelmistojen kanssa)

Moderni Fortran. Kielen edut

Fortrania käytettiin laajalti pääasiassa tieteellisiin ja teknisiin laskelmiin. Se soveltuu hyvin numeeristen ongelmien ratkaisemiseen, sillä sen olemassaolon aikana on kirjoitettu monia kirjastoja. Sitä käytetään tähän päivään asti, mutta ei niinkään onnistuneen suunnittelun vuoksi, vaan siihen kirjoitettujen ohjelmien suuren määrän vuoksi, jota ei ole järkevää muuttaa ja lisäksi kirjoittaa uudelleen. Sen rakenne myötävaikuttaa siihen, että kääntäjä pystyy optimoimaan laskelmat erittäin hyvin.

Tiedemiesten keskuudessa on sanonta, että jokaiselle matemaattiselle ongelmalle on jo ratkaisu Fortranissa, ja todellakin tuhansien Fortran-pakettien joukosta löytyy paketti matriisikertolaskulle ja paketti monimutkaisten integraaliyhtälöiden ratkaisemiseen ja monia, monia muita.

ALGOL 58 ohjelmointikieli

Syy ALGOL-kielen ilmestymiseen

Koska Fortran osoittautui niin menestyväksi kieleksi, Euroopassa pelättiin IBM:n hallitsevan tietokoneteollisuutta. . Saksan sovelletun matematiikan ja mekaniikan yhdistys (GAMM) on perustanut komitean kehittämään yleismaailmallista kieltä. Samaan aikaan Association for Computing Machinery (ACM) järjesti samanlaisen komitean Yhdysvalloissa. Vaikka eurooppalaiset olivat jonkin verran huolissaan amerikkalaisten valta-asemasta, nämä molemmat komiteat sulautuivat yhdeksi.

Algol kehitettiin vuonna 1958 ETH :ssa (Zürich, Sveitsi) pidetyssä viikon mittaisessa konferenssissa yleiskäyttöiseksi ohjelmointikieleksi monenlaisiin sovelluksiin, ja Kansainvälisen tietojenkäsittelyliiton perustama komitea kehitti sitä edelleen . Komiteaan kuului joukko johtavia eurooppalaisia ​​ja amerikkalaisia ​​kielitieteilijöitä ja -insinöörejä, mukaan lukien John Backus , John McCarthy , Peter Naur , Edsger Dijkstra ja Joseph Wagsten , joka johti myöhemmin kobol- kielen kehittämiskomiteaa .

Työn aikana syntyi suuria periaatteettomia vaikeuksia. Esimerkiksi yksi komitean jäsenistä muistutti "desimaalimyrskystä" - erittäin kiivasta keskustelusta amerikkalaisten ja eurooppalaisten osallistujien välillä siitä, mitä merkkiä tulisi käyttää erottimena luvun kokonaislukujen ja murto-osien välillä. Amerikkalaiset vaativat ajanjaksoa, kun taas eurooppalaiset vaativat pilkun käyttöä, joka on perinteinen Euroopalle. Pienistä asioista aiheutuvien ristiriitojen välttämiseksi Algolin kuvaus päätettiin olla kolmetasoinen, mukaan lukien kuvausten, julkaisujen ja toteutuksen taso. Pienet kysymykset, kuten valinta pisteen ja pilkun tai käytetyn aakkoston välillä, siirrettiin toiselle tai kolmannelle tasolle, mikä mahdollisti perustavanlaatuisten asioiden ratkaisemisen suhteellisen nopeasti. Myöhemmin sovitulla julkaisutasolla kansallisten avainsanojen ja tiedon esittämisstandardien (mukaan lukien desimaalipilkku) käyttö sallittiin, toteutustaso määritti kielen varsin tiukasti - sen mukaan oli rakennettava kääntäjiä.

Aluksi ehdotettu nimi ALGOL (ALGOritminen kieli) hylättiin. Mutta koska siitä tuli yleinen, IAL:n virallinen nimi piti myöhemmin muuttaa ALGOL 58:ksi.

Uusi versio ilmestyi vuonna 1960 ja ALGOL 60 (pienillä muutoksilla vuonna 1962) 60-luvulta 70-luvun alkuun. viime vuosisadalla oli akateemisen ohjelmointikielen standardi.

Uusi kieli löysi sekä kannattajia että arvostelijoita. Yhdysvalloissa Algol otettiin kylmästi vastaan, se oli suosittu vain akateemisessa ympäristössä, eikä silloinkaan kaikkialla. Ne, jotka yrittivät toteuttaa Algolia, kohtasivat useita vaikeuksia.

Niinpä esimerkiksi havaittiin, ettei yksikään silloin olemassa olevista tietokoneista tukenut kaikkien Algol-aakkoston muodostavien 116 kirjaimen syöttöä/tulostusta.

Mutta Euroopassa Algol otettiin vastaan ​​innostuneesti. Se saavutti nopeasti suosion akateemisessa ympäristössä, kääntäjiä kehitettiin kaikkialla, joista monet toteutusvaikeuksista huolimatta osoittautuivat erittäin onnistuneiksi. Algol levisi Isosta-Britanniasta Neuvostoliiton Kaukoitään, ja siitä tuli sekä universaali kieli tieteellisten julkaisujen algoritmien kuvaamiseen että todellisen ohjelmoinnin väline.

kielen ominaisuudet. Sen vahvuudet ja heikkoudet

Algolissa ohjelman idea ei esiintynyt vapaana komentosarjana, vaan lohkorakenteena, joka koostuu selkeästi kuvatuista ja erotetuista osista. Ohjelman päälohko Algolissa on itse pääohjelma. Se sisältää suoritettavan osan, joka on suljettu lohkoon ja jota rajaavat avainsanapari alku ja loppu, sekä aliohjelmien kuvaukset. Jokainen aliohjelma on pienoisohjelma, jonka sisällä on kuvattu omat tiedot, yksilöllisesti määritelty rajapinta nimen ja muodollisten parametrien luettelon muodossa sekä koodilohko.

Tässä tapauksessa lohkoon voidaan allokoida alilohkoja.

Rakenteelliset ohjausrakenteet tunnistettiin: haarat, silmukat, peräkkäiset osat, jotka suorittavat ehdollisesti tai kertovat sisäkkäisiä lausekkeita, joita myös rajoittavat samat alku- ja loppuavainsanat.

Nykyaikaisille ohjelmoijille tällainen ohjelmarakenne näyttää ilmeiseltä, hieman vanhentuneelta ja ei aina kätevältä, mutta Algolin ilmestyessä kaikki tämä oli huomattava askel eteenpäin. Ohjelmat muuttuivat säännöllisiksi, mikä mahdollisti niiden määrän lisäämisen, pitäen ne näkyvinä, ymmärrettävinä, analysoitavissa ja korjattavissa. Algolin ja sen jälkeläisten kielten pohjalta tehtiin menestyksekäs työ ohjelmien oikeellisuuden analyyttiseksi todistamiseksi.

Algolissa ehdotettiin kahta tapaa siirtää parametreja aliohjelmalle - nimen ja arvon mukaan. Jos toinen menetelmä ei aiheuta vastalauseita (se on laajalti käytössä suurimmassa osassa kieliä tähän päivään mennessä), niin ensimmäinen (se olettaa, että todellisen parametrin nimi välitetään menettelyyn, ja menettely toimii ikään kuin sen koodi olisi kirjoitettu referenssipisteeseen, jossa muodollisen parametrin sijasta kirjoitetaan varsinaisen parametrin nimi) johti vaikeuksiin kääntäjien käyttöönotossa ja vaikeasti havaittavien virheiden ilmaantumiseen.

LISP-ohjelmointikieli

Lisp-kieltä ehdotti J. McCarthy vuonna 1960, ja se keskittyy ohjelmien kehittämiseen ei-numeeristen ongelmien ratkaisemiseksi. Tämän kielen englanninkielinen nimi - LISP on lyhenne ilmaisusta LISt Processing (luettelokäsittely) ja korostaa hyvin sen pääasiallista sovellusaluetta. Käsite "luettelo" osoittautui erittäin tilavaksi.

Listojen muodossa on kätevää esittää algebrallisia lausekkeita, kaavioita, äärellisten ryhmien elementtejä, joukkoja, päättelysääntöjä ja monia muita monimutkaisia ​​objekteja. Listat ovat joustavin muoto tiedon esittämiseksi tietokoneen muistissa. Ei ole yllättävää, että kätevä kieli, joka on erityisesti suunniteltu luetteloiden käsittelyyn, tarttui nopeasti.

Kielen kehitys

Sen lähes neljänkymmenen vuoden aikana on ilmestynyt useita tämän kielen murteita: Common LISP, Mac LISP, Inter LISP, Standard LISP jne.

Niiden väliset erot eivät ole luonteeltaan perustavanlaatuisia, ja ne johtuvat periaatteessa hieman erilaisista sisäänrakennetuista toiminnoista ja eroista tallennusohjelmien muodossa. Siksi ohjelmoija, joka on oppinut työskentelemään yhden niistä, voi helposti hallita minkä tahansa muun.

Kielen tärkeimmät edut

Lispin suuri etu on sen toiminnallinen suuntautuminen, eli ohjelmointi tapahtuu funktioiden avulla. Lisäksi funktio ymmärretään sääntönä, joka sovittaa tietyn luokan elementit toisen luokan vastaaviin elementteihin. Itse vertailuprosessilla ei ole vaikutusta ohjelman toimintaan, vain sen tulos on tärkeä - funktion arvo. Tämä tekee suurten ohjelmistojärjestelmien kirjoittamisesta ja virheenkorjauksesta suhteellisen helppoa. Ohjelmien selkeys, niiden toimintojen selkeä määrittely, hankala sivuvaikutusten puuttuminen niiden suorittamisen aikana ovat pakollisia vaatimuksia tällaisten loogisesti monimutkaisten tehtävien, kuten tekoälytehtävien, ohjelmoinnissa.

Ohjelmoinnin kurinalaisuudesta tulee erityisen tärkeä, kun ohjelman parissa työskentelee kokonainen joukko ohjelmoijia.

COBOL-ohjelmointikieli

Cobol kehitettiin vuonna 1959 ja se oli tarkoitettu ensisijaisesti yrityssovellusten kehittämisohjelmien kirjoittamiseen sekä talouselämään.

Kielimääritys luotiin vuonna 1959. Kielen luojat asettivat tavoitteekseen tehdä siitä koneriippumattoman ja mahdollisimman lähellä luonnollista englantia. Molemmat tavoitteet saavutettiin onnistuneesti; COBOL-ohjelmia pidetään ymmärrettävinä myös ei-asiantuntijoille, koska tällä ohjelmointikielellä olevat tekstit eivät vaadi erityisiä kommentteja (itsedokumentoivat ohjelmat).

Edut ja haitat

COBOL on hyvin vanha kieli ja sitä käytettiin aikoinaan hyvin aktiivisesti, joten toteutuksia ja murteita on monia. Kielelle on hyväksytty useita standardeja: vuosina 1968, 1974, 1985 ja 2002. Uusin standardi lisäsi tuen olio-paradigmalle kieleen.

Kielen avulla voit työskennellä tehokkaasti suuren tietomäärän kanssa, se on täynnä erilaisia ​​​​haku-, lajittelu- ja jakeluominaisuuksia. Muita COBOLin etuja ovat yleensä sen rakenteellisuus. Tämän kielen varsin tehokkaita kääntäjiä on kehitetty henkilökohtaisille tietokoneille. Jotkut niistä ovat niin tehokkaita, että henkilökohtaisella tietokoneella virheenkorjattu ohjelma voidaan helposti siirtää keskustietokoneisiin.

Huonot puolet luettelemalla ei voi olla muistamatta, että vain yksinkertaisimmat algebralliset laskelmat voidaan ohjelmoida Coboliin. Tämä kieli ei sovellu monimutkaisiin teknisiin laskelmiin.

Johtopäätökset tästä ohjelmointikielten kehityskaudesta

Tietokoneistumisen kynnyksellä (1950-luvun alussa) konekieli oli ainoa kieli, jota ihminen ei ollut tuolloin keksinyt. Matalatasoiset kielet muistuttavat vähän tavallista tuttua kieltä. Suuria, raskasta ohjelmia kirjoitetaan harvoin tällaisilla kielillä. Mutta jos ohjelma on kirjoitettu sellaisella kielellä, se toimii nopeasti, vie vain pienen määrän ja sallii mahdollisimman vähän virheitä. Mitä matalampi ja lähempänä kielen konetasoa, sitä pienempiä ja tarkempia tehtäviä kullekin joukkueelle määrätään.

Ohjelmoijien pelastamiseksi ohjelmoinnin ankaralta konekieleltä luotiin korkean tason kieliä (eli ei-konekieliä), joista tuli eräänlainen yhdistävä silta ihmisen ja tietokoneen konekielen välillä. Korkean tason kielet toimivat käännösohjelmien kautta, jotka syöttävät "lähdekoodin" (englanninkielisten sanojen ja koneen lukemien matemaattisten lausekkeiden hybridi) ja saavat lopulta tietokoneen suorittamaan asianmukaiset komennot, jotka annetaan konekielellä.

Korkean tason kielten käyttöönoton myötä ohjelmoijat pystyivät käyttämään enemmän aikaa tietyn ongelman ratkaisemiseen ilman, että heidän huomionsa häiritsisi koneen tehtävän suorittamisen prosessin organisointia koskevat erittäin hienovaraiset kysymykset. Lisäksi näiden kielten ilmaantuminen merkitsi ensimmäistä askelta tutkimuslaboratorioita ja talousosastoja pidemmälle ulottuvien ohjelmien luomisessa.

Yhteenvetona tästä ohjelmointikielten kehityskaudesta voimme päätellä, että korkean tason ohjelmointikielet (FORTRAN, ALGOL, LISP, COBOL jne.) eivät ole samanlaisia ​​kuin kokoonpanokieli. Korkean tason kielet on suunniteltu erityisesti pystymään käsittelemään suoraan ohjelman ratkaisemaa ongelmaa. Sellaisenaan niitä kutsutaan joskus proseduurikieliksi, koska ne kuvaavat menettelyä, jota käytetään ongelman ratkaisemiseen. Korkean tason kielet ovat koneriippumattomia. Assembly-kieliohjelmat liittyvät suoraan koneeseen, jolla ne ajetaan.

Korkean tason ohjelmointikielten edut:

  1. Kielen aakkoset ovat paljon leveämpiä kuin konekieliset, mikä tekee siitä paljon ilmaisuvoimaisemman ja lisää merkittävästi tekstin selkeyttä ja selkeyttä;
  2. Käytettävien operaatioiden joukko ei riipu koneen operaatioiden joukosta, vaan se valitaan mukavuussyistä laadittaessa algoritmeja tietyn luokan ongelmien ratkaisemiseksi;
  3. Käyttäjärakenteet on määritelty ihmisystävällisessä muodossa;
  4. Laaja valikoima tietotyyppejä tuetaan.

Korkean tason kielten haittana on ohjelmien suurempi koko verrattuna matalan tason ohjelmiin. Siksi korkean tason kieliä käytetään pääasiassa tietokoneiden ja laitteiden ohjelmistokehitykseen, joissa on paljon muistia. Ja erilaisia ​​assembler-alatyyppejä käytetään muiden laitteiden ohjelmointiin, missä ohjelman koko on kriittinen.

Koneen kieli

Ei tiedetä, kuinka paljon ohjelmoinnin kehitys olisi kiihtynyt, jos Zusen kehitys olisi tullut muiden tutkijoiden saataville 40-luvun lopulla, mutta käytännössä tietokonetekniikan kehittyessä konekieli yleistyi ensimmäisen kerran . Sen avulla ohjelmoija saattoi asettaa komentoja, jotka toimivat muistisolujen avulla, käyttämällä täysin koneen ominaisuuksia. Tämän kielen ydin on joukko koodeja, joita käytettävä prosessori välttämättä ymmärtää. Tämän kielen osia ("sanoja") kutsutaan käskyiksi , joista jokainen edustaa yhtä perustoimintoa keskusprosessorille, kuten tietojen lukemista muistisolusta. Vain tietokonelaitteiston suunnittelun ymmärtämisellä ja näiden kokonaislukukoodien tuntemuksella voidaan ohjata suoraan prosessoria. Tuolloin tietokoneet olivat yksinkertaisia ​​laskentakoneita, joita käytettiin erilaisiin matemaattisiin laskelmiin. Mutta ne kehittyivät, ja useimpien tietokoneiden käyttö konekielitasolla on vaikeaa, tällaisten ohjelmien lukeminen ja muokkaaminen oli erityisen vaikeaa, mitä pahensi absoluuttisen muistiosoitteen käyttö [3] . Siksi konekoodien käytöstä piti ajan myötä luopua.

Esimerkiksi tietolohkon lukemiseen levykkeeltä ohjelmoija voi käyttää 16 eri komentoa, joista jokainen vaatii 13 parametria, kuten levyn lohkon numeron, raidan sektorinumeron jne. Kun levy toiminto on valmis, ohjain palauttaa 23 arvoa, jotka heijastavat analysoitavien virheiden olemassaoloa ja tyyppejä. Jo yksi puhelu prosessorille on hankalaa, ja virheanalyysi on täysin käsittämätöntä, varsinkin jos sinun ei tarvitse työskennellä tämän prosessorin kanssa. Siten konekielisten ohjeiden joukko riippuu suuresti prosessorin tyypistä.

Kokoonpanokieli

1950-luvulla ohjelmistokehityksen kysyntä kasvoi ja ohjelmista tuli erittäin suuria. Minun piti kirjoittaa paljon koodia, vaikka ohjelmisto oli hyvin yksinkertainen: tuolloin työpöydän suunnittelu oli nykyistä yksinkertaisempaa, ohjelmat toimivat alkeellisten asioiden kanssa ja tietokone oli juuri alkanut marssia voittoon. Ohjelmat kuitenkin sekoittuivat yhä enemmän, niiden rakenne monimutkaisi, koska tietotekniikka kehittyi koko ajan. Sitten he alkoivat käyttää erikoisohjelmia - ohjelmien kokoajia pienistä koodipaloista - kokoajia. Uusi kehitysvaihe on alkanut.

Nyt kun tehokasta ohjelmaa tarvittiin, konekielten sijasta käytettiin läheisiä konesuuntautuneita kokoonpanokieliä . Näitä olivat esimerkiksi Autocode, vuodesta 1954 - IPL (LISP-kielen edeltäjä), vuodesta 1955 - FLOW-MATIC. Nyt ihmiset alkoivat käyttää muistikomentoja konekäskyjen sijaan.

Mutta jopa kokoajan kanssa työskentely on melko monimutkaista ja vaatii erityiskoulutusta. Esimerkiksi Zilog Z80 -prosessorissa konekäsky 00000101 käskee prosessoria pienentämään rekisteriään yhdellä B. Assembly-kielellä tämä kirjoitetaan muodossa DEC B.

Korkean tason kielet

Seuraava askel otettiin vuonna 1954, jolloin aloitettiin korkean tason kielen kehittäminen - Fortran ( FORTRAN - FORmula TRANslator ), jonka kääntäjä ilmestyi ensimmäisen kerran huhtikuussa 1957 [4] .  Tällaisen kielen kehittämiseen vaikuttivat vuonna 1954 käyttöön otetun IBM 704 -tietokoneen uudet ominaisuudet , joissa indeksiosoitus ja liukulukuoperaatiot toteutettiin laitteistotasolla [5] . Hänen jälkeensä ilmestyi joitain muita kieliä, esimerkiksi: LISP , ALGOL 58 , FACT . Korkean tason kielet jäljittelevät luonnollisia kieliä käyttämällä joitain puhutun kielen sanoja ja yleisiä matemaattisia symboleja. Nämä kielet ovat ihmisystävällisempiä, niillä voidaan kirjoittaa jopa useiden tuhansien rivien mittaisia ​​ohjelmia. Ehdolliset sanat voisivat, kuten ihmiselle on tapana, paljon yksinkertaisemmin ilmaista monimutkaisen ohjelmaoperaation biteistä. Fortranin varhaiset versiot ovat kuitenkin huomattavasti huonompia kuin myöhemmät käsitteet ja kielet; sitä käytettiin suhteellisen yksinkertaisten ohjelmien luomiseen nykyaikaisten standardien mukaan [6] .

50-luvun jälkipuoliskolla kansainvälinen kehitystiimi yritti luoda universaalin ohjelmointikielen. Tuloksena ilmestyi ALGOL 58 ( englanniksi  ALGOrithmic Language ), joka oli monessa suhteessa Fortranin seuraaja. Siihen lisättiin uusia käsitteitä ja yleistyksiä, tietotyyppien käsite formalisoitiin, minkä pituisten tunnisteiden käyttö sallittiin, kun Fortranissa oli 6 merkin raja [7] . Tämä kielen versio oli melko luonnos, joten tammikuussa 1960 sen kehittämiskomitean toinen kokous pidettiin Pariisissa , jossa päätettiin tehdä merkittäviä muutoksia. Uuden version nimi oli ALGOL 60, sen tärkeimmät innovaatiot olivat: lohkorakenteen käsite, kyky luoda rekursiivisia proseduureja, automaattiset taulukot [8] . Huolimatta monista eduistaan ​​ALGOLia ei ole koskaan käytetty laajalti, mikä johtuu pääasiassa sen toteuttamisen monimutkaisuudesta ja IBM:n tuen puutteesta [9] .

Myöhemmin ilmestyivät COBOL (1959), Pascal (1970), C (1972).

Strukturoidun ohjelmoinnin tulo

1960-luvun lopulla ohjelmien monimutkaistuessa ja ohjelmistotyökalujen edelleen kehittyessä oli tarvetta lisätä ohjelmoijien tuottavuutta, mikä johti strukturoidun ohjelmoinnin kehittämiseen . Tämän metodologian perustaja on Edsger Dijkstra , joka julkaisi vuonna 1968 kuuluisan kirjeensä " Goto -operaattoria pidetään haitallisena" [10] ja kuvasi myös strukturoidun ohjelmoinnin perusperiaatteet [11] . Strukturoidun ohjelmoinnin kehittämisen myötä menettelyt ja toiminnot olivat seuraava kehityssuunta . Eli jos on tehtävä, joka suoritetaan useita kertoja, se voidaan ilmoittaa funktiona tai menettelynä ja kutsua sitä yksinkertaisesti ohjelman suorituksessa. Koko ohjelmakoodi pienenee tässä tapauksessa. Tämä vaikutti modulaaristen ohjelmien luomiseen .

Seuraava saavutus oli ohjelmassa yhdessä käytettyjen heterogeenisten tietojen yhdistäminen rakenteiksi.

Rakenteet  ovat yhdistelmätietotyyppejä, jotka on rakennettu käyttämällä muita tietotyyppejä. Esimerkiksi aikarakenne on jaettu: tunteihin, minuutteihin, sekunteihin. Tuntit, minuutit ja sekunnit puolestaan ​​kuvataan yksinkertaisemmilla ja alkeellisemmilla tietotyypeillä. Ja sen sijaan, että työskentelet erillisten muuttujien kanssa, joihin on helppo hämmentää, voit siirtyä "aika"-rakenteeseen, joka sisältää jo tunnit, minuutit ja sekunnit, ja työskennellä sen kanssa kuin yhden tyypin yhden muodon kanssa.

Strukturoitu ohjelmointi sisältää hyvin määritellyt ohjausrakenteet, ohjelmalohkot , ei ehdottomia haara ( GOTO) käskyjä, itsenäiset aliohjelmat, tuen rekursiolle ja paikallisille muuttujille. Tämän lähestymistavan ydin on mahdollisuudessa jakaa ohjelma osaelementeiksi lisäämällä ohjelmakoodin luettavuutta [12] .

Luotiin myös toiminnallisia (aplikatiivisia) kieliä (Esimerkki: Lisp  - Englanti  LISt Processing , 1958) ja loogisia kieliä (Esimerkki: Prolog  - Englanti  PROgramming in LOGic , 1972).

Vaikka strukturoidun ohjelmoinnin käyttöönotto onnistui, sekin epäonnistui, kun ohjelma saavutti tietyn pituuden. Monimutkaisemman ja pidemmän ohjelman kirjoittamiseksi tarvittiin uusi lähestymistapa ohjelmointiin.

OOP

Ohjelmassa tietorakenteita käytettäessä kehitetään myös vastaavat toiminnot niiden kanssa työskentelyyn. Tämä johti ajatukseen yhdistää ne ja käyttää niitä yhdessä, joten luokkia syntyi.

Luokka  on tietorakenne, joka ei sisällä vain muuttujia, vaan myös toimintoja, jotka toimivat näiden muuttujien kanssa.

Lyhyesti sanottuna tämä saavutus ohjelmoinnin alalla oli erittäin suuri. Nyt ohjelmointi voitaisiin jakaa luokkiin eikä testata koko ohjelmaa, joka koostuu 10 000 koodirivistä, vaan ohjelma voisi jakaa 100 luokkaan ja jokainen luokka testata. Tämä helpotti huomattavasti ohjelmistotuotteen kirjoittamista.

Tämän seurauksena olio-ohjelmoinnin periaatteet kehitettiin 1970-luvun lopulla ja 1980-luvun alussa . OOP yhdistää strukturoidun ohjelmoinnin parhaat periaatteet uusiin kapseloinnin , alatyyppipolymorfismin ja periytymisen käsitteisiin .

Ensimmäinen olio-ohjelmointikieli on Simula - 67, joka esitteli ensimmäisenä luokat [13] . OOP-konsepteja kehitettiin edelleen Smalltalk-kielellä , joka loi myös perustan ikkunajärjestelmille [14] . Uusimpia esimerkkejä oliopohjaisista kielistä ovat Object Pascal , C++ , Java , C# ja muut.

OOP:n avulla voit järjestää ohjelmat optimaalisesti jakamalla ongelman osiin ja työskentelemällä kunkin kanssa erikseen. Oliokielinen ohjelma, joka ratkaisee tietyn ongelman, itse asiassa kuvaa tähän ongelmaan liittyvää maailman osaa.

Muistiinpanot

  1. R. Bogatyrev. Käsikirjoituskielten luonne ja kehitys. - PC World, 2001.
  2. E.K. Henner. Informatiikka, toimittanut E.K. Henner. – Akatemia, 2004.
  3. Sebesta, 2001 , s. 61.
  4. Sebesta, 2001 , s. 65.
  5. Sebesta, 2001 , s. 63-64.
  6. Sebesta, 2001 , s. 68.
  7. Sebesta, 2001 , s. 76.
  8. Sebesta, 2001 , s. 78.
  9. Sebesta, 2001 , s. 79.
  10. David R. Tribble. Siirry Haitallisena pidettyyn lausuntoon: Retrospektiivi  ( 37.11.2005). Käyttöpäivä: 13. helmikuuta 2015. Arkistoitu alkuperäisestä 30. elokuuta 2017.
  11. Edsger W. Dijkstra. Huomautuksia strukturoidusta  ohjelmoinnista . Texasin yliopisto (04.1970). Haettu 13. helmikuuta 2015. Arkistoitu alkuperäisestä 17. maaliskuuta 2019.
  12. Yodan E. Rakennesuunnittelu ja ohjelmasuunnittelu. — Per. englannista. - M.: Mir, 1979. - 415s. - S. 174.
  13. Sebesta, 2001 , s. 92-93.
  14. Sebesta, 2001 , s. 111.

Kirjallisuus

  • Robert W. Sebesta. Ohjelmointikielten peruskäsitteet. - 5. painos - M. : Williams, 2001. - 672 s. — ISBN 5-8459-0192-8 .

Bosova LL, Informatiikka: oppikirja luokalle 8. Bosova LL, Informatiikka: oppikirja 9. luokalle. Semakin I.A., Informatiikka: Peruskurssi. M. Dmitriev, N. Alekseev "Tietokoneen aikakauden historia". M. Zaretskaya: Encyclopedia Moscow "Valaistuminen". Yu.S. Golubev-Novozhilov: "Ohjelmisto". N.V. Makarova. - M .: Talous ja tilastot

Linkit