Hvad er computerprogrammering? Definition af softwareudvikling.

Min fem år gamle søn, Ramy, henvendte sig til mig en dag, mens jeg arbejdede hjemmefra og spurgte: "Hvad laver du mor?"

”Jeg arbejder,” svarede jeg.

Han kiggede på min bærbare skærm og spurgte igen: "Men hvad laver du ?"

Jeg holdt pause og begyndte at tænke over dette. Jeg er webudvikler og programmerer i JavaScript. Hvordan forklarer jeg dette for en femåring?

”Jeg skriver instruktioner til computeren, og computeren gør, hvad jeg beder den gøre. Dette kaldes programmering, ”forklarede jeg. Ramy så forvirret ud.

Jeg fortsatte, "For eksempel kan jeg give computeren instruktioner om at tilføje to tal, og det giver mig svaret." Jeg skrev en funktion, der tilføjede 2 + 2 og viste ham svaret på min skærm. Hans øjne lyste op.

Fra det tidspunkt begyndte jeg at tænke over, hvad der er programmering ? Hvad sker der faktisk under emhætten? Da jeg først begyndte at lære at kode i 2017 på freeCodeCamp, brugte jeg den indbyggede kodeditor på webstedet og kunne se resultaterne. Jeg forstod dog ikke rigtig den magi, der foregik bag kulisserne.

Jeg begyndte at undersøge noget, og det var nogle af de ord, jeg søgte efter: ”Hvad er computerprogrammering? Hvad er software? ” Der er over 600 millioner søgeresultater på Google til "Hvad er computerprogrammering?" Det er lidt som at gå ned ad et kaninhul - det kan være kompliceret og overvældende.

Jeg ville sammensætte en omfattende introduktion til hvad computerprogrammering og softwareudvikling er for begyndere. Jeg starter med computerprogrammering og dækker derefter computerprogrammeringssprog. Så taler jeg om software- og softwareudvikling. Endelig vil jeg gå videre til de aktuelle tendenser og fremtiden for computerprogrammering.

Hvis du overvejer at gå over i programmeringsverdenen eller bare er interesseret i at lære at kode, så giver dette dig et generelt overblik uden (for meget!) Teknisk jargon.

Bare en ting at bemærke: du kan bruge ordene "Developer" og "Programmer" til at betyde nogen, der skriver kode.

Hvad er computerprogrammering?

På Wikipedia er definitionen af ​​"Computerprogrammering":

"Computerprogrammering er processen med at designe og opbygge et eksekverbart computerprogram til opnåelse af et specifikt databehandlingsresultat."

Men hvad betyder det?

En computer i sig selv er ikke smart. Ja, de er magtfulde og har potentialet til at udføre opgaver meget hurtigere end et menneske. Men computere har brug for et menneske til at skrive instruktioner og fortælle dem, hvad de skal gøre.

Derfor er programmering processen med at skrive disse instruktioner. Vi bruger et programmeringssprog til at gøre dette. Disse instruktioner oversættes til et læsbart format, som en computer kan forstå. Instruktionerne udføres derefter af computeren.

Programmering af, hvordan man laver en kop te

Lad os tage en kop te som et eksempel. Hvis du skulle give instruktioner om, hvordan du laver en kop te, ser det ud som følger:

  1. Kog lidt vand
  2. Hæld varmt vand i en kop med en tepose
  3. Lad te brygge
  4. Fjern teposen
  5. Tilsæt mælk og / eller sukker (hvis det ønskes)

Simpelt, ikke?

Hvad vi tager for givet er, at kommunikation med et menneske er anderledes end at kommunikere med en computer. Et menneske har forudgående viden og livserfaring - de ved måske, hvor de kan finde te. Vi antager, at de ved, at mælk opbevares i et køleskab.

Mennesker har også intuition. Hvis du ikke kan finde en kop, kan du søge i skabene i stedet. Der læses også folks ikke verbale signaler som kropssprog.

Når det kommer til programmering, skal du være meget specifik. Fortsæt med hvordan man laver en kop te, kan du skrive instruktioner i pseudokode som denne:

  1. Gå til køkkenet
  2. Find kedlen
  3. Åbn kedlens låg
  4. Fyld kedlen med vand
  5. Tænd for kedlen
  6. Vent til det koger til 100 grader Celsius
  7. Find en kop

Og så videre.

Hvad hvis instruktioner som dem ovenfor ikke er nok? Du bliver muligvis nødt til at tilføje logik for at tage højde for alle scenarier. For eksempel: 2) Find kedlen. Er det en elkedel, eller er det en kedel, du lægger på en kogeplade? Du bliver nødt til at tilføje en betingelse, at hvis det er en elkedel, skal du gøre xyz. Ellers skal du gøre xyz til en kedel, som du lægger på en kogeplade.

Selv når du tror, ​​at du har taget højde for alle mulige forhold og givet meget specifikke instruktioner, er der ting, som du måske ikke forudser. Du begynder at lave din kop te, og noget går galt. Åh nej! Din kedel holder op med at arbejde, når du begynder at koge den.

Hvad skete der? Der er en fejl i din kode! En fejl er en fejl eller fejl i din kode, som kan føre til uventede resultater. For at rette din kode, gennemgår du en proces med "fejlretning", hvor du finder problemerne i din kode og løser problemerne.

I dette tilfælde inkluderede dine instruktioner ikke at fylde din kedel op til 0,8 liter for at dække varmeelementet. Så kedlen slukkes som en sikkerhedsforanstaltning.

For at forhindre, at der opstår fejl, efter at du har kørt dit program, udfører udviklere test og enhedstest på deres programmer. Enhedstest er det sted, hvor du skriver tests til dele af din kode. Testene fejler eller bestås.

For eksempel skriver du en funktion, der tilføjer to tal: 1 + 1. Du skriver derefter en enhedstest, hvor den forventede output er 2. Alle svar mislykkes, medmindre det er 2.

Du gennemgår din kode, indtil alt kører uden uventede problemer. Programmering er derfor en detaljeret orienteret og iterativ proces, hvor du løbende forbedrer det, du tidligere har skrevet.

Hvordan forstår din computer din kode?

Hvad de fleste programmører skriver som "kode" er et programmeringssprog på højt niveau. Det er abstrakt af design. Abstraktion i denne sammenhæng betyder, at vi bevæger os længere væk fra maskinkode, og programmeringssprog er tættere på talte sprog.

Men en computer kan ikke forstå tekstbaseret kode. Det skal kompileres (oversættes) til maskinkode. Maskinkode er et sæt instruktioner, som kan forstås af en computers centralbehandlingsenhed (CPU). Tænk på CPU'en som hjernen på en computer. Maskinkode består af ens og nuller. Dette kaldes binært.

For eksempel er det sådan, du ville skrive "Hello World" i binær:

01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100

Som du kan se, er binær ikke let læseligt for mennesker, så vi har en tendens til at undgå programmering i maskinkode!

Hvad er et programmeringssprog præcist?

Programmeringssprog falder både inden for spektret af sprog på lavt niveau, såsom samling, og programmeringssprog på højt niveau, såsom JavaScript.

Men hvad er et programmeringssprog præcist? Den bedste analogi, jeg kan tænke på, er de talte sprog, vi bruger i dag. Alle sprog udtrykker den samme idé, men på forskellige måder til en anden person:

Engelsk: Hej

Fransk: Bonjour

Spansk: Hola

Programmeringssprog er forskellige måder at udtrykke den samme idé på, men til en computer i stedet. Følgende udskriver “Hej” på tre forskellige programmeringssprog:

JavaScript: alert(“Hello”);

Python: print(“Hello”)

Perl: print "Hello";

Hvert programmeringssprog har sin egen syntaks. På engelsk har vi grammatik. Det samme gælder programmeringssprog - de har hver deres regelsæt.

Hvordan ved du, om et programmeringssprog er et programmeringssprog?

Dette kan virke som et underligt spørgsmål at stille. Er al kode skrevet på et programmeringssprog? Teknisk set nej. For eksempel er der en misforståelse om, at HTML (HyperText Markup Language) er et programmeringssprog. Det er faktisk et "erklærende" sprog, der ifølge Wikipedia er:

"... en stil til at opbygge strukturen og elementerne i computerprogrammer - der udtrykker beregningens logik uden at beskrive dens kontrolflow."

Med andre ord giver HTML strukturen på en webside, men styrer ikke, hvordan hjemmesiden opfører sig eller fungerer.

Du kan afgøre, om et sprog er et programmeringssprog ved at se, om det er “Turing complete”. Turing Machine er en hypotetisk maskine beskrevet af Alan Turing i 1936. For at et programmeringssprog skal være Turing komplet, har det brug for:

  1. Betinget forgrening (som jeg udforsker nedenfor).
  2. Evnen til at læse og skrive på et uendeligt bånd. Dette betyder i det væsentlige at være i stand til at gemme data i hukommelsen.

Jeg vil ikke udforske dette emne dybt, men hvis du er interesseret, er denne video en nyttig introduktion.

Hvad er fundamentet for et programmeringssprog?

Der er nogle grundlæggende elementer, der ofte vises. Dette inkluderer variabler, sløjfer, betingede udsagn, datastrukturer og algoritmer. Dette er byggestenene i de fleste programmeringssprog.

Hvad er en 'for loop'?

For sløjfer er nyttige, hvis du gentagne gange skal udføre et sæt instruktioner. For eksempel har du eftermiddagste og skal lave fem kopper te til dine gæster. For at lave en kop te skal du følge et sæt instruktioner, som mit tidligere eksempel.

I stedet for at skrive instruktionerne fem gange kan du bede computeren om at gennemgå de samme instruktioner fem gange. Dette giver dig mulighed for at skalere.

Nedenfor er et eksempel på en grundlæggende forsløjfe:

for (let i = 0; i < 5; i++) { console.log("Make Tea!"); } //expected output: "Make Tea!" "Make Tea!" "Make Tea!" "Make Tea!" "Make Tea!" 

Hvad er en betinget erklæring?

I JavaScript har vi if...elsebetingede udsagn. Disse bruges, når du vil udføre forskellige handlinger baseret på en betingelse.

Når jeg går tilbage til mit tidligere eksempel, spørger du brugeren, om de vil have mælk i deres te. Hvis de ønsker mælk, skal du tilføje mælk til te, ellers skal du ikke gøre noget.

Her er et eksempel på en if...elseerklæring i JavaScript:

if(milk == true) { // add milk } else { // don't add milk } 

Hvad er datastrukturer?

"En datastruktur er en måde at organisere data på, så de kan bruges effektivt ... De er vigtige ingredienser til at skabe hurtige og kraftige algoritmer."

(Datastrukturer Let til avanceret kursus, William Fiset)

Almindelige datastrukturer, som du kan finde på tværs af mange programmeringssprog, er arrays, objekter, tupler og fagforeninger. Jeg tager arrays som et eksempel.

I JavaScript kan en matrix gemme en række data såsom tal og strenge (tekst). Jeg elsker kiks med min te, så jeg vil gemme dem i mit array:

biscuits = [“shortbread”, “digestive”, “ginger nut”]; 

Disse kiks gemmes i computerens hukommelse, og du som udvikler kan få adgang til en bestemt kiks ved at henvise til dens indeks. Du begynder at tælle indekset fra 0. Indekset er som kiksens position i en kiksform. Du refererer til det ved hjælp af firkantede parentes notation.

biscuits[0]; // “shortbread” biscuits[1]; // “digestive” biscuits[2]; // “ginger nut” 

Hvis du ønsker at få en digestive, kan du få adgang til sit indeks position: biscuits[1]. Jeg kan let finde det, fordi jeg ved, hvor det er gemt.

Husk at det første element i arrayet er indeks 0. Så når du henviser til index 1, er det faktisk det andet element i arrayet.

Derfor er datastrukturer en måde at administrere data på. Dette inkluderer lagring og hentning af data. Det er mere effektivt at udføre algoritmer, hvis data er organiseret i en datastruktur.

Hvad er en algoritme?

En algoritme er et specifikt sæt instruktioner, der løser et problem. Det er et abstrakt koncept. Her er et link til en kort video fra TED om "Hvad er en algoritme?".

Husker du, da vi skrev instruktioner om, hvordan vi lavede en kop te tidligere? Det er i det væsentlige en algoritme: et sæt sekventielle instruktioner.

Da jeg skrev min første funktion i JavaScript, oprettede jeg faktisk min første algoritme uden at vide, at det var en algoritme! En funktion er en implementering af en algoritme.

Ligesom i det virkelige liv er der ofte flere løsninger til et kodningsproblem. Sig for eksempel, at du planlægger at gå til en cafe, som du aldrig har været på før. Der er flere måder at komme til din destination på. Nogle ruter tager længere tid end andre, men i sidste ende fører de alle dig til det samme sted. Ideelt set vil du vælge den hurtigste, mest effektive og nemmeste rute.

Det samme princip kan anvendes til programmering. Der er normalt et par måder at løse et kodningsproblem på, og programmører stræber efter at finde den mest elegante og effektive løsning.

Udviklere får det ofte ikke rigtigt ved første forsøg! Ligesom jeg ville skrive et første kladde til en artikel, er det det samme til kodning. Jeg ville udarbejde en artikel flere gange, hvor jeg kan ændre strukturen, redigere, omskrive sektioner og skære unødvendige sætninger ud. I programmeringen gennemgår vi en lignende proces, og vi kalder dette refactoring af vores kode.

Hvad er de vigtigste programmeringssprog, der bruges i dag? Hvor mange er der?

Der ser ud til at være en del debat om det samlede antal programmeringssprog på internettet. Nogle websteder, såsom Wikipedia, viser cirka 700 af "alle bemærkelsesværdige" aktuelle og historiske programmeringssprog. Andre sider såsom Tiobe sporer og overvåger 250 af de "mest populære" sprog.

På Github var JavaScript det mest populære programmeringssprog i 2019:

Hvorfor er der så mange programmeringssprog? Hvordan har programmeringssprog udviklet sig?

Forskellige programmeringssprog er udviklet til at imødekomme forskellige behov. Dette demonstreres gennem historien om programmeringssprog. Se dette diagram af O'Reilly, som kortlægger historikken for programmeringssprog fra 1950'erne til 2004.

I midten af ​​1950'erne blev FORTRAN (Formula Translation) oprettet for at udarbejde komplekse matematiske, statistiske og videnskabelige problemer. COBOL (“Common Business Oriented Language”) blev oprettet i 1959 for at gøre det lettere for virksomheder at bruge kode. Der er nogle sprog, der er mere egnede til at udføre statistisk analyse, såsom R (1976).

Der var stigningen i programmeringssprog til generelle formål fra 1970'erne og fremefter, såsom C, C ++, C # og Java. Som du kan se i diagrammet ovenfor, dominerer sprog til generelle formål de 10 mest populære sprog.

JavaScript, oprettet i 1995, er et populært sprog på nettet. Det giver websteder deres interaktivitet og liv.

For nylig har vi set fødslen af ​​nye sprog som Go fra Google, som var beregnet til at vedligeholde store softwaresystemer mere effektivt. Vi vil sandsynligvis se endnu flere programmeringssprog oprettet i fremtiden.

Kompileret vs. fortolket programmeringssprog

Efterhånden som du begynder at blive mere fortrolig med programmeringssprog, støder du på kompilerede og fortolkede programmeringssprog. Hvad er forskellen?

Hvad er et kompileret sprog?

Programmeringssprog som C, C ++ og Java har en "build" -proces, hvor din kode kompileres ned til et mere læsbart format (maskinsprog) til computeren.

Det kan være lettere at tænke på to mennesker, der ikke taler det samme sprog, men de er nødt til at arbejde sammen. John taler engelsk og Chloe taler fransk. Chloe skriver et sæt instruktioner om, hvordan man laver en chokoladesoufflé på fransk, men John kan ikke forstå det. De har brug for en oversætter, der kan tale både engelsk og fransk. Det er lettere, hvis oversætteren på forhånd kan oversætte Chloes instruktioner, før de begynder at lave mad sammen.

I stedet ”taler” udviklere et programmeringssprog som Java eller Python. De har brug for, at deres kode skal kompileres (oversættes) til maskinsprog, før et program kan køre, så computeren kan forstå det.

Programmer lavet fra et kompileret sprog er lettere for en computer at forstå og kører derfor meget hurtigt.

Hvad er et fortolket sprog?

JavaScript, PHP og Python er eksempler på fortolkede programmeringssprog. Der er ingen byggeproces, og koden behøver ikke at blive kompileret. Din kode fortolkes eller læses linje for linje, når du kører programmet.

Tilbage til min analogi af Chloe og John. John skriver ned et sæt instruktioner om, hvordan man laver en hyrdetærte. Oversætteren oversætter ikke Johns instruktioner på forhånd, men slutter sig i stedet til dem til deres madlavningssession. Oversætteren oversætter hver linje af Johns instruktioner fra engelsk til fransk, mens Chloe laver mad. På grund af dette tager det længere tid for Chloe at forberede og tilberede måltidet.

Derfor er fortolkede sprog langsommere end kompilerede sprog. De skal oversættes i farten, så computeren kan forstå.

Men med just-in-time (JIT) kompilatorer bliver fortolkede sprog hurtigere og mere effektive.

Hvilke (r) programmeringssprog skal jeg vælge at lære?

Programmeringssprog gør stort set det samme, men de er bare forskellige måder at udtrykke de samme instruktioner på en computer. Når du først har forstået begreberne og fundamentet for et programmeringssprog, vil læringskurven til at lære et andet sprog ikke være så stejl.

Det programmeringssprog, du først skal vælge, afhænger af en række faktorer. For eksempel ville jeg være webudvikler, så jeg valgte JavaScript som mit primære programmeringssprog. Andre sprog til internettet, du kan lære, er PHP og Ruby on Rails.

Hvis du vil blive datavidenskabsmand, kan Python muligvis være en mulighed. Python betragtes som et af de bedste data science-værktøjer til at analysere big data. Jeg nævnte R tidligere, hvilket er et andet sprog, der bruges meget blandt dataforskere og statistikere.

Python er et programmeringssprog til generelle formål og er også nyttigt at lære, hvis du vil komme ind i området Machine Learning og Artificial Intelligence.

Hvis du vil blive softwareingeniør, kan Java være en mulighed. Java er et af de mest populære og efterspurgte sprog i verden. Det er et alsidigt sprog, der kan bruges til at udvikle software til små til store virksomheder.

Så tænk over hvilken rolle inden for teknologi, du gerne vil have, og hvilken slags virksomheder du vil arbejde for.

At vælge et programmeringssprog afhænger også af, hvilken software du prøver at bygge. Dette fører os pænt til vores næste afsnit.

Hvad er software?

Hvor mange gange interagerer du med software på en given dag?

Software er overalt. Det er integreret som indlejrede systemer i dagligdags enheder såsom din mikrobølgeovn, vaskemaskiner, biler, tv'er, legetøj til børn og fjernbetjeninger. Derefter er der mere åbenlyse computerrelaterede enheder, der har applikations- og / eller systemsoftware som tablets, smartphones, laptops, stationære computere og hjemmeassistenter som Alexa.

Den gennemsnitlige person interagerer sandsynligvis med software et par dusin gange om dagen, hvis ikke mere. Det er en del af vores daglige liv.

Al software er programmeret af en udvikler. Software er smidig af natur og kan konstant gentage. Software og hardware er sammenflettet. Forestil dig din telefon uden dens apps og operativsystem. Telefonen ville i det væsentlige være en dyr mursten! Derfor giver software liv i hardware, og hardware er sådan, vi interagerer med software.

Størstedelen af ​​software, der er oprettet af programmører, er skrevet på et programmeringssprog på højt niveau.

Hvad er softwareudvikling?

Softwareudvikling er alt fra idé til idé til udvikling og implementering. Denne proces, fra at opfatte en idé til at implementere software, er også kendt som softwarelevecyklussen.

Der er flere faser i softwarelevecyklussen: opdagelse, design, programmering / oprettelse, test og implementering / udførelse. Det inkluderer også alt andet i softwareudviklingsøkosystemet såsom vedligeholdelse, dokumentation og fejlrettelser.

Jeg vil ikke gå i detaljer her, da emnet for softwareudvikling berettiger sin egen artikel.

Nuværende tendenser inden for softwareudvikling og computerprogrammering

Kunstig intelligens og maskinlæring

I de senere år har du sandsynligvis hørt om udtryk som kunstig intelligens og maskinindlæring. Nogle gange bruges de om hinanden, men er de de samme?

Nej, de er ikke helt de samme. Maskinindlæring er, hvor en maskine lærer gennem erfaring. Mens kunstig intelligens er en bredere idé om, at maskiner kan udføre opgaver intelligent. Maskinindlæring er en delmængde af kunstig intelligens.

Hvad er kunstig intelligens?

Jeg har dækket, hvordan programmeringssprog fungerer - programmøren skriver et sæt instruktioner, som computeren kan udføre. Kunstig intelligens (AI) er et bredere koncept, hvor computere kan efterligne den måde, en hjerne fungerer på. Det træner en maskine til at ”tænke” som et menneske.

Det store spørgsmål er: kan du replikere menneskelig intelligens i en maskine? Kan du efterligne den måde et menneske lærer, begrunder og opfatter? Alan Turing stillede dette spørgsmål i sin artikel i 1950:

"Kan maskiner tænke?"

(Computing Machinery and Intelligence, 1950 af Alan Turing)

I Turings artikel foreslog han ”Turing-testen”, hvor en maskine ville blive klassificeret som “intelligent”, hvis en person ikke kunne se forskellen mellem svarene fra et menneske og den kunstigt intelligente maskine.

Efter 70 år forsøger AI-udviklere, akademikere, forskere og forskere stadig at besvare dette spørgsmål og skabe en kunstigt intelligent maskine. Jeg tror ikke, vi er der endnu. Har du prøvet at tale med Siri eller Alexa? Samtaler med disse to enheder er stadig grundlæggende. Jeg er dog sikker på, at det bare er et spørgsmål om tid, før teknologien forbedres.

Virksomheder som DeepMind undersøger dette koncept, og om maskiner er i stand til intelligens. DeepMinds AlphaGo-program skabte overskrifterne, da det slog en professionel spiller hos Go. Dette var en kæmpe milepæl for AI.

Hvad er maskinlæring?

Machine learning (ML) er en delmængde af kunstig intelligens. ML er en anden måde at programmere på. Det er tanken, at computeren har evnen til at lære uden at være eksplicit programmeret. Arthur Samuel kom først med ideen om maskinlæring i sin artikel i 1959:

"Programmering af computere til at lære af erfaring bør i sidste ende fjerne behovet for meget af denne detaljerede programmeringsindsats."

Da jeg lærte min søn at genkende en kat, ville jeg vise ham billeder af katte. Jeg gjorde dette gentagne gange, indtil han var i stand til at genkende en kat uden at jeg bad ham om det.

Maskinindlæring ligner dette. Du giver din computer hundrede billeder (input) af katte. Det lærer derefter mønstrene i dataene og bygger et klassificeringssystem gennem gentagelse. Hvis du giver din computer flere billeder af katte og andre dyr, skal den kunne identificere, om dyret på billedet er en kat eller ikke en kat. Det har i det væsentlige lært, hvordan en kat skal se ud.

ML giver dine computerdata og eksempler, og til gengæld er det i stand til at lære for sig selv som babyer og små børn gør. I stedet for at udviklere giver instruktionerne til en computer, opretter computeren sit eget sæt instruktioner til at følge - maskinlæringsalgoritmer. Maskinindlæringsalgoritmer er en delmængde af ML, et koncept kendt som “Deep learning”.

”AI er en af ​​de mest dybe ting, vi arbejder på som menneskehed. Det er dybere end ild eller elektricitet ... ”

(Sundar Pichai, World Economic Forum, januar 2020)

Citatet fra Sundar Pichai, administrerende direktør for Alphabet Inc, opsummerer vigtigheden af ​​AI og ML.

Hvad er fremtiden for computerprogrammering?

Dette sidste afsnit vil være mine forudsigelser om fremtiden for computerprogrammering.

Udviklere vil fortsætte med at oprette nye programmeringssprog. Programmeringssprog bliver mere abstrakte og derfor tilgængelige for enkeltpersoner, der lærer at kode.

Jeg tror, ​​at der vil blive lagt større vægt på kodning og programmering af uddannelse i grundskolens og gymnasiets læseplaner. Efterspørgslen efter udviklere og programmører vil kun stige, når teknologi og software bliver stadig mere integreret i vores daglige liv. Programmering bliver allestedsnærværende.

Vi vil se den fortsatte stigning og popularitet af ML og AI for at hjælpe udviklere i softwareudviklingsprocessen. Dette inkluderer automatisering af test sammen med afsløring og forebyggelse af sårbarheder og fejl.

AI vil revolutionere alle aspekter af vores samfund, ikke kun inden for programmering og softwareudvikling. For eksempel har vi set store fremskridt inden for AI og selvkørende biler.

En af verdens førende virksomheder, der udvikler selvkørende biler, er Tesla, grundlagt af Elon Musk. Under opsyn af en menneskelig chauffør kan en Tesla-bil nu automatisk skifte kørebane, navigere autonomt på motorveje med begrænset adgang, og ejeren kan tilkalde bilen til og fra en garage eller parkeringsplads. Teslas mål er at skabe en fuldautomatisk, selvkørende bil uden menneskelig opsyn.

Efterhånden som maskiner bliver mere intelligente, kan vi komme til et punkt, hvor maskiner overgår intelligensen hos mennesker. Dette kaldes singularitet. Det kan virke som komplet science fiction i øjeblikket! Men bemærkelsesværdige tal som Ray Kurzweil forudsiger, at maskiner med intelligens på menneskeligt niveau vil være tilgængelige inden for de næste 20 år. Kurzweil er kendt for sine nøjagtige forudsigelser af, hvordan teknologier vil udvikle sig. Han skrev en bog om dette: The Age of Spiritual Machines.

Hvordan vil vores samfund ændre sig som et resultat af superintelligente maskiner?

Afsluttende ord

Teknologipåvirkninger og kode berører næsten alle dele af vores liv. Fra vores valg af underholdning (onlinespil, streaming) og hvordan vi handler, til at vælge hvad vi spiser og endda hvordan vi går sammen! Kode er vigtig, og flere job skifter og kræver, at folk i det mindste har en grundlæggende forståelse af programmering.

Alligevel er der kun cirka 23,9 millioner udviklere i verden ifølge Global Developer Population and Demographic study 2019. For at sætte dette i perspektiv, er det kun 0,3% af verdens befolkning, der ved, hvordan man programmerer. Som jeg diskuterede tidligere, øges vores afhængighed af software og teknologi. Ifølge US Bureau of Labor-statistikker forventes efterspørgslen efter softwareingeniører at vokse med 21% fra 2018 til 2028. Derfor er vi nødt til at øge antallet af udviklere.

Hvis du overvejer at blive udvikler, skal du starte i dag. Det er en utrolig spændende tid at gøre det! Der er mange lære-til-kode ressourcer online. Der er selv-tempo platforme som freeCodeCamp. Der er også et godt indlæg af Laurence Bradford, der samler alle de bedste ressourcer til at lære at kode gratis. Gør noget research og find ud af, hvilken ressource der passer til din læringsstil.

Hvis du har spørgsmål eller bare vil sige hej, find mig på Twitter @PhoebeVF.

En særlig tak til Katerina Limpitsouni fra Undraw for at skabe illustrationer til denne artikel.