Annons

7 dödsdömda idéer inom IT

En forskningschef på Microsoft skjuter sju datortrender från 1900-talet i sank.

De som programmerar datorer måste börja tänka annorlunda. Datorer har i dag mer än nog av beräkningskapacitet och datorminne. En av dem som har allra störst inblick i detta paradigmskifte är Microsofts forskningschef, Andrew Herbert.

Microsoft har fem forskningscentrum med sammanlagt 700 anställda och en budget motsvarande mer än 1,5 miljarder kronor. Andrew Herbert är bas för det europeiska forskningscentret som är placerat i Cambridge.

- På 1900-talet handlade datorprogrammering till stor del om att kompensera hårdvarans begränsningar. Nu gäller inte längre dessa begränsningar, menar Andrew Herbert, och räknar upp sju punkter som han anser är exempel på datorteknik på väg ut.

7. Artificiell intelligens

Sist på listan finns den punkt som ligger närmast i tiden och därför tar vi den först. Det handlar om framtidsvisionen som aldrig infriades: artificiell intelligens. Ett forskningsområde inriktat mot att på konstgjord väg efterlikna hjärnans förmåga att dra slutsatser, planera, lösa problem, förstå naturligt språk, lära sig av misstag och så vidare.

- Men den verkliga världen är alltför komplex för att kunna beskrivas i formella datastrukturer, säger Andrew Herbert. I stället löser vi problemen med processorkraft, minneskapacitet, statistiska metoder och maskininlärning.

Till områden som nyligen fått sådana lösningar hör maskinöversättning och robotnavigering. Tidigare försökte man lära översättningsprogrammen grammatik och de vandrande robotarna hur världen såg ut. Nu låter man datorerna tugga sig igenom gigantiska textmängder och robotarna själva irra runt. På det viset kan de lära sig språk respektive hur omgivningen ser ut.

Kristina Höök, professor i människa-maskin-interaktion vid Stockholms universitet, ger Andrew Herbert rätt. Hon menar att artificiell intelligens har gått från att vara ett enda forskningsområde till att sönderfalla i en mängd mindre: till exempel robotik, naturligt språk, planering, agentteknologi, informationssökning, bildigenkänning, datorspel.

- Inom varje sådant område visar det sig att statistiska metoder fungerar, medan tolkning nästan inte går alls, säger Kristina Höök.

6. Datorskärmen

Andrew Herberts näst sista punkt är att bildskärmen som vi länge känt den - en tv-apparat på ett skrivbord - kommer att försvinna inom kort. Det finns redan platta skärmar, böjliga skärmar, skärmar stora som hela väggar, skärmar små som tändsticksaskar. Dessa och många fler som vi ännu inte kan tänka oss kommer att få den traditionella datorskärmen att verka urmodig.

Men här är Kristina Höök mer undrande. Hon anser att det knappast handlar om en utveckling av skärmarna utan om helt nya typer av datorer.

- IT kryper in i alla saker omkring oss och blir osynlig. Datorerna blir en naturlig del av vardagliga ting, säger hon.

Kristina Höök hoppas att vi kommer använda fler sinnen än synen när vi kommunicerar med dessa nya datorer, och då är det något annat än nymodiga bildskärmar som revolutionerar vårt sätt att se på datorn.

5. Kataloger och mappar

Nära kopplat till datorskärmarna är Andrew Herberts femte punkt: det hierarkiska filsystemet. På datorskärmen syns det som mappar där vi placerar dokument och program. Det är en hierarkisk organisation där mappar ligger i andra, överordnade mappar, som sin tur ligger i än mer överordnade mappar. Systemet tillkom för att ge användarna en lätt igenkännbar metafor: hängmappsskåpet.

- I dag har dock systemet allvarliga problem. Till exempel består en installation av programpaketet Microsoft Office av fler än 45 000 filer, säger Andrew Herbert.

Han spår att det vanligaste sättet att i framtiden ordna sina dokument blir att inte ordna dem alls. I stället kommer vi att förvara dokumenten i en enda hög och sedan söka smart i den. På samma sätt som vi sedan flera år söker på internet kommer vi att googla vår egen hårddisk.

4. Manuell testning

Att Officepaketet består av 45 000 filer visar på ytterligare ett problem med dagens teknik. Att söka efter programmeringsfel i dessa stora och komplexa system blir allt svårare. Ändå förlitar sig programmerarna fortfarande i hög grad på manuella tester av programvara. Men med ökad datorkraft finns nu möjligheten att testa datorsystemen mer systematiskt och automatiskt, tror Andrew Herbert.

Joachim Parrow, professor i datorteknik vid Uppsala universitet, anser att Andrew Herbert har rätt i att detta är ett gigantiskt problem och att formaliserade testmetoder kommer att slå igenom på sikt, men han är inte lika optimistisk inför en snar lösning.

- Förväntningarna är orimliga. Somliga tror att konstruktörerna ska få en trollstav som de kan svinga över sin produkt och vips! så är det säkerställt att den är korrekt, säger Joachim Parrow.

Ett problem är att när ett program konstrueras vet man inte exakt hur det kommer att användas, och därför har man oftast inte upprättat någon fullständig kravspecifikation.

- Att verifiera mot kravspecifikationer blir då poänglöst, säger Joachim Parrow.

3. Virtuellt minne

Förr, när datorns arbetsminne var en starkt begränsad resurs, kunde man öka storleken på minnet med så kallat virtuellt minne. Man lurade datorn att den hade mer arbetsminne än den egentligen hade. Det skedde genom att data skyfflades fram och åter från hårddisken.

I dag är inte minnesstorleken längre något avgörande problem. Minnena har blivit en miljon gånger större på 30 år. Men kommunikationshastigheten har bara ökat hundra gånger och åtkomsttiden inte mer än 10-20 gånger.

- Att hantera väntetiden är det största problemet för en datorkonstruktör i dag, säger Andrew Herbert. Och virtuellt minne ökar bara väntetiden.

2. Lågnivåspråk

En av de största källorna till programfel är att det mest centrala minnet i processorn, den så kallade stacken, hanteras fel. Om datorn programmeras i ett snabbt och enkelt så kallat lågnivåspråk måste nämligen programmeraren själv hålla reda på hur minnet fungerar. Om däremot programmeringen sker i ett långsammare och mer sofistikerat högnivåsspråk behöver man inte bry sig om detaljerna i minneshanteringen.

I tillämpningar som kräver snabba eller små program har lågnivåprogrammering hittills varit det enda alternativet. Men nu anser Andrew Herbert att kapaciteten hos processorerna och minnet är sådan att det inte längre spelar någon roll. Programmerarna bör gå över till högnivåspråk. Lågnivåspråken är på god väg att bli urmodiga.

1. Enkelspårig programmering

Första punkten i Andrew Herberts lista kan verka både abstrakt och intern. Den handlar om övergång från sekventiell programmering (en sak i taget) till parallell (flera saker samtidigt). De kraftfullaste processorerna som säljs i dag kan göra flera saker på en gång. Man säger att processorerna kan exekvera flera trådar samtidigt.

Men om dessa parallella processorer ska bli effektivare än sina enkla föregångare måste det som förut kördes enkelspårigt bli parallellt.

Detta kan på ytan inte verka som någon stor sak. Men detta är vårt årtiondes största paradigmbyte för hela datorindustrin. Det menar i alla fall Erik Hagersten, professor i datorarkitektur vid Uppsala universitet.

- Jag tycker att Andrew Herbert underskattar vikten av just detta skifte och att han i sina övriga sex punkter räknar upp små evolutionssteg drivna av teknologiförändringar.

Det kommer att behövas nya algoritmer, nya språk, nya kompilatorer, nya felsökningsprogram, nya teststrategier, nya prestandaverktyg och mycket mer.

- Parallell programmering är ökänd för att vara utomordentligt svårt, och risken för att göra fel är betydande, säger Erik Hagersten.

En del forskning inom detta område utfördes på 1980-talet, men då för massivt parallella superdatorer. Nu kommer det att krävas mängder av forskning för att bygga en ny infrastruktur för utveckling och testning av parallella program på vanliga persondatorer, tror Erik Hagersten.

- Det här är pudelns kärna. Jag skulle egentligen kunna tänka mig att stryka resten av Herberts punkter.

Ute

  • enkelspårig programmering
  • lågnivåprogrammering
  • virtuellt minne
  • manuella tester
  • kataloger och mappar
  • datorskärmar på skrivbord
  • artificiell intelligens

Inne

  • parallell programmering
  • högnivåprogrammering
  • stort arbetsminne
  • formaliserade testmetoder
  • smarta sökprogram som Google
  • skärmar överallt
  • statistik

Du har just läst en artikel från tidskriften Forskning & Framsteg. Prenumerera här.

Kommentera:

9

Dela artikeln:

TIDNINGEN FÖR DIG SOM ÄR NYFIKEN PÅ ALLVAR
11 nummer 779 kr
2 nummer 99 kr
Du vet väl att du kan läsa Forskning & Framsteg i din läsplatta? Ladda ned appen från App Store eller Google Play. (Läsplatteutgåvan ingår i alla prenumerationer.)

Kommentarer

Problemet med forskningsområdet AI är de stora målsättningar som det haft eller uppfattats haft. Hade de varit mer blygsamma från början så hade det knappast uppfattas som ett misslyckande. Det har ändå kommit en hel del tillämpningar från forskare inom AI-området och även en hel del intressant grundforskning.

Så vad är AI?På mej känns det som om AI alltid är det man snart uppnått men ännu inte.Vid en tid ansågs ett program som var 'intelligent' nog att spela schack vara AI. Nu köper man ett sådant program för några hundralappar för att ha i sin dator. AI? Nej, inte längre.Man har också tyckt att ett program som var 'intelligent' nog att kuna översätta språk vara AI. Idag är detta i praktiskt bruk lite här och var.Att tolka röster och reagera på kommandon ansågs vara AI men nu kan man beställa tågbiljetter enbart med hjälp av rösten som datorer tolkar.Man har också tyckt att tolka bilder och låta programmet styra en robot för att plocka prylar rätt är AI. Det är i drift i industrin idag.Men framför allt är robotar, såna leksaker som kan vifta på svansen och resa sej upp när den ramlat vara AI. Nu köper man dessa som leksaker till ungarna på jul.Så definitionen för Artificiell Intelligens flyttas framåt i samma takt man når fram till den föregående definitionen. AI kommer därmed aldrig att uppnås, bara mer och mer avancerade och analyserande program och applikationer. När når vi fram till Isaac Asimovs positronhjärna med de tre robotlagarna?

Kan någon berätta kortfattat för jag fattar inte vad det är. Snälla.

Egentligen så vet jag heller inte vad Ai är . Men tror det har något med apor och schimpanser att göra! Jag vill också veta men jag är 99% säker på att det handlar om apor och schimpanser

AI är en förkortning för artificiell intelligens. Ett forskningsområde där man bygger datorer som ska uppvisa intelligent beteende. Man försöker efterlikna hjärnans förmåga att dra slutsatser, planera, lösa problem, förstå naturligt språk, lära sig av misstag och så vidare. Tänkande datorer skulle man kunna säga.

Det var länge sedan virtuellt minne behövdes av kapacitetsskäl. Men tekniken bakom behövs för att skydda program från att skada varandras minnesinnehåll.

Punkt 4 verkar märklig. Programkod är rent abstrakt ett logiskt uttryck med ett stort antal variabler. Man kan inte överblicka alla möjliga variabelvärden eller det hutlösa antal fall de ger upphov till. Därför skriver man under utvecklingsarbetet program för att testa programmet man utvecklar. Denna kallas för test-driven development och har används inom utveckling sedan länge. TDD är ett krav för applikationer som är mer än triviala och där tillförlitligheten hos applikationen måste vara hög. Man kan inte alltid tolerera att ett antal buggar dyker upp när man just driftsatt en applikation och inte löses förrän efter ett antal veckor.
TDD lovar inte helt defektfri mjukvara men den förenklar utvecklingsarbete då det löpande testarbetet kan automatiseras. Programmerarna kan fokusera på att ta fram funktionalitet snarare än att ständigt och manuellt behöva testa för att försäkra sig om att den nya koden inte påverkar funktionalitet som skapats tidigare.

Tja, TDD har ju egentligen ett annat namn för låg-nivå specifikation, för det är i princip det man gör - talar om hur koden skall FUNGERA (men jag har nästan aldrig sett en TDD utveckling ta fram tester som innebär att man utmanar systemet utanför Specifikationen av "vad som SKALL fungera". Så egentligen så är du inne på "specifikationsspåret" precis som Prof. Parrow.

TDD har inte används "länge", det finns nästan ingen forskning på om det egentligen är någonsomhelst skillnad (annat än av förespråkare för TDD) om man skriver testerna "före" eller efter koden på den nivån - av utvecklarna. Kollar man inte t.ex täckningsgrad och kan test tekniker är man precis lika dålig eller bra i sina testfall som med andra tekniker (tyvärr). Men jag håller med om att TDD gör testerna lite mer "tvingande" och att man faktiskt inte prioriterar bort dem när man måste leverera (fungerande) kod på tid, vilket är en STOR fördel.
Tyvärr fokusera precis lika mycket på test oavsett NÄR man gör det som programmerare, och att tro att man slipper ha koll att den kod man skapat verkligen fungerar, är helt enkelt "naivt". Men manuell testing? Näe, det håller jag absolut med, det är ålderdomligt. Kan man programmera kan man ju faktiskt använda en variabel till input, istället för hårdkoda "ett värde" och därmed skapa en hel mängd testfall genom att traversera intelligent. När man skriver testfallen (före eller efter koden) bara man gör dem, är mer intressant - och HUR man gör dem (testfallen alltså).
Stora problemet är att hela unviersitetsvärlden TROR att man utbilda folk i programmering - utan att lära folk att testa och verifiera att de som programmerades faktiskt fungerade. Det borde ta MINST lika lång tid i utbildningen! Så vi har en generation med outbildade programmerare i mitt tycke - som tror att det att skapa kod som är grejen, men inte förstår vad som krävs för att den skall fungera vettigt.

Andrew Herbert är helt korrekt i paradigmskiftet att manuella tester är ute - och att automatisk test är enda lösningen för komplexa system. Men det påverkar bara hastigheten och tydligheten av testerna. Inte kvaliteten av dem (som kräver mer kunskap). Prof. Parrow har rätt att formella testmetoder inte kommer att lösa detta problem inom snar framtid (eftersom dessa lösningar INTE skalar till komplexa system). Så tyvärr är det bara en halvsanning att "formaliserade metoder" är inne - vilket jag inte håller med om. Mer formalism, dvs bättre modeller, mallar osv kan säkert bidra. Det är automatiserade tester som gäller (och t.ex med självlärande, statistiska och olika sökmetoder).

Däremot tror jag Prof. Hagersten har helt rätt att det STORA skiftet är i massiv parallelism - även om jag inte tror att testmetodiken kommer att förändras så enormt, även om fel beroende på tids- och ordningshändelseförlopp kommer att öka, så kommer de inte att dominera. Det som är intressant är att de delar (tekniker) som utvecklas inom AI (t.ex maskin-lärande) kan användas för helt andra områden (t.ex test, parallelism osv). Både universitet och industri måste sluta vara "kära" i den enda metod de kan för att lösa problem - och se bredare på problemens lösningar. Det kommer kräva betydligt mer samarbete av oss forskare, både inom industri och universitet.

Lägg till kommentar