[Web pekare och referenser till krönikan] --- [Läsarnas åsikter] --- [Tillbaks till krönikor]

Peter S. Magnusson

Har gratisprogram en framtid?

Datateknik September 1997

Åtskilliga populära program har börjat som enmans- eller fåmansprojekt. Ofta utvecklade i universitetsmiljö, och oftast på Unix, har de varit konkurrenskraftiga med kommersiella alternativ. Och påtagligt billigare (gratis).

Exempelvis har GCC länge varit en arbetshäst inom forsknings- och universitetsvärlden. Portabilitet och tillgänglig källkod har varit viktiga faktorer. Och kompilatorn genererade bra kod, åtminstone för Sparc-processorn som är den jag huvudsakligen arbetar med.

Nyligen stötte vi dock på problem med GCC. Vi hade en liten funktion som jag hävdade borde resultera i ett fåtal instruktioner när den kompilerades. Men GCC genererade ett dussin instruktioner, de flesta kopiering mellan register! Vi fick då för oss att jämföra med Suns nya C-kompilator, version 4.

Jag minns inte funktionen men det är enkelt att hitta på ett nytt exempel. Den här tar två 64-bitars värden och returnerar en funktion av dess översta 16 bitar:

uint32 foo (uint64 a, uint64 b)
{ return (unit32) ((a ^ b) >> 48) ; }

Assemblerkoden blir:

GCC 2.7.2.1

Xor %o0,%o2,%o0
Xor %o1,%o3,%o1
Srl %o0,16,%g3
Mov 0,%g2
Retl
Mov %g3,%o0

Sun C 4.2

Xor %o0,%o2,%g1
Retl
Srl %g1,16,%o0

Man behöver inte vara expert på Sparc-assembler för att se GCCs tillkortakommanden, och exemplet är inte ovanligt. Jag skulle uppskatta att GCC genererar 20-30 procent långsammare kod än Suns senaste kompilator.

Detta var en stor överraskning för mig. För flera år sedan genererade kommersiella C-kompilatorer dålig kod och saknade flera finesser, men det är uppenbarligen inte längre sant.

En parallell har jag stött på inom textframställning. Latex är ett verktyg som har sitt ursprung i Donald Knuths arbete med TeX. Både TeX och Latex har varit populära i forskningsvärlden, och för mig har det länge varit en dragkamp mellan Microsoft Word och Latex. Word började vinna mark redan med Mac 4.x-versionen, som var den första ordbehandlare jag använt med dispositionsläge (outline mode) vilket enkelt tillät omstrukturering av ett dokument. Men Latex stod emot trycket i flera år, tack vare bättre avstavning, möjlighet att använda diverse Unixverktyg för att generera avsnitt och bra stöd för hantering av referenser (bibtex).

Men med version "95" kom Word ikapp, och nu med version "97" har det sprungit ifrån. Nya Word har en drös användbara funktioner: nya page layout-vyn, utmärkt grammatikkontroll (på engelska), integrering med webben, smartare hjälp, utökade importmöjligheter, samt en massa finesser som dyker upp då och då.

Har jag gått och blivit köpt av onda krafter? Jag tror inte det (jag fick i så fall taskigt betalt). Nej, något mycket intressant, och samtidigt sorgligt, håller på att hända. Mikrodatorrevolutionen är såpass långt gången att gratisprogram får allt mindre utrymme att konkurrera. Idag är flera kommersiella paket så billiga att de bokstavligt talat inte syns i budgeten (Office får man exempelvis "på köpet" med en ny PC). Om ett program kostar några hundra kronor eller någon tusenlapp så är skillnaden mot "gratis" hårfin, även i en akademisk miljö. Hemsnickrarna klarar inte komplexiteten som alla nya häftiga funktioner orsakar, även om snickrandet görs i seriös skala som med GCC och Linux.

Solaris omfattar 1,5 miljoner rader kod (3,6 om man räknar in kommandon och bibliotek) och Excel omkring 1,2 miljoner (2,2 miljoner inklusive bibliotek). Jämför det med gratisprogrammen Linux (800 000 rader) och GDB (600 000) så är det uppenbart att de kommersiella systemen är större än gratisprojekten.

Efter att själv ha utvecklat program på uppåt 100 000 rader kod, och grävt i programmen ovan (utom Excel), har jag dragit följande kluriga slutsats: 10 000 rader är ett stort program, 100 000 är mycket stort och en miljon rader är löjligt stort. En liten grupp personer klarar flera hundra tusen rader kod, men inte flera miljoner. Tiden då fåmansprojekt kunde konkurrera på etablerade produktområden är snart ett minne blott. Tyvärr.

Peter S. Magnusson

Datateknik



[Web pekare och referenser till krönikan] --- [Läsarnas åsikter] --- [Tillbaks till krönikor]