Программалау тілдері семантикасының әрекеттік тәсілі
Action semantics
Программилеу тілдерінің семантикасын формалды түрде сипаттау үшін қолданылатын әрекет семантикасы. 1990ж. Д.Уатт пен П.Моссes жасаған, кеңейтілуге және өзгертуге ыңғайлы.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Action semantics – Дэвид Уатт пен Питер Д. Мосс 1990 жылдары ойлап тапқан бағдарламалау тілдерінің семантикасын ресми түрде сипаттаудың құрылымы. Ол денотациялық, операциялық және алгебралық семантиканың үйлесімі. Action semantics прагматикалық болуға бағытталған, ал action semantics сипаттамалары (ASD) нақты бағдарламалау тілдерін қолдану үшін кеңейтілуге арналған. ASD-нің кеңейтілуі мен өзгеруі осыған көмектеседі. Бұл кеңейтулер мен өзгерістер сипаттамада көп өзгерістерді қажет етпеуге мүмкіндік береді. Бұл, әдетте, денотациялық немесе операциялық семантиканы кеңейту кезінде кездесетін жағдайдан өзгеше, онда бүкіл сипаттаманы қайта жазу қажет болуы мүмкін. Action semantics құрылымы бастапқыда Орхус университеті мен Глазго университетінде жасалған. Содан бері әлемнің түкпір-түкпіріндегі топтар мен жеке тұлғалар осы тәсілге үлес қосып келеді.
Action semantics is a framework for the formal specification of semantics of programming languages invented by David Watt and Peter D. Mosses in the 1990s. It is a mixture of denotational, operational and algebraic semantics. Action semantics aim to be pragmatic, and action semantic descriptions (ASDs) are designed to scale up to handle realistic programming languages. This is aided by the extensibility and modifiability of ASDs. This helps to ensure that extensions and changes do not require too many changes in the description. This is in contrast to the typical case when extending denotational or operational semantics, which may require reformulation of the entire description. The action semantics framework was originally developed at the University of Aarhus and the University of Glasgow. Groups and individuals around the world have since contributed further to the approach.
Семантикалық мәндер
Іс-әрекет семантикасының маңызды бөлігі, бұрынғы бағдарламалау тілдерінің семантикасында көрінбеген модульділікті қамтамасыз ететін нәрсе – бірінші реттік семантикалық элементтерді пайдалану. Бірінші реттік дегеніміз, денотациялық семантикада семантикалық функция басқа семантикалық функцияға қолданыла алатын болса, іс-әрекет семантикасында семантикалық элемент өзінің түріндегі басқа семантикалық элементке қолданылмайды. Бұдан әрі, іс-әрекет семантикасы қолданатын семантикалық элементтер бағдарламалау тілінің құрылымдарын сипаттау мүмкіндігін кеңейтеді, өйткені олар кез келген нақты іске асырылудан тәуелсіз бағдарламаның мінез-құлқы мен бағдарлама бөліктерінің жалпы өнімділікке тигізетін әсерін көрсетеді. Іс-әрекет семантикасындағы үш түрлі семантикалық элементті – іс-әрекеттерді, деректерді және нәтиже берушілерді білдіру үшін осыған орай аталған іс-әрекет нотациясы қолданылады. Бұл жүйедегі орталық семантикалық элемент – іс-әрекеттер, ал деректер мен нәтиже берушілер қосымша рөл атқарады. Нақтырақ айтқанда, нәтиже берушілер мен деректерді өңдейтін механизм – іс-әрекеттер. Іс-әрекет, басқа іс-әрекеттің ішінде орын алатын, бағдарламаның қадамдық түрдегі бейнелеуі болып табылады, онда әрбір қадам ағымдағы ақпаратқа қол жеткізеді, ағымдағы ақпаратты өзгертеді немесе екеуін де жасайды. Нәтиже берушілер іс-әрекеттердің ішінде пайда болады және тек ағымдағы ақпаратқа қол жеткізеді. Нәтиже беруші элементті бағалауға болады, ал бағаланған кезде ол дерек элементіне айналады.
An important part of action semantics that gives it a modularity not seen in previous programming language semantics is the use of first order semantic entities. First order refers to how, unlike in denotational semantics, where a semantic function can be applied to another semantic function, in action semantics, a semantic entity cannot be applied to another semantic entity of its kind. Furthermore, the semantic entities utilized by action semantics broaden the framework’s ability to describe a programming language’s constructs by serving to denote both program behavior that is independent of any particular implementation and the way in which parts of a program influence the overall performance of the whole. The appropriately named action notation is employed to express the three types of semantic entities found in action semantics: actions, data, and yielders. The central semantic entity in this framework is actions, with data and yielders occupying supplementary roles. More specifically, actions are the mechanisms through which yielders and data are processed. An action, which can occur within another action, is a step by step representation of program behavior, where each step accesses current information, changes current information, or does both. Yielders appear within actions and only access current information. A yielder entity is capable of being evaluated, and when it is, the product is a datum entity.
Іс-қимыл субъектілері
Іс-әрекет субъектілері бағдарламаның семантикасын мүмкін болатын мінез-құлқында сипаттау арқылы тікелей бейнелей алады немесе бағдарламаның жеке бөліктерінің, мысалы, операторлар немесе өрнектердің, бағдарламаның семантикасына тигізетін әсерін көбірек жасырын жолмен бейнелей алады. Олар есептеу мінез-құлқын, берілген мәндерден жаңа мәндерді жасау арқылы күйдегі өзгерістерді көрсете отырып, модельдейді. Нақтырақ айтқанда, іс-әрекет ағымдағы ақпарат арқылы берілген деректерді қабылдайды – уақытша деректер, алған байланыстар және сақтаудың қазіргі күйі, содан жаңа уақытша деректерді шығарып, жаңа байланыстарды құрып, сақтау күйін жаңартады немесе осылардың кез келген комбинациясын жасайды. Іс-әрекет субъектісі төрт мүмкін жолмен аяқталуы мүмкін: толыққанды (қалыпты түрде аяқталу), қашып кету (қосымша нұсқаумен аяқталу), сәтсіздікке ұшырау (баламасы жойылу) немесе тоқтамау (аяқталмау). Іс-әрекеттің орындалуы кезінде өңделетін ақпараттың төрт санаты бар. Уақытша ақпарат аралық нәтижелерге сәйкес келеді және іс-әрекет үшін дереу пайдалануға қолжетімді. Уақытша ақпаратты құрайтын деректер өрнектермен берілген мәндерді қамтиды. Егер бұл мәндер дереу қолданылмаса, олар жоғалады. Ауқымдық ақпарат символдар кестесіне сәйкес келеді және оны іс-әрекеттің және оның қосалқы іс-әрекеттерінің кез келген жерінен сілтемелеуге болады. Мұндай ақпаратты ішкі ауқымды құру арқылы қосалқы іс-әрекетте жасыруға да болады, онда ол тек сол ауқымдағы қосалқы іс-әрекетке жергілікті түрде қолжетімді болады. Тұрақты ақпарат айнымалыларға тағайындалған мәндерге сәйкес келеді және іс-әрекеттің орындалуы кезінде өзгертілуі мүмкін. Іс-әрекеттің орындалуы кезінде сақтауға енгізілген өзгерістер тұрақты болғандықтан, осындай өзгерістерді тек нақты іс-әрекеттер ғана тудыра алады. Осыған сәйкес, тұрақты ақпарат оны нақты жойғанға дейін қолжетімді болады. Ал, ауқымдық ақпараттан айырмашылығы, оны жасыруға болмайды. Тұрақты ақпарат – іс-әрекеттер арасында алмасылатын деректерге сәйкес келеді және кеңейтілуі мүмкін, бірақ өзгертілмейді. Уақытша ақпарат тек іс-әрекет аяқталғанда немесе қашқанда ғана, ал ауқымдық ақпарат тек іс-әрекет аяқталғанда ғана шығарылады. Тұрақты ақпаратты өзгерту және тұрақты ақпаратты кеңейту іс-әрекеттің орындалуы кезінде жүзеге асырылуы тиіс. Іс-әрекет субъектісінің бес түрлі қыры бар: бірі ақпаратқа тәуелсіз өңдеуге арналған, ал төрт түрлі ақпарат түрін өңдеуге арналған. Негізгі қыр, мысалы, басқару ағыны, ешқандай ақпаратқа байланысты емес. Функционалдық қыр уақытша ақпаратты өңдеумен айналысады және деректерді беру және қабылдау әрекеттерімен сипатталады. Декларативтік қыр ауқымдық ақпаратты өңдеумен айналысады және байланыстарды құру және қабылдау әрекеттерімен сипатталады. Императивтік қыр тұрақты ақпаратты өңдеумен айналысады және сақтау орындарын бөлу және босату, оларда сақталған деректерді алу және өзгерту әрекеттерімен сипатталады. Коммуникативтік қыр тұрақты ақпаратты өңдеумен айналысады және хабарламаларды жіберу және қабылдау әрекеттерімен сипатталады, сондай-ақ агенттерге келісімшарттар ұсынады. Әр қырдағы ақпаратқа тигізетін әсеріне қарай екі түрлі іс-әрекет бар. Бастапқы іс-әрекеттер ақпаратқа тек бір қырдан әсер етеді. Іс-әрекет комбинаторлары бірнеше қырларды қамтитын іс-әрекеттерге мүмкіндік береді, біріктірілген іс-әрекетке қатысқан әрбір қыр үшін басқару және ақпарат ағынын реттейді. Іс-әрекеттерді біріктіргенде, іс-әрекет комбинаторлары қосалқы іс-әрекеттердің орындалу реттілігін және әрбір қосалқы іс-әрекет үшін кіріс және шығыс дерек ағынын реттейді.
Action entities can directly represent programs’ semantics by describing possible program behaviors or represent, in a more indirect way, the impact that individual pieces of a program, like statements or expressions, have on the semantics of the program as a whole. They model computational behavior by indicating changes in state through their generation of new values from passed values. Specifically, an action accepts data passed to it via the current information — the transient data given to it, the bindings received by it, and the current state of storage — and, from this, gives new transient data, creates new bindings, updates the state of storage, or any combination of these. An action entity can culminate in four possible ways. It can: complete (terminate normally), escape (terminate in an exception), fail (alternative is discarded), or diverge (not terminate). There are four categories of information that are processed by action performance. Transient information corresponds to intermediate results and is accessible for immediate use by the action. The data that comprises transient information encompasses the values given by expressions. If these values are not immediately used, they are lost. Scoped information corresponds to symbol tables and can be referenced from anywhere within the action and its sub actions. It is also possible for such information to be hidden within a sub action, via the creation of an inner scope, in which case it would be only locally accessible within that scope, to that sub action. Stable information corresponds to values assigned to variables and can be modified in the action performance. Because alterations to storage during the performance of an action are persistent, only explicit actions can cause such modifications. In accordance with this, stable information is available until it is explicitly destroyed. And, unlike scoped information, it cannot be hidden. Permanent information corresponds to data exchanged between actions and can be extended but not modified. Transient information is produced only when an action completes or escapes, and scoped information is produced only when an action completes. The modification of stable information and the extension of permanent information must take place during action performance. An action entity has five different facets, one for processing that does not rely on information, and four for processing each of the four different types of information. The basic facet, an example of which would be control flows, is not tied to information of any kind. The functional facet deals with the processing of transient information and is characterized by actions giving and accepting data. The declarative facet deals with the processing of scoped information and is characterized by actions creating and receiving bindings. The imperative facet deals with the processing of stable information and is characterized by actions allocating and freeing storage cells, and fetching and modifying the data stored in them. The communicative facet deals with processing permanent information and is characterized by actions sending and receiving messages and “offer[ing] contracts to agents.” There are two different kinds of actions in terms of their effect on the information in each facet. Primitive actions only affect the information in one facet. Action combinators permit actions that involve multiple facets, governing how control and information flows for each facet involved in a combined action. In combining actions, action combinators governor the sequencing of sub action performances and the incoming and outgoing flows of data for each sub action.
Деректер субъектілері
Деректер нысандары – іс-қимыл нысандарында өңделетін ақпаратты құрайтын элементтер. Деректер сорттар деп аталатын құрылымдарға ұйымдастырылады. Сорттар – математикалық нысандар жиынтығы болып табылады, олар осы нысандармен орындалатын амалдарды қамтиды және алгебралық критерийлер бойынша анықталады. Бұл құрылымдар әрбір жеке нысанға қол жеткізуге мүмкіндік береді. Деректер нысандарының мысалдарына карталар, тізімдер, жиынтықтар, жолдар, символдар, сандар және шындық мәндері сияқты нақты элементтер, сондай-ақ кейбір есептеу амалдары үшін ғана қолданылатын абстрактілірек элементтер, атап айтқанда, агенттер, жад орындарына сәйкес келетін жасушалар және белгілер, немесе келісімшарттар мен хабарламалар сияқты деректер компоненттерінен құралған элементтер жатады. Абстракция – іс-қимыл нысанын қамтитын дерек нысаны, мұндай жағдайда абстракцияны іске асыру нәтижесінде осы іс-қимыл орындалады. Бұл – іс-қимыл семантикасының кіші бағдарламаларды жариялау және шақыруын бейнелейтін тәсілі.
Data entities are the items that comprise the information processed in action entities. The data is arranged into structures known as sorts. Sorts are sets of mathematical objects, include operations that can be performed on those objects, and are defined according to algebraic criteria. These structures allow access to each individual entity. Examples of data entities can include concrete elements like maps, lists, sets, strings, characters, numbers, and truth values, more abstract elements used solely for the purpose of some computational operation, namely data access, like agents, cells corresponding to memory locations, and tokens, or elements like contracts and messages that are a composite of data components. An abstraction is a data entity that encapsulates an action entity, in which case enacting the abstraction results in the action being performed. This is the technique by which action semantics represents the declaring and invoking of subprograms.
Табысты субъектілер
Табыс берушілер бағаланбаған деректер жиынтығынан тұрады. Бұл деректердің мәндері ағымдағы ақпарат пен есептеу күйіне байланысты. Табыс берушілер әрекеттермен өңделетін ақпаратты таңдау үшін уақытша деректерге, байланыстарға және жадқа сүйенеді. Әрекет орындалған кезде табыс берушілер бағаланады, ал олардың бағалау нәтижесі деректерді құрайды. Ағымдағы ақпарат табыс берушінің бағалауынан алынған деректерге әсер ете алады, бірақ бағалау ағымдағы ақпаратқа әсер ете алмайды. Егер деректермен жұмыс жасау табыс берушілерге қолданылса, оның нәтижесінде күрделі табыс берушілер пайда болуы мүмкін.
Yielder entities consist of unevaluated quantities of data. The values of these quantities are contingent on the current information and state of computation. Yielders draw on transient data, bindings, and storage to select the information to be processed by actions. It is during action performance that yielders are evaluated, and their evaluation results in data entities. While the current information can influence the data produced by the evaluation of a yielder entity, the evaluation cannot influence the current information. If data operations are employed on yielder entities, compound yielder entities may be formed as a result.
Іс-әрекет белгісі
Ағылшын тіліндегі қарапайым сөздер іс-әрекет нотациясының символдары ретінде қолданылады. Іс-әрекет нотациясы семантикалық ұғымдарды көрсету үшін қолданылатын сөз таптары арқылы табиғи тілді модельдеуге арналған. Іс-әрекеттер етістік фразалармен, ал деректер мен нәтижелер есім фразалармен бейнеленеді. Мұндай символдарды таңдаудың нәтижесінде жоғары оқылатын және басқа нотациялармен салыстырғанда кем емес формалды құрылым пайда болады, себебі ол нақты анықталған.
Regular English words serve as the symbols of action notation. Action notation is designed to simulate natural language, which is illustrated in the parts of speech used to denote semantic entities. Action entities are represented by verb phrases and data and yielder entities by noun phrases. The result of this choice of symbols is a framework that is highly readable and no less formal than other frameworks since it remains precisely defined.
Басқа негізгі аспектілер
Іс-әрекет семантикасы түсініктілігін арттыратын абстракция деңгейін камтиды. Іс-әрекетке қатысты басқару және дерек ағынының ерекшеліктері, денотациялық семантикадағы семантикалық функциялардың толық сипаттамасы сияқты, ашық түрде айтылмастан, керісінше, жасырын түрде енгізіледі. Әрекет орындалғанда, көп бөлігі ақпараттық өңдеу және манипуляция автоматты түрде жүзеге асырылады. Бағдарламалық тілдің мағынасын анықтауда іс-әрекет семантикасы бағдарламалық сөз тіркестерін іс-әрекеттермен байланыстырады. Бағдарламалық фразаның орындалуы, оған сәйкес келетін іс-әрекеттің орындалуымен сәйкес келеді. Іс-әрекет семантикасын қолдану нәтижесінде алынған бағдарламалау тілінің сипаттамасын төменгі (микросемантика) және жоғарғы (макросемантика) деңгейлерге бөлуге болады. Төменгі деңгей іс-әрекет нотациясының мағынасын анықтаумен, ал жоғарғы деңгей бағдарламалау тілінің мағынасын анықтаумен, оны іске асыру үшін іс-әрекет нотациясын пайдаланумен айналысады.
Action semantics embodies a level of abstraction that increases its comprehensibility. The specifics of the control and data flows that an action involves are implicitly incorporated in the action, as opposed to being explicitly expressed as the details of semantic functions are in denotational semantics. When an action is performed, most information processing and manipulation occurs automatically. Program phrases are mapped to actions when constructing a definition of a programming language’s meaning in action semantics. The execution of a programming phrase corresponds to the performance of the action to which it maps. The programming language specification generated from the application of action semantics can be broken down into a lower level (microsemantics) and an upper level (macrosemantics). The lower level consists of defining the meaning of action notation, while the upper level consists of defining the meaning of a programming language, using action notation to do so.