Antalet rader kod ( eng. Source Lines of Code-SLOC ) är ett programvarumått som används för att mäta dess volym genom att räkna antalet rader i källkodens text . Som regel [1] [2] används denna indikator för att förutsäga arbetskostnaderna för att utveckla ett specifikt program på ett specifikt programmeringsspråk, eller för att bedöma arbetsproduktiviteten efter att programmet har skrivits.
Traditionellt anses det vara vettigt att jämföra projektstorlekar endast upp till en storleksordning . Bland alla olika metoder för att beräkna detta mått, skiljer de flesta källor två huvudsakliga: att räkna fysiska och logiska linjer [3] .
Fysiska rader är alla icke-tomma rader i en textfil . Tomma rader tas med i beräkningen om deras antal i något avsnitt inte överstiger 25 %. Annars ignoreras tomma rader som överskrider 25 %-gränsen.
Genom att mäta de logiska kodraderna görs ett försök att räkna antalet faktiska påståenden i programmet, men naturligtvis beror deras definition på det specifika programmeringsspråket. Till exempel, det enklaste sättet att räkna antalet logiska rader kod i C- och Pascal -liknande språk är att räkna antalet semikolon som avslutar uttalanden.
Fysiska kodrader är mer intuitiva och lättare att läsa. Resultaten av beräkningen beror dock i huvudsak på reglerna för formatering och formatering av källkoden, för vilka logiska kodrader är föremål för i mycket mindre utsträckning.
Tänk på följande C-exempel:
för ( i = 0 ; i < 100 ; ++ i ) printf ( "hej" ); // Hur många rader kod finns det?I det här fallet har vi:
För en annan programmerare kan samma kodbit skrivas på flera rader:
för ( i = 0 ; i < 100 ; ++ i ) { printf ( "hej" ); } // Hur många rader kod finns det?I det här exemplet kommer vi att ha:
Man tror att idén med att använda kodrader som ett mått för storleken på datorprogram går tillbaka till 1950 -talet , då Fortran , Assembler och Cobol var de mest använda språken . Huvudmekanismen för att lägga in program i en dator var hålkort och håltejp , och en kodrad kodades på ett kort (en ram med håltejp). Eftersom de är föremål för den fysiska världen, var de (hålkort/ramar av håltejp, och följaktligen kodrader) lätta att räkna. Dessutom hade paketet med hålkort som utgjorde programmet en mycket synlig volym, med vilken chefer kunde bedöma programmerares produktivitet .
Resultat baserade på antalet rader kod är ofta inkonsekventa, särskilt när de används felaktigt. Därför verkar det motiverat att använda detta mått i processen för att bedöma arbetskostnader. Korrelationen med funktionalitet är dock inte längre så tydlig. Erfarna programmerare tenderar att skriva mindre kod samtidigt som de uppnår samma resultat. Och om skillnaden i klassen av utvecklare kan utjämnas när man utvärderar prestandan för ett tillräckligt stort team, så verkar användningen av detta mått för att utvärdera en individs prestanda vara otillräcklig.
Storleken på samma program skrivet på olika programmeringsspråk kan variera avsevärt (se KAELOC - assembler - ekvivalent strängkonverteringsteknik). I exemplet nedan jämförs programmet "Hello world" i C och Cobol (känd för sin "omfattning")
C | COBOL |
---|---|
#include <stdio.h> int main ( void ) { printf ( "Hej världen" ); returnera 0 ; } | 000100 IDENTIFIKATIONSDIVISION. 000200 PROGRAM-ID. HEJ VÄRLDEN. 000300 000400* 000500 MILJÖDIVISION. 000600 KONFIGURATIONSAVSNITT. 000700 KÄLLA-DATOR. RM-COBOL. 000800 OBJEKT-DATOR. RM-COBOL. 000900 001000 DATA DIVISION. 001100 FILAVSNITT. 001200 100000 PROCEDURDIVISION. 100100 100200 HUVUDLOGISK AVSNITT. 100300 BÖRJA. 100400 DISPLAY " " LINE 1 POSITION 1 RADERA EOS. 100500 DISPLAY "Hej världen!" LINE 15 POSITION 10. 100600 STOPP KÖR. 100700 MAIN-LOGIC-EXIT. 100800 AVSLUTA. |
Kodrader: 5 (exklusive tomma) |
Kodrader: 17 (exklusive tomma) |
Relativt nyligen har en annan aspekt av detta problem dykt upp - skillnaden mellan programkoden skriven för hand och automatiskt genererad. Moderna utvecklingsverktyg ger ofta möjligheten att automatiskt generera stora mängder kod med bara några få musklick . Den mest framträdande representanten för dessa system är verktygen för visuell utveckling av ett grafiskt användargränssnitt . Mängden arbete som är involverat i att skapa sådan kod är inte på något sätt jämförbar med mängden arbete, till exempel att skriva en enhetsdrivrutin . Å andra sidan kan det visa sig att det kan vara mycket mer tidskrävande att skriva en specialiserad användargränssnittskomponent med komplext beteende för hand än att skriva en enkel drivrutin .
Storleken på källkoderna för operativsystemen i Microsoft Windows NT- familjen är inte exakt kända, men enligt källan [4] är de:
År | Version | Kodrader, miljoner |
---|---|---|
1993 | Windows NT 3.1 | 4-5 |
1994 | Windows NT 3.5 | 7-8 |
1996 | Windows NT 4.0 | 11-12 |
2000 | Windows 2000 | >29 |
2001 | Windows XP | 45 |
Storleken på Linux-kärnans källkoder , tillsammans med de enhetsdrivrutiner som ingår där, kan beräknas exakt:
År | Version | Kodrader |
---|---|---|
1991 | Linuxkärna 0.1 | 10 239 |
1994 | Linuxkärna 1.0.0 | 176 250 |
1995 | Linuxkärna 1.2.0 | 310 950 |
1996 | Linuxkärna 2.0.0 | 777 956 |
1999 | Linuxkärna 2.2.0 | 1 800 847 |
2001 | Linuxkärna 2.4.0 | 3 377 902 |
2003 | Linuxkärna 2.6.0 | 5 929 913 |
2009 | Linuxkärna 2.6.32 | 12 606 910 [5] |
2012 | Linux 3.6 kärna | 15 868 036 [6] |
2017 | Linuxkärna 4.11.7 | 18 373 471 [7] |
Mått på andra system:
År | Version | Kodrader |
---|---|---|
— | PostgreSQL | 775 000 |
— | 1C | 3 000 000 |
2008 | 1C-Bitrix | 762 854 |