Эвклид: Қауіпсіз бағдарламалау тілінің тарихы мен ерекшеліктері
Euclid (programming language)
Euclid – 1970-ші жылдарда жасалған, бағдарламаның дұрыстығын тексеруге арналған императивтік бағдарламалау тілі. Xerox PARC және университеттерде жасалған.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
Евклид – тексерілетін бағдарламаларды жазуға арналған императивті бағдарламалау тілі. Ол 1970 жылдардың ортасында Батлер Лэмпсон мен Джеймс Г. Митчелл Xerox PARC зертханасында Торонто университетінің Джим Хорнингімен, USC ISI-дегі Ральф Л. Лондонмен және UCLA-дағы Джеральд Дж. Попекпен бірлесіп жасаған. Іске асыруды Торонто университетінің Рик Холт басқарды, ал Джеймс Корди компилятордың алғашқы нұсқасын жасаудың басты бағдарламашысы болды. Ол бастапқыда Motorola 6809 микропроцессоры үшін жобаланған. Ол сол кезде инновациялық деп есептелді; компиляторды әзірлеу тобының 2 жылға 2 миллион долларлық бюджеті болды және оны АҚШ Қорғаныс министрлігінің Қорғаныс жоғары технологиялық зерттеулер агенттігі (DARPA) және Канада Ұлттық қорғаныс департаменті тапсырыс берді. Ол бірнеше жыл бойы I. P. Sharp Associates, MITRE Corporation, SRI International және басқа да халықаралық институттарда жүйелік бағдарламалау және қауіпсіз бағдарламалық жүйелерді зерттеу үшін қолданылды. Евклид Паскаль, Меса, Альфард, CLU, Gypsy, BCPL, Modula, LIS және SUE тілдерінен туындаған. Евклидтегі функциялар жабық салалар болып табылады, олардың жанама әсерлері болмайды және импорттарды ашық түрде жариялауы керек. Евклид сонымен қатар goto операторларын, қозғалмалы нүктелі сандарды, жаһандық тағайындамаларды, ішкі функцияларды және псевдонимдерді қабылдамайды, сондай-ақ функцияның нақты параметрлерінің ешқайсысы бірдей жад жасушасына сілтеме жасай алмайды (Евклид оны "айнымалы" деп атайды). Евклид модульдерді типтер ретінде іске асырады. Евклидтің туыстары Concurrent Euclid және Turing бағдарламалау тілдерін қамтиды.
Euclid is an imperative programming language for writing verifiable programs. It was designed in the mid 1970s by Butler Lampson and James G. Mitchell at the Xerox PARC lab in collaboration with Jim Horning at the University of Toronto, Ralph L. London at USC ISI and Gerald J. Popek at UCLA. The implementation was led by Ric Holt at the University of Toronto and James Cordy was the principal programmer for the first implementation of the compiler. It was originally designed for the Motorola 6809 microprocessor. It was considered innovative for the time; the compiler development team had a $2 million budget over 2 years and was commissioned by the Defense Advanced Research Projects Agency of the U. S. Department of Defense and the Canadian Department of National Defence. It was used for a few years at I. P. Sharp Associates, MITRE Corporation, SRI International and various other international institutes for research in systems programming and secure software systems. Euclid is descended from Pascal, Mesa, Alphard, CLU, Gypsy, BCPL, Modula, LIS, and SUE. Functions in Euclid are closed scopes, may not have side effects, and must explicitly declare imports. Euclid also disallows gotos, floating point numbers, global assignments, nested functions and aliases, and none of the actual parameters to a function can refer to the same memory cell (which Euclid calls a "variable"). Euclid implements modules as types. Descendants of Euclid include the Concurrent Euclid programming language and the Turing programming language.