I dette blogginnlegget vil vi forklare på en enkel måte hvordan datamaskiner forstår kommandoene våre og hvordan programmeringsspråk har utviklet seg.
En mann trykker raskt på et tastatur, skjermen fylles med uforståelige tegn, og datamaskinen gjør noe. Dette er den typen dataprogrammerer vi ofte ser i filmer og andre medier. I den moderne verden har datamaskiner blitt et verktøy som alle enkelt kan bruke, men programmering – evnen til å gi grunnleggende kommandoer til datamaskiner – er fortsatt en vanskelig og kompleks verden for den gjennomsnittlige personen.
Å forstå forholdet mellom datamaskiner og programmering er som å lære et nytt språk. Et språk er ikke bare et kommunikasjonsmiddel; den gjenspeiler tankegangen og kulturen til menneskene som snakker den. På samme måte er programmeringsspråk viktige verktøy som bestemmer hvordan datamaskiner og mennesker kommuniserer. Fra dette perspektivet er programmering mer enn bare en teknisk ferdighet; det er en måte å løse problemer og se på verden.
Programmeringsspråk utvikler seg for hver dag som går, og den siste utviklingen ligner mer på hverdagsspråk, noe som gjør programmering mindre av en hindring for å komme inn over tid. Men hvordan kan en datamaskin, som ikke er noe mer enn en mekanisk enhet, forstå kommandoene vi gir i hverdagsspråket?
For å forstå hvordan datamaskiner forstår kommandoene våre, må vi først forstå det grunnleggende om datamaskiner. I kjernen er en datamaskin en elektronisk enhet, og på sitt mest ekstreme er det bare to signaler du kan gi den. Enten går det strøm gjennom kretsen eller så er det ikke det. Dette er veldig enkel informasjon, men hvis du kombinerer den i et hvilket som helst antall tilfeller, kan du lage en rekke forskjellige innganger, og CPU (Central Processing Unit) til en datamaskin har elementer som kan implementere enkel logikk som OG, ELLER og NOT, som, når den kombineres godt, kan skape en "funksjon" som produserer en spesifikk utgang for en gitt inngang. Moderne datamaskiner har titalls millioner av disse enhetene, slik at de kan utføre komplekse oppgaver.
For å gjøre det lettere å forstå hvordan datamaskiner fungerer, tildelte tidlige utviklere en "1" for å indikere at strømmen flyter og en "0" for å indikere at den ikke gjorde det. Dette er hva som menes med uttrykket "datamaskiner er laget av 0-er og 1-ere", som du sikkert har hørt minst én gang, selv om du ikke kan mye om datamaskiner. Tidlige datamaskiner måtte kobles om for å gi forskjellige innganger. For å forbedre dette utviklet datamaskiner seg slik at du kunne legge inn en serie med nuller og enere gjennom en inndataenhet, og datamaskinen ville gjenkjenne arrangementet og automatisk sende den tilsvarende strømmen for å utføre ønsket operasjon. Dette programmeringsspråket av nuller og enere kalles maskinspråk.
Men maskinspråket var for langt og lite lesbart. Selv de enkleste operasjonene krevde programmering på flere papirark fulle av nuller og enere, og selvfølgelig var det veldig vanskelig å forstå hva du programmerte ved å se på det. Så et nytt programmeringsspråk kalt assembly language dukket opp. Assembly-språk er et språk som består av en en-til-en-korrespondanse mellom maskinspråk som består av nuller og enere, og når du skriver assemblerspråk, kjører datamaskinen det tilsvarende maskinspråket i henhold til den korrespondansen. Det som skiller assembler fra maskinspråk er at de tilsvarende frasene består av bokstaver i alfabetet som representerer deres funksjoner. Med andre ord er koden mye lettere å forstå enn maskinspråk fordi den er bygd opp av ord som vi bruker i hverdagen.
Fremkomsten av montører har gjort programmeringen enklere. Imidlertid var montører fortsatt lange og vanskelige å bruke fordi de var en en-til-en-korrespondanse til maskinspråk. Videre var montører veldig nært knyttet til strukturen til maskinvare, noe som krevde at programmerere hadde en dyp forståelse av datamaskinens indre funksjoner. Som et resultat var montører ofte avhengige av spesifikk maskinvare og krevde modifikasjoner av språket hver gang ny maskinvare ble introdusert. Programmeringsspråk på høyere nivå ble utviklet for å overvinne disse problemene.
Inspirert av assembler begynte folk å utvikle måter å gjøre programmering enklere for folk. I prosessen dukket det opp flere programmeringsspråk, som i utgangspunktet abstraherer bort fra assembler for å oppnå enkelhet. Mens montører har en en-til-en-korrespondanse til den faktiske flyten av strøm gjennom maskinen, så du trenger å vite hver minste ting om hvordan maskinvaren fungerer, kan de nyere programmeringsspråkene håndtere prosessene som er intuitivt nødvendige for å utføre funksjonen deres i en enkelt instruksjon, noe som betyr at de har en mange-til-en-korrespondanse til assemblerkoden. Disse språkene reduserte vanskeligheten med programmering ved å gjøre det intuitivt å programmere uten å forstå maskinvarestrukturen til datamaskinen og ved å gjøre koden kortere. Programmeringsspråkene som er utviklet på denne måten inkluderer C, C++, FORTRAN og JAVA, og de har fortsatt å utvikle seg på lignende måte for å gjøre dem enklere å bruke, og i dag har det dukket opp flere hverdagsspråk som JAVA Script, PHP og PYTHON.
Utviklingen av programmeringsspråk har parallelt med utviklingen av maskinvare. Etter hvert som kraftigere datamaskiner har blitt tilgjengelig, har behovet for å skrive mer komplekse programmer økt, og programmeringsspråk har utviklet seg tilsvarende. Moderne programmerere har tilgang til mye kraftigere verktøy enn tidligere, noe som gjør det relativt enkelt å utvikle mer komplekse og sofistikerte programmer.
Selv om programmeringsspråk har blitt mye nærmere hverdagsspråket enn tidligere, er det fortsatt ikke et lett tilgjengelig felt. Imidlertid er programmeringsspråk påvirket av og utvikler seg sammen med fremskritt innen datamaskiner. Fra de tidlige dagene med enorme forsknings- og bedriftsdatamaskiner til epoken med personlige datamaskiner (PC-er), er vi nå i smarttelefonens æra. Etter hvert som datamaskiner fortsetter å utvikle seg for å gjøre dem mer brukervennlige, vil programmeringsspråk utvikles for å gjøre det lettere for oss å få dem til å forstå oss.
Tross alt er programmering en samtale med en datamaskin. Og det er mer enn bare å gi kommandoer og få resultater; det handler om å definere hvordan datamaskinen forstår verden og hvordan den vil handle på denne forståelsen. Fremskritt innen programmeringsspråk endrer stadig måten vi samhandler med datamaskiner på, som igjen endrer måten vi samhandler med verden på. I fremtiden kan disse endringene bli så inngrodd i hverdagen vår at kommunikasjon med datamaskiner vil bli like naturlig som hverdagsspråket.