Polyglot Software Development

Total Page:16

File Type:pdf, Size:1020Kb

Polyglot Software Development POLITECNICO DI TORINO SCUOLA DI DOTTORATO Dottorato in Ingegneria informatica e dei sistemi { XXVI ciclo Tesi di Dottorato Polyglot software development Benefits, problems and guidelines for the adoption and combination of domain specific formal languages Federico Cesare Argentino Tomassetti Tutore Coordinatore del corso di dottorato prof. Marco Torchiano prof. Pietro Laface December 2013 This work is licensed under a Creative Commons Attribution-NonCommercial- ShareAlike 3.0 Unported License. iii Summary The languages we choose to design solutions influence the way we think about the problem, the words we use in discussing it with colleagues, the processes we adopt in developing the software which should solve that problem. Therefore we should strive to use the best language possible for depicting each facet of the system. To do that we have to solve two challenges: i) first of all to understand merits and issues brought by the languages we could adopt and their long reaching effects on the organizations, ii) combine them wisely, trying to reduce the overhead due to their assembling. In the first part of this dissertation we study the adoption of modeling and domain specific languages. On the basis of an industrial survey we individuate a list of benefits attainable through these languages, how frequently they can be reached and which techniques permit to improve the chances to obtain a particular benefit. In the same way we study also the common problems which either prevent or hinder the adoption of these languages. We then analyze the processes through which these languages are employed, studying the relative frequency of the usage of the different techniques and the factors influencing it. Finally we present two case-studies performed in a small and in a very large company, with the intent of presenting the peculiarities of the adoption in different contexts. As consequence of adopting specialized languages, many of them have to be employed to represent the complete solution. Therefore in the second part of the thesis we focus on the integration of these languages. Being this topic really new we performed preliminary studies to first understand the phenomenon, studying the different ways through which languages interact and their effects on defectivity. Later we present some prototypal solutions for i) the automatic spotting of cross- language relations, ii) the design of language integration tool support in language workbenches through the exploitation of common meta-metamodeling. This thesis wants to offer a contribution towards the productive adoption of mul- tiple, specific languages in the same software development project, hence polyglot software development. From this approach we should be able to reduce the com- plexity due to misrepresentation of solutions, offer a better facilities to think about problems and, finally to be able to solve more difficult problems with our limited iv brain resources. Our results consists in a better understanding of MDD and DSLs adoption in companies. From that we can derive guidelines for practitioners, lesson learned for deploying in companies, depending on the size of the company, and implications for other actors involved in the process: company management and universities. Regarding cross-language relations our contribution is an initial definition of the problem, supported by some empirical evidence to sustain its importance. The solutions we propose are not yet mature but we believe that from them future work can stem. v Acknowledgements Dear hyphotethical reader, I am sure you will understand my reasons to write most of this part of the thesis in my native language, considering it is mainly addressed to other Italian speakers. However, in accordance to the title, a few other languages are used in these pages. Ho imparato quanto sia vero che gli esami non finiscono mai. Non mi illudo di poterli considerare quindi del tutto terminati, cionondimeno con questa tesi e, sperabilmente, con un esito positivo degli esami di dottorato, raggiungo un traguardo che merita una piccola celebrazione. Per quanto questo percorso sia stato lungo e irto di ostacoli lo sarebbe stato ancora di pi`u(molto, anzi infinitamente di pi`u)senza il supporto, in forme diverse e complementari, di una miriade di soggetti. Vorrei prima di tutto ringraziare il mio relatore, il prof. Marco Torchiano per avermi guidato in questo percorso diversi anni orsono, iniziato con la tesi di laurea specialistica. Ero allora ben determinato a non intraprendere questa strada, tuttalpi`ua spendere una manciata di mesi in dipartimento e poi... Ed eccomi qua, immune a ogni forma di coerenza. Sebbene certi momenti sia stato leggermente meno che entusiasta di aver fatto questa scelta, a posteriori sono felice di averci ripensato e gli sono quindi grato di avermi proposto questa apparentemente malsana idea. Un grazie lo devo anche al prof. Maurizio Morisio, con cui avevo svolto la tesina di laurea triennale (sebbene lui non se ne ricordi). Ammiro molto la sua capacit`adi cogliere in un attimo il nocciolo del problema. Al contempo sono un po' spaventato dalla sua innata abilit`anello scovare la magagna che credi di aver ben nascosta. Ora, se Newton ha dichiarato di aver potuto vedere pi`uin l`asolamente perch´e abbarbicato sulle spalle di giganti, io, per ogni contributo anche minimo che possa aver offerto alla ricerca in questi anni, ho dovuto appoggiarmi a una stirpe di titani di proporzioni biblico-apocalittiche. Fra questi mi fa piacere ricordare Antonio Vetr`o, un uomo perennamente in lotta con le codifiche di carattere e le citazioni che non gli vengono riconosciute. Con lui ho orgogliosamente costituito la trasposizione nel mondo della ricerca di grandi vi coppie che hanno segnato l'immaginario collettivo. Ricordateci cos`ı,come i Gianni e Pinotto della ricerca italiana. Appena ho potuto ho cercato scuse per lavorare con Giuseppe Rizzo perch´e `emolto, molto bravo. Lavorare con lui `estato sempre stimolante. Non ho capito tutto quello che ha provato a insegnarmi, in compenso ho annuito moltissimo. Con Luca Ardito ho condiviso lo stesso percorso e si `ecazzeggiato il giusto. Bene cos`ı. Ho incrociato tante altre anime pi`uo meno pie in questi laboratori dei piani bassi. Li ricordo tutti con affetto: dai compagni di gruppo (Oscar, Cristhian, Al`ı e Najeeb) ai compagni di laboratorio (Andrea Martina, mio fiero compagno di scrivania per anni, Matteo e Sham). Ringrazio Sara per i molte caff`e,pranzi, sedute di psicoterapia fra dottorandi. Ci sono stati altri ricercatori pi`uesperti da cui ho potuto imparare molto (o almeno, loro me ne hanno offerto la possibilit`a). Fra questi Filippo Ricca, che ha anche scritto per me una lettera di raccomandazione che ha contribuito a farmi ottenere la borsa DAAD grazie alla quale ho speso un periodo in Germania. Del gruppo di Genova ringrazio anche Alessandro Tiso, Gianna Reggio e Maurizio Leotta. In Germany I had the possibility to work with Daniel Ratiu and Bernhard Sch¨atz. Daniel gave me a lot of practical advices (Put a figure in the first page!) and shared with me its wisdom. So I learnt to ^ıngr˘as, a porcul ^ınaintede Cr˘aciun. There I also met one of my idol: Markus V¨olter. To have the possibility to discuss with him, Bernd Kolb and Domenik Pavletic were very good reasons to bear a winter in M¨unchen. Credo che senza il contributo di chi lavora sul campo, e produce software vera- mente, molte idee non sarebbero mai nate e avrei spesso imboccato sentieri (ancora pi`u)improbabili. Fortunatamente abbiamo avuto la possibilit`adi scrivere alcuni la- vori con Trim, di cui ringrazio Lorenzo Bazzani e Felice Di Luca, e CSI Piemonte, di cui ringrazio Mauro Antonaci e Paolo Arvati. There is a full list of people who gave opinions, took part in experiments, surveys, interviews. There were students who shared ideas with me, who worked on bachelor and master thesis in directions helpful for my research. I could keep listing names for pages, let me instead sum up in a big THANK YOU, GRAZIE, DANKE, GRACIAS E i compagni di corso di dottorato, e i professori. Per voi ci sono parole che risuonano, con voce stonata, da qualche tempo: vii Vivat academia! Vivant professores! Vivat membrum quodlibet; Vivant membra quaelibet; Semper sint in flore. E poi c'`eil resto, l'esistenza, la Vita, il tutto. In ordine rigorosamente sparso. Luca Barbato, che conosco dal principio, mi ha dato diverse buone idee, molta cioccolata e supporto attraverso quest'avventura. C'`ela tesi di Luca Gilli che `estato un esempio. Da leggere, sfogliare e capirne l'introduzione. Poi, quando il gioco si fa serio e la matematica sovrabbondante, mi ritiro in buon ordine. There is Shalini. By looking her near to my old friend I feel all of a sudden the distance more bearable. Keep him in good hands. Chala Bagundi! La Goliardia, perch´erinverdisce l'amore per l'Universit`ae quello che rappre- senta. Al di l`adelle momentanee difficolt`ao errori (ad augusta per angusta). Perch´e entrambe siete eterne. I nostri vecchi chi hanno insegnato a dividere il pane ed il sale e ci hanno dato le gambe per incamminarci. E il cuore. Oggi ci mandano il vaglia delle loro trepidazioni. Bobo Rossi, Un Goliardo Vorrei ringraziare i nonni di cui porto il nome e a cui ripenso nei momenti di difficolt`a. Non ho avuto l'onore di conoscerli, per`oil loro esempio risuona nelle persone che gli sono state accanto, nei gesti e in ci`oche `erimasto dopo di loro. Perci`osono grato a mio nonno Argentino che ha trovato la forza per venire a Torino, mantenersi durante gli studi e laurearsi in questo ateneo nel 1929. Un grazie a mio nonno Cesare, che non pot`elaurearsi ma fu capace di diventare impresario e progettare edifici e strade, in Italia e all'estero.
Recommended publications
  • Modernizing Applications with IBM CICS
    Front cover Modernizing Applications with IBM CICS Russell Bonner Sophie Green Ezriel Gross Jim Harrison Debra Scharfstein Will Yates Redpaper IBM Redbooks Modernizing Applications with IBM CICS December 2020 REDP-5628-00 Note: Before using this information and the product it supports, read the information in “Notices” on page v. First Edition (December 2020) © Copyright International Business Machines Corporation 2020. All rights reserved. Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. Contents Notices . .v Trademarks . vi Preface . vii Accompanying education course . vii Authors. viii Now you can become a published author, too! . viii Comments welcome. viii Stay connected to IBM Redbooks . ix Chapter 1. Introduction. 1 1.1 CICS and the hybrid multi-cloud . 2 1.2 Migrating to the hybrid multi-cloud . 2 1.2.1 Maintaining the status quo . 2 1.2.2 Using cloud-native applications. 2 1.2.3 Modernizing existing applications . 3 1.3 CICS Hello World COBOL example . 3 Chapter 2. IBM CICS application development . 5 2.1 Application development in CICS . 6 2.1.1 Batch processing versus online transaction processing . 6 2.1.2 Programming paradigm. 6 2.1.3 Basic architecture of a CICS program. 7 2.1.4 CICS resources. 9 2.2 CICS sample application. 10 2.3 CICS modernization . 11 2.4 CICS built-in transactions . 12 2.4.1 CICS Execute Command Interpreter . 12 2.4.2 CICS Execution Diagnostic Facility. 13 Chapter 3. Coding applications to run in IBM CICS. 15 3.1 Introduction to the EXEC CICS application programming interface .
    [Show full text]
  • Dissertation Submitted in Partial Fulfillment of the Requirements for The
    ON THE HUMAN FACTORS IMPACT OF POLYGLOT PROGRAMMING ON PROGRAMMER PRODUCTIVITY by Phillip Merlin Uesbeck Master of Science - Computer Science University of Nevada, Las Vegas 2016 Bachelor of Science - Applied Computer Science Universit¨at Duisburg-Essen 2014 A dissertation submitted in partial fulfillment of the requirements for the Doctor of Philosophy { Computer Science Department of Computer Science Howard R. Hughes College of Engineering The Graduate College University of Nevada, Las Vegas December 2019 c Phillip Merlin Uesbeck, 2019 All Rights Reserved Dissertation Approval The Graduate College The University of Nevada, Las Vegas November 15, 2019 This dissertation prepared by Phillip Merlin Uesbeck entitled On The Human Factors Impact of Polyglot Programming on Programmer Productivity is approved in partial fulfillment of the requirements for the degree of Doctor of Philosophy – Computer Science Department of Computer Science Andreas Stefik, Ph.D. Kathryn Hausbeck Korgan, Ph.D. Examination Committee Chair Graduate College Dean Jan Pedersen, Ph.D. Examination Committee Member Evangelos Yfantis, Ph.D. Examination Committee Member Hal Berghel, Ph.D. Examination Committee Member Deborah Arteaga-Capen, Ph.D. Graduate College Faculty Representative ii Abstract Polyglot programming is a common practice in modern software development. This practice is often con- sidered useful to create software by allowing developers to use whichever language they consider most well suited for the different parts of their software. Despite this ubiquity of polyglot programming there is no empirical research into how this practice affects software developers and their productivity. In this disser- tation, after reviewing the state of the art in programming language and linguistic research pertaining to the topic, this matter is investigated by way of two empirical studies with 109 and 171 participants solving programming tasks.
    [Show full text]
  • Graalvm Twitter Case Study
    December 11, 2019 CASE STUDY: ORACLE AND TWITTER How Oracle GraalVM Supercharged Twitter’s Microservices Platform Basic Research on Computing Fundamentals Delivers Once-in-a-Lifetime Performance Improvements Holger Mueller Vice President and Principal Analyst Copy Editor: Jim Donahue Layout Editor: Aubrey Coggins Produced exclusively for Constellation Research clients TABLE OF CONTENTS At a Glance ..............................................................................................3 The Company ............................................................................................4 The Challenges ..........................................................................................4 The Solution .............................................................................................5 The Impact ...............................................................................................7 The Takeaways ...........................................................................................8 The Recommendations ..................................................................................9 Analyst Bio .............................................................................................11 About Constellation Research ..........................................................................12 AT A GLANCE Twitter · Headquarters: San Francisco Twitter runs one of the most visible social networks in the · 2018 Revenue: $3.04 billion world. Its move to a microservices infrastructure has addressed · No.
    [Show full text]
  • Polyglot Programming
    International Journal of Engineering Research & Technology (IJERT) ISSN: 2278-0181 Vol. 3 Issue 2, February - 2014 Polyglot Programming C. Mritula Arun. B. C Christ University University of Madras Bangalore, India. Chennai, India Abstract—Polyglot programming is the technique of choosing and that can help to complete a specific task more flexibly and using the right tool that is more keenly shaped for the job that easily. Comparing to the real world scenario, humans learn has to be performed. The advent of polyglot programming or and use many languages for an effective communication polyglot programmer’s focuses on solving a problem by using ensuring that the goal of conveying the information is various best software’s suitable for that job yielding the required successfully accomplished. result. The paper focuses on discussing the knits and knots of polyglot programming and few of its possible applications. Languages evolve to meet the changing environments in which they find themselves. [5] Mixing and matching various languages and platforms can be a flexible option to achieve a task more easily. This can be done by choosing a language that Keywords- Polyglot programming; Framework; JVM; is most suitable for the problem. On using a tool that is more keenly shaped for the task keeps the job of a programmer much at ease. The idea of polyglot programming is not I. INTRODUCTION (POLYGLOT PROGRAMMING) entirely new one, it is just the terminology. It has been quite in Software is the most essential component of the computer practice that many tools and applications run as a combination which is written using any high-level programming language of two or more software’s one in front end other for in a human interpretable form that makes life easier and implementing business logics and other for database performing tasks more efficient.
    [Show full text]
  • Xoc, an Extension-Oriented Compiler for Systems Programming
    Xoc, an Extension-Oriented Compiler for Systems Programming Russ Cox∗ Tom Bergan† Austin T. Clements∗ Frans Kaashoek∗ Eddie Kohler† MIT CSAIL∗ UCLA CS† Abstract the changes into base language constructs, writes out the equiva- Today’s system programmers go to great lengths to extend the lan- lent base program, and invokes the original compiler or interpreter. guages in which they program. For instance, system-specific com- The most serious problem with this approach is that extensions are pilers find errors in Linux and other systems, and add support for heavyweight and isolated. Preprocessors must include entire front specialized control flow to Qt and event-based programs. These ends for the base language itself, and multiple extensions are diffi- compilers are difficult to build and cannot always understand each cult to use together. other’s language changes. However, they can greatly improve code Recent extensible compiler research (e.g., Necula et al. 2002; understandability and correctness, advantages that should be acces- Nystrom et al. 2003; Grimm 2006; Visser 2004) aims to solve this sible to all programmers. problem. Starting with an extensible compiler for the base lan- We describe an extension-oriented compiler for C called xoc. guage, a programmer writes only the code necessary to process the An extension-oriented compiler, unlike a conventional extensible domain-specific changes. A typical implementation is a collection compiler, implements new features via many small extensions that of Java classes that provide a front end toolkit for the base lan- are loaded together as needed. Xoc gives extension writers full guage. To extend such compilers, a programmer subclasses some control over program syntax and semantics while hiding many or all of the classes, producing a new compiler that accepts the base compiler internals.
    [Show full text]
  • One Engine to Fuzz 'Em All: Generic Language Processor Testing With
    One Engine to Fuzz ’em All: Generic Language Processor Testing with Semantic Validation Yongheng Cheny?, Rui Zhong?, Hong Hu, Hangfan Zhang, Yupeng Yangz, Dinghao Wu and Wenke Leey yGeorgia Institute of Technology, Pennsylvania State University, zUESTC Abstract— Language processors, such as compilers and inter- correct test cases; advanced fuzzers [42, 44] adopt higher- preters, are indispensable in building modern software. Errors level mutation in the abstract syntax tree (AST) or the in language processors can lead to severe consequences, like intermediate representation (IR) to preserve the input structures. incorrect functionalities or even malicious attacks. However, it is not trivial to automatically test language processors to find Alternatively, generation-based fuzzers leverage a precise model bugs. Existing testing methods (or fuzzers) either fail to generate to describe the input structure [1, 2, 51], and thus can produce high-quality (i.e., semantically correct) test cases, or only support syntax-correct test cases from scratch. To further improve the limited programming languages. semantic correctness, recent fuzzers adopt highly specialized In this paper, we propose POLYGLOT, a generic fuzzing analyses for specific languages [53, 74, 78]. framework that generates high-quality test cases for exploring processors of different programming languages. To achieve the However, a fuzzer will lose its generic applicability when generic applicability, POLYGLOT neutralizes the difference in it is highly customized for one specific language. Users syntax and semantics of programming languages with a uniform cannot easily utilize the specialized fuzzer to test a different intermediate representation (IR). To improve the language va- programming language, but have to develop another one lidity, POLYGLOT performs constrained mutation and semantic from scratch.
    [Show full text]
  • An Extensible Aspectj Compiler∗
    abc : An extensible AspectJ compiler¤ Pavel Avgustinov1, Aske Simon Christensen2, Laurie Hendren3, Sascha Kuzins1, Jennifer Lhotak´ 3, Ondrejˇ Lhotak´ 3, Oege de Moor1, Damien Sereni1, Ganesh Sittampalam1, Julian Tibble1 1 Programming Tools Group 2 BRICS 3 Sable Research Group Oxford University University of Aarhus McGill University United Kingdom Denmark Montreal, Canada ABSTRACT extensions. abc is freely available under the GNU LGPL and can Research in the design of aspect-oriented programming languages be downloaded from [1]. requires a workbench that facilitates easy experimentation with new language features and implementation techniques. In particular, Challenges. An AspectJ compiler is already a complex piece new features for AspectJ have been proposed that require exten- of software, which, in addition to the normal frontend and back- sions in many dimensions: syntax, type checking and code genera- end components of a compiler, must also support a matcher (for tion, as well as data flow and control flow analyses. name patterns) and a weaver (both for intertype declarations and The AspectBench Compiler (abc) is an implementation of such for advice). Furthermore, the kinds of extensions that have been a workbench. The base version of abc implements the full AspectJ suggested for AspectJ vary from fairly simple pointcut language language. Its frontend is built, using the Polyglot framework, as a extensions to more complex concepts which require modifications modular extension of the Java language. The use of Polyglot gives in the type system, matcher and weaver. To make the challenges flexibility of syntax and type checking. The backend is built using explicit, we briefly review some previous work by others that has the Soot framework, to give modular code generation and analyses.
    [Show full text]
  • Graalvm JIT Compiler
    Partner Webcast – Cloud Native Java with GraalVM on OCI Catalin Pohrib Oracle EMEA A&C Partner Technology Cloud Engineer Oracle EMEA CCOE January 21, 2021 Safe harbor statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, timing, and pricing of any features or functionality described for Oracle’s products may change and remains at the sole discretion of Oracle Corporation. 3 Copyright © 2020, Oracle and/or its affiliates. All rights reserved. Agenda 1 Oracle GraalVM Enterprise Overview 2 GraalVM on OCI Features 3 Accelerating Application Performance 4 Demo 5 Summary and Q&A 4 Copyright © 2020, Oracle and/or its affiliates. All rights reserved. Agenda 1 Oracle GraalVM Enterprise Overview 2 GraalVM on OCI Features 3 Accelerating Application Performance 4 Demo 5 Summary and Q&A 5 Copyright © 2020, Oracle and/or its affiliates. All rights reserved. Enterprises worldwide run 45 billion active Java VMs 55% Java is the only language used by > 55% of businesses worldwide1 #1 in 10 of the top 14 technology trends2 #1 programming language in the world3 Java powers your business-critical applications 1 , 2 VDC Research 2019 3 Tiobe Index February 2020 – https://www.tiobe.com/tiobe-index/ 6 Copyright © 2020, Oracle and/or its affiliates. All rights reserved. What is GraalVM Enterprise? GraalVM Enterprise • high-performance • polyglot compiler • run-time built for modern microservices For both cloud-native and on-premise environments.
    [Show full text]
  • A Randomized Controlled Trial on the Impact of Polyglot Programming in a Database Context
    A Randomized Controlled Trial on the Impact of Polyglot Programming in a Database Context Phillip Merlin Uesbeck University of Nevada, Las Vegas Las Vegas, NV, USA [email protected] https://orcid.org/0000-0001-8182-9942 Andreas Stefik University of Nevada, Las Vegas Las Vegas, NV, USA stefi[email protected] Abstract Using more than one programming language in the same project is common practice. Often, additional languages might be introduced to projects to solve specific issues. While the practice is common, it is unclear whether it has an impact on developer productivity. In this paper, we present a pilot study investigating what happens when programmers switch between program- ming languages. The experiment is a repeated measures double-blind randomized controlled trial with 3 groups with various kinds of code switching in a database context. Results provide a rigorous testing methodology that can be replicated by us or others and a theoretical backing for why these effects might exist from the linguistics literature. 2012 ACM Subject Classification Software and its engineering → Software development tech- niques Keywords and phrases human-factors, randomized controlled trial, polyglot programming Digital Object Identifier 10.4230/OASIcs.PLATEAU.2018.1 Funding This work was partially funded by the NSF under grants 1644491, 1738259, and 1640131. 1 Introduction Polyglot programming, using more than one computer language in the same programming context, is common. Evidence from Tomassetti and Torchiano suggests that 97% of open source projects on Github use two or more computer languages [19], with the number of languages per project averaging about 5 [11, 19]. Seeing how common the use of multiple programming languages is, the question of its productivity impact on developers at various levels becomes salient.
    [Show full text]
  • Towards a Polyglot Framework for Factorized ML
    Towards A Polyglot Framework for Factorized ML David Justo Shaoqing Yi Lukas Stadler University of California, San Diego University of California, San Diego Oracle Labs [email protected] [email protected] [email protected] Nadia Polikarpova Arun Kumar University of California, San Diego University of California, San Diego [email protected] [email protected] ABSTRACT to always denormalize and materialize a bloated single table, fac- Optimizing machine learning (ML) workloads on structured data torized ML techniques rewrite and push ML computations down is a key concern for data platforms. One class of optimizations to the base tables [23, 34, 48, 49]. This is a form of cross-algebraic called “factorized ML” helps reduce ML runtimes over multi-table query optimization bridging relational algebra and linear algebra datasets by pushing ML computations down through joins, avoid- (LA) [35]. To enable factorized ML for many statistical ML algo- ing the need to materialize such joins. The recent Morpheus system rithms in one go, the Morpheus project [23] generalized factorized automated factorized ML to any ML algorithm expressible in lin- ML, devising a framework that automatically factorizes any statis- ear algebra (LA). But all such prior factorized ML/LA stacks are tical ML algorithm expressed in terms of a subset of linear algebra restricted by their chosen programming language (PL) and run- (LA) operators. time environment, limiting their reach in emerging industrial data Problem: Polyglot Industrial Data Science Landscape. The in- science environments with many PLs (R, Python, etc.) and even dustrial data science landscape has recently exploded in its linguis- cross-PL analytics workflows.
    [Show full text]
  • The University of Alabama in Huntsville Knowledge, Programming, & Programming Cultures: LISP, C, and Ada JRC Research Report No
    (NASA-CR-18^220) KNOWLEDGE, PROGRAMMING, N92-17778 AND PROGRAMMING CULTURES: LISP, C, AND Ada Final Report (Alabama Univ.) 105 pCSCL 09B Unclas G3/61 0043796 The University of Alabama in Huntsville Knowledge, Programming, & Programming Cultures: LISP, C, and Ada JRC Research Report No. 90-04 February, 1990 Final Report D.O. 34 Prepared for Mr. Tim Crumbley NASA Marshall Space Flight Center By Daniel Rochowiak Research Scientist Johnson Research Center University of Alabama in Huntsville Hutsville, AL 35899 (205) 895-6583 (205) 895-6672 PREFACE This report contains the results of research conducted under NASA Contract NAS 8-36955, D.O. 34, Task 2,"Ada as an implementation language for knowledge based system." The purpose of the research was to compare Ada to other programming languages. To this end the report focuses on the programming languages Ada, C, and LISP, the programming cultures that surround them, and the programming paradigms they support. This report has been prepared for Mr. Tim Crumbley of Marshall Space Flight Center. I wish to thank E. Howard Davis, Dion Boyett, and Ted Kerstetter who at one time or another worked on this project. The papers based on this research contained in the Appendix provide an overview of the project. TABLE OF CONTENTS Preface Chapter 1 Introduction 1 Chapter 2 LISP: History and Philosophy 3 0 Introduction 3 1 Historical Background 3 2 The LISP Language 5 3 Issues 6 4 Discussion: The Attraction of LISP 11 Chapter3 C: History and Philosophy 14 0 Introduction 14 1 Historical Background 14 2 The C Language
    [Show full text]
  • Xcoax 2017 Lisbon: Unusable for Programming
    UNUSABLE FOR PROGRAMMING DANIEL TEMKIN Independent, New York, USA [email protected] 2017.xCoAx.org Lisbon Abstract Computation Esolangs are programming languages designed for Keywords Communication Aesthetics non-practical purposes, often as experiments, par- Esolangs & X odies, or experiential art pieces. A common goal of Programming languages esolangs is to achieve Turing Completeness: the capa- Code art bility of implemen ing algorithms of any complexity. Oulipo They just go about getting to Turing Completeness Tangible Computing with an unusual and impractical set of commands, or unexpected ways of representing code. However, there is a much smaller class of esolangs that are en- tirely “Unusable for Programming.” These languages explore the very boundary of what a programming language is; producing unstable programs, or for which no programs can be written at all. This is a look at such languages and how they function (or fail to). 92 1. INTRODUCTION Esolangs (for “esoteric programming languages”) include languages built as thought experiments, jokes, parodies critical of language practices, and arte- facts from imagined alternate computer histories. The esolang Unlambda, for example, is both an esolang masterpiece and typical of the genre. Written by David Madore in 1999, Unlambda gives us a version of functional programming taken to its most extreme: functions can only be applied to other functions, returning more functions, all of them unnamed. It’s a cyberlinguistic puzzle intended as a challenge and an experiment at the extremes of a certain type of language design. The following is a program that calculates the Fibonacci sequence. The code is nearly opaque, with little indication of what it’s doing or how it works.
    [Show full text]