առհասարակ, լաւ սոֆթուեր դիզայնում, իսկ գուցէ ոչ միայն սոֆթուեր, պէտք ա կրճատել լռելեայնները։
դիցուք ուինում դու ունես լիիիքը լռելեայն բան։
դիւայս մենեջեր, ռեջիսթրի էդիթըր, որ նաեւ նշանակում ա որ ունե ռեջիսթրի։ ֆայլ մենեջեր, որ ինտեգրուած ա ամէնի հետ էնպէս, որ հնարաւոր չի իրանց իրարից անջատել, ու էդ ամէնը դառնում ա լռելեայն։
եթէ խօսենք լինուքսի մասին, ապա դէ միջուկն ա, լռելեայն կան util-linux, էն էլ փոխարինելի են, զի դէ ոնց որ ռասթով գրեցին նման բան։ արդէն շատ աւելի մոդուլար ա։
ու իհարկէ վերցնենք օբերոնը՝ լռելեայն ունենք՝
— Kernel մոդուլ, որ հիմնականում զբաղւում ա յիշողութեամբ — Modules մոդուլ, որ զբաղւում ա մոդուլներ բեռնելով — Files մոդուլ, որ ինչ֊որ ինտերֆէյս ա տալիս ֆայլերին — սրանք նաեւ պահանջում են Reals՝ իրական թուերի հետ աշխատող մոդուլ
էս հիմնական աբստրակցիան ա հարդուերի վրայից։ ինչ֊որ աբստրակցիա պիտի լինի։ լինուքսի դէպքում կան posix֊ոտ fopen() եւ այլն, էստեղ կան աւելի սիրուն, բայց բարձր մակարդակի ֆայլերի իտերատորներ, բայց դէ էական չի։
ընդհանուր առմամբ չորս մոդուլ ա, ու տակից արդէն դիսկի հետ աշխատող, կոնկրետ հարդի հետ աշխատող մասեր։
բաաայց, ապա եթէ ուզում ենք ինտերֆէյս, մեզ պէտք ա նաեւ ինչ֊որ լռելեայն Texts մոդուլ։ ինչ֊որ մոդուլ որ պատուհան ա նկարում։
ապա գնաց՝ FileDir, Objects, Display, Input, Fonts, Texts, Viewers, Oberon, MenuViewers,
ապա՝ TextFrames, System, Bitmaps, Out, Pictures
բայց ուզում ենք տեքստի խմբագրիչ, եւ տպիչն էլ որ աշխատի, աւելացնում ենք՝
Centronics, V24, Printer, Edit
Edit֊ն ա խմբագրիչը։
կարելի ա գրել խմբագրիչ, ու փոխարինել, որ դրանցից կախուած չի։
էս ամէն թուարկածս տեղաւորւում ա 150կբ֊ի մէջ։ էլի լռելեայն են, բայց քիչ են։
կարելի՞ ա աւելի քիչ սարքել՝ կարելի ա, սարքել եմ, երբ կայ միայն Kernel, Files, Reals, Modules։
ու վրայից կարելի ա լրիւ այլ ձեւ ընդլայնել։
բայց ասածդ էն ա որ ինչքան քիչ լռելեայն՝ էդքան լաւ։
ու ապա ամէնը՝ ընդլայնումների մէջ։
ու եթէ հնարաւոր ա՝ ընդլայնումները շատ կախուած չլինեն իրարից։ լինեն հնարաւորինս ագնոստիկ։
որ մի ընդլայնումը լինի օգտագործել այլ պարադիգմայի (այլ բառ չգտայ) մէջ։ միշտ չի հնարաւոր, ու շատ բարդ ա էդ բալանսը գտնել, ոնց անել ինչ֊որ բան ոչ իրար հետ կապուած։
ու հա, ինչքան շատ են իրար հետ կապերը, էդքան բարդ ա դրանք քանդել։
ու եթէ քեզ պէտք ա դժուարացնել քանդելը՝ ինչ պէտք ա լինում ընկերութեանը կոմերցիոն, որ կապուած լինես էդ ամէնից՝ ide, ցանկացած ui ծրագիր, որ կարող էր լինել մոդուլներից, բայց չի, նոյնիսկ mail client֊ը, կամ նոյն pidgin֊ը, էլ չասած՝ desktop environment֊ը, կամ win֊ի, macos֊ի միջավայրերը։
systemd֊ն ա դժուարացրել իրան քանդելը, մի մաս վերցնելն ու առանց իրա օգտագործելը։ որ systemd օգտագործես։
եւ եթէ չէք ուզու լինել abusive, վնասակար, ճնշող՝ պէտք ա համակարգերը մշակէք հնարաւորինս մոդուլար։ ինչքան փոքր ու անկախ մոդուլներից՝ էդքան լաւ։
եւ էստեղ չեմ կարող չասել, որ էս տեսանկիւնից այո՝ մինիմալ միաւորը օբերոն համակարգի մոդուլն ա, որը object file ա, ոչ թէ մի քանի object file որ լինկ են եղած որպէս .so։ այլ հէնց հատը։
շատ գրանուլար։ ու էդ հատը, լաւ դիզայնի դէպքում, լինում ա օգտագործել առանձին։ կամ հեշտ ա փոխել էնպէս որ լինի օգտագործել առանձին։
#դիզայն #նախագծում