Хэсэг хугацааны өмнө миний сайн найз бид хоёрын хооронд дараах хэллэгүүд сонсогдсон яриа өрнөв.
— Программистуудын тоо байнга өсөх болно, учир нь кодын хэмжээ нэмэгдэж, улам олон хөгжүүлэгчид үүнийг байнга дэмжих шаардлагатай болдог.
— Гэхдээ код нь хуучирч, зарим нь дэмжигдэхээ больсон. Тэр ч байтугай ямар нэгэн тэнцвэрт байдал байж магадгүй юм.
Хэдэн өдрийн дараа тэдгээрийг санаж байхдаа би кодыг хадгалах, цаг хугацаа өнгөрөх тусам улам их нөөц шаардах нь шинэ функцийг хөгжүүлэхэд саад болж чадах уу, эсвэл програмистуудын тоог хязгааргүй нэмэгдүүлэх шаардлагатай юу? Математик дүн шинжилгээ ба дифференциал тэгшитгэл нь хөгжлийн дэмжлэгийн хэмжээнээс хамаарлыг чанарын хувьд үнэлэх, асуултын хариултыг олоход тусалсан.
Асуулт нэг. Хөгжлийн бүх нөөцийг "идэж" чадах уу?
Оролцогчдын тоо тогтмол байдаг програмистуудын багийг авч үзье. Тэдний ажлын цагийн хуваарь () шинэ код боловсруулахад зарцуулагдаж, үлдсэн хэсэг нь цаг хугацаа юм дэмжихээр явдаг. Загварын таамаглалын хүрээнд бид эхний төрлийн үйл ажиллагаа нь кодын эзлэхүүнийг нэмэгдүүлэхэд чиглэгдсэн, хоёр дахь нь түүнийг өөрчлөх (алдаа засах) зорилготой бөгөөд кодын эзлэхүүнд мэдэгдэхүйц нөлөө үзүүлэхгүй гэж бид үзэж байна.
гэж тэмдэглэе тухайн цаг хүртэл бичигдсэн нийт кодын хэмжээ . Код бичих хурдыг пропорциональ гэж үзвэл , бид авах:
Кодыг хадгалахад шаардагдах хөдөлмөрийн зардал нь түүний эзлэхүүнтэй пропорциональ байна гэж үзэх нь зүйн хэрэг юм.
буюу
Байршил
Бид амархан нэгтгэж болох дифференциал тэгшитгэлийг олж авдаг. Хэрэв эхний мөчид кодын хэмжээ тэг байвал
үед онцлог шинж болон . Энэ нь цаг хугацааны явцад шинэ функцийг хөгжүүлэхэд аажмаар буурч, бүх нөөцийг дэмжлэгт шилжүүлэх гэсэн үг юм.
Гэсэн хэдий ч, хэрэв тухайн хугацаанд код хуучирч, дэмжигдэхээ больсны дараа нэг удаад дэмжлэг шаардагдах кодын хэмжээ аль хэдийн тэнцүү байна Дараа нь
а хоцрогдсон аргументтай дифференциал тэгшитгэлийн шийдэл [1]:
Ийм тэгшитгэлийн шийдлийг утгуудыг зааж өгөх замаар өвөрмөц байдлаар тодорхойлно "цаг хугацааны эхэн үеэс өмнө" . Манай тохиолдолд код нь эхний мөчөөс өмнө бичигдээгүй байсан тул at .
Хэд хэдэн жишээг харцгаая. Бид цаг хугацааг хэдэн жилээр, кодын хэмжээг хэдэн мянган мөрөөр хэмжих болно. Дараа нь Аравтын дарааллын утгыг хүлээн зөвшөөрч байвал бид 50 ба 100-г авна. Өөрөөр хэлбэл, нэг жилийн дараа хөгжүүлэлтийн баг тавин, зуун мянган мөр код бичнэ. Учир нь Зөвшөөрөгдөх утгууд нь дараахь байж болно. , , . Энэ нь хөгжүүлэлтийн баг дөрөвний нэг, хагас, бүтэн цагаар ч хамаагүй нэг жилийн хугацаанд бичсэн кодын хэмжээг дэмжиж чадна гэсэн үг юм. Кодын дундаж ашиглалтын хугацааг бид дараах утгуудыг тогтооно: 1, 2, 4 жил. Тэгшитгэлийг тоон аргаар шийдэж, бид функцийн үйлдлийн жишээг олж авдаг Зарим параметрийн хослолын хувьд .
Функцийн зан байдал код нь нас ахих тусам өөрчлөгдсөн. Функц нь нэгэн хэвийн байхаа больсон боловч хэлбэлзэл нь цаг хугацааны явцад "тайвширч", өөрчлөгдөх хандлагатай байдаг. ямар нэг тогтмол утга руу. Графикаас харахад: илүү их , и , өөрөөр хэлбэл, кодын хөгшрөлт удаан байх тусам шинэ код хурдан боловсруулагдаж, кодын чанар муу байх тусам шинэ функцийг хөгжүүлэхэд бага нөөц үлдэх болно. Ядаж нэг жишээ хэлчихмээр санагдсан тэг дөхөж “нэврүүлээ”. Гэхдээ энэ нь удаан хугацаанд хөгширдөггүй хөгжлийн маш муу чанарын үзүүлэлт, кодыг сонгох шаардлагатай байв. Зүүн доод графикт ч гэсэн шинэ функцэд ихээхэн хэмжээний нөөц үлдсэн байна. Тиймээс эхний асуултын зөв хариулт нь дараах байдалтай байна: онолын хувьд - тийм ээ, боломжтой; практикт - бараг л.
Хариулах боломжгүй асуултууд:
- Энэ үнэн үү -д тодорхой хэмжээгээр хязгаарлах хандлагатай байдаг бүгдэд нь ? Хүн болгонд биш юмаа гэхэд аль нь?
- Хэрэв хязгаар байгаа бол түүний үнэ цэнэ юунаас хамаардаг вэ? ?
Хоёр дахь асуулт. Кодын засвар үйлчилгээ нь програмистуудын тоог хязгааргүй нэмэгдүүлэхэд хүргэж болох уу?
гэж тэмдэглэе шинэ код боловсруулахад оролцсон програмистуудын тоо. Дээр дурдсаны адил, - тодорхой хугацааны дотор бичигдсэн кодын хэмжээ Байна. Дараа нь
Кодын дэмжлэгийг завгүй байлга программистууд. Хөгшрөлтийн кодыг харгалзан үзвэл,
Байршил
бол Дараа нь
Тиймээс, хоёрдахь асуултын хариулт нь сөрөг байна: хэрэв шинэ кодыг хөгжүүлэгчдийн тоо хязгаарлагдмал бол хөгшрөлтийн нөхцөлд дэмжлэг нь програмистуудын тоог хязгааргүй нэмэгдүүлэхэд хүргэж чадахгүй.
дүгнэлт
Эдгээр загварууд нь "зөөлөн" математикийн загварууд юм [2]. Тэд маш энгийн. Гэсэн хэдий ч симуляцийн үр дүнгийн параметрийн утгуудаас хамаарал нь бодит системд хүлээгдэж буй зүйлтэй тохирч байгаа нь загваруудын хүрэлцээ, өндөр чанарын тооцоолол гаргахад хангалттай нарийвчлалыг харуулж байна.
Лавлагаа
1. Элсголц Л.Э., Норкин С.Б. Хазайлттай аргумент бүхий дифференциал тэгшитгэлийн онолын танилцуулга. Москва. "Шинжлэх ухаан" хэвлэлийн газар. 1971.
2. Арнольд V.I. "Хатуу" ба "зөөлөн" математик загварууд. Москва. MCNMO хэвлэлийн газар. 2004 он.
Эх сурвалж: www.habr.com