Počet řádků kódu ( angl. Source Lines of Code-SLOC ) je softwarová metrika používaná k měření jeho objemu počítáním počtu řádků v textu zdrojového kódu . Zpravidla [1] [2] se tento ukazatel používá k predikci mzdových nákladů na vývoj konkrétního programu v konkrétním programovacím jazyce nebo k posouzení produktivity práce po napsání programu.
Tradičně se má za to, že má smysl porovnávat velikosti projektů pouze do řádové velikosti . Mezi celou řadou metod pro výpočet této metriky většina zdrojů rozlišuje dvě hlavní: počítání fyzických a logických linií [3] .
Fyzické řádky jsou všechny neprázdné řádky textového souboru . Prázdné řádky se berou v úvahu, pokud v některém úseku jejich počet nepřesáhne 25 %. V opačném případě budou prázdné řádky, které překračují práh 25 %, ignorovány.
Měřením logických řádků kódu se pokusí spočítat počet skutečných příkazů v programu, ale jejich definice samozřejmě závisí na konkrétním programovacím jazyku. Například nejjednodušší způsob, jak spočítat počet logických řádků kódu v jazycích podobných C a Pascalu , je spočítat počet středníků , které ukončují příkazy.
Fyzické řádky kódu jsou intuitivnější a snadněji čitelné. Výsledky výpočtu však v podstatě závisí na pravidlech pro formátování a formátování zdrojového kódu, kterým logické řádky kódu podléhají v mnohem menší míře.
Zvažte následující příklad C:
for ( i = 0 ; i < 100 ; ++ i ) printf ( "ahoj" ); // Kolik je tam řádků kódu?V tomto případě máme:
Pro jiného programátora může být stejný kus kódu napsán na několika řádcích:
pro ( i = 0 ; i < 100 ; ++ i ) { printf ( "ahoj" ); } // Kolik je tam řádků kódu?V tomto příkladu budeme mít:
Předpokládá se, že myšlenka použití řádků kódu jako metriky pro velikost počítačových programů pochází z 50. let 20. století , kdy byly nejčastěji používanými jazyky Fortran , Assembler a Cobol . Hlavním mechanismem pro zadávání programů do počítače byly děrné štítky a děrné pásky a na jedné kartě (jeden rámeček děrné pásky) byl zakódován jeden řádek kódu. Protože jsou objektem fyzického světa, bylo snadné je spočítat (děrné štítky / rámečky děrné pásky a následně řádky kódu). Balíček děrných štítků, který tvořil program, měl navíc velmi viditelný objem, podle kterého mohli manažeři posuzovat produktivitu programátorů .
Výsledky založené na počtu řádků kódu jsou často nekonzistentní, zejména při nesprávném použití. Proto se použití této metriky v procesu hodnocení nákladů práce jeví jako oprávněné. Korelace s funkčností však již tak jednoznačná není. Zkušení programátoři mají tendenci psát méně kódu při dosažení stejného výsledku. A pokud lze rozdíl ve třídě vývojářů vyrovnat při hodnocení výkonu dostatečně velkého týmu, pak se použití této metriky pro hodnocení výkonu jednotlivce zdá neadekvátní.
Velikost stejného programu napsaného v různých programovacích jazycích se může výrazně lišit (viz KAELOC - technika konverze řetězců ekvivalentní v assembleru ). Níže uvedený příklad porovnává program „Ahoj světe“ v jazyce C a Cobol (známý svou „upovídaností“)
C | COBOL |
---|---|
#include <stdio.h> int main ( void ) { printf ( "Ahoj světe" ); návrat 0 ; } | 000100 IDENTIFIKAČNÍ DIVIZE. 000200 ID PROGRAMU. AHOJ SVĚTE. 000300 000400* 000500 DIVIZE ŽIVOTNÍHO PROSTŘEDÍ. 000600 SEKCE KONFIGURACE. 000700 ZDROJ-POČÍTAČ. RM-COBOL. 000800 OBJEKTOVÝ POČÍTAČ. RM-COBOL. 000900 001000 DIVIZE DAT. 001100 SEKCE SOUBORU. 001200 DIVIZE 100000 POSTUPŮ. 100100 100200 HLAVNÍ LOGICKÁ SEKCE. 100300 ZAČÁTEK. 100400 DISPLEJ " " ŘÁDEK 1 POLOHA 1 VYMAZÁNÍ EOS. 100500 DISPLEJ "Ahoj světe!" POLOHA ŘÁDKU 15 10. 100600 STOP RUN. 100700 HLAVNÍ LOGICKÝ VÝSTUP. 100800 VÝSTUP. |
Řádky kódu: 5 (kromě prázdných) |
Řádky kódu: 17 (kromě prázdných) |
Relativně nedávno se objevil další aspekt tohoto problému – rozdíl mezi programovým kódem psaným ručně a automaticky generovaným. Moderní vývojové nástroje často poskytují schopnost automaticky generovat velké množství kódu pomocí několika kliknutí myší . Nejvýraznějším představitelem těchto systémů jsou nástroje pro vizuální vývoj grafického uživatelského rozhraní . Množství práce spojené s vytvořením takového kódu není v žádném případě srovnatelné s množstvím práce, například psaním ovladače zařízení . Na druhou stranu se může ukázat, že ruční psaní specializované komponenty uživatelského rozhraní s komplexním chováním může být časově mnohem náročnější než psaní jednoduchého ovladače.
Velikosti zdrojových kódů operačních systémů řady Microsoft Windows NT nejsou přesně známy, ale podle zdroje [4] se jedná o:
Rok | Verze | Řádky kódu, miliony |
---|---|---|
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 |
Velikosti zdrojových kódů jádra Linuxu spolu s ovladači zařízení, které jsou v nich obsaženy, lze přesně vypočítat:
Rok | Verze | Řádky kódu |
---|---|---|
1991 | Linuxové jádro 0.1 | 10 239 |
1994 | Linuxové jádro 1.0.0 | 176 250 |
1995 | Linuxové jádro 1.2.0 | 310 950 |
1996 | Linuxové jádro 2.0.0 | 777 956 |
1999 | Linuxové jádro 2.2.0 | 1 800 847 |
2001 | Linuxové jádro 2.4.0 | 3 377 902 |
2003 | Linuxové jádro 2.6.0 | 5 929 913 |
2009 | Linuxové jádro 2.6.32 | 12 606 910 [5] |
2012 | Linux 3.6 jádro | 15 868 036 [6] |
2017 | Linuxové jádro 4.11.7 | 18 373 471 [7] |
Rozměry ostatních systémů:
Rok | Verze | Řádky kódu |
---|---|---|
— | PostgreSQL | 775 000 |
— | 1C | 3 000 000 |
2008 | 1C-Bitrix | 762 854 |