Wetenschap
Eminente computerwetenschapper Leslie Lamport, winnaar van de Turing Award 2013, spreken tijdens de dialoog die werd gehouden in samenwerking met de SMU-Global Young Scientists Summit 2020. Credit:Rebecca Tan
Heb je ooit een recept gevolgd om wat brood te bakken? Als je hebt, Gefeliciteerd; je hebt een algoritme uitgevoerd. De algoritmen die ons over het internet volgen om items voor te stellen die we misschien leuk vinden, en degenen die bepalen wat er in onze Facebook-feeds wordt weergegeven, kunnen soms mysterieus en griezelig lijken. Nog, een algoritme is gewoon een reeks instructies die in een bepaalde volgorde moeten worden voltooid, hetzij door menselijke bakkers of computerprogramma's.
Het verschil, echter, ligt in hoe het algoritme wordt uitgedrukt. Recepten zijn geschreven in het Engels of andere gesproken talen, terwijl computerprogramma's zijn geschreven in programmeertalen of code. Volgens Leslie Lamport, winnaar van de Turing Award 2013, wiskundig denken kan een nuttige stap zijn om het algoritme voor computerprogramma's te specificeren, omdat het programmeurs kan helpen hun denken te verduidelijken en programma's efficiënter te maken.
"De meeste programmeurs beginnen gewoon met het schrijven van code; ze weten niet eens wat het algoritme is. Het is alsof je begint te bouwen zonder een blauwdruk, " zei Dr. Lamport, sprekend tijdens een exclusieve dialoog op de Singapore Management University (SMU) op 14 januari 2020, gehouden in samenwerking met de SMU-Global Young Scientists Summit 2020.
"En het resultaat? Het programma is moeilijk te debuggen en inefficiënt omdat je zou proberen te optimaliseren op codeniveau in plaats van op algoritmeniveau. We zouden moeten doen wat bijna elk ander gebied van wetenschap en techniek doet:in eerste instantie het probleem beschrijven met wiskunde in plaats daarvan."
Waarom wiskunde beter is dan code
Met het algoritme van Euclides als voorbeeld, Dr. Lamport liet het publiek zien hoe een algoritme precies en toch eenvoudig kan worden uitgedrukt met wiskunde. Beschreven door de oude Griekse wiskundige Euclides in 300 voor Christus, Euclid's algoritme is een methode voor het identificeren van de grootste gemene deler (GCD) van twee getallen, dat is, het grootste getal dat de twee getallen kan delen zonder een rest over te laten. Bijvoorbeeld, de GCD van de nummers 15 en 12 is 3.
De methode is eenvoudig:trek het kleinere getal af van het grotere getal, herhaal dit dan totdat beide nummers hetzelfde zijn; het resulterende getal is de GCD. De hele procedure kan worden beschreven in een enkele wiskundige formule, zei dr. Lamport, die bekend staat om het ontwikkelen van het veelgebruikte LaTex-bestandsformaat, naast zijn baanbrekende werk op gedistribueerde computersystemen.
In tegenstelling tot, het schrijven van het algoritme van Euclid in code is tijdrovender en omslachtiger, en daarom moeilijker te debuggen als het niet correct werkt. "Het programma van Euclides zou veel details op een lager niveau moeten bevatten, zoals wat je moet doen als een van beide getallen kleiner is dan of gelijk is aan nul, "Zei Dr. Lamport. "Dat zou je moeten beslissen als je een computerprogramma schrijft, maar dat is niet het probleem van het algoritme."
Hoeveel efficiënter zou het gebruik van wiskunde in plaats van code zijn? Toen ingenieurs TLA+ gebruikten, een formele specificatietaal op hoog niveau, gebaseerd op wiskunde, ontwikkeld door Dr. Lamport om te modelleren, documenteren en verifiëren van gelijktijdige computersystemen, ze waren in staat om de omvang van een besturingssysteem dat oorspronkelijk werd gebruikt om enkele experimenten op het Rosetta-ruimtevaartuig te besturen, drastisch te verkleinen. "Een van de resultaten van het specificeren van de softwarelogica met TLA+ was dat de codegrootte kon worden verkleind tot ongeveer tien keer kleiner dan het origineel, "Zei Dr. Lamport. "Je verkleint de codegrootte niet met tien keer door betere codering; je doet het door schonere architectuur, dat is gewoon een ander woord voor een beter algoritme."
Naast efficiënter te zijn, het volgen van een wiskundige benadering heeft als bijkomend voordeel dat het debuggen gemakkelijker maakt. Amazon Web Services en Microsoft Azure-engineers gebruiken TLA+ voor hun cloudservices, Dr. Lamport zei, en hebben daardoor bugs in hun systeemontwerpen gevonden die met geen enkele andere techniek konden worden gevonden.
Word vertrouwd met wiskunde
Hoewel wiskunde zowel krachtig als elegant is als het gaat om het beschrijven van algoritmen, veel mensen, waaronder computerprogrammeurs en ingenieurs, zijn erdoor geïntimideerd en schrikken ervoor terug om het te gebruiken. "Sommige studenten hebben ons gevraagd wanneer ze kunnen stoppen met het maken en beoordelen van de wiskunde en beginnen met het programmeren van software, " zei professor Steven Miller, Vice Provost (Research) bij SMU en voorheen de Founding Dean van de School of Information Systems.
Dr. Lamport gelooft dat wennen aan 'spreken' in de wiskunde een kwestie van blootgeven is. "Waarom wordt 'twee plus twee is vier' als eenvoudig beschouwd, maar een logische bewerking zoals 'een element van' is voor de meeste mensen moeilijk te begrijpen? Logische bewerkingen zoals 'element van' betekent gewoon dat iets deel uitmaakt van een heleboel andere dingen Dat concept vereist niet dat je ingewikkelde dingen leert, zoals tellen, omdat tellen eigenlijk best ingewikkeld is, " hij zei.
"Waarom zou 'element van' beangstigend lijken als 'plus' zo gemakkelijk lijkt? Het is gewoon een kwestie van er niet bekend mee zijn, en dit is niet allemaal je eigen schuld - wiskundigen zijn er slecht in om het te onderwijzen."
Voor dr. Lamport, vloeiend worden in wiskunde is de eerste stap, maar om wiskundig denken echt invloed te laten hebben op de manier waarop algoritmen worden geschreven, het moet de manier waarop we denken veranderen. "Ik wil benadrukken dat wiskunde het probleem niet voor je oplost; je moet het probleem oplossen, "zei hij. "Wiskundig denken zal je helpen het probleem op te lossen; en wiskunde helpt ervoor te zorgen dat de oplossing de juiste was."
Wetenschap © https://nl.scienceaq.com