Quantcast
Channel: Блогосфера
Viewing all articles
Browse latest Browse all 33007

Пейо Попов: Номериране на версиите

$
0
0

Има много начини за номериране на версиите на програмите. Общото е, че едно число се увеличава, но разликата между новата и старата версия рядко носи числов смисъл, а по-скоро маркира етапа в развитието на продукта.

По този повод професор Edsger Dijkstra твърди, че 1.0 трябва да е финалната версия, от която програмата не трябва да може да става по-добра. Заради подобни твърдения той е упрекван от мнозина в академичен утопизъм. Аз бих бил убеден от доводите на напатилите практици, ако не беше гениалния твърдоглавец  D.J. Bernstein, чийто основни продукти qmail и djbdns са няколко минорни версии над 1.0, само заради още по-гениалната упоритост на хора като Георги Гунински да му натрият носа. Друг академичен гигант Donald Knuth прегръща безкрайната незавършеност на софтуера и избира конвенцията да добавя още една цифра от числата pi или е, за да означава новата версия на програмните пакети ТеX и Metafont.

На този фон се замислих как аз бих изразил етапа на развитие на програмка или документ. В традиционната Unix философия едно нещо трябва да върши само едно нещо, но пък да го върши добре. Воден от подобни мисли, стигнах до следните философски изисквания за промяната на номера:

  1. Версията никога не трябва да достига 1.0, а само да клони към него. Съвършенството не е достижимо, може само да се стремим към него. Аз не съм Дийкстра или djb, за да си въобразявам, че мога да направя нещо перфектно.
  2. Нарастването на номера трябва да отразява подхода от общото към конкретното и разбирането, че последващите малки по обем подобрения и оптимизации отнемат равно усилие с първоначалното създаване на общата груба функционалност на първия работещ прототип. Казано по друг начин – усилието да стигнеш от версия 0.5 до версия 0.6 е равно, примерно, на усилието да стигнеш от 0.95 до 0.96. Нямам отговор каква е тази функция и какви стойности трябва да е достигнала след определен брой итерации.
  3. Версията трябва да не преминава float point точността на нормален човек. Т.е. трябва да използва разумно малък брой цифри, за да не се затрудни сравнението и възприемането ѝ като нова.

Съзнавам че изискванията са неясни най-вече по отношение на т.2 и затова ще се опитам да дам няколко познати примера. Подобни ситуации са Ахил и костенурката, състезанието на Червената кралица от Алиса или отношението на Парето. Най-лесно ми е да илюстрирам идеята с графиката на функцията 1-1/х, но не мисля, че тя най-добре отразява усещането ми:

Може ли някой, който разбира по-добре математика, да опита да изкаже с функция ситуацията, която се опитвам да опиша?


Viewing all articles
Browse latest Browse all 33007

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>