Den fremtrædende computerforsker Leslie Lamport, vinder af 2013 Turing Award, taler ved dialogen i forbindelse med SMU-Global Young Scientists Summit 2020. Kredit:Rebecca Tan
Har du nogensinde fulgt en opskrift på at bage noget brød? Hvis du har, Tillykke; du har udført en algoritme. Algoritmerne, der følger os rundt på internettet for at foreslå genstande, vi kunne lide, og dem, der styrer, hvad der vises i vores Facebook-feeds, kan til tider virke mystiske og uhyggelige. Endnu, en algoritme er simpelthen et sæt instruktioner, der skal udfyldes i en specificeret rækkefølge, enten af menneskelige bagere eller computerprogrammer.
Forskellen, imidlertid, ligger i hvordan algoritmen kommer til udtryk. Opskrifter er skrevet på engelsk eller andre talte sprog, mens computerprogrammer er skrevet på programmeringssprog eller kode. Ifølge Leslie Lamport, vinder af Turing Award 2013, at tænke matematisk kan være et nyttigt skridt til at specificere algoritmen for computerprogrammer, da det kan hjælpe programmører med at afklare deres tankegang og gøre programmer mere effektive.
"De fleste programmører begynder bare at skrive kode; de ved ikke engang, hvad algoritmen er. Det er som at begynde at bygge uden en plan, " sagde Dr. Lamport, taler ved en eksklusiv dialog på Singapore Management University (SMU) den 14. januar 2020, afholdt i forbindelse med SMU-Global Young Scientists Summit 2020.
"Og resultatet? Programmet er svært at fejlfinde og ineffektivt, fordi du ville forsøge at optimere på kodeniveau snarere end på algoritmeniveau. Vi bør gøre, hvad næsten alle andre områder inden for videnskab og teknik gør:indledningsvis beskrive problemet med matematik i stedet for."
Hvorfor matematik er bedre end kode
Ved at bruge Euklids algoritme som eksempel, Dr. Lamport ledte publikum igennem, hvordan en algoritme kan udtrykkes præcist og alligevel simpelt med matematik. Beskrevet af den antikke græske matematiker Euklid i 300 f.Kr. Euklids algoritme er en metode til at identificere den største fælles divisor (GCD) af to tal, det er, det største tal, der kan dividere de to tal uden at efterlade en rest. For eksempel, GCD for tallene 15 og 12 er 3.
Metoden er enkel:Træk det mindre tal fra det større tal, gentag derefter dette indtil begge tal er ens; det resulterende tal er GCD. Hele proceduren kan beskrives i en enkelt matematisk formel, sagde Dr. Lamport, der er anerkendt for at udvikle det udbredte LaTex-filformat, ud over sit banebrydende arbejde med distribuerede computersystemer.
I modsætning, at skrive Euklids algoritme i kode er mere tidskrævende og besværligt, og derfor sværere at fejlfinde, hvis det ikke fungerer korrekt. "Euclids program ville skulle indeholde en masse detaljer på lavere niveau, som hvad du skal gøre, hvis et af tallene er mindre end eller lig med nul, " Dr. Lamport sagde. "Du ville være nødt til at beslutte, at hvis du skriver et computerprogram, men det er ikke algoritmens problem."
Hvor meget mere effektivt ville det være at bruge matematik i stedet for kode? Når ingeniører brugte TLA+, et højt niveau formelt specifikationssprog baseret på matematik udviklet af Dr. Lamport til at modellere, dokumentere og verificere samtidige computersystemer, de var i stand til dramatisk at reducere størrelsen af et operativsystem, der oprindeligt blev brugt til at kontrollere nogle eksperimenter på Rosetta-rumfartøjet. "Et af resultaterne af at specificere softwarelogikken med TLA+ var, at kodestørrelsen kunne reduceres til omkring ti gange mindre end originalen, " Dr. Lamport sagde. "Du reducerer ikke kodestørrelsen ti gange ved bedre kodning; du gør det med renere arkitektur, hvilket bare er et andet ord for en bedre algoritme."
Ud over at være mere effektiv, at tage en matematisk tilgang har den yderligere fordel at gøre fejlretning lettere. Amazon Web Services og Microsoft Azure-ingeniører bruger TLA+ til deres cloud-tjenester, Dr. Lamport sagde, og gennem det har fundet fejl i deres systemdesign, som ikke kunne findes via nogen anden teknik.
Bliv fortrolig med matematik
Selvom matematik er både kraftfuldt og elegant, når det kommer til at beskrive algoritmer, mange mennesker – inklusive computerprogrammører og ingeniører – er skræmt af det og viger tilbage fra at bruge det. "Nogle elever har spurgt os, hvornår de kan stoppe med at gennemgå matematikken og begynde softwareprogrammeringen, " sagde professor Steven Miller, Viceprost (forskning) ved SMU og tidligere stiftende dekan for School of Information Systems.
Dr. Lamport mener, at det at vænne sig til at 'tale' i matematik er et spørgsmål om eksponering. "Hvorfor anses 'to plus to er lig med fire' som simpel, men en logisk operation som 'et element af' er svær at forstå for de fleste mennesker? Logiske operationer såsom "element af" betyder simpelthen, at noget er en del af en masse andre ting Det koncept kræver ikke, at du lærer nogen kompliceret ting som at tælle, da optælling faktisk er ret kompliceret, " han sagde.
"Hvorfor skulle 'element af' virke skræmmende, når 'plus' virker så let? Det er bare et spørgsmål om ikke at være bekendt med det, og det hele er ikke din egen skyld - matematikere er forfærdelige til at lære det."
For Dr. Lamport, at blive flydende i matematik er det første skridt, men for at matematisk tænkning virkelig skal påvirke måden, algoritmer skrives på, det skal ændre den måde, vi tænker på. "Jeg vil gerne understrege, at matematik ikke løser problemet for dig; du skal løse problemet, " sagde han. "At tænke matematisk vil hjælpe dig med at løse problemet; og matematik er med til at sikre, at løsningen var rigtig."
Sidste artikelThe BNP fudge:China-udgave
Næste artikelBias research:Kvinder og andre grupper på arbejde