Fine–Grained Integration of Oberon Into Windows Using Pluggable Objects Emil Johann Zeller °C Emil Johann Zeller, 2002 Diss

Total Page:16

File Type:pdf, Size:1020Kb

Fine–Grained Integration of Oberon Into Windows Using Pluggable Objects Emil Johann Zeller °C Emil Johann Zeller, 2002 Diss Fine{grained Integration of Oberon into Windows using Pluggable Objects Emil Johann Zeller °c Emil Johann Zeller, 2002 Diss. ETH No 14877 Fine{grained Integration of Oberon into Windows using Pluggable Objects A dissertation submitted to the Swiss Federal Institute of Technology ZuricÄ h for the degree of Doctor of Technical Sciences presented by Emil Johann Zeller Dipl. Informatik{Ing. ETH born January 14, 1969 citizen of Appenzell, AI accepted on the recommendation of Prof. Dr. JurgÄ Gutknecht, examiner Prof. Dr. Thomas Stricker, co{examiner Prof. Dr. Clemens Szyperski, co{examiner 2002 iv Acknowledgements First and foremost, I would like to thank Prof. JurgÄ Gutknecht, for the opportunity to work in his research group, and for his patient and liberal supervision. I am also very grateful to Prof. Thomas Stricker and Prof. Clemens Szyperski. Both readily agreed to co{supervise this thesis and provided valuable suggestions which helped to enhance the structure of this book. Special thanks go to Andr¶e Fischer, JÄorg Rentsch, and Wolfgang Bock for proofreading the ¯rst draft of the manuscript and helping me improve my writing. I want as well to thank all my colleagues at the Institut of Com- puter Systems for contributing to the lively and inspiring working at- mosphere. Last but not least, my deepest gratitude goes to my friends and family. I simply can not imagine having done my studies and research without their encouragement and support. vi Contents Abstract xi Kurzfassung xii 1 Introduction 1 1.1 Motivation . 1 1.2 Overview . 1 1.3 Component Software . 2 1.3.1 Java Beans . 4 1.3.2 COM . 6 1.3.3 .NET Framework . 8 1.4 The ETH Oberon System . 13 1.5 Related Work . 21 1.5.1 Juice / Gazelle . 21 1.5.2 BlackBox Component Builder . 23 1.5.3 Java Beans Tools for ActiveX . 25 1.5.4 VMWare, Virtual PC . 26 2 Emulating a System on Top of Another 29 2.1 Bootstrapping the System . 30 2.2 Automatic Memory Management . 30 2.3 IO and CPU Utilization . 31 2.4 Filesystem . 32 2.5 Display System . 33 vii viii 3 A new Oberon Display System 35 3.1 Introduction . 35 3.2 A new Display Scheme . 36 3.3 A new Desktop Model . 41 3.4 Documents and Applications . 44 3.5 Using standard Menus and Dialogs . 45 4 A Plug{in Kernel for Oberon 51 4.1 Introduction . 51 4.2 Bootlinker and Bootloader . 52 4.3 Compiler Extensions . 56 4.4 Exception Handling . 59 4.5 Multithreading Support . 62 5 Pluggable Objects as Web Applets 67 5.1 Introduction . 67 5.2 Pluggable Oberon Object . 69 5.2.1 Packages . 70 5.2.2 PlugIns . 74 5.3 Security Issues . 76 5.4 The Oberon Web Browser . 78 6 Oberon Netscape Browser Plug{in 81 6.1 Introduction . 81 6.2 Implementation of the Plug{in DLL . 82 6.2.1 NPInitialize . 83 6.2.2 NPGetEntryPoints . 84 6.2.3 NPShutdown . 85 6.2.4 Plug{In Window . 85 6.2.5 Plug{In Streams . 89 6.2.6 Linking the Plug{In DLL . 90 6.3 Installing the Plug{in DLL . 92 6.4 Interfacing to Java using LiveConnect . 93 6.4.1 Java Runtime Interface . 94 6.4.2 LiveConnect Implementation . 95 6.4.3 JavaScript Example . 99 ix 7 Oberon ActiveX Components 103 7.1 Introduction . 103 7.2 An ActiveX and DCOM Server . 108 7.3 OLEObjects . 113 7.3.1 IUnknown . 113 7.3.2 IDispatch . 115 7.3.3 IPersist . 118 7.3.4 IDataObject . 119 7.3.5 Events . 121 7.4 OLEFrames . 124 7.4.1 IOleObject . 124 7.4.2 IOleInPlaceObject . 127 7.4.3 IOleInPlaceActiveObject . 128 7.4.4 IViewObject . 128 7.4.5 IOleControl . 129 7.4.6 IQuickActivate . 130 7.5 OLEDataServices . 130 7.5.1 Clipboard . 131 7.5.2 Client Site . 131 7.5.3 Drag and Drop . 133 7.5.4 Document Files . 134 7.6 OLEPlugIns / Internet Explorer . 135 7.7 OLEObjectScripts . 136 8 Case Studies 139 8.1 Web Applets . 139 8.1.1 Simple Applets . 139 8.1.2 Applets using Network Streams . 143 8.1.3 Applets and Scripting . 146 8.2 ActiveX Controls . 148 8.2.1 Voyager and Microsoft O±ce . 151 8.2.2 Visual Basic . 151 9 Conclusions 155 9.1 Evaluation . 155 9.2 Future Perspectives . 156 A Module Statistics 157 x B Performance Evaluation 165 Bibliography 177 Trademark notice The following are trademarks or registered trademarks of their respec- tive companies: Oberon, Gadgets, Native Oberon, MacOberon, Oberon for Linux, Obe- ron for Windows, Oberon System 3, ETH Oberon, and ETH PlugIn Oberon are trademarks of the Swiss Federal Institute of Technology ZuricÄ h. Microsoft, NT, Win32, Windows, Windows 95, Windows 98, Windows NT, Windows 2000, Microsoft O±ce, Word, Excel, PowerPoint, Inter- net Explorer, Visual Basic, Visual C++, COM, DCOM, ActiveX, and OLE are trademarks of Microsoft. Intel is a trademark of Intel. Navigator, Communicator, and LiveConnect are trademarks of Net- scape. Java, and Java Beans are trademarks of Sun Microsystems. BlackBox, Component Pascal, and Direct{to{COM are trademarks of Oberon microsystems. Mac OS is a trademark of Apple Computer. CORBA is a trademark of the Object Management Group. Linux is a trademark of Linus Torvalds. UNIX is a trademark of X/Open Company Limited. xi Abstract The ETH Oberon System has been implemented in two fundamen- tally di®erent ways: as native operating system and as an application running on top of another operating system. The embedded versions of Oberon are typically implemented as full screen applications, which are poorly integrated in their host environment. On the on hand, this approach has the advantage of maintaining the look{and{feel of a na- tive Oberon implementation. On the other hand, developers of Oberon software would sometimes want to reuse it or make it available on a ¯ne{grained level as part of commercial applications. In this thesis, a generic solution to this problem using a software component approach is presented. Visual and non{visual Oberon com- ponents | ranging from simple gadgets such as buttons, to complex containers such as desktops | are subject to be plugged into foreign contexts of di®erent kinds, e.g. web pages, spreadsheets, etc. Such pluggable objects are able to cooperate and communicate with their context and with other components using technologies like in{place activation, scripting, automation, clipboard, drag{and{drop, persis- tency, etc. Although the implementation described in this thesis is speci¯c to the Windows platform, most of the fundamental ideas can easily be adopted for other platforms. xii Kurzfassung Das ETH Oberon System wurde bisher auf zwei grundsÄatzlich ver- schiedene Arten implementiert. Einerseits als eigenstÄandiges Betriebs- system und andererseits als Anwendung, die auf einem anderen Be- triebssystem ablÄauft. Die eingebetteten Versionen von Oberon werden typischerweise als Vollbild{Anwendung realisiert, welche nur schlecht in die jeweilige Gastumgebung integriert sind. Dieser Ansatz hat den Vorteil, dass eine sehr genaue Emulation eines eigenstÄandigen Oberon Systemes angeboten werden kann. Entwickler von Oberon Software mÄochten aber oft ihre Programme als integrierten Teil einer kom- merziellen (nicht Oberon) Anwendung benutzen kÄonnen. In dieser Dissertation wird ein allgemeiner Ansatz zur LÄosung dieses Problems vorgestellt. Damit kÄonnen sichtbare und unsichtbare Oberon Komponenten, von elementaren Objekten bis hin zu komplizierten Objekt{Hierarchien, in fremden Umgebungen verschiedenster Art (z.B. Web Seiten oder Tabellen) eingesetzt werden. Diese Komponenten kÄonnen mit ihrer Umgebung und anderen Komponenten mit einer Vielzahl von Standard Techniken kooperieren. Obwohl die in dieser Dissertation beschriebene Implementation auf dem Windows Betriebssystem basieren, kÄonnen die meisten der be- schriebenen Ideen auch auf andere Betriebsysteme angewandt werden. Chapter 1 Introduction 1.1 Motivation The Oberon system has been implemented on di®erent computer plat- forms, where it either runs natively or on top of another operating system. All existing ports of the Oberon system running on top of another system are implemented to provide a complete emulation of a native Oberon system. Unfortunately none of these ports provide additional functionality taking advantage of the underlying system. In this thesis di®erent extension to the Oberon system are dis- cussed. All these extensions are made possible by introducing rela- tively small extensions in the system core. 1.2 Overview This thesis is organized as follows: ² This ¯rst chapter gives a survey of topics closely related to this thesis. This are: { popular component software system standards { the ETH Oberon System and the Oberon programming lan- guage 1 2 { other projects which try to embed Oberon in a foreign con- text ² Chapter 2 discusses typicall problems encountered when embed- ding run{time systems into each other. ² Chapter 3 discusses the implementation of a new display system for Oberon. This makes it possible to integrate existing frames into a wide range of di®erent non{Oberon window contexts. ² Chapter 4 discusses the techniques needed to run a minimal Oberon system on Windows. This includes the following top- ics: { bootlinker and bootloader { interfacing with the Win32 API { compiler support for di®erent calling conventions { exception handling { multithreading ² Chapter 5 describes extensions to Oberon needed to use Oberon objects as web applets. ² Chapter 6 describes the implementation of a browser plug{in for using Oberon applets with the Netscape browser. ² Chapter 7 describes an Oberon framework for developing COM components. This framework is then used to implement ActiveX wrappers for visual and non{visual Oberon objects. ² Chapter 8 presents case studies where Oberon objects are used as plug{ins into web browsers and other container applications. ² Chapter 9 presents conclusions and reflections.
Recommended publications
  • ETH Eidgenossische Technische Hochschule Zurich H.Eberle
    ETH Eidgenossische lnstitut Technische fur lnformatik Hochschule ZUrich H.Eberle Hardware Description of the Workstation Ceres 11nuar 1987 ,70 70 . 61 .10 ETH Eidgenossische lnstitut Technische fur lnformatik Hochschule Zurich Eidrg. ~hn. ZI!rich lrricrm!!~!~:.~~lb;i::1H1a-k ETH~Zentrum CH..oo92 Zurich H.Eberle Hardware Description of the Workstation Ceres EidQ. lechn. He:ch'?~h'Jle Zilr\J::;!-: lnforme::!':.uib~iuthek El'l I-lei ili rn 11 CH-8002 ZOrtch gl,4-,23 Address of the author: lnstitut fiJr lnformatik ETH-Zentrum CH-8092 Zurich I Switzerland © 1987 lnstitut tor lnformatik, ETH Zurich 1 Hardware Description of the Workstation Ceres H.Eberle Abstract Ceres is a single-user computer based on the 32-bit microprocessor NS32000. The processor is oriented to the use of high-level languages. The hardware design concentrates on simplicity and modularity. The key features are the arbitrated memory bus and the high resolution bitmapped graphics display which promotes the attractivity of a programming workstation. This paper documents the hardware of the Ceres computer. 2 Contents 1 Introduction 3 2 Hardware Structure 4 2.1 Processor 4 2.2 Primary Memory 4 2.3 Secondary Memory 4 2.4 Input/Output Devices 4 3 Hardware Implementation 6 3.1 Processor Board 6 3.1.1 Processor 6 3.1.2 Memory Bus Arbiter 9 3.1.3 Boot ROM and Standard Input/Output Devices 12 3.2 Memory Board 15 3.3 Display Controller Board 18 3.3.1 Display Memory 18 3.3.2 Display Refresh Controller 19 3.4 Disk Controller Board 23 3.5 Motherboard 23 4 Hardware Extensions 24 References 26 Appendices A Circuit Diagrams 28 A.1 Processor Board 28 A.2 Memory Board 35 A.3 Display Controller Board 37 B PAL Design Specifications 42 c Interface Connectors 47 C.1 Processor Board 47 C.2 Display Controller Board 48 C.3 Motherboard 48 3 1 Introduction Todays working tools of a software engineer at the lnstitut fUr lnformatik of ETH ZOrich are the programming language Modula-2 [1] and the workstation computer Lilith [2].
    [Show full text]
  • Niklaus Wirth—A Pioneer of Computer Science 1
    Niklaus Wirth—A Pioneer of Computer Science 1 Niklaus Wirth — a Pioneer of Computer Science Gustav Pomberger, Hanspeter Mössenböck, Peter Rechenberg Johannes Kepler University of Linz [email protected], [email protected], [email protected] Abstract Niklaus Wirth is one of the most influential scientists of the early computer age. His ideas and especially his programming languages have shaped gen- erations of programmers worldwide. This paper tries to acknowledge the scientific achievements of Niklaus Wirth and to honor him as a person. A small part of the paper is also devoted to Wirth's influence on computer sci- ence at the Johannes Kepler University of Linz. 1 Introduction Ask computer specialists anywhere—be it in Europe or America, in Asia or Australia—who the most important computer scientists in the world are, and you can bet that the name Niklaus Wirth will be on every list. Ask programming language experts about the person with the greatest influence on the development of programming languages, and they would agree on Niklaus Wirth. Ask students, teachers and computer hobbyists about the most important programming lan- guages, and you can be sure that even today Pascal will be on every list. Finally, examine the literature of computer science in the elite circle of books with the greatest number of copies printed, the widest distribution, and the most transla- tions, and you will find books by Niklaus Wirth, especially the prominent book on Pascal. These few examples show that professor Niklaus Wirth is one of the world's leading computer scientists.
    [Show full text]
  • Seaver 2001 Catalog
    GENERAL INFORMATION 1 PEPPERDINE UNIVERSITY Seaver College Catalog, 2001-2002 For More Information Requests for further information should be addressed to: Of fice of Admission, Seaver College Pe p p e r dine University Malibu, California 90263-4392 Telephone (310) 506-4392 Facsimile (310) 506-4861 General Information (310) 506-4000 ww w. p e p p e rd i n e . e d u Pe p p e r dine University, Volume Sixty-Four, Number One, March, 2001. Published by Pepperdine University, 24255 Pacific Coast Highway, Malibu, CA 90263-4392. An official publication of Pepperdine University, located at 24255 Pacific Coast Highway, Malibu, California 90263-4392. epperdine is a Christian university Pcommitted to the highest standards of academic excellence and Christian values, where students are strengthened for lives of purpose, service, and leadership. 8 As a Christian university, Pepperdine affirms: That God is That God is revealed uniquely in Christ That the educational process may not, with impunity, be divorced from the divine process That the student, as a person of infinite dignity, is the heart of the educational enterprise That the quality of student life is a valid concern of the University That truth, having nothing to fear from investigation, should be pursued relentlessly in every discipline That spiritual commitment, tolerating no excuse for mediocrity, demands the highest standards of academic excellence That freedom, whether spiritual, intellectual, or economic, is indivisible That knowledge calls, ultimately, for a life of service CONTENTS 3 CO N T E N T S Seaver College Academic Calendar. .4 Pr esident’s Message .
    [Show full text]
  • Modula-2 and Oberon
    Modula-2 and Oberon Niklaus Wirth ETH Zurich [email protected] Abstract scientific circles and COBOL in business data processing. IBM’s PL/I was slowly gaining acceptance. It tried to unite the disparate This is an account of the development of the languages Modula-2 worlds of scientific and business applications. Some further, and Oberon. Together with their ancestors ALGOL 60 and Pascal "esoteric" languages were popular in academia, for example Lisp they form a family called Algol-like languages. Pascal (1970) and its extensions, which dominated the AI culture with its list- reflected the ideas of structured programming, Modula-2 (1979) processing facilities. added those of modular system design, and Oberon (1988) catered However, none of the available languages was truly suitable to the object-oriented style. Thus they mirror the essential for handling the ever-growing complexity of computing tasks. programming paradigms of the past decades. Here the major FORTRAN and COBOL lacked a pervasive concept of data types language properties are outlined, followed by an account of the like that of Pascal; and Pascal lacked a facility for piecewise respective implementation efforts. The conditions and the compilation, and thus for program libraries. PL/1 offered environments in which the languages were created are elucidated. everything to a certain degree. Therefore it was bulky and hard to We point out that simplicity of design was the most essential master. The fact remained that none of the available languages guiding principle. Clarity of concepts, economy of features, was truly satisfactory. efficiency and reliability of implementations were its I was fortunate to be able to spend a sabbatical year at the new consequences.
    [Show full text]
  • Project Oberon the Design of an Operating System and Compiler
    1 Niklaus Wirth Jürg Gutknecht Project Oberon The Design of an Operating System and Compiler Edition 2005 2 Project Oberon Preface This book presents the results of Project Oberon, namely an entire software environment for a modern workstation. The project was undertaken by the authors in the years 1986-89, and its primary goal was to design and implement an entire system from scratch, and to structure it in such a way that it can be described, explained, and understood as a whole. In order to become confronted with all aspects, problems, design decisions and details, the authors not only conceived but also programmed the entire system described in this book, and more. Although there exist numerous books explaining principles and structures of operating systems, there is a lack of descriptions of systems actually implemented and used. We wished not only to give advice on how a system might be built, but to demonstrate how one was built. Program listings therefore play a key role in this text, because they alone contain the ultimate explanations. The choice of a suitable formalism therefore assumed great importance, and we designed the language Oberon as not only an effective vehicle for implementation, but also as a publication medium for algorithms in the spirit in which Algol 60 had been created three decades ago. Because of its structure, the language Oberon is equally well suited to exhibit global, modular structures of programmed systems. In spite of the small number of man-years spent on realizing the Oberon System, and in spite of its compactness letting its description fit a single book, it is not an academic toy, but rather a versatile workstation system that has found many satisfied and even enthusiastic users in academia and industry.
    [Show full text]
  • Writing Cybersecurity Job Descriptions for the Greatest Impact
    Writing Cybersecurity Job Descriptions for the Greatest Impact Keith T. Hall U.S. Department of Homeland Security Welcome Writing Cybersecurity Job Descriptions for the Greatest Impact Disclaimers and Caveats • Content Not Officially Adopted. The content of this briefing is mine personally and does not reflect any position or policy of the United States Government (USG) or of the Department of Homeland Security. • Note on Terminology. Will use USG terminology in this brief (but generally translatable towards Private Sector equivalents) • Job Description Usage. For the purposes of this presentation only, the Job Description for the Position Description (PD) is used synonymously with the Job Opportunity Announcement (JOA). Although there are potential differences, it is not material to the concepts presented today. 3 Key Definitions and Concepts (1 of 2) • What do you want the person to do? • Major Duties and Responsibilities. “A statement of the important, regular, and recurring duties and responsibilities assigned to the position” SOURCE: https://www.opm.gov/policy-data- oversight/classification-qualifications/classifying-general-schedule-positions/classifierhandbook.pdf • Major vs. Minor Duties. “Major duties are those that represent the primary reason for the position's existence, and which govern the qualification requirements. Typically, they occupy most of the employee's time. Minor duties generally occupy a small portion of time, are not the primary purpose for which the position was established, and do not determine qualification requirements” SOURCE: https://www.opm.gov/policy-data- oversight/classification-qualifications/classifying-general-schedule-positions/positionclassificationintro.pdf • Tasks. “Activities an employee performs on a regular basis in order to carry out the functions of the job.” SOURCE: https://www.opm.gov/policy-data-oversight/assessment-and-selection/job-analysis/job_analysis_presentation.pdf 4 Key Definitions and Concepts (2 of 2) • What do you want to see on resumes that qualifies them to do this work? • Competency.
    [Show full text]
  • Object-Oriented Programming in Oberon-2
    Hanspeter Mössenböck Object-Oriented Programming in Oberon-2 Second Edition © Springer‐Verlag Berlin Heidelberg 1993, 1994 This book is out of print and is made available as PDF with the friendly permission of Springer‐Verlag Contents 1 Overview......................................................................................... 1 1.1 Procedure-Oriented Thinking............................................. 1 1.2 Object-Oriented Thinking .................................................... 2 1.3 Object-Oriented Languages................................................. 3 1.4 How OOP Differs from Conventional Programming...... 6 1.5 Classes as Abstraction Mechanisms ................................... 9 1.6 History of Object-Oriented Languages ............................ 11 1.7 Summary .............................................................................. 12 2 Oberon-2........................................................................................ 13 2.1 Features of Oberon-2 .......................................................... 14 2.2 Declarations ......................................................................... 14 2.3 Expressions .......................................................................... 16 2.4 Statements ............................................................................ 18 2.5 Procedures............................................................................ 19 2.6 Modules................................................................................ 21 2.7 Commands..........................................................................
    [Show full text]
  • The Λ Abroad a Functional Approach to Software Components
    The ¸ Abroad A Functional Approach To Software Components Een functionele benadering van software componenten (met een samenvatting in het Nederlands) Proefschrift ter verkrijging van de graad van doctor aan de Universiteit Utrecht op gezag van de Rector Magni¯cus, Prof. dr W.H. Gispen, ingevolge het besluit van het College voor Promoties in het openbaar te verdedigen op dinsdag 4 november 2003 des middags te 12.45 uur door Daniel Johannes Pieter Leijen geboren op 7 Juli 1973, te Alkmaar promotor: Prof. dr S.D. Swierstra, Universiteit Utrecht. co-promotor: dr H.J.M. Meijer, Microsoft Research. The work in this thesis has been carried out under the auspices of the research school IPA (Institute for Programming research and Algorithmics), and has been ¯nanced by Ordina. Printed by Febodruk 2003. Cover illustration shows the heavily cratered surface of the planet Mercury, photographed by the mariner 10. ISBN 90-9017528-8 Contents Dankwoord ix 1 Overview 1 2 H/Direct: a binary language interface for Haskell 5 2.1 Introduction ................................ 5 2.2 Background ................................ 6 2.2.1 Using the host or foreign language ............... 7 2.2.2 Using an IDL ........................... 8 2.2.3 Overview ............................. 9 2.3 The Foreign Function Interface ..................... 12 2.3.1 Foreign static import and export ................ 12 2.3.2 Variations on the theme ..................... 13 2.3.3 Stable pointers and foreign objects ............... 14 2.3.4 Dynamic import ......................... 15 2.3.5 Dynamic export ......................... 15 2.3.6 Implementing dynamic export .................. 18 2.3.7 Related work ........................... 19 iv Contents 2.4 Translating IDL to Haskell ......................
    [Show full text]
  • Comparative Programming Languages CM20253
    We have briefly covered many aspects of language design And there are many more factors we could talk about in making choices of language The End There are many languages out there, both general purpose and specialist And there are many more factors we could talk about in making choices of language The End There are many languages out there, both general purpose and specialist We have briefly covered many aspects of language design The End There are many languages out there, both general purpose and specialist We have briefly covered many aspects of language design And there are many more factors we could talk about in making choices of language Often a single project can use several languages, each suited to its part of the project And then the interopability of languages becomes important For example, can you easily join together code written in Java and C? The End Or languages And then the interopability of languages becomes important For example, can you easily join together code written in Java and C? The End Or languages Often a single project can use several languages, each suited to its part of the project For example, can you easily join together code written in Java and C? The End Or languages Often a single project can use several languages, each suited to its part of the project And then the interopability of languages becomes important The End Or languages Often a single project can use several languages, each suited to its part of the project And then the interopability of languages becomes important For example, can you easily
    [Show full text]
  • Historische Innovationen Von Niklaus Wirth
    Historische Innovationen von Niklaus Wirth Romain Schmitz 26. Januar 2006 Biografie 1934 geboren am 15. Februar, Schweiz 1959 Abschluss als Elektroingenieur 1963 Promotion, Berekley 1968 Professor an der ETH Zürich 1999 Emeritation Entwicklungen 60 63 68 70 74 82 86 Euler Algol-60 Algol-W Pascal Modula Modula-2 Oberon Liltith Ceres Medos-2 Oberon ALGOL 60 60 63 68 70 74 82 86 Euler Algol-60 Algol-W Pascal Modula Modula-2 Oberon Liltith Ceres Medos-2 Oberon Euler Algol-60 Algol-W Pascal Modula Modula-2 Oberon Liltith Ceres Algol-60 Medos-2 Oberon ➔ Backus Naur Form ➔ Strukturierte Programmierung ➔ Blockstruktur ➔ Rekursion ➔ Call by name Euler Algol-60 Algol-W Pascal Modula Modula-2 Oberon Liltith Ceres Algol-60 Medos-2 Oberon Satz ::= Subjekt Prädikat Zusatz Subjekt ::= “Peter“ | “Siegfried“ Prädikat ::= “arbeitet“ | “schläft“ Zusatz ::= “nicht“ | epsilon Gültige Sätze: – Peter schläft nicht – Siegfried arbeitet Euler Algol-60 Algol-W Pascal Modula Modula-2 Oberon Liltith Ceres Algol-60 Medos-2 Oberon <block> ::= <unlabelled block> | <label> : <block> <unlabelled block> ::= <block head> ; <compound tail> <block head> ::= begin <declaration> | <block head> ; <declaration> <declaration> ::= <type declaration> | <procedure declaration> | ... <type declaration> ::= <type> <variable> | ... <compound tail> ::= <statement> end | <statement> ; <compound tail> Euler Algol-60 Algol-W Pascal Modula Modula-2 Oberon Liltith Ceres Algol-60 Medos-2 Oberon begin ISUMME = 0 integer zahl1, zahl2, summe; IZAHL1 = 0 IZAHL2 = 255 procedure addiere(a,b); integer
    [Show full text]
  • Sequence Decision Repeation
    การเขียนโปรแกรมเบื5องต ้น (Introduction to Programming) http://www.thaiall.com/article/teachpro.htm การเขียนโปรแกรมเบื้องตน (Introduction to Programming) เว็บเพจสํารอง (Backup Webpages) : thaiabc.com | thaiall.korattown.com | perlphpasp.com | thaiall.com ปรับปรุง : 2555-01-23 (ปรับแกตัวอยาง pyramid) เรียนเขียนโปรแกรมระดับเทพ expert-programming-tutor.com Android C C++ JavaC# DataStructure เรียนเป็นระบบโดยเน ้นลงมือจริงทําจริ สารบัญ (Contents) ถารักจะเป็นนักคอมพิวเตอร .. ตองพยายามแบบ .. 1. แนวคิดการสอนเขียนโปรแกรม 2. ความหมายของ Structure Programming ฝนทั่งใหเป็นเข็ม 3. การเริ่มตนเขียนโปรแกรม sharpen an anVil to create a pin # 4. การบานคือ บันไดสูประสบการณ 5. ตัวอยางปิรามิด คือแบบฝึกหัดที่ยาก (เพิ่ม 4 ต.ย. สค.46) .. นักศึกษาของผม .. เวลาสอบตก จะพูดวา ถาพยายามจริง ๆ คงทําไดดีกวานีคงทําไดดีกวานี้้้้ 6. ตัวอยางโปรแกรมภาษา Pascal ผมก็จะถามวา กั๊กความพยายมของตน .. ไวทําไม 7. ตัวอยางโปรแกรมภาษา JaVa Script ขัขัขั้ขันตอนการเรียนรู้้้นตอนการเรียนรู เพื่เพื่่อเป็น่อเป็น Programmer 8. แบงระดับการเขียนโปรแกรม 4 ระดับ 1. เขียนโปรแกรมเบื้องตน 1 ภาษา ( Programming Language ) 9. แบบฝึกหัดสําหรับสอนการเขียนโปรแกรม (60 โจทย มค.47) 2. โครงสรางขอมูล ( Data Structures ) 10. โปรแกรมเมอรคนแรกของโลก (Augusta LoVelace Ada) 3. ระบบฐานขอมูล ( Database System ) 11. 143 ภาษาคอมพิวเตอร 4. การวิเคราะห และออกแบบระบบ ( System Analysis and Design ) 12. ภาษาคอมพิวเตอร (Time Line) 5. โครงงานนักศึกษา ( Student Project ) เพื่อฝึกปฏิบัติจริง เว็บเพจนี้ คือ ขั้นตอนที่ 1 สูการเป็น Programmer + ผูสนับสนุน ผูสนับสนุน + รับผูสนับสนุน 1. แนวคิดการสอนเขียนโปรแกรม หลายครั้งที่ผมตองเริ่มสอนเขียนโปรแกรม
    [Show full text]
  • Wirth Transcript Final
    A. M. Turing Award Oral History Interview with Niklaus Wirth by Elena Trichina ETH, Zürich, Switzerland March 13, 2018 Trichina: My name is Elena Trichina. It is my honor to interview Professor Niklaus Wirth for the Turing Award Winners Project of the Association for Computing Machinery, the ACM. The Turing Award, sometimes referred to as “the Nobel Prize of computing,” is given annually for major contributions of lasting importance in computing. Professor Wirth received his award in 1984 in recognition of his outstanding work in developing a sequence of programming languages – Euler, Algol-W, Pascal, Modula. The hallmarks of Wirth’s languages are their simplicity, economy of design, and high-level engineering. We will talk about it and many other things later today in the interview that takes place on the 13th of March, 2018, in the Swiss Federal Institute of Technology. So we start. Ready? Guten Tag, Niklaus. Gruetzi. Wirth: Добрый ден, Елена Василевна Здравствуи [Good morning, Elena. Hello. – ed.] Trichina: Well, although your command of Russian is sufficient, my command of Swiss German is a little bit rudimentary. Shall we continue in one of the languages where we both feel comfortable? What would it be? French? English? Wirth: Oh, I think English is better for me. Yes, yes. Trichina: Okay. It’s probably better for the audience. [laughs] Wirth: Okay. True. Trichina: Okay. We continue in English. Here in front of me there is a list of the most important days in your life. You were born in February 1934 in Winterthur, which is a sort of middle-size industrial town in Switzerland.
    [Show full text]