Gå over Patch Tuesday – det er Ada Lovelace Day! PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Gå over Patch Tuesday – det er Ada Lovelace Day!

Den anden tirsdag i hver måned er Microsofts faste dag for sikkerhedsopdateringer, stadig kendt af næsten alle under dets uofficielle kaldenavn "Patch Tuesday".

Men den anden tirsdag i oktober er det også Ada Lovelace Day, fejrer Ada, grevinde af Lovelace.

Ada var en sand pioner, ikke kun inden for databehandling, men også inden for datalogi, og hun gav sit navn til programmeringssproget Ada.

Ada-sproget, spændende nok, opstod fra et amerikansk forsvarsministeriums projekt, der havde til formål at "debabelisere" verden af ​​statslig kodning, hvor hvert departement syntes at foretrække et andet sprog eller en anden sprogdialekt, hvilket gjorde det sværere, dyrere og dyrere. mindre pålidelige til at få dem til at arbejde sammen.

Ada havde adskillige syntaktiske funktioner, der havde til formål at forbedre læsbarheden og undgå almindelige fejl. I modsætning til kommentarer i C, som starter med /* og løb til den næste */, måske mange linjer senere, ignorerer Ada simpelthen alt efter -- på en linje, så kommentarer kan ikke ved et uheld køre længere, end du havde tænkt dig. I stedet for at omslutte alle flerlinjers kodeblokke inden for snoede parenteser ({...}, også kendt som seler), Ada har en unik terminator for hver slags multi-line blok, f.eks end record, end loop , end if. Ada Lovelace, formoder vi, ville have bifaldet klarheden i hendes navnebror-sprog, men Ada-sproget fangede aldrig rigtigt, og C's snoede parentes-syntaks har stort set vundet dagen, med Python måske det eneste sprog uden snoede parenteser i udbredt brug. Squiggly parentes er et vigtigt aspekt af C, C++, C#, Go, Java, JavaScript, Perl, Rust og mange andre populære sprog.

Ada Lovelaces æra

Du vil måske blive overrasket over at finde ud af, hvor stærkt Adas navn er forbundet med begyndelsen af ​​datalogi, at hun levede i første halvdel af det nittende århundrede, længe før noget, som vi i øjeblikket genkender som en computer, eller endda en lommeregner, eksisterede. .

(Ada døde af livmoderkræft i 1852 kun 36 år gammel.)

Men selvom computere i deres moderne forstand ikke eksisterede i 1800-tallet, var de meget næsten gjorde.

Her er hvordan det næsten skete.

Charles Babbage udtænkte i begyndelsen af ​​1800-tallet en berømt mekanisk regneanordning kaldet Forskellen motor der i det mindste i teorien automatisk kunne løse polynomieligninger i sjette grad, fx ved at finde værdier for X, der ville tilfredsstille:

aX6 + bX5 +cX4 +dX3 +eX2 + fX + g = 0

Den britiske regering var interesseret, fordi en sådan enhed kunne bruges til at skabe nøjagtige matematiske tabeller, såsom kvadratrødder, logaritmer og trigonometriske forhold.

Og enhver maskine, der er god til trigonometriske beregninger, ville også være praktisk til at beregne ting som skydeborde, der kunne revolutionere nøjagtigheden af ​​artilleri til lands og til vands.

Men Babbage havde to problemer.

For det første kunne han aldrig helt nå den tekniske præcision, der var nødvendig for at få Difference Engine til at fungere ordentligt, fordi det involverede tilstrækkeligt mange sammenlåsende gear til at tilbageslag (små men kumulative unøjagtigheder, der førte til "sjusk" i mekanismen) ville låse den.

For det andet ser det ud til, at han har mistet interessen for Difference Engine, da han indså, at det var en blindgyde – i moderne termer kan du tænke på det som en lommeregner, men ikke som en tablet-computer eller en bærbar computer.

Så Babbage sprang videre med designet af en endnu mere kompleks enhed, som han døbte Analytisk motor, som kunne løse meget mere generelle videnskabelige problemer end en slags polynomialligning.

Måske ikke overraskende, hvis desværre set i bakspejlet. regeringen var ikke synderligt interesseret i at finansiere Babbages mere avancerede projekt.

I betragtning af at han ikke havde formået at bygge den mekanisme, der er nødvendig for en meget enklere ligningsløser, hvilken chance havde en kæmpe, dampdrevet, almen computer for nogensinde at levere nyttige resultater?

Det europæiske konferencekredsløb

I et mærkeligt twist af internationalt, flersproget samarbejde rejste Babbage til Italien for at holde et foredrag, der promoverede sin analytiske motor.

Blandt publikum var en militæringeniør ved navn kaptajn Luigi Menabrea, som således blev inspireret til at samarbejde med Babbage om at fremstille et papir fra 1842, der beskrev maskinen.

Selvom han var italiener, udgav Menabrea sit papir på fransk...

…og det var Ada Lovelace, der derefter oversatte Menabreas papir til engelsk.

På Babbages opfordring tilføjede Ada også en række af Noter af oversætteren, som viste sig ikke blot at være mere end dobbelt så lang som Menabreas oprindelige rapport, men også mere indsigtsfuld, og forklarede flere vigtige egenskaber ved det, vi nu vil kalde en computer til almen brug.

Walter Isaacson, i sin fremragende læseværdige bog Innovatorerne, udgivet i 2014, beskriver, hvordan Ada "udforskede fire begreber, der ville have historisk resonans et århundrede senere, da computeren endelig blev født":

  • Ada erkendte, at den analytiske motor, i modsætning til Difference Engine, virkelig var en generel enhed, fordi det ikke kun kunne programmeres til at gøre én ting, men også, og forholdsvis nemt, omprogrammeres til at udføre en helt anden opgave.

Med Adas egne ord (dette var en tidsalder, hvor videnskabelig litteratur stadig havde noget mere kontakt med litteraturen, end den måske gør i dag):

Forskelsmotoren kan i virkeligheden (som allerede delvist forklaret) ikke gøre andet end at tilføje; og alle andre processer, ikke undtagen dem med simpel subtraktion, multiplikation og division, kan kun udføres af det i det omfang, hvor det er muligt, ved fornuftige matematiske arrangementer og kunstgreb, at reducere dem til en række additioner. Metoden til forskelle er i virkeligheden en metode til tilføjelser; og da det omfatter et større antal resultater, der kan opnås ved simpel addition, end noget andet matematisk princip, blev det meget passende valgt som grundlag for at konstruere en tilføjelsesmaskine, for at give til en sådan maskines kræfter. det bredest mulige udvalg. Den analytiske motor derimod kan enten addere, subtrahere, multiplicere eller dividere med samme facilitet; og udfører hver af disse fire operationer på en direkte måde uden hjælp fra nogen af ​​de tre andre. Dette ene faktum indebærer alt; og det er næppe nødvendigt at påpege, for eksempel, at mens forskelsmotoren blot kan tabulere og ikke er i stand til at udvikle sig, kan den analytiske motor enten tabulere eller udvikle sig.

  • Ada indså, at den analytiske motor ikke var begrænset til kodning og beregning med tal. Selvom de er digitale og baseret på en evne til at udføre numeriske beregninger, kunne disse digitale operationer, forklarede hun, i teorien repræsentere logiske påstande (som vi tager for givet i dag i if ... then ... else ... end if udsagn), musiknoter og så videre.

Som Ada udtrykte det:

[Den analytiske motor] kunne virke på andre ting end antallet, blev der fundet objekter, hvis indbyrdes grundlæggende relationer kunne udtrykkes af dem fra den abstrakte videnskab om operationer, og som også burde være modtagelige for tilpasninger til virkningen af ​​den operationelle notation og mekanisme motoren. Hvis man for eksempel antager, at de grundlæggende forhold mellem tonehøjde lyde i videnskaben om harmoni og musikalsk komposition var modtagelige for sådanne udtryk og tilpasninger, kunne motoren komponere komponerede og videnskabelige musikstykker af enhver grad af kompleksitet eller omfang. Den analytiske motor er en legemliggørelse af videnskaben om operationer, konstrueret med en særegen reference til abstrakt tal som genstand for disse operationer.

  • Ada fandt på konceptet med at genbruge dele af det, vi nu kalder programmer. I den forstand kan hun siges at have opfundet begrebet subrutine, herunder rekursive subrutiner (funktioner, der simplificerer løsningen ved at opdele en beregning i en række lignende underberegninger, og så kalde sig selv).
  • Ada adresserede først med fordel spørgsmålet "Kan maskiner tænke?" Dette er et problem, der har bekymret os lige siden.

Frankenstein-forbindelsen

Adas far (selvom hun aldrig mødte ham) var den berygtede digter Lord Byron, som mindeværdigt tilbragte en regnfuld ferie i Schweiz med at skrive gyserhistorier med sine litterære venner Percy og Mary Shelley.

Byrons og Percy Shelleys indsats i denne venlige skrivekonkurrence er helt glemt i dag, men Mary Shelleys skelsættende roman Frankenstein; eller, Den moderne Prometheus (udgivet i 1818) er populær og velrespekteret den dag i dag.

Frankenstein-historien udforskede berømt de moralske dilemmaer omkring det, vi i dag kan omtale som kunstig intelligens. (Frankenstein, glem ikke, var videnskabsmanden, der udførte eksperimentet, ikke den AI, der kom ud af projektet.)

Ada så dog ikke ud til at dele sin fars vens dystopiske bekymringer om analytiske motorer, eller faktisk om computere generelt.

Hun tilbød udtalelsen i den sidste del af hende Noter af oversætteren, at:

Den analytiske motor har ingen forudsætninger om at skabe noget som helst. Den kan gøre alt, hvad vi ved, hvordan den skal udføres. Det kan følge analyse; men den har ingen magt til at forudse nogen analytiske relationer eller sandheder. Dens provins skal hjælpe os med at stille det til rådighed, vi allerede kender. Dette beregnes den primært og hovedsagelig at bevirke gennem sine udøvende fakulteter; men det vil sandsynligvis øve en indirekte og gensidig indflydelse på videnskaben selv på en anden måde. For ved at fordele og kombinere sandhederne og analysens formler således, at de lettest og hurtigst kan blive tilgængelige for de mekaniske kombinationer af motoren, bliver relationerne og naturen af ​​mange emner, idet videnskaben nødvendigvis kastet ind i nyt lys, og dybere undersøgt. Dette er en decideret indirekte og en noget spekulativ konsekvens af en sådan opfindelse.

Lidt over 100 år senere, da Alan Turing berømt genbesøgte spørgsmålet om kunstig intelligens i sit eget blad Computermaskiner og intelligens, og præsenterede sit nu berømte Turing Test, døbte han dette Lady Lovelaces indvending.

Hvad skal jeg gøre?

Næste gang du selv skriver kode som f.

   -- En funky ting: Ackermann-funktionen. -- Beregnbar, men ikke primitiv rekursiv! -- (Du kan ikke skrive det med almindeligt gammelt for -- sløjfer, men du kan være sikker på at det vil blive færdigt, -- selvom det tager lang tid.) local ack = function(m,n) if m == 0 returner derefter n+1 end hvis n == 0 returner derefter ack(m-1,1) end return ack(m-1,ack(m,n-1)) end

…husk, at rekursive subrutiner af denne art alle startede i den videnskabelige fantasi hos en person, der vidste, hvordan en computer skulle se ud, og hvordan den sandsynligvis ville se ud, men som alligevel levede (og desværre døde meget ung) 100 år før en sådan enhed nogensinde eksisterede for hende at hacke på for alvor.

Hacking på egentlige computere er én ting, men målrettet hacking på imaginære computere er i disse dage noget, vi kun kan forestille os.

Glædelig Ada Lovelace Day!


Tidsstempel:

Mere fra Naked Security