Mae gwall yn yr enghraifft fwyaf poblogaidd o god Java ar StackOverflow

Mwyaf poblogaidd Enghraifft o god Java, a gyhoeddwyd ar StackOverflow, troi allan i fod gyda gwall yn arwain at allbwn canlyniad anghywir o dan amodau penodol. Cafodd y cod dan sylw ei bostio yn 2010 ac mae wedi cronni mwy na mil o argymhellion, ac mae hefyd wedi bod copïo mewn llawer o brosiectau ac yn ymddangos mewn ystorfeydd ar GitHub tua 7 mil o weithiau. Mae'n werth nodi na chanfuwyd y gwall wrth i ddefnyddwyr gopïo'r cod hwn i'w prosiectau, ond gan awdur gwreiddiol y cyngor.

Roedd y cod dan sylw yn trosi maint y beit yn ffurf ddarllenadwy, er enghraifft trosi 110592 i "110.6 kB" neu "108.0 KiB". Cynigiwyd y cod fel fersiwn wedi'i optimeiddio â logarithm o'r cyngor a gynigiwyd yn flaenorol, lle pennwyd y gwerth ar sail rhaniad dilyniannol y gwerth gwreiddiol mewn dolen â 1018, 1015, 1012, 1019.
106, 103 a 100, cyn belled â bod y rhannydd yn fwy na'r gwerth beit gwreiddiol. Oherwydd cyfrifiadau blêr yn y fersiwn wedi'i optimeiddio (gorlif gwerth hir), nid oedd y canlyniad wrth brosesu niferoedd mawr iawn (exabytes) yn cyfateb i realiti.

Ceisiodd awdur y cyngor hefyd dynnu sylw at y broblem o gopïo enghreifftiau heb ddyfynnu'r ffynhonnell a heb nodi'r drwydded. Yn ôl data cynharach cynnal ymchwil Copïodd 46% o ddatblygwyr y cod o StackOverflow heb ei briodoli, nid oedd 75% yn ymwybodol bod y cod wedi'i drwyddedu o dan CC BY-SA, ac nid oedd 67% yn ymwybodol bod angen priodoli hyn.

Ar a roddir Yn ôl astudiaeth arall, mae copïo enghreifftiau cod yn cynnwys nid yn unig y risg o wallau yn y cod, ond hefyd gwendidau. Er enghraifft, ar ôl dadansoddi 72483 o enghreifftiau cod C++ ar StackOverflow, nododd ymchwilwyr wendidau difrifol mewn 69 enghraifft (sef 0.09%) a gynhwyswyd yn y rhestr o'r argymhellion mwyaf poblogaidd. Ar ôl dadansoddi presenoldeb y cod hwn ar GitHub, datgelwyd bod y cod bregus a gopïwyd o StackOverflow yn bresennol mewn 2859 o brosiectau.

Ffynhonnell: opennet.ru

Ychwanegu sylw