The Birth of Simula
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
Object-Oriented Programming Basics with Java
Object-Oriented Programming Object-Oriented Programming Basics With Java In his keynote address to the 11th World Computer Congress in 1989, renowned computer scientist Donald Knuth said that one of the most important lessons he had learned from his years of experience is that software is hard to write! Computer scientists have struggled for decades to design new languages and techniques for writing software. Unfortunately, experience has shown that writing large systems is virtually impossible. Small programs seem to be no problem, but scaling to large systems with large programming teams can result in $100M projects that never work and are thrown out. The only solution seems to lie in writing small software units that communicate via well-defined interfaces and protocols like computer chips. The units must be small enough that one developer can understand them entirely and, perhaps most importantly, the units must be protected from interference by other units so that programmers can code the units in isolation. The object-oriented paradigm fits these guidelines as designers represent complete concepts or real world entities as objects with approved interfaces for use by other objects. Like the outer membrane of a biological cell, the interface hides the internal implementation of the object, thus, isolating the code from interference by other objects. For many tasks, object-oriented programming has proven to be a very successful paradigm. Interestingly, the first object-oriented language (called Simula, which had even more features than C++) was designed in the 1960's, but object-oriented programming has only come into fashion in the 1990's. -
Verifiable Semantic Difference Languages
Verifiable Semantic Difference Languages Thibaut Girka David Mentré Yann Régis-Gianas Mitsubishi Electric R&D Centre Mitsubishi Electric R&D Centre Univ Paris Diderot, Sorbonne Paris Europe Europe Cité, IRIF/PPS, UMR 8243 CNRS, PiR2, Rennes, France Rennes, France INRIA Paris-Rocquencourt Paris, France ABSTRACT 1 INTRODUCTION Program differences are usually represented as textual differences Let x be a strictly positive natural number. Consider the following on source code with no regard to its syntax or its semantics. In two (almost identical) imperative programs: this paper, we introduce semantic-aware difference languages. A difference denotes a relation between program reduction traces. A s = 0 ; 1 s = 0 ; 1 difference language for the toy imperative programming language d = x ; 2 d = x − 1 ; 2 while (d>0) { 3 while (d>0) { 3 Imp is given as an illustration. i f (x%d== 0) 4 i f (x%d== 0) 4 To certify software evolutions, we want to mechanically verify s = s + d ; 5 s = s + d ; 5 − − that a difference correctly relates two given programs. Product pro- d = d 1 ; 6 d = d 1 ; 6 } 7 } 7 grams and correlating programs are effective proof techniques for s = s − x 8 8 relational reasoning. A product program simulates, in the same programming language as the compared programs, a well-chosen The program P1 (on the left) stores in s the sum of the proper interleaving of their executions to highlight a specific relation be- divisors of the integer x. To that end, it iterates over the integers tween their reduction traces. While this approach enables the use from x to 1 using the variable d and accumulates in the variable s of readily-available static analysis tools on the product program, it the values of d that divide x. -
Simula Mother Tongue for a Generation of Nordic Programmers
Simula! Mother Tongue! for a Generation of! Nordic Programmers! Yngve Sundblad HCI, CSC, KTH! ! KTH - CSC (School of Computer Science and Communication) Yngve Sundblad – Simula OctoberYngve 2010Sundblad! Inspired by Ole-Johan Dahl, 1931-2002, and Kristen Nygaard, 1926-2002" “From the cold waters of Norway comes Object-Oriented Programming” " (first line in Bertrand Meyer#s widely used text book Object Oriented Software Construction) ! ! KTH - CSC (School of Computer Science and Communication) Yngve Sundblad – Simula OctoberYngve 2010Sundblad! Simula concepts 1967" •# Class of similar Objects (in Simula declaration of CLASS with data and actions)! •# Objects created as Instances of a Class (in Simula NEW object of class)! •# Data attributes of a class (in Simula type declared as parameters or internal)! •# Method attributes are patterns of action (PROCEDURE)! •# Message passing, calls of methods (in Simula dot-notation)! •# Subclasses that inherit from superclasses! •# Polymorphism with several subclasses to a superclass! •# Co-routines (in Simula Detach – Resume)! •# Encapsulation of data supporting abstractions! ! KTH - CSC (School of Computer Science and Communication) Yngve Sundblad – Simula OctoberYngve 2010Sundblad! Simula example BEGIN! REF(taxi) t;" CLASS taxi(n); INTEGER n;! BEGIN ! INTEGER pax;" PROCEDURE book;" IF pax<n THEN pax:=pax+1;! pax:=n;" END of taxi;! t:-NEW taxi(5);" t.book; t.book;" print(t.pax)" END! Output: 7 ! ! KTH - CSC (School of Computer Science and Communication) Yngve Sundblad – Simula OctoberYngve 2010Sundblad! -
CMPS 161 – Algorithm Design and Implementation I Current Course Description
CMPS 161 – Algorithm Design and Implementation I Current Course Description: Credit 3 hours. Prerequisite: Mathematics 161 or 165 or permission of the Department Head. Basic concepts of computer programming, problem solving, algorithm development, and program coding using a high-level, block structured language. Credit may be given for both Computer Science 110 and 161. Minimum Topics: • Fundamental programming constructs: Syntax and semantics of a higher-level language; variables, types, expressions, and assignment; simple I/O; conditional and iterative control structures; functions and parameter passing; structured decomposition • Algorithms and problem-solving: Problem-solving strategies; the role of algorithms in the problem- solving process; implementation strategies for algorithms; debugging strategies; the concept and properties of algorithms • Fundamental data structures: Primitive types; single-dimension and multiple-dimension arrays; strings and string processing • Machine level representation of data: Bits, bytes and words; numeric data representation; representation of character data • Human-computer interaction: Introduction to design issues • Software development methodology: Fundamental design concepts and principles; structured design; testing and debugging strategies; test-case design; programming environments; testing and debugging tools Learning Objectives: Students will be able to: • Analyze and explain the behavior of simple programs involving the fundamental programming constructs covered by this unit. • Modify and expand short programs that use standard conditional and iterative control structures and functions. • Design, implement, test, and debug a program that uses each of the following fundamental programming constructs: basic computation, simple I/O, standard conditional and iterative structures, and the definition of functions. • Choose appropriate conditional and iteration constructs for a given programming task. • Apply the techniques of structured (functional) decomposition to break a program into smaller pieces. -
Skepu 2: Flexible and Type-Safe Skeleton Programming for Heterogeneous Parallel Systems
Int J Parallel Prog DOI 10.1007/s10766-017-0490-5 SkePU 2: Flexible and Type-Safe Skeleton Programming for Heterogeneous Parallel Systems August Ernstsson1 · Lu Li1 · Christoph Kessler1 Received: 30 September 2016 / Accepted: 10 January 2017 © The Author(s) 2017. This article is published with open access at Springerlink.com Abstract In this article we present SkePU 2, the next generation of the SkePU C++ skeleton programming framework for heterogeneous parallel systems. We critically examine the design and limitations of the SkePU 1 programming interface. We present a new, flexible and type-safe, interface for skeleton programming in SkePU 2, and a source-to-source transformation tool which knows about SkePU 2 constructs such as skeletons and user functions. We demonstrate how the source-to-source compiler transforms programs to enable efficient execution on parallel heterogeneous systems. We show how SkePU 2 enables new use-cases and applications by increasing the flexibility from SkePU 1, and how programming errors can be caught earlier and easier thanks to improved type safety. We propose a new skeleton, Call, unique in the sense that it does not impose any predefined skeleton structure and can encapsulate arbitrary user-defined multi-backend computations. We also discuss how the source- to-source compiler can enable a new optimization opportunity by selecting among multiple user function specializations when building a parallel program. Finally, we show that the performance of our prototype SkePU 2 implementation closely matches that of -
Software Requirements Implementation and Management
Software Requirements Implementation and Management Juho Jäälinoja¹ and Markku Oivo² 1 VTT Technical Research Centre of Finland P.O. Box 1100, 90571 Oulu, Finland [email protected] tel. +358-40-8415550 2 University of Oulu P.O. Box 3000, 90014 University of Oulu, Finland [email protected] tel. +358-8-553 1900 Abstract. Proper elicitation, analysis, and documentation of requirements at the beginning of a software development project are considered important preconditions for successful software development. Furthermore, successful development requires that the requirements be correctly implemented and managed throughout the rest of the development. This latter success criterion is discussed in this paper. The paper presents a taxonomy for requirements implementation and management (RIM) and provides insights into the current state of these practices in the software industry. Based on the taxonomy and the industrial observations, a model for RIM is elaborated. The model describes the essential elements needed for successful implementation and management of requirements. In addition, three critical elements of the model with which the practitioners are currently struggling are discussed. These elements were identified as (1) involvement of software developers in system level requirements allocation, (2) work product verification with reviews, and (3) requirements traceability. Keywords: Requirements engineering, software requirements, requirements implementation, requirements management 1/9 1. INTRODUCTION Among the key concepts of efficient software development are proper elicitation, analysis, and documentation of requirements at the beginning of a project and correct implementation and management of these requirements in the later stages of the project. In this paper, the latter issue related to the life of software requirements beyond their initial development is discussed. -
Efficient High-Level Parallel Programming
Theoretical Computer Science EISEVIER Theoretical Computer Science 196 (1998) 71-107 Efficient high-level parallel programming George Horaliu Botoroga,*,‘, Herbert Kuchenb aAachen University of Technology, Lehrstuhl fiir Informatik IL Ahornstr. 55, D-52074 Aachen, Germany b University of Miinster, Institut fir Wirtschaftsinformatik, Grevener Str. 91, D-48159 Miinster, Germany Abstract Algorithmic skeletons are polymorphic higher-order functions that represent common parallel- ization patterns and that are implemented in parallel. They can be used as the building blocks of parallel and distributed applications by embedding them into a sequential language. In this paper, we present a new approach to programming with skeletons. We integrate the skeletons into an imperative host language enhanced with higher-order functions and currying, as well as with a polymorphic type system. We thus obtain a high-level programming language, which can be implemented very efficiently. We then present a compile-time technique for the implementation of the functional features which has an important positive impact on the efficiency of the language. Afier describing a series of skeletons which work with distributed arrays, we give two examples of parallel algorithms implemented in our language, namely matrix multiplication and Gaussian elimination. Run-time measurements for these and other applications show that we approach the efficiency of message-passing C up to a factor between 1 and 1.5. @ 1998-Elsevier Science B.V. All rights reserved Keywords: Algorithmic skeletons; High-level parallel programming; Efficient implementation of functional features; Distributed arrays 1. Introduction Although parallel and distributed systems gain more and more importance nowadays, the state of the art in the field of parallel software is far from being satisfactory. -
An Introduction to Programming in Simula
An Introduction to Programming in Simula Rob Pooley This document, including all parts below hyperlinked directly to it, is copyright Rob Pooley ([email protected]). You are free to use it for your own non-commercial purposes, but may not copy it or reproduce all or part of it without including this paragraph. If you wish to use it for gain in any manner, you should contact Rob Pooley for terms appropriate to that use. Teachers in publicly funded schools, universities and colleges are free to use it in their normal teaching. Anyone, including vendors of commercial products, may include links to it in any documentation they distribute, so long as the link is to this page, not any sub-part. This is an .pdf version of the book originally published by Blackwell Scientific Publications. The copyright of that book also belongs to Rob Pooley. REMARK: This document is reassembled from the HTML version found on the web: https://web.archive.org/web/20040919031218/http://www.macs.hw.ac.uk/~rjp/bookhtml/ Oslo 20. March 2018 Øystein Myhre Andersen Table of Contents Chapter 1 - Begin at the beginning Basics Chapter 2 - And end at the end Syntax and semantics of basic elements Chapter 3 - Type cast actors Basic arithmetic and other simple types Chapter 4 - If only Conditional statements Chapter 5 - Would you mind repeating that? Texts and while loops Chapter 6 - Correct Procedures Building blocks Chapter 7 - File FOR future reference Simple input and output using InFile, OutFile and PrintFile Chapter 8 - Item by Item Item oriented reading and writing and for loops Chapter 9 - Classes as Records Chapter 10 - Make me a list Lists 1 - Arrays and simple linked lists Reference comparison Chapter 11 - Like parent like child Sub-classes and complex Boolean expressions Chapter 12 - A Language with Character Character handling, switches and jumps Chapter 13 - Let Us See what We Can See Inspection and Remote Accessing Chapter 14 - Side by Side Coroutines Chapter 15 - File For Immediate Use Direct and Byte Files Chapter 16 - With All My Worldly Goods.. -
Map, Reduce and Mapreduce, the Skeleton Way$
View metadata, citation and similar papers at core.ac.uk brought to you by CORE provided by Elsevier - Publisher Connector Procedia Computer Science ProcediaProcedia Computer Computer Science Science 00 1 (2010)(2012) 1–9 2095–2103 www.elsevier.com/locate/procedia International Conference on Computational Science, ICCS 2010 Map, Reduce and MapReduce, the skeleton way$ D. Buonoa, M. Daneluttoa, S. Lamettia aDept. of Computer Science, Univ. of Pisa, Italy Abstract Composition of Map and Reduce algorithmic skeletons have been widely studied at the end of the last century and it has demonstrated effective on a wide class of problems. We recall the theoretical results motivating the intro- duction of these skeletons, then we discuss an experiment implementing three algorithmic skeletons, a map,areduce and an optimized composition of a map followed by a reduce skeleton (map+reduce). The map+reduce skeleton implemented computes the same kind of problems computed by Google MapReduce, but the data flow through the skeleton is streamed rather than relying on already distributed (and possibly quite large) data items. We discuss the implementation of the three skeletons on top of ProActive/GCM in the MareMare prototype and we present some experimental obtained on a COTS cluster. ⃝c 2012 Published by Elsevier Ltd. Open access under CC BY-NC-ND license. Keywords: Algorithmic skeletons, map, reduce, list theory, homomorphisms 1. Introduction Algorithmic skeletons have been around since Murray Cole’s PhD thesis [1]. An algorithmic skeleton is a paramet- ric, reusable, efficient and composable programming construct that exploits a well know, efficient parallelism exploita- tion pattern. A skeleton programmer may build parallel applications simply picking up a (composition of) skeleton from the skeleton library available, providing the required parameters and running some kind of compiler+run time library tool specific of the target architecture at hand [2]. -
Cleanroom Software Engineering Implementation of the Capability Maturity Model (Cmmsm) for Software
Technical Report CMU/SEI-96-TR-023 ESC-TR-96-023 Cleanroom Software Engineering Implementation of the Capability Maturity Model (CMMsm) for Software Richard C. Linger Mark C. Paulk Carmen J. Trammell December 1996 Technical Report CMU/SEI-96-TR-023 ESC-TR-96-023 December 1996 Cleanroom Software Engineering Implementation of the Capability Maturity Model (CMMsm) for Software Richard C. Linger Mark C. Paulk Software Engineering Institute Carmen J. Trammell University of Tennessee Process Program Unlimited distribution subject to the copyright Software Engineering Institute Carnegie Mellon University Pittsburgh, PA 15213 This report was prepared for the SEI Joint Program Office HQ ESC/AXS 5 Eglin Street Hanscom AFB, MA 01731-2116 The ideas and findings in this report should not be construed as an official DoD position. It is published in the interest of scientific and technical information exchange. FOR THE COMMANDER (signature on file) Thomas R. Miller, Lt Col, USAF SEI Joint Program Office This work is sponsored by the U.S. Department of Defense. Copyright © 1996 by Carnegie Mellon University. Permission to reproduce this document and to prepare derivative works from this document for internal use is granted, provided the copyright and “No Warranty” statements are included with all reproductions and derivative works. Requests for permission to reproduce this document or to prepare derivative works of this document for external and commercial use should be addressed to the SEI Licensing Agent. NO WARRANTY THIS CARNEGIE MELLON UNIVERSITY AND SOFTWARE ENGINEERING INSTITUTE MATERIAL IS FURNISHED ON AN “AS-IS” BASIS. CARNEGIE MELLON UNIVERSITY MAKES NO WARRANTIES OF ANY KIND, EITHER EXPRESSED OR IMPLIED, AS TO ANY MATTER INCLUDING, BUT NOT LIMITED TO, WARRANTY OF FITNESS FOR PURPOSE OR MERCHANTABILITY, EXCLUSIVITY, OR RESULTS OBTAINED FROM USE OF THE MATERIAL. -
Numerical Models Show Coral Reefs Can Be Self -Seeding
MARINE ECOLOGY PROGRESS SERIES Vol. 74: 1-11, 1991 Published July 18 Mar. Ecol. Prog. Ser. Numerical models show coral reefs can be self -seeding ' Victorian Institute of Marine Sciences, 14 Parliament Place, Melbourne, Victoria 3002, Australia Australian Institute of Marine Science, PMB No. 3, Townsville MC, Queensland 4810, Australia ABSTRACT: Numerical models are used to simulate 3-dimensional circulation and dispersal of material, such as larvae of marine organisms, on Davies Reef in the central section of Australia's Great Barner Reef. Residence times on and around this reef are determined for well-mixed material and for material which resides at the surface, sea bed and at mid-depth. Results indcate order-of-magnitude differences in the residence times of material at different levels in the water column. They confirm prevlous 2- dimensional modelling which indicated that residence times are often comparable to the duration of the planktonic larval life of many coral reef species. Results reveal a potential for the ma~ntenanceof local populations of vaiious coral reef organisms by self-seeding, and allow reinterpretation of the connected- ness of the coral reef ecosystem. INTRODUCTION persal of particles on reefs. They can be summarised as follows. Hydrodynamic experiments of limited duration Circulation around the reefs is typified by a complex (Ludington 1981, Wolanski & Pickard 1983, Andrews et pattern of phase eddies (Black & Gay 1987a, 1990a). al. 1984) have suggested that flushing times on indi- These eddies and other components of the currents vidual reefs of Australia's Great Barrier Reef (GBR) are interact with the reef bathymetry to create a high level relatively short in comparison with the larval life of of horizontal mixing on and around the reefs (Black many different coral reef species (Yamaguchi 1973, 1988). -
Programming Languages: Design and Implementation
طراحی و پیادهسازی زبان های برنامهسازی Programming Languages: Design and Implementation 40364 نیمسال دوم 1400 - 1399 slide 1 اهداف درس سیر طبیعی تحوﻻت مفاهیم و روش های طراحی و پیادهسازی نسل های مختلف زبان های برنامهسازی به روشی تجربی و گام به گام مهندسی زبان های برنامه سازی )زبان های ویژه دامنه( آشنایی با پیاده سازی مفسرها به ویژه بر بستر ماشین های مجازی اصول طراحی زبان های برنامه سازی و روش ها و ساختارهای داده ای به کار رفته در پیادهسازی یا محقق کردن محیط برنامه نویسی ایجاد توانایی ارزیابی، مقایسه و انتخاب میان زبان های برنامه سازی موجود برنامه سازی تابعی معناشناسی و استدﻻل پیرامون برنامه slide 2 Grading and Other Admin affairs Your grade components: • Final Exam • Mid Term Exam • Assignments (paper based) • Assignments (programming including a final project) • Class Presentation … Class Administration Policies: slide 3 Main References Daniel P. Friedman and Mitchell Wand, Essentials of Programming Languages, 3rd Edition, MIT Press, 2008. M.Felleisen, R.Findler, M.Flatt, S.Krishnamurthi, E.Barzilay, J.McCarthy, S.Tobin-Hochstadt, A Programmable Programming Language, Communications of the ACM, Vol. 61, No. 3, Pp. 62-71, March 2018. https://racket-lang.org/ My class and Slides slide 4 Other Useful General Text Books S.Krishnamurthi, Programming Languages: Application and Interpretation, 2nd Edition, http://cs.brown.edu/courses/cs173/2012/book/b ook.pdf, 2017. Peter Sestoft, Programming Language Concepts, 2nd Edition, 2017. Michael Scott, Programming Language Pragmatics, (with its complimentary CD) slide 5 Other Useful General Text Books