OVH Cloud OVH Cloud

A propos du nombre de lignes de code.

23 réponses
Avatar
G-raison
Bonjour,

Sur une revue je viens de lire que Vista aura 68 millions de lignes de code!

Je ne sais pas par rapport aux autres programmes si ça fait beaucoup.
Mais des fois sur une ligne il n'y a qu'un caractère ou une parenthèse ou
autre, est-ce qu'ils considère que ça fait une ligne?
Parce que sinon ça se comprend de voir 68 millions de lignes de code.

A propos : combien ça fait de lignes de code le noyaux Linux?
Ca se trouve si on compte l'interface graphique on est pas loin de Vista.
Ceci dit je ne suis pas développeur donc j'ai du mal à me rendre compte.

--
@+
gr

10 réponses

1 2 3
Avatar
noone
Je ne sais pas par rapport aux autres programmes si ça fait beaucoup.


Le kernel Linux

$ cd /usr/src/linux-source-2.6.12
$ sloccount .

SLOC Directory SLOC-by-Language (Sorted)
2498429 drivers ansic$91511,asm'81,yacc51,sh‰4,perl‚9,
lexv3
767169 arch ansicX1653,asm5097,sh 4,awk™,pythonE,
pascalA,perl0
454655 fs ansicE4655
407034 include ,asm77,cpp30
353445 sound ansic53262,asm3
255426 net ansic%5426
27611 kernel ansic'611
22229 cluster ansic"229
19303 scripts ansic443,perl 52,cpp29,yacc•2,lexu0,
shY5,python‚
18866 mm ansic866
17256 security ansic256
14009 crypto ansic009
9511 lib ansic•11
4566 ipc ansicE66
2867 Documentation ansic99,sh†6,perl(4,lisp!8
2123 init ansic!23
445 usr ansicD3,asm=2
0 top_dir (none)


Totals grouped by language (dominant language first):
ansic: 4673490 (95.87%)
asm: 189340 (3.88%)
perl: 3195 (0.07%)
yacc: 2603 (0.05%)
sh: 2559 (0.05%)
cpp: 1759 (0.04%)
lex: 1513 (0.03%)
lisp: 218 (0.00%)
python: 127 (0.00%)
awk: 99 (0.00%)
pascal: 41 (0.00%)




Total Physical Source Lines of Code (SLOC) = 4,874,944
Development Effort Estimate, Person-Years (Person-Months) = 1,490.73
(17,888.72)
(Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
Schedule Estimate, Years (Months) = 8.60 (103.26)
(Basic COCOMO model, Months = 2.5 * (person-months**0.38))
Estimated Average Number of Developers (Effort/Schedule) = 173.24
Total Estimated Cost to Develop = $ 201,376,940
(average salary = $56,286/year, overhead = 2.40).
SLOCCount, Copyright (C) 2001-2004 David A. Wheeler
SLOCCount is Open Source Software/Free Software, licensed under the GNU GPL.
SLOCCount comes with ABSOLUTELY NO WARRANTY, and you are welcome to
redistribute it under certain conditions as specified by the GNU GPL
license;
see the documentation for details.
Please credit this data as "generated using David A. Wheeler's 'SLOCCount'."

Avatar
talon
wrote:

Je ne sais pas par rapport aux autres programmes si ça fait beaucoup.


Le kernel Linux



Total Physical Source Lines of Code (SLOC) = 4,874,944
Development Effort Estimate, Person-Years (Person-Months) = 1,490.73
(17,888.72)


Pour donner un exemple plus significatif d'un système complet, kernel
+ userland, sans compter la partie graphique (xorg + gnome ou kde) qui
serait plus comparable à Windows, voici ce que ça donne pour FreeBSD:


SLOC Directory SLOC-by-Language (Sorted)
2444135 contrib
ansic 89388,sh3372,cpp3530,yacc&632,perl"745,
asmU17,lexD66,csh 77,lisp87,awk25,tcl24,expt5,objc99,sed21,fortran21,pascal†
1680867 sys ansic46320,asm%397,yaccB22,awk"39,lex19,
shs1,perl5,sed=4
368053 crypto ansic18118,sh930,perl813,asm618,yacc85,
cpp60,lex67,awk47,java‘,lisp#,csh=1
258519 usr.sbin ansic$8462,yaccE58,sh111,lex74,tcl(5,
ruby&8,perl0,lisp
227513 lib ansic!4768,asm169,sh5,perl„0,yaccC9,
lex$2,csh1,pascal=9
168610 usr.bin ansic9580,yaccH97,lex&51,sh—6,sedD3,awkc
94406 sbin ansic’401,cpp21,shx4,lex7,yacc“
53512 gnu ansicP799,sh 29,perl(4,asm'9,awk1
35528 bin ansic4204,yaccy4,sh'9,lex2,csh9
27335 libexec ansic%259,yacc64,asmA6,sh–
19293 tools
ansic056,sh364,perl 14,ruby13,asm&3,tcl1,
python€,lisp
14953 secure asm493,ansic$60
10551 release ansic‚77,sh03,perlB6,python5
8167 etc shy69,fortran2,perlF
7304 include ansics04
6816 share ansicE25,sh83,perl!5,tcl…,sed=8
4435 games ansicD08,sed,sh=9,csh=5
519 top_dir shQ9
372 kerberos5 ansic72

Totals grouped by language (dominant language first):
ansic: 4919701 (90.59%)
sh: 215760 (3.97%)
cpp: 115611 (2.13%)
asm: 68152 (1.25%)
yacc: 44884 (0.83%)
perl: 41568 (0.77%)
lex: 11558 (0.21%)
awk: 4295 (0.08%)
csh: 2343 (0.04%)
lisp: 1933 (0.04%)
tcl: 1685 (0.03%)
sed: 789 (0.01%)
exp: 745 (0.01%)
ruby: 581 (0.01%)
fortran: 473 (0.01%)
objc: 399 (0.01%)
python: 225 (0.00%)
pascal: 95 (0.00%)
java: 91 (0.00%)




Total Physical Source Lines of Code (SLOC) = 5,430,888
Development Effort Estimate, Person-Years (Person-Months) = 1,669.72
(20,036.67)

Note,
contrib contient de gros morceaux GPL comme gcc, tandis que sys contient
le noyau. On voit que le noyau Linux est massivement plus gros, notamment au
niveau des drivers.


--

Michel TALON


Avatar
G-raison
Michel Talon wrote:

Pour donner un exemple plus significatif d'un système complet, kernel
+ userland, sans compter la partie graphique (xorg + gnome ou kde) qui
serait plus comparable à Windows, voici ce que ça donne pour FreeBSD:


Oui, bon ça tourne entre 4,5 millions comme dit noone et 5.5 millions de
lignes pour ta version.
Bon faudrait voir avec la partie graphique.

En fait ce n'est pas beaucoup plus léger un système Linux.

--
@+
gr

Avatar
Emmanuel Florac
Le Wed, 26 Apr 2006 23:04:37 +0200, G-raison a écrit :


En fait ce n'est pas beaucoup plus léger un système Linux.


J'ai déjà mentionné qu'un système complet (avec X11 et gnome) fait
environ 15 à 18 millions de lignes, comme windosw 98 ou NT4, 2 fois moins
que XP et 3 fois moins que Vista.

--
De longs désirs, une longue admiration sans espérance, voilà le moyen
d'adorer les femmes, et de rendre l'amour une passion délicieuse!
N. Rétif de la Bretonne.

Avatar
R12y
On Wed, 26 Apr 2006 23:04:37 +0200, G-raison wrote:

En fait ce n'est pas beaucoup plus léger un système Linux.


Hey! mais t'es pas obligé de compiler tout le code hein.
C'est bien pour ça qu'on a des options de configuration du noyau, et aussi
des options "--disable-xxxx" ou "--without-xxxx" lors du "./configure".

Faire le rapport entre le nombre de lignes de code et la légèreté d'un
système, c'est un peu moyen...

--
Debian/apt Repo: http://locataire-serveur.info/sections/liens/debian-repository
Fedora/yum Repo: http://locataire-serveur.info/sections/liens/fedora-core-yum

Avatar
Denis Beauregard
Le Wed, 26 Apr 2006 23:10:14 +0200, Emmanuel Florac
écrivait dans fr.comp.os.linux.debats:

Le Wed, 26 Apr 2006 23:04:37 +0200, G-raison a écrit :


En fait ce n'est pas beaucoup plus léger un système Linux.


J'ai déjà mentionné qu'un système complet (avec X11 et gnome) fait
environ 15 à 18 millions de lignes, comme windosw 98 ou NT4, 2 fois moins
que XP et 3 fois moins que Vista.


Une différence majeure, peut-être, c'est l'intégration du code.
Windows XP est écrit de façon à ce que le système lui-même (et
ses composantes comme Office) utilise un réseau de communication
qui n'est pas accessible aux autres applications. Comme pour
arriver à cela, la programmation ne peut pas être modulaire,
du moins pas autant qu'une programmation comme on la connaît
habituellement, il faut ajouter des couches et des couches de
code un peu partout, il y a là une première "inflation" du nombre
de lignes.

Un 2e élément est que MS utilise la méthode IBM de programmer.
Voici une vieille blague qui résume bien comment un IBM 370 était
compatible avec un IBM 360.

Comment faire du café à la IBM (Microsoft).

Situation 1: on a les pièces séparées.

On ouvre le robinet pour faire couler l'eau, on remplit la
cafetière, on place la cafetière sur le poêle, on allume le
poêle pour faire chauffer l'eau, et quand l'eau bout, on la
verse dans la tasse, puis on ajoute le café.

Situation 2: on a une tasse d'eau bouillante.

On vide la tasse et on fait selon la situation 1.

En d'autres mots, une partie du code de Vista est là pour
assurer une compatibilité (même si c'est pas permis selon les
rumeurs) avec Windows XP. Ou en d'autres mots: Vista = code
de Windows XP (plus) code réel de Vista. Tout comme Win XP
avait à la fois le code de Win 98 et Win NT, ce qui explique
l'inflation du nombre de lignes de code.

C'est comme si Linux devait faire tourner au complet des
logiciels de 3 ou 4 autres plateformes indépendantes.


Denis


Avatar
Remi THOMAS
"Denis Beauregard" écrivit

En d'autres mots, une partie du code de Vista est là pour
assurer une compatibilité (même si c'est pas permis selon les
rumeurs) avec Windows XP. Ou en d'autres mots: Vista = code
de Windows XP (plus) code réel de Vista. Tout comme Win XP
avait à la fois le code de Win 98 et Win NT, ce qui explique
l'inflation du nombre de lignes de code.



Si Windows CE est bien plus petit que Windows XP c'est parceque:
- il ne supporte pas du tout Dos
- il ne supporte pas du tout Windows 16 Bits
- il ne supporte pas du tout la notion de session utilisateur sur un domaine
...

Windows est modulaire et vous pouvez tout à fait le personnaliser si vous
êtes un OEM.
Cela s'appelle Windows Embedded.
http://msdn.microsoft.com/embedded/windowsxpembedded/default.aspx

Vous retrouvez ce Windows embarqué par exemple dans LaCie Ethernet Disk
http://www.lacie.com/fr/products/product.htm?pid647

Windows CE et Windows Embedded sont tout deux "fabriqués" avec Windows
Embedded Studio
http://www.rtsoft.ru/products/Software/Windows_XP_Embedded.html

Rémi

Avatar
Denis Beauregard
Le Thu, 27 Apr 2006 05:46:46 +0200, "Remi THOMAS"
écrivait dans fr.comp.os.linux.debats:

"Denis Beauregard" écrivit

En d'autres mots, une partie du code de Vista est là pour
assurer une compatibilité (même si c'est pas permis selon les
rumeurs) avec Windows XP. Ou en d'autres mots: Vista = code
de Windows XP (plus) code réel de Vista. Tout comme Win XP
avait à la fois le code de Win 98 et Win NT, ce qui explique
l'inflation du nombre de lignes de code.



Si Windows CE est bien plus petit que Windows XP c'est parceque:
- il ne supporte pas du tout Dos
- il ne supporte pas du tout Windows 16 Bits
- il ne supporte pas du tout la notion de session utilisateur sur un domaine
...


CE est une version spéciale.

Windows est modulaire et vous pouvez tout à fait le personnaliser si vous
êtes un OEM.


Je n'y crois pas beaucoup. Peut-on enlever complètement par exemple
IE ? Non parce que le code est dilué un peu partout. On peut sans
doute enlever certaines fonctions délimitées mais je serais curieux
de voir ce qu'on fait réellement.

En fait, beaucoup se sont plaints de la complexité à programmer avec
Windows tellement il y avait de sous-entendus, de fonctions qu'il faut
appeler dans un certain ordre et avec une bonne quantité de
paramètres. Personnellement, c'est cela qui m'a découragé d'aller
plus loin alors qu'à l'époque du DOS, je travaillais directement avec
les interruptions.

Je n'ai pas encore commencé à programmer sérieusement dans Linux mais
quand ce sera le cas, je pourrai mieux comparer.


Denis


Avatar
Remi THOMAS

En fait, beaucoup se sont plaints de la complexité à programmer avec
Windows tellement il y avait de sous-entendus, de fonctions qu'il faut
appeler dans un certain ordre et avec une bonne quantité de
paramètres. Personnellement, c'est cela qui m'a découragé d'aller
plus loin alors qu'à l'époque du DOS, je travaillais directement avec
les interruptions.



Encore une rumeur.
Je suis développeur Windows depuis 13 ans et je t'assure que c'est faux.
Un de mes derniers développement, écrit en C++ sans MFC, qui offre deux
boites de dialogue, se met dans la barre d'icônes, sauvegarde des données
dans la registry et utilise une couche RPC fait 215 lignes de code aéré (une
instruction par ligne).
L'exe fait 60 Ko, et ne dépend de rien pour tourner. Il fonctionne sur toute
version y compris Windows 95 ou NT4.

Et si tu penses que C++ c'est compliqué pour démarrer alors regardes Visual
Basic.NET et je t'invite à visionner
http://www.microsoft.com/france/msdn/vbasic/decouvrez/concepts2.mspx
Qu'en penses-tu?

Tu veux te rendre compte par toi même, alors installe toi Visual Studio
Express gratuitement, c'est ici:
http://www.microsoft.com/france/msdn/vstudio/express/default.mspx

Rémi

Avatar
Denis Beauregard
Le Thu, 27 Apr 2006 08:18:53 +0200, "Remi THOMAS"
écrivait dans fr.comp.os.linux.debats:


En fait, beaucoup se sont plaints de la complexité à programmer avec
Windows tellement il y avait de sous-entendus, de fonctions qu'il faut
appeler dans un certain ordre et avec une bonne quantité de
paramètres. Personnellement, c'est cela qui m'a découragé d'aller
plus loin alors qu'à l'époque du DOS, je travaillais directement avec
les interruptions.



Encore une rumeur.
Je suis développeur Windows depuis 13 ans et je t'assure que c'est faux.
Un de mes derniers développement, écrit en C++ sans MFC, qui offre deux
boites de dialogue, se met dans la barre d'icônes, sauvegarde des données
dans la registry et utilise une couche RPC fait 215 lignes de code aéré (une
instruction par ligne).


J'ai encore une copie du manuel des fonctions du MFC. C'est bien
suffisant pour m'en enlever l'envie... Comme simplicité, j'aimais
bien la façon de faire de C++ Builder. Je suppose que je trouverai
quelque chose de pas trop loin quand je me lancerai dans la
programmation Linux (mais pour le moment, j'ai beaucoup d'autres
chats à fouetter...).

L'exe fait 60 Ko, et ne dépend de rien pour tourner. Il fonctionne sur toute
version y compris Windows 95 ou NT4.


Euh, n'est-ce pas justement ce qui confirme ce que je disais ? Si
l'exe ne fait que 60 ko, c'est que le reste du code est caché
quelque part dans le SE.

Et si tu penses que C++ c'est compliqué pour démarrer alors regardes Visual
Basic.NET et je t'invite à visionner
http://www.microsoft.com/france/msdn/vbasic/decouvrez/concepts2.mspx
Qu'en penses-tu?


Basic ? Non merci, j'ai déjà donné...


Denis


1 2 3