Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
1988 жылғы E. W. Dijkstra-ның "Компьютер ғылымын шын мәнінде оқытудың қатыгездігі туралы" мақаласы – 1988 жылғы Э. В. Дикстраның ғылыми еңбегі. Онда компьютерлік бағдарламалау математиканың бір саласы ретінде қарастырылуы керек екені, ал бағдарламаның формальды түрде дәлелделуі – дұрыстықтың маңызды өлшемі екені айтылады. Атауына қарамастан, мақаланың басым бөлігі Дикстраның компьютер ғылымын ғылым саласындағы кең көрініске енгізу әрекеттеріне арналған, ал оқыту мәселесі соңында қосымша қарастырылады. Атап айтқанда, Дикстра бірінші курс студенттері үшін бағдарламалауға кіріспе курсын ұсынды, ол интерпретацияланбаған формальды жүйе ретінде Хоар логикасына негізделген.
1988 paper by E. W. Dijkstra
"On the Cruelty of Really Teaching Computing Science" is a 1988 scholarly article by E. W. Dijkstra which argues that computer programming should be understood as a branch of mathematics, and that the formal provability of a program is a major criterion for correctness. Despite the title, most of the article is on Dijkstra’s attempt to put computer science into a wider perspective within science, teaching being addressed as a corollary at the end. Specifically, Dijkstra made a “proposal for an introductory programming course for freshmen” that
consisted of Hoare logic as an uninterpreted formal system.
Жүзеге асыру мүмкіндігін талқылау
"Бағдарламалық инженерия" термині енгізілгеннен бері ресми тексеру көбінесе тым көп ресурстарды қажет ететін, іске асыруға мүмкін емес деп есептелді. Күрделі қолданбаларда бағдарламаның не істеу керектігін дұрыс көрсетудің өзі қиындық тудырады және бұл қателердің жиі кездесетін себебі болып табылады. Бағдарламалық жасақтаманы сынаудың басқа әдістері көбінесе қателерді жою үшін қолданылады, сондай-ақ бағдарламалық жасақтама сапасын бағалауда көптеген факторлар ескеріледі. Өмірінің соңына дейін Дикстра есептеудің басты мәселелері оның қанағаттануына сай шешілмегенін айтты, себебі бағдарламаның дұрыстығына жеткілікті назар берілмеді (бірақ техникалық қолдау және тиімділік сияқты басқа да талаптар ескерілді).
Since the term "software engineering" was coined, formal verification has almost always been considered too resource intensive to be feasible. In complex applications, the difficulty of correctly specifying what the program should do in the first place is also a common source of error. Other methods of software testing are generally employed to try to eliminate bugs and many other factors are considered in the measurement of software quality. Until the end of his life, Dijkstra maintained that the central challenges of computing hadn't been met to his satisfaction, due to an insufficient emphasis on program correctness (though not obviating other requirements, such as maintainability and efficiency).
Педагогикалық мұра
Қазіргі кезде оқытылатын компьютер ғылымы Дийкстраның барлық кеңестерін толыққанды қабыламайды. Оқу бағдарламалары көбінесе күрделілікті басқару және болашақ өзгерістерге дайындық жасау техникаларын баса назарлайды, бұл Дийкстраның ертерек жазбаларында айтылған. Оларға абстракция, келісімшарт бойынша бағдарламалау және жобалау үлгілері кіреді. Қателерден сақтану үшін бағдарламалау техникалары мен дәстүрлі бағдарламалық жасақтаманы тестілеу әдістері негізгі талаптар ретінде оқытылады, сондай-ақ студенттерге белгілі бір математикалық құралдар ұсынылады, бірақ формалды тексеру әдістері оқу бағдарламасына, әдетте, тек қана жоғары деңгейдегі тақырып ретінде ғана енгізіледі. Демек, кейбір жағынан Дийкстраның идеялары сақталған, алайда ол ең қатты сенген идеялары толыққанды жүзеге асырылмаған. Бағдарламалық жасақтаманы жасау саласындағы жаңа оқу бағдарламалары Дийкстраның ұсыныстарын қабылдады. Бұл бағдарламалардың негізгі мақсаты – жүйелік дұрыстықты формалды растауды жеңілдету үшін бағдарламалық қамтамасыз ету талаптары мен жобалаудың формалды сипаттамасын жасау. Канадада мұндай бағдарламалар физикаға негізделген инженерлік саласындағы ұқсас негізгі біліктерге ие аккредиттелген инженерлік мамандықтар болып табылады.
Computer science as taught today does not follow all of Dijkstra's advice. The curricula generally emphasize techniques for managing complexity and preparing for future changes, following Dijkstra's earlier writings. These include abstraction, programming by contract, and design patterns. Programming techniques to avoid bugs and conventional software testing methods are taught as basic requirements, and students are exposed to certain mathematical tools, but formal verification methods are not included in the curriculum except perhaps as an advanced topic. So in some ways, Dijkstra's ideas have been adhered to; however, the ideas he felt most strongly about have not been. Newly formed curricula in software engineering have adopted Dijkstra's recommendations. The focus of these programs is the formal specification of software requirements and design in order to facilitate the formal validation of system correctness. In Canada, they are often accredited engineering degrees with similar core competencies in physics based engineering.