Programming in the large and programming in the small
Бағдарламалық жасақтама: «Үлкен» және «кішкентай» бағдарламалау – жүйе құрастыру мен код жазудың екі бөлек аспектісі. Тірек тілдері мен құрылымдық бағдарламалау негіздері.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Бағдарламалық жасақтауда, "үлкен бағдарламалау" және "кіші бағдарламалау" бағдарламалық құралды жасаудың екі түрлі жағын көрсетеді. Үлкен бағдарламалау – кішігірім бөліктерден құралған ірі жүйені жобалау, ал кіші бағдарламалау – бағдарламалау тілінде код жолдарын жазып, сол кішігірім бөліктерді құру. Бұл терминдерді Фрэнк ДеРемер және Ханс Крон 1975 жылғы "Үлкен бағдарламалау мен кіші бағдарламалау" атты мақаласында енгізген. Олар бұл екеуінің түп тамырынан өзгеше қызмет екенін, сондай-ақ, әдеттегі бағдарламалау тілдері мен құрылымдық бағдарламалау тәжірибесі соңғысына жақсы қолдау көрсетсе, ал біріншісіне ондай қолдау көрсетпейтінін дәлелдеген. Бұл кейінірек Остерхауттың дихотомиясымен салыстыруға болады, ол жүйелік бағдарламалау тілдерін (компоненттер үшін) және сценарийлік тілдерді (компоненттерді байланыстыруға арналған аралық код үшін) ажыратады.
In software engineering, programming in the large and programming in the small refer to two different aspects of writing software. Programming in the large means designing a larger system as a composition of smaller parts, and programming in the small means creating those smaller parts by writing lines of code in a programming language. The terms were coined by Frank DeRemer and Hans Kron in their 1975 paper "Programming in the large versus programming in the small", in which they argue that the two are essentially different activities, and that typical programming languages, and the practice of structured programming, provide good support for the latter, but not for the former. This may be compared to the later Ousterhout's dichotomy, which distinguishes between system programming languages (for components) and scripting languages (for glue code, connecting components).
Сипаттама
Фред Брукс жеке бағдарламаның жасалу жолы, бағдарламалық жүйелер өнімінің жасалу жолынан өзгеше екенін анықтайды. Осы екі жағдайдың кез келгені үлкен, демек күрделі бағдарламаларға алып келеді, оларды техникалық қолдау жасаушыларға түсіну қиын болуы мүмкін. Ірі масштабтағы бағдарламалауда кодтау менеджерлері жұмысты нақты белгіленген өзара әрекеттесулері бар модульдерге бөлуге баса назар аударады. Бұл үшін мұқият жоспарлау және толыққанды құжаттама қажет. Ірі масштабтағы бағдарламалауда бағдарламаға өзгеріс енгізу қиынға соғуы мүмкін. Егер өзгеріс модульдердің шекарасын кесіп өтсе, көптеген адамдардың жұмысын қайта жасау қажет болуы мүмкін. Сондықтан, ірі масштабтағы бағдарламалаудың мақсаты – болашақта өзгерістер енгізілген жағдайда түзетуді қажет етпейтін модульдерді құру. Бұл модульдерді жоғары байланыстылыққа және төмен байланысқа ие етіп жобалау арқылы қол жеткізіледі. Ірі масштабтағы бағдарламалау абстракция жасау дағдыларын талап етеді. Модуль іске асырылғанша ол абстракция болып қалады. Алдымен жасалған абстракциялар өзгеріске ұшырамауы тиіс архитектураны құруы керек. Олар дәлдігі және нақты дұрыстығы бар өзара әрекеттесулерді анықтауы керек. Ірі масштабтағы бағдарламалау басқару дағдыларын қажет етеді. Абстракция құру процесі тек жұмыс істейтін нәрсені сипаттаумен ғана шектелмейді, сонымен қатар оны іске асыруға атсалысатын адамдардың күш-жігерін бағыттауға да бағытталған. Бұл тұжырымды Франк ДеРемер мен Ханс Крон 1975 жылы "Ірі масштабтағы бағдарламалау мен кішкентай масштабтағы бағдарламалау" атты мақаласында ұсынды, IEEE Soft. Eng. 2(2). Компьютерлік ғылымда ірі масштабтағы бағдарламалау жүйенің жоғары деңгейдегі күйін өзгерту логикасын көрсететін бағдарламалық кодты білдіруі мүмкін. Бұл логика хабарламаларды күтуді, хабарламаларды жіберуді, ACID емес транзакциялардың сәтсіздігін өтеуді және т.б. сияқты ақпаратты кодтайды. BPEL тілі ірі масштабтағы бағдарламалауды қолдау үшін арнайы жасалған.
Fred Brooks identifies that the way an individual program is created is different from how a programming systems product is created. Either of these conditions will result in large, and hence complicated, programs that can be challenging for maintainers to understand. With programming in the large, coding managers place emphasis on partitioning work into modules with precisely specified interactions. This requires careful planning and careful documentation. With programming in the large, program changes can become difficult. If a change operates across module boundaries, the work of many people may need re doing. Because of this, one goal of programming in the large involves setting up modules that will not need altering in the event of probable changes. This is achieved by designing modules so they have high cohesion and loose coupling. Programming in the large requires abstraction creating skills. Until a module becomes implemented it remains an abstraction. Taken together, the abstractions should create an architecture unlikely to need change. They should define interactions that have precision and demonstrable correctness. Programming in the large requires management skills. The process of building abstractions aims not just to describe something that can work but also to direct the efforts of people who will make it work. The concept was introduced by Frank DeRemer and Hans Kron in their 1975 paper "Programming in the Large Versus Programming in the Small", IEEE Trans. on Soft. Eng. 2(2). In computer science terms, programming in the large can refer to programming code that represents the high level state transition logic of a system. This logic encodes information such as when to wait for messages, when to send messages, when to compensate for failed non ACID transactions, etc. A language that was designed to explicitly support programming in the large is BPEL.
Кішігірім бағдарламалау
Бағдарламалық жасақтаманы әзірлеуде "кіші бағдарламалау" – шағын бағдарлама жазу қызметін білдіреді. Шағын бағдарламалар көлем жағынан аз кодтан тұрады, оларды анықтау оңай, жылдам жазылады және әдетте бір немесе бірнеше тығыз байланысты тапсырманы өте жақсы орындайды. Кіші бағдарламалау жеке адамдардың немесе шағын топтардың қысқа мерзімде бағдарламалауын қамтиды және кем формалды тәсілдерді (мысалы, құжаттама мен сынаққа аз мән беру), құралдар мен бағдарламалау тілдерін (мысалы, қатаң типтелген бағдарламалау тіліне қарағанда, бос типтелген сценарийлік тілді таңдау) қолдануға мүмкіндік береді. Кіші бағдарламалау прототиптік бағдарлама жасауға немесе тұрақтылық пен дұрыстықтан гөрі жылдам қолданбаларды дамытуға басымдық беретін жағдайларда қолданылуы мүмкін. Компьютерлік ғылымда кіші бағдарламалау – уақытша бағдарламалық мінез-құлықпен айналысады, көбінесе бір ACID транзакциясы ретінде орындалады және файлдар, дерекқорлар сияқты жергілікті логика мен ресурстарға қол жеткізуге мүмкіндік береді.
In software development, programming in the small describes the activity of writing a small program. Small programs are typified by being small in terms of their source code size, are easy to specify, quick to code and typically perform one task or a few very closely related tasks very well. Programming in the small can involve programming by individuals or small groups over short time periods and may involve less formal practices (for instance less emphasis on documentation or testing), tools and programming languages (e. g. the selection of a loosely typed scripting language in preference to a strictly typed programming language). Programming in the small can also describe an approach to making a prototype software or where rapid application development is more important than stability or correctness. In computer science terms, programming in the small deals with short lived programmatic behavior, often executed as a single ACID transaction and which allows access to local logic and resources such as files, databases, etc.