History of Programming Languages: Collection of Student Essays Based on HOPL IV Papers

Total Page:16

File Type:pdf, Size:1020Kb

History of Programming Languages: Collection of Student Essays Based on HOPL IV Papers Mikhail Barash Anya Helene Bagge (Eds.) History of Programming Languages: Collection of Student Essays Based on HOPL IV Papers Spring Term 2021 University of Bergen Norway Mikhail Barash Anya Helene Bagge (Eds.) History of Programming Languages: Collection of Student Essays Based on HOPL IV Papers Spring Term 2021 University of Bergen Norway | 1 To document our students’ learning experiences Preface with this course, we asked them to prepare a short essay summarizing the HOPL IV paper they have read and presented. The structure of each essay is as follows5: • a short discussion on why the student has chosen a particular HOPL IV paper to his document is a collection of essays writ- present, ten by the students of the seminar course • a brief overview of that HOPL IV paper, T INF328B on History of Programming Lan- guages that was given at the University of Bergen • a brief overview of the programming lan- (Norway) in the Spring term 2021. Instructors of guage, the course were Mikhail Barash and Anya Helene • a discussion of the student’s most favourite Bagge from Bergen Language Design Laboratory feature of that language, at the Department of Informatics. • related work on the language, both within the context of HOPL I–IV conferences and We had 13 students who actively participated a wider context, in the course (11 Master students, 1 Bachelor student, and 1 Ph.D. student). At each session • a brief overview of tooling available for the (classes were held once a week), a student or a language (compilers, IDEs), team of two students presented a paper from The • the student’s personal experience with the Fourth ACM SIGPLAN History of Programming language and the HOPL IV paper, Languages Conference (a.k.a. HOPL IV, to be held in June 20211). • questions that the student would ask the author(s) of the HOPL IV paper. The students of the course have presented HOPL We see these essays as a valuable documentation IV papers on history of the following program- of students’ learning experiences, and we hope ming languages: APL, Clojure, D, F#, Groovy, that this will be an exciting read for everyone. JavaScript, Logo, S&R, and Standard ML. In the meantime, we are looking forward to the next edition of our course—to be held in 2030s— The presentations on three languages from HOPL based on papers from the next HOPL conference. IV were given virtually at our course by the corre- sponding HOPL IV papers’ (co)author(s): Bjarne Stroustrup talked about history of C++2, John Reid presented history of Fortran3, and Peter Bergen, 14th June 2021 Van Roy gave a talk on history of Oz4. Mikhail Barash ([email protected]) Anya Helene Bagge ([email protected]) 1We are thankful to HOPL IV organizing committee, in particular, Guy L. Steele Jr., for offering a special rate for the students of our course to participate in the conference. 2The talk was organized in cooperation with University of Turku (Finland): https://www.utu.fi/fi/ajankohtaista/uu tinen/utu-tech-webinar-bjarne-stroustrup. 3Announcement: https://www.uib.no/ii/144128/history-coarrays-and-spmd-parallelism-fortran. 4Announcement: https://www.uib.no/en/ii/144917/history-oz-multiparadigm-language. 5 The LATEXtemplate we used is an adapted version of https://github.com/sylvain-kern/magazine. | 2 Contents APL 3 Essay by Karl Henrik Elg Barlinn ....................................4 Essay by Sondre Nilsen ..........................................8 Clojure 13 Essay by Daniel Berge ........................................... 14 Essay by Andreas Garvik ......................................... 17 D 20 Essay by Marius Kleppe Larnøy ..................................... 21 F# 25 Essay by Kenneth Fossen ......................................... 26 Groovy 30 Essay by Jenny Strømmen ........................................ 31 JavaScript 34 Essay by Kathryn Frid ........................................... 35 Essay by Åsmund Aqissiaq Arild Kløvstad ............................... 38 Logo 43 Essay by Simen André Lien ........................................ 44 Essay by Emily Mi L. Nguyen ....................................... 47 S&R 51 Essay by Janne Hauglid .......................................... 52 Standard ML 55 Essay by Knut Anders Stokke ....................................... 56 APL Link to the HOPL IV paper: https://dl.acm.org/doi/10.1145/3386319 Link to the students’ presentation: https://git.app.uib.no/uib-hopl-iv/slides/-/blob/master/APL.pdf APL | 4 infancy, known for the easy and natural way a Essay on History of non-technical user could create user interfaces. APL How this evolved with the arrival of non-text based user interfaces is also explored in the paper. The paper goes on to explore how compilers, and Karl Henrik Elg Barlinn interpreters have changed throughout the years, University of Bergen why APL does not really need a compiler, and why it has some anyway. Finally, the paper explores subjects that seem to interest the authors of the paper: what’s in a name, backwards compatibil- he paper “APL since 1978”[1] by Roger K.W. ity, index origin, among other more niche and Hui and Morten J. Kromberg picks up the minor topics. This is not a paper strictly about T story where the HOPL I paper The Evolu- the history of APL, it is a celebration on how far tion of APL [2] left off. The paper describes the APL have come since 1978. evolution of the APL umbrella of languages. It reflects on how not only APL, but the world as Brief Overview of APL a whole, have been shaped by the great progres- APL was created by Kenneth Iverson during the sion since 1978; and throws a few new ideas for 1960s to address the shortcomings of conven- how APL may yet be changed. tional mathematical notation, and to make it ex- ecutable. As such APL is designed for executing Brief Overview of the HOPL Pa- mathematical notation rather than a program- per ming language. This is one of the reasons it used The paper starts off by presenting a historical glyphs rather than the more normal ASCII names perspective on how the world as a whole has we are used to in other languages like C. Curi- changed since the previous HOPL paper on APL ously it has no operator precedent, everything is [2] was presented. Then it explores all new func- associated to the right. This first version of APL is tions and primitives which have been added to known as APL\360 was published in 1966 [1]. The the language. main targets of APL are domain experts without a It also explores what it means need to have a background in computer science. This drives the implementers of the language to I chose this particular HOPL to be primitive, why there are paper to present because I have so few of them, and what this try and accommodate this lack of formal educa- always been fascinated by means for the language as a tion in programming by for example, by making interesting problems. APL is a whole. New concepts such as it easy to create user interfaces. language which I knew nothing leading axis (major cell) and The main features of APL is the concise way com- about before preparing the trains are explained with spe- plex algorithms can be created. This is done presentation. During the initial cial regard to how they drive by having functions and operators perform com- elevator pitch lecture APL was the continuing development of monly needed tasks. A function is applied to called an “array processing the language. Branching lan- an array of arguments to produce array results. language with special graphical guages, such as J and K, are also There is also the notion of the major cell within notation” which does sound, to mentioned in how they influ- the design of functions. As explained by the pa- me at least, like nothing I have ence APL with their own con- per “A major cell of an array is a subarray with come across before and very cepts and ideas. The paper also rank one less than the rank of an array arranged interesting. explores the the famous sym- along its leading axis: an item of a vector, a row of —Elg bols of APL, and why there are a matrix, a plane of a 3-d array, etc. Operating on so few of them. APL was, in its the leading axis is analogous to treating an array APL | 5 as a (conceptual) vector and with the major cells of text matrix display, after all the screen can be as its (conceptual) items” [1]. Some functions looked at as another, rather special, matrix. Using mentioned in the paper are tally, which returns quad notation, namely win, a user could create the number of major cells in an array, and grade, state-of-the-arts character-based interfaces. which when used monadically produces the in- However, as the glory days of mainframes dwin- dices needed to sorts its argument. There are of dled, financial institutions drifted towards Mi- course others, but those are left to the reader to crosoft Windows. Due to the fierce competitive explore. APL market at the time there was no standard- Operators are higher order isation causing APL from different vendors not functions, meaning they take being executable. This was the time where Ob- In a way I always thought functions as arguments and ject Oriented Programming (OOP) also took off, programming languages should not arrays. An array can ei- Dyalog exploited this together with namespaces use a C style syntax; but the ther take a single argument to integrate the Win32 objects directly into the more I learn about non-C-like (monadic) or two arguments workspace. The HOPL IV paper, written by em- languages, the more I realize (dyadic), but not either one or ployees at Dyalog, argues that this makes APL how wrong I was.
Recommended publications
  • Javascript and the DOM
    Javascript and the DOM 1 Introduzione alla programmazione web – Marco Ronchetti 2020 – Università di Trento The web architecture with smart browser The web programmer also writes Programs which run on the browser. Which language? Javascript! HTTP Get + params File System Smart browser Server httpd Cgi-bin Internet Query SQL Client process DB Data Evolution 3: execute code also on client! (How ?) Javascript and the DOM 1- Adding dynamic behaviour to HTML 3 Introduzione alla programmazione web – Marco Ronchetti 2020 – Università di Trento Example 1: onmouseover, onmouseout <!DOCTYPE html> <html> <head> <title>Dynamic behaviour</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <div onmouseover="this.style.color = 'red'" onmouseout="this.style.color = 'green'"> I can change my colour!</div> </body> </html> JAVASCRIPT The dynamic behaviour is on the client side! (The file can be loaded locally) <body> <div Example 2: onmouseover, onmouseout onmouseover="this.style.background='orange'; this.style.color = 'blue';" onmouseout=" this.innerText='and my text and position too!'; this.style.position='absolute'; this.style.left='100px’; this.style.top='150px'; this.style.borderStyle='ridge'; this.style.borderColor='blue'; this.style.fontSize='24pt';"> I can change my colour... </div> </body > JavaScript is event-based UiEvents: These event objects iherits the properties of the UiEvent: • The FocusEvent • The InputEvent • The KeyboardEvent • The MouseEvent • The TouchEvent • The WheelEvent See https://www.w3schools.com/jsref/obj_uievent.asp Test and Gym JAVASCRIPT HTML HEAD HTML BODY CSS https://www.jdoodle.com/html-css-javascript-online-editor/ Javascript and the DOM 2- Introduction to the language 8 Introduzione alla programmazione web – Marco Ronchetti 2020 – Università di Trento JavaScript History • JavaScript was born as Mocha, then “LiveScript” at the beginning of the 94’s.
    [Show full text]
  • The Elinks Manual the Elinks Manual Table of Contents Preface
    The ELinks Manual The ELinks Manual Table of Contents Preface.......................................................................................................................................................ix 1. Getting ELinks up and running...........................................................................................................1 1.1. Building and Installing ELinks...................................................................................................1 1.2. Requirements..............................................................................................................................1 1.3. Recommended Libraries and Programs......................................................................................1 1.4. Further reading............................................................................................................................2 1.5. Tips to obtain a very small static elinks binary...........................................................................2 1.6. ECMAScript support?!...............................................................................................................4 1.6.1. Ok, so how to get the ECMAScript support working?...................................................4 1.6.2. The ECMAScript support is buggy! Shall I blame Mozilla people?..............................6 1.6.3. Now, I would still like NJS or a new JS engine from scratch. .....................................6 1.7. Feature configuration file (features.conf).............................................................................7
    [Show full text]
  • Introduction to Javascript
    Introduction to JavaScript Lecture 6 CGS 3066 Fall 2016 October 6, 2016 JavaScript I Dynamic programming language. Program the behavior of web pages. I Client-side scripts to interact with the user. I Communicates asynchronously and alters document content. I Used with Node.js in server side scripting, game development, mobile applications, etc. I Has thousands of libraries that can be used to carry out various tasks. JavaScript is NOT Java I Names can be deceiving. I Java is a full-fledged object-oriented programming language. I Java is popular for developing large-scale distributed enterprise applications and web applications. I JavaScript is a browser-based scripting language developed by Netscape and implemented in all major browsers. I JavaScript is executed by the browsers on the client side. JavaScript and other languages JavaScript borrows the elements from a variety of languages. I Object orientation from Java. I Syntax from C. I Semantics from Self and Scheme. Whats a script? I A program written for a special runtime environment. I Interpreted (as opposed to compiled). I Used to automate tasks. I Operates at very high levels of abstraction. Whats JavaScript? I Developed at Netscape to perform client side validation. I Adopted by Microsoft in IE 3.0 (1996). I Standardized in 1996. Current standard is ECMAScript 6 (2016). I Specifications for ECMAScript 2016 are out. I CommonJS used for development outside the browser. JavaScript uses I JavaScript has an insanely large API and library. I It is possible to do almost anything with JavaScript. I Write small scripts/apps for your webpage.
    [Show full text]
  • NINETEENTH PLENARY MEETING of ISO/IEC JTC 1/SC 22 London, United Kingdom September 19-22, 2006 [20060918/22] Version 1, April 17, 2006 1
    NINETEENTH PLENARY MEETING OF ISO/IEC JTC 1/SC 22 London, United Kingdom September 19-22, 2006 [20060918/22] Version 1, April 17, 2006 1. OPENING OF PLENARY MEETING (9:00 hours, Tuesday, September 19) 2. CHAIRMAN'S REMARKS 3. ROLL CALL OF DELEGATES 4. APPOINTMENT OF DRAFTING COMMITTEE 5. ADOPTION OF THE AGENDA 6. REPORT OF THE SECRETARY 6.1 SC 22 Project Information 6.2 Proposals for New Work Items within SC 22 6.3 Outstanding Actions From the Eighteenth Plenary of SC 22 Page 1 of 7 JTC 1 SC 22, 2005 Version 1, April 14, 2006 6.4 Transition to ISO Livelink 6.4.1 SC 22 Transition 7. ACTIVITY REPORTS 7.1 National Body Reports 7.2 External Liaison Reports 7.2.1 ECMA International (Rex Jaeschke) 7.2.2 Free Standards Group (Nick Stoughton) 7.2.2 Austin Joint Working Group (Nick Stoughton) 7.3 Internal Liaison Reports 7.3.1 Liaison Officers from JTC 1/SC 2 (Mike Ksar) 7.3.2 Liaison Officer from JTC 1/SC 7 (J. Moore) Page 2 of 7 JTC 1 SC 22, 2005 Version 1, April 14, 2006 7.3.3 Liaison Officer from ISO/TC 37 (Keld Simonsen) 7.3.5 Liaison Officer from JTC 1 SC 32 (Frank Farance) 7.4 Reports from SC 22 Subgroups 7.4.1 Other Working Group Vulnerabilities (Jim Moore) 7.4.2 SC 22 Advisory Group for POSIX (Stephen Walli) 7.5 Reports from JTC 1 Subgroups 7.5.1 JTC 1 Vocabulary (John Hill) 7.5.2 JTC 1 Ad Hoc Directives (John Hill) 8.
    [Show full text]
  • Proposal to Refocus TC39-TG1 on the Maintenance of the Ecmascript, 3 Edition Specification
    Proposal to Refocus TC39-TG1 On the Maintenance of the ECMAScript, 3rd Edition Specification Submitted by: Yahoo! Inc. Microsoft Corporation Douglas Crockford Pratap Lakshman & Allen Wirfs-Brock Preface We believe that the specification currently under development by TC39-TG1 as ECMAScript 4 is such a radical departure from the current standard that it is essentially a new language. It is as different from ECMAScript 3rd Edition as C++ is from C. Such a drastic change is not appropriate for a revision of a widely used standardized language and cannot be justified in light of the current broad adoption of ECMAScript 3rd Edition for AJAX style web applications. We do not believe that consensus can be reach within TC39-TG1 based upon its current language design work. However, we do believe that an alternative way forward can be found and submit this proposal as a possible path to resolution. Proposal We propose that the work of TC39-TG1 be reconstituted as two (or possibly three) new TC39 work items as follows: Work item 1 – On going maintenance of ECMAScript, 3rd Edition. In light on the broad adoption of ECMAScript, 3rd Edition for web browser based applications it is clear that this language will remain an important part of the world-wide-web infrastructure for the foreseeable future. However, since the publication of the ECMAScript, 3rd Edition specification in 1999 there has been feature drift between implementations and cross-implementation compatibility issues arising from deficiencies and ambiguities in the specification. The purpose of this work item is to create a maintenance revision of the specification (a 4th Edition) that focuses on these goals: Improve implementation conformance by rewriting the specification to improve its rigor and clarity, and by correcting known points of ambiguity or under specification.
    [Show full text]
  • International Standard Iso/Iec 9075-2
    This is a previewINTERNATIONAL - click here to buy the full publication ISO/IEC STANDARD 9075-2 Fifth edition 2016-12-15 Information technology — Database languages — SQL — Part 2: Foundation (SQL/Foundation) Technologies de l’information — Langages de base de données — SQL — Partie 2: Fondations (SQL/Fondations) Reference number ISO/IEC 9075-2:2016(E) © ISO/IEC 2016 ISO/IEC 9075-2:2016(E) This is a preview - click here to buy the full publication COPYRIGHT PROTECTED DOCUMENT © ISO/IEC 2016, Published in Switzerland All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized otherwise in any form orthe by requester. any means, electronic or mechanical, including photocopying, or posting on the internet or an intranet, without prior written permission. Permission can be requested from either ISO at the address below or ISO’s member body in the country of Ch. de Blandonnet 8 • CP 401 ISOCH-1214 copyright Vernier, office Geneva, Switzerland Tel. +41 22 749 01 11 Fax +41 22 749 09 47 www.iso.org [email protected] ii © ISO/IEC 2016 – All rights reserved This is a preview - click here to buy the full publication ISO/IEC 9075-2:2016(E) Contents Page Foreword..................................................................................... xxi Introduction.................................................................................. xxii 1 Scope.................................................................................... 1 2 Normative references.....................................................................
    [Show full text]
  • Proof/Épreuve
    0- W e8 IE -2 V 07 E a3 ) 4 R i 68 P .a /5 -1 D h st 7 e si 75 R it s/ 1 A s. : d -2 rd r rf D rd a da p N a d n o- A d an ta is t /s c/ T n l s g 5 S ta l lo 8 s u a cc eh ( F at 0 /c fa iT ai c INTERNATIONAL . b0 eh a it - s. 43 STANDARD rd a9 a 1- nd f a 4b st // s: tp ht Document management for PDF — 21757-1 Part 1: Use of ISO 32000-2 (PDF 2.0) ISO First edition — ECMAScript PROOF/ÉPREUVE ISO 21757-1:2020(E)Reference number © ISO 2020 ISO 21757-1:2020(E) 0- W e8 IE -2 V 07 E a3 ) 4 R i 68 P .a /5 -1 D h st 7 e si 75 R it s/ 1 A s. : d -2 rd r rf D rd a da p N a d n o- A d an ta is t /s c/ T n l s g 5 S ta l lo 8 s u a cc eh ( F at 0 /c fa iT ai c . b0 eh a it - s. 43 rd a9 a 1- nd f a 4b st // s: tp ht © ISO 2020 All rights reserved. UnlessCOPYRIGHT otherwise specified, PROTECTED or required inDOCUMENT the context of its implementation, no part of this publication may be reproduced or utilized otherwise in any form or by any means, electronic or mechanical, including photocopying, or posting on the internet or an intranet, without prior written permission.
    [Show full text]
  • Evolution of the Major Programming Languages
    COS 301 Programming Languages Evolution of the Major Programming Languages UMaine School of Computing and Information Science COS 301 - 2018 Topics Zuse’s Plankalkül Minimal Hardware Programming: Pseudocodes The IBM 704 and Fortran Functional Programming: LISP ALGOL 60 COBOL BASIC PL/I APL and SNOBOL SIMULA 67 Orthogonal Design: ALGOL 68 UMaine School of Computing and Information Science COS 301 - 2018 Topics (continued) Some Early Descendants of the ALGOLs Prolog Ada Object-Oriented Programming: Smalltalk Combining Imperative and Object-Oriented Features: C++ Imperative-Based Object-Oriented Language: Java Scripting Languages A C-Based Language for the New Millennium: C# Markup/Programming Hybrid Languages UMaine School of Computing and Information Science COS 301 - 2018 Genealogy of Common Languages UMaine School of Computing and Information Science COS 301 - 2018 Alternate View UMaine School of Computing and Information Science COS 301 - 2018 Zuse’s Plankalkül • Designed in 1945 • For computers based on electromechanical relays • Not published until 1972, implemented in 2000 [Rojas et al.] • Advanced data structures: – Two’s complement integers, floating point with hidden bit, arrays, records – Basic data type: arrays, tuples of arrays • Included algorithms for playing chess • Odd: 2D language • Functions, but no recursion • Loops (“while”) and guarded conditionals [Dijkstra, 1975] UMaine School of Computing and Information Science COS 301 - 2018 Plankalkül Syntax • 3 lines for a statement: – Operation – Subscripts – Types • An assignment
    [Show full text]
  • 1. with Examples of Different Programming Languages Show How Programming Languages Are Organized Along the Given Rubrics: I
    AGBOOLA ABIOLA CSC302 17/SCI01/007 COMPUTER SCIENCE ASSIGNMENT ​ 1. With examples of different programming languages show how programming languages are organized along the given rubrics: i. Unstructured, structured, modular, object oriented, aspect oriented, activity oriented and event oriented programming requirement. ii. Based on domain requirements. iii. Based on requirements i and ii above. 2. Give brief preview of the evolution of programming languages in a chronological order. 3. Vividly distinguish between modular programming paradigm and object oriented programming paradigm. Answer 1i). UNSTRUCTURED LANGUAGE DEVELOPER DATE Assembly Language 1949 FORTRAN John Backus 1957 COBOL CODASYL, ANSI, ISO 1959 JOSS Cliff Shaw, RAND 1963 BASIC John G. Kemeny, Thomas E. Kurtz 1964 TELCOMP BBN 1965 MUMPS Neil Pappalardo 1966 FOCAL Richard Merrill, DEC 1968 STRUCTURED LANGUAGE DEVELOPER DATE ALGOL 58 Friedrich L. Bauer, and co. 1958 ALGOL 60 Backus, Bauer and co. 1960 ABC CWI 1980 Ada United States Department of Defence 1980 Accent R NIS 1980 Action! Optimized Systems Software 1983 Alef Phil Winterbottom 1992 DASL Sun Micro-systems Laboratories 1999-2003 MODULAR LANGUAGE DEVELOPER DATE ALGOL W Niklaus Wirth, Tony Hoare 1966 APL Larry Breed, Dick Lathwell and co. 1966 ALGOL 68 A. Van Wijngaarden and co. 1968 AMOS BASIC FranÇois Lionet anConstantin Stiropoulos 1990 Alice ML Saarland University 2000 Agda Ulf Norell;Catarina coquand(1.0) 2007 Arc Paul Graham, Robert Morris and co. 2008 Bosque Mark Marron 2019 OBJECT-ORIENTED LANGUAGE DEVELOPER DATE C* Thinking Machine 1987 Actor Charles Duff 1988 Aldor Thomas J. Watson Research Center 1990 Amiga E Wouter van Oortmerssen 1993 Action Script Macromedia 1998 BeanShell JCP 1999 AngelScript Andreas Jönsson 2003 Boo Rodrigo B.
    [Show full text]
  • International Standard Iso 21757-1:2020(E)
    This preview is downloaded from www.sis.se. Buy the entire standard via https://www.sis.se/std-80026702 INTERNATIONAL ISO STANDARD 21757-1 First edition 2020-12 Document management — ECMAScript for PDF — Part 1: Use of ISO 32000-2 (PDF 2.0) Reference number ISO 21757-1:2020(E) © ISO 2020 This preview is downloaded from www.sis.se. Buy the entire standard via https://www.sis.se/std-80026702 ISO 21757-1:2020(E) COPYRIGHT PROTECTED DOCUMENT © ISO 2020 All rights reserved. Unless otherwise specified, or required in the context of its implementation, no part of this publication may be reproduced or utilized otherwise in any form or by any means, electronic or mechanical, including photocopying, or posting on the internet or an intranet, without prior written permission. Permission can be requested from either ISO at the address belowCP 401or ISO’s • Ch. member de Blandonnet body in 8 the country of the requester. ISO copyright office Phone: +41 22 749 01 11 CH-1214 Vernier, Geneva Website: www.iso.org PublishedEmail: [email protected] Switzerland ii © ISO 2020 – All rights reserved This preview is downloaded from www.sis.se. Buy the entire standard via https://www.sis.se/std-80026702 ISO 21757-1:2020(E) Contents Page Foreword ........................................................................................................................................................................................................................................ix Introduction ..................................................................................................................................................................................................................................x
    [Show full text]
  • Kawa - Compiling Dynamic Languages to the Java VM
    Kawa - Compiling Dynamic Languages to the Java VM Per Bothner Cygnus Solutions 1325 Chesapeake Terrace Sunnyvale CA 94089, USA <[email protected]> Abstract: in a project in conjunction with Java. A language im- plemented on top of Java gives programmers many of Many are interested in Java for its portable bytecodes the extra-linguistic benefits of Java, including libraries, and extensive libraries, but prefer a different language, portable bytecodes, web applets, and the existing efforts especially for scripting. People have implemented other to improve Java implementations and tools. languages using an interpreter (which is slow), or by translating into Java source (with poor responsiveness The Kawa toolkit supports compiling and running vari- for eval). Kawa uses an interpreter only for “simple” ous languages on the Java Virtual Machine. Currently, expressions; all non-trivial expressions (such as function Scheme is fully supported (except for a few difficult fea- definitions) are compiled into Java bytecodes, which are tures discussed later). An implementation of ECMA- emitted into an in-memory byte array. This can be saved Script is coming along, but at the time of writing it is for later, or quickly loaded using the Java ClassLoader. not usable. Kawa is intended to be a framework that supports mul- Scheme [R RS] is a simple yet powerful language. It tiple source languages. Currently, it only supports is a non-pure functional language (i.e. it has first-class Scheme, which is a lexically-scoped language in the Lisp functions, lexical scoping, non-lazy evaluation, and side family. The Kawa dialect of Scheme implements almost effects).
    [Show full text]
  • Visual Programming Language for Tacit Subset of J Programming Language
    Visual Programming Language for Tacit Subset of J Programming Language Nouman Tariq Dissertation 2013 Erasmus Mundus MSc in Dependable Software Systems Department of Computer Science National University of Ireland, Maynooth Co. Kildare, Ireland A dissertation submitted in partial fulfilment of the requirements for the Erasmus Mundus MSc Dependable Software Systems Head of Department : Dr Adam Winstanley Supervisor : Professor Ronan Reilly June 30, 2013 Declaration I hereby certify that this material, which I now submit for assessment on the program of study leading to the award of Master of Science in Dependable Software Systems, is entirely my own work and has not been taken from the work of others save and to the extent that such work has been cited and acknowledged within the text of my work. Signed:___________________________ Date:___________________________ Abstract Visual programming is the idea of using graphical icons to create programs. I take a look at available solutions and challenges facing visual languages. Keeping these challenges in mind, I measure the suitability of Blockly and highlight the advantages of using Blockly for creating a visual programming environment for the J programming language. Blockly is an open source general purpose visual programming language designed by Google which provides a wide range of features and is meant to be customized to the user’s needs. I also discuss features of the J programming language that make it suitable for use in visual programming language. The result is a visual programming environment for the tacit subset of the J programming language. Table of Contents Introduction ............................................................................................................................................ 7 Problem Statement ............................................................................................................................. 7 Motivation..........................................................................................................................................
    [Show full text]