Multi Paradigm Languages Pdf

Total Page:16

File Type:pdf, Size:1020Kb

Multi Paradigm Languages Pdf Multi paradigm languages pdf Continue Go to the main content of the Wikimedia article list This article may have contained original research. Please improve it by checking the claims made and adding links. Applications consisting only of original research must be removed. (August 2009) (Find out How and When to Delete This Message Pattern) Programming Paradigm Action Agent-Oriented Array-Oriented Automata-Based Parallel Computational Relative Data Programming Initiative Declarative (Contrast: Imperative) Functional Functional Logic Pure Functional Logic Stolen Response to Set Parallel Logic Functional Logic Inductive Logic Restriction Logic Parallel Limitation of Flow Flow Logic based on Reactive Ontology Differentiable Dynamic/scripting Event-driven Function-level (contrast: Value-level) Concatenative Generic Imperative (contrast: Declar Procedural Object-Oriented Polymorphic Intentional Language-Oriented Domain-Specific Literate Natural Programming Language Metaprogramming Automatic Inductive Programming Reflecting Attribute-Oriented Macro Pattern Unstructured (contrast: Structured) Array Nondeterministic Parallel Computing Process Oriented Probability-quantum-setting-theoretical stack-based Structured (contrast: Unstructured) Block-structured Con Object-oriented actor-based class parallel prototype-based division of problems: Aspect-oriented Role-oriented Recurrible Symbolic Value Level (contrast : Function-level) vte programming languages can be grouped by number and types of supported paradigms. The paradigm summarizes a brief reference to the programming paradigms listed in this article. Parallel programming - there are language designs for co-ord, they can include multi-stemming, support for distributed computing, messaging, shared resources (including general memory), or Futures Actor programming - simultaneous calculations with subjects, that make local decisions in response to the environment (capable of selfish or competitive behavior) Limited programming - the relationship between variables is expressed as limitations (or network restrictions), directing acceptable solutions (uses a limitation satisfaction or simple) Data Flow Programming - forced recalculation of formulas when changing data values (e.g. spreadsheets) Declarative programming - describes what it should calculate without specifying detailed state changes c.f. imperative programming (functional and logical programming are the main subgroups of declarative programming Distributed programming - to have support for several standalone computers that communicate through computer networks Functional programming - uses assessment of mathematical functions and avoids state and mutated data Of General programming - uses algorithms written in terms of to-be-specified-later types, which are then instantly instantly для конкретных типов, предусмотренных в качестве параметров Императив программирования - явные заявления, которые меняют состояние программы логики программирования - использует явную математическую логику для программирования Metaprogramming - написание программ, которые пишут или манипулируют другими программами (или сами) в качестве своих данных, или которые делают часть работы в момент компиляции, что в противном случае было бы сделано во время метапрограммирования шаблона - методы метапрограммирования, в которых шаблоны используются компилятором для генерации временного кода. который сливается компилятором с остальной частью исходный код, а затем компилируется Отражающее программирование - методы метапрограммирования, в которых программа изменяет или расширяет себя Объектно-ориентированное программирование - использует структуры данных, состоящие из полей данных и методов вместе с их взаимодействиями (объектами) для разработки программ класса - объектно-ориентированного программирования, в котором наследование достигается путем определения классов объектов , по сравнению с самими объектами Прототип на основе - объектно-ориентированного программирования, что позволяет избежать классов и реализует наследование через клонирование экземпляров трубопровода программирования - простое изменение синтаксиса, чтобы добавить синтаксис в гнездо функции вызовов на язык, первоначально разработанный без каких- либо Правил на основе программирования - сеть правил большого пальца, которые составляют базу знаний и могут быть использованы для экспертных систем и проблемного вычета и разрешения визуального программирования - манипулирование элементами программы графически, а не путем их also termed diagrammatic programming[1] Language overview List of multi-paradigm programming languages Language Number of Paradigms Concurrent Constraints Dataflow Declarative Distributed Functional Metaprogramming Generic Imperative Logic Reflection Object- oriented Pipelines Visual Rule-based Other paradigms Ada[2][3][ 4][5][6] 5 Yes[a 1] No No No Yes No No Yes Yes No No Yes[a 2] No No No No ALF 2 No No No No No Yes No No No Yes No No No No No No AmigaE[citation needed] 2 No No No No No No No No Yes No No Yes[a 2] No No No No APL 3 No No No No No Yes No No Yes No No No No No No Array (multi-dimensional) BETA[citation needed] 3 No No No No No Yes No No Yes No No Yes[a 2] No No No No C++ 7 (15) Yes[7][8][9] Library[10] Library[11][12] Library[13][14] Library[15][16] Yes Yes[17] Yes[a 3] Yes Library[18][19] Library[20] Yes[a 2] Yes[21] No Library[22] Array (multi-dimensional; using STL) C# 6 (7) Yes No Library[a 4] No No Yes[a 5] No Yes Yes No Yes Yes[a 2] No No No reactive[a 6] ChucK[citation needed] 3 Yes No No No No No No No Yes No No Yes[a 2] No No No No Claire 2 No No No No No Yes No No No No No Yes[a 2] No No No No Clojure 5 Yes[23][24] No No Yes No Yes[25] Yes[26] No No No No Yes[28] Editor[29] No Multiple dispatch,[30] Agents[31] Common Lisp 5 Library[32] Library[33] Library[34] Yes[35] Yes[35] Да Да Да, Да Библиотека ( Да, Да Да (несколько диспетчерских, метод комбинаций) » 39 »a2» Библиотека »40» Нет библиотеки » Множественная диспетчерская служба, мета-OOP системы, язык является extensible через метапрограммирование. Curl 5 No No No No No Yes No Yes[a 3] Yes No Yes Yes[a 2] No No No No Curry 4 Yes Yes No No No Yes No No No Yes No No No No No No D (version 2.0)[43][44] 6 Yes[a 7] No No No No Yes Yes[45][a 3] Yes[a 3] Yes No No Yes[a 2] No No No No Dylan[citation needed] 3 No No No No No Yes No No No No Yes Yes[a 2] No No No No E 3 Yes No No No Yes No No No No No No Yes[a 2] No No No No ECMAScript[46][47] (ActionScript, E4X, JavaScript, JScript) 4 (5) partial (promises , native extensions)[a 8] No No Library[48][49][50] No Yes No No Yes No Yes Yes[a 9] Library[51][52] Editor[53] No reactive,[a 10][54] event driven[a 11][a 12] Embarcadero Delphi 3 No No No No No No No Yes[a 3] Yes No No Yes[a 2] No No No No Erlang 3 Yes No No Yes Yes Yes No No No No No No Yes No No No Elixir 4 Yes No No No Yes Yes Yes No No No No No Yes No No No Elm 6 Yes No Yes Yes No Yes No Yes No No No No Yes No No reactive F# 7 (8) Yes[a 7] No Library[a 4] Yes No Yes No Yes Yes No Yes Yes[a 2] No No No reactive[a 6] Fortran 4 (5) Yes No No No No Yes[a 13] No Yes[a 14] No No No Yes[a 2] No No No Array (multi-dimensional) Go 4 Yes No No No No No No No Yes No Yes No Yes No No No Haskell 8 (15) Yes Library[55] Library[56] Yes Library[57] Yes (lazy) Yes[58] Yes Yes Library[59] No Immutable Yes Yes Library[60] literate, reactive, dependent types (partial) Io 4 Yes[a 7] No No No No Yes No No Yes No No Yes[a 9] No No No No J[citation needed] 3 No No No No No Yes No No Yes No No Yes[a 2] No No No No Java 6 Yes Library[61] Library[62] No No Yes No Yes Yes No Yes Yes[a 2] No No No No Julia 9 (17) Yes Library[63] Library[64][65] Library[66] Yes Yes (eager) Yes Yes Yes Library[67] Yes Yes (multiple dispatch , не традиционный одиночный) Да Никакая библиотека »68»69» Многократная отправка, Array (многомерный); optionally lazy[70] and reactive (with libraries) Kotlin 8 Yes No No No No Yes Yes Yes Yes No Yes Yes Yes No No No LabVIEW 4 Yes No Yes No No No No No No No No Yes No Yes No No Lava 2 No No No No No No No No No No No Yes[a 2] No Yes No No LispWorks (version 6.0 with support for symmetric multi-processing, rules, logic (Prolog), CORBA) 9 Yes No No No Yes Yes Yes No Yes Yes Yes Yes[a 2] No No Yes No Lua[citation needed] 3 No No No No No Yes No No Yes No No Yes[a 9] No No No No MATLAB 6 (10) Toolbox[71] Toolbox[72] Yes[73] No Toolbox[74] No Yes[75] Yes[76] No No Yes[77] Yes[78] No Yes[79] No Array (multi- dimensional) Nemerle 7 Yes No No No No Yes Yes Yes Yes No Yes Yes[a 2] No No No No Object Pascal 4 Yes No No No No Yes No No Yes No No Yes[a 2] No No No No OCaml 4 No No No No No Yes No Yes Yes No No Yes[a 2] No No No No Oz 11 Yes Yes Yes Yes Yes Yes No No Yes Yes No Yes[a 2] No Yes No Perl[citation needed] 8 (9) (9) Library[81] Yes[82] No No Yes Yes No Yes No Yes[a 2] Yes[a 2] Yes No No No PHP[83][84][85] 4 No No No No No Yes No No Yes No Yes Yes[a 2] No No No No Poplog 3 No No No No No Yes No No Yes Yes No No No No No No Prograph 3 No No Yes No No No No No No No No Yes[a 2] No Yes No No Python 5 (10) Library[86][87] Library[88] No No Library[89] Partial Yes[90][91] Yes[92][93] Yes Library[94] Yes Yes[a 2] No Editor[95] No structured R 4 No No No No No Yes No No Yes No Yes Yes Yes[96] No No Array (multi-dimensional) Racket 6 Yes[97] No No No No Yes Yes No Yes Yes Yes Yes No No No No Raku 10 Yes[98] Yes[99] Yes[100] Нет Библиотеки, Да Да, Да, Да, Да, Нет Да, Да, Да, Да, Да, нет, нет, нет нескольких диспетчеров, ленивых списков, реактивных.
Recommended publications
  • GNU/Linux AI & Alife HOWTO
    GNU/Linux AI & Alife HOWTO GNU/Linux AI & Alife HOWTO Table of Contents GNU/Linux AI & Alife HOWTO......................................................................................................................1 by John Eikenberry..................................................................................................................................1 1. Introduction..........................................................................................................................................1 2. Symbolic Systems (GOFAI)................................................................................................................1 3. Connectionism.....................................................................................................................................1 4. Evolutionary Computing......................................................................................................................1 5. Alife & Complex Systems...................................................................................................................1 6. Agents & Robotics...............................................................................................................................1 7. Statistical & Machine Learning...........................................................................................................2 8. Missing & Dead...................................................................................................................................2 1. Introduction.........................................................................................................................................2
    [Show full text]
  • X-Machines for Agent-Based Modeling FLAME Perspectives CHAPMAN & HALL/CRC COMPUTER and INFORMATION SCIENCE SERIES
    X-Machines for Agent-Based Modeling FLAME Perspectives CHAPMAN & HALL/CRC COMPUTER and INFORMATION SCIENCE SERIES Series Editor: Sartaj Sahni PUBLISHED TITLES ADVERSARIAL REASONING: COMPUTATIONAL APPROACHES TO READING THE OPPONENT’S MIND Alexander Kott and William M. McEneaney COMPUTER-AIDED GRAPHING AND SIMULATION TOOLS FOR AUTOCAD USERS P. A. Simionescu DELAUNAY MESH GENERATION Siu-Wing Cheng, Tamal Krishna Dey, and Jonathan Richard Shewchuk DISTRIBUTED SENSOR NETWORKS, SECOND EDITION S. Sitharama Iyengar and Richard R. Brooks DISTRIBUTED SYSTEMS: AN ALGORITHMIC APPROACH, SECOND EDITION Sukumar Ghosh ENERGY-AWARE MEMORY MANAGEMENT FOR EMBEDDED MULTIMEDIA SYSTEMS: A COMPUTER-AIDED DESIGN APPROACH Florin Balasa and Dhiraj K. Pradhan ENERGY EFFICIENT HARDWARE-SOFTWARE CO-SYNTHESIS USING RECONFIGURABLE HARDWARE Jingzhao Ou and Viktor K. Prasanna FROM ACTION SYSTEMS TO DISTRIBUTED SYSTEMS: THE REFINEMENT APPROACH Luigia Petre and Emil Sekerinski FUNDAMENTALS OF NATURAL COMPUTING: BASIC CONCEPTS, ALGORITHMS, AND APPLICATIONS Leandro Nunes de Castro HANDBOOK OF ALGORITHMS FOR WIRELESS NETWORKING AND MOBILE COMPUTING Azzedine Boukerche HANDBOOK OF APPROXIMATION ALGORITHMS AND METAHEURISTICS Teofilo F. Gonzalez HANDBOOK OF BIOINSPIRED ALGORITHMS AND APPLICATIONS Stephan Olariu and Albert Y. Zomaya HANDBOOK OF COMPUTATIONAL MOLECULAR BIOLOGY Srinivas Aluru HANDBOOK OF DATA STRUCTURES AND APPLICATIONS Dinesh P. Mehta and Sartaj Sahni PUBLISHED TITLES CONTINUED HANDBOOK OF DYNAMIC SYSTEM MODELING Paul A. Fishwick HANDBOOK OF ENERGY-AWARE AND GREEN COMPUTING Ishfaq Ahmad and Sanjay Ranka HANDBOOK OF GRAPH THEORY, COMBINATORIAL OPTIMIZATION, AND ALGORITHMS Krishnaiyan “KT” Thulasiraman, Subramanian Arumugam, Andreas Brandstädt, and Takao Nishizeki HANDBOOK OF PARALLEL COMPUTING: MODELS, ALGORITHMS AND APPLICATIONS Sanguthevar Rajasekaran and John Reif HANDBOOK OF REAL-TIME AND EMBEDDED SYSTEMS Insup Lee, Joseph Y-T.
    [Show full text]
  • The Evolution of Lisp
    1 The Evolution of Lisp Guy L. Steele Jr. Richard P. Gabriel Thinking Machines Corporation Lucid, Inc. 245 First Street 707 Laurel Street Cambridge, Massachusetts 02142 Menlo Park, California 94025 Phone: (617) 234-2860 Phone: (415) 329-8400 FAX: (617) 243-4444 FAX: (415) 329-8480 E-mail: [email protected] E-mail: [email protected] Abstract Lisp is the world’s greatest programming language—or so its proponents think. The structure of Lisp makes it easy to extend the language or even to implement entirely new dialects without starting from scratch. Overall, the evolution of Lisp has been guided more by institutional rivalry, one-upsmanship, and the glee born of technical cleverness that is characteristic of the “hacker culture” than by sober assessments of technical requirements. Nevertheless this process has eventually produced both an industrial- strength programming language, messy but powerful, and a technically pure dialect, small but powerful, that is suitable for use by programming-language theoreticians. We pick up where McCarthy’s paper in the first HOPL conference left off. We trace the development chronologically from the era of the PDP-6, through the heyday of Interlisp and MacLisp, past the ascension and decline of special purpose Lisp machines, to the present era of standardization activities. We then examine the technical evolution of a few representative language features, including both some notable successes and some notable failures, that illuminate design issues that distinguish Lisp from other programming languages. We also discuss the use of Lisp as a laboratory for designing other programming languages. We conclude with some reflections on the forces that have driven the evolution of Lisp.
    [Show full text]
  • Ofthe European Communities
    ISSN 0378-6978 Official Journal L 81 Volume 27 of the European Communities 24 March 1984 English edition Legislation Contents I Acts whose publication is obligatory II Acts whose publication is not obligatory Council 84/ 157/EEC : * Council Decision of 28 February 1984 adopting the 1984 work programme for a European programme for research and development in information technologies (ESPRIT) 2 Acts whose titles are printed in light type are those relating to day-to-day management of agricultural matters, and are generally valid for a limited period . The titles of all other Acts are printed in bold type and preceded by an asterisk . 24 . 3 . 84 Official Journal of the European Communities No L81 / 1 II (Acts whose publication is not obligatory) COUNCIL COUNCIL DECISION of 28 February 1984 adopting the 1984 work programme for a European programme for research and development in information technologies (ESPRIT) (84/ 157/EEC) THE COUNCIL OF THE EUROPEAN HAS DECIDED AS FOLLOWS : COMMUNITIES, Having regard to the Treaty establishing the Article 1 European Economic Community, J The ESPRIT work programme as set out in the Having regard to Council Decision 84/ 130/EEC of Annex is hereby adopted for 1984 . 28 February 1984 concerning a European pro­ gramme for research and development in informa­ tion technologies ( ESPRIT) ('), and in particular Article 2 Article 3 (2) thereof, This Decision shall take effect on the day of its Having regard to the draft work programme submit­ publication in the Official Journal of the European ted by the Commission , Communities . Whereas, at talks organized by the Commission ser­ vices , industry and the academic world have given Done at Brussels , 28 February 1984 .
    [Show full text]
  • The Design of Objectclass, a Seamless Object-Oriented
    ~,3 HEWLETT ~~ PACKARD The Design ofObjectClass, A Seamless Object-Oriented Extension of Pop11 Stephen F. Knight Intelligent Networked Computing Laboratory HP Laboratories Bristol HPL-93-98 November, 1993 object-oriented, The ObjectClass library adds object-oriented multi-methods, programming into Pop11. In contrast to similar Popll previous work, its main goal is to integrate the procedural and object-oriented paradigms in the most natural and fluent way. The article describes the problems encountered and the solutions adopted in the ObjectClass work with those of other hybridization efforts such as C++ and the Common Lisp Object System CLOS. InternalTo be published Accessionin the Dateproceedings Only of ExpertSystems 93, December, 1993. © Copyright Hewlett-Packard Company 1993 1 Seamless Integration 1.1 Object Oriented Programming The consensus notion of object-oriented programming is not specifically addressed in this article. It is apparent that the term "object-oriented" is both informal and open to many interpretations by different authors. A useful discussion of this topic may be found in the appendix of [Booch91]. Here, the term object-oriented is taken to mean two things. Firstly, that datatypes are hierarchical; possibly involving complex, tangled hierarchies. Secondly, that some pro­ cedures, called generic procedures, are written in separate units, called methods. The method units are distinguished by the types of formal parameters they handle. The generic procedure is a fusion of these methods to form a single entry point. The terminology adopted is that of the Common Lisp Object System (CLOS) because that system has a sufficiently rich vocabulary to discuss the other approaches. In this terminology, classes are datatypes which can be combined through inheritance; methods are individual code units; generic procedures are the entry point of a collection of identically named methods; and slots are what are commonly called instance variables or fields.
    [Show full text]
  • Ginger Documentation Release 1.0
    Ginger Documentation Release 1.0 sfkl / gjh Nov 03, 2017 Contents 1 Contents 3 2 Help Topics 27 3 Common Syntax 53 4 Design Rationales 55 5 The Ginger Toolchain 83 6 Low-Level Implementation 99 7 Release Notes 101 8 Indices and tables 115 Bibliography 117 i ii Ginger Documentation, Release 1.0 This documentation is still very much work in progress The aim of the Ginger Project is to create a modern programming language and its ecosystem of libraries, documen- tation and supporting tools. The Ginger language draws heavily on the multi-language Poplog environment. Contents 1 Ginger Documentation, Release 1.0 2 Contents CHAPTER 1 Contents 1.1 Overview of Ginger Author Stephen Leach Email [email protected] 1.1.1 Background Ginger is our next evolution of the Spice project. Ginger itself is a intended to be a rigorous but friendly programming language and supporting toolset. It includes a syntax-neutral programming language, a virtual machine implemented in C++ that is designed to support the family of Spice language efficiently, and a collection of supporting tools. Spice has many features that are challenging to support efficiently in existing virtual machines: pervasive multiple values, multiple-dispatch, multiple-inheritance, auto-loading and auto-conversion, dynamic virtual machines, implicit forcing and last but not least fully dynamic typing. The virtual machine is a re-engineering of a prototype interpreter that I wrote on holiday while I was experimenting with GCC’s support for FORTH-like threaded interpreters. But the toolset is designed so that writing alternative VM implementations is quite straightforward - and we hope to exploit that to enable embedding Ginger into lots of other systems.
    [Show full text]
  • Evolved Quantum Mechanical Construction Kits?
    (CHANGING DRAFT: Stored copies may be out of date.) Evolved Quantum Mechanical Construction Kits for Life? (Possible roles in evolution of minds and mathematical abilities.) The Turing-inspired Meta-Morphogenesis (M-M) project asks: How can a cloud of dust give birth to a planet full of living things as diverse as life on Earth? Part of the answer: By producing layers of new derived construction kits based on the fundamental construction kit: Physics/Chemistry. (Including quantum mechanisms.) Aaron Sloman School of Computer Science, University of Birmingham. This paper is part of a steadily expanding exploration of types of construction kit produced and used in evolution, begun here: http://www.cs.bham.ac.uk/research/projects/cogaff/misc/construction-kits.html Additional topics are included or linked at the main M-M web page: http://www.cs.bham.ac.uk/research/projects/cogaff/misc/meta-morphogenesis.html JUMP TO TABLE OF CONTENTS Begun: 21 May 2015 (Based partly on earlier documents on the Meta-Morphogenesis project web site. ) Last updated: 4 Nov 2018 24 May 2015: extended and reorganised. 16 Nov 2015 (Schrödinger’s role.) 21 May 2015: removed from the longer construction-kit document. This paper is http://www.cs.bham.ac.uk/research/projects/cogaff/misc/quantum-evolution.html NOTE: some of the methodology being developed here is presented in a separate document on "Explanations of possibilities", defending Chapter 2 of The Computer Revolution in Philosophy (1978) against criticisms made by reviewers: http://www.cs.bham.ac.uk/research/projects/cogaff/misc/explaining-possibility.html
    [Show full text]
  • Integrating Prolog Into the Poplog Environment
    INTEGRATING PROLOG INTO THE POPLOG ENVIRONMENT Chris Mellish and Steve Hardy* Cognitive Studies Programme, University of Sussex, Falmer, BRIGHTON, UK. ABSTRACT Although Prolog undoubtedly has its good "syntactic sugar" has been provided in POP-11 to points, there are some tasks (such as writing a make it easy to create closures; an expression screen editor or network interface controller) for such as: which it is not the language of choice. The most natural computational concepts [2] for these tasks are hard to reconcile with Prolog's declarative doubled 3 %) nature. Just as there is a need for even the most committed Prolog programmer to use "conventional" evaluates to a closure which when later invoked languages for some tasks, so too is there a need calls the procedure DOUBLE with argument 3. for "logic" oriented components in conventional applications programs, such as CAD systems [73 and relational databases [5]. At Sussex, the problems II BACKTRACKING AND CONTINUATION PASSING of integrating logic with procedural programming are being addressed by two projects. One of these In this section, we illustrate, using [43 involves a distributed ring of processors examples written in POP-11, how backtracking communicating by message passing. The other programs are implemented in POPLOG using a project is the POPLOG system, a mixed language AI technique called continuation passing. Although programming environment which runs on conventional examples are shown in POP-11 for clarity, in hardware. This paper describes the way in which we practice Prolog programs are compiled directly to have integrated Prolog into POPLOG. POPLOG virtual machine code. Continuation passing is a technique in which I THE POPLOG ENVIRONMENT procedures are given an additional argument, called a continuation.
    [Show full text]
  • The Copyright Law of the United States (Title 17, U.S
    NOTICE WARNING CONCERNING COPYRIGHT RESTRICTIONS: The copyright law of the United States (title 17, U.S. Code) governs the making of photocopies or other reproductions of copyrighted material. Any copying of this document without permission of its author may be prohibited by law. THE POPLOG PROGRAMMING SYSTEM Steven Hardy November 1982 Cognitive Studies Research Paper Serial no: CSRP 003 Th University of Sussex Cognitive Studies Programme School of Social Sciences Falmer Brighton BN1 9QN ,1 ? ABSTRACT This chapter describes a typical Artificial Intelligence (AI) programming system and shows how it differs from conventional programming systems. The particular system described is P0PL06. It incorporates a powerful screen editor, a PROLOG compiler and a POP-11 compiler. POP-11 is a dialect of POP-2 which has been extensively developed at Sussex University. Other dialects of POP-2 exist, notably GLUE and WonderPOP, but all share the important features of the original which is described in CBURSTALL 713. It is assumed that the reader is familiar with a range of conventional programming languages, such as PASCAL and BASIC. It is shown that AI programming systems, and in particular POPLOG, are used because of advantages independent of AI itself. In fact, POPLOG could usefully be employed for any application where program development costs are significant. 1) INTRODUCTION Artificial Intelligence (AI) research involves, among other things, making computers do tasks that are easy for people but hard for computers - such as understanding English or interpreting pictures. Since this is difficult, AI researchers use programming systems which facilitate the development of programs and are prepared to sacrifice some run-time efficiency to pay for this.
    [Show full text]
  • A Development Environment for Large Natural Language Grammars
    A Development Environment for Large Natural Language Grammars John Carroll, Ted Briscoe (jac / ejb @cl.cam.ac.uk) Computer Laboratory, University of Cambridge Pembroke Street, Cambridge, CB2 3QG, UK Claire Grover ([email protected]) Centre for Cognitive Science, University of Edinburgh 2 Buccleuch Place, Edinburgh, EH8 9LW, UK July 1991 The Grammar Development Environment (GDE) is a powerful software tool de- signed to help a linguist or grammarian experiment with and develop large Natu- ral Language grammars. (However, it is also being used to help teach students on courses in Linguistics and Computational Linguistics). This report describes the grammatical formalism employed by the GDE, and contains detailed instructions on how to use the system1. The GDE is implemented in Common Lisp; the source code is available as part of the ‘Alvey Natural Language Tools’ from the University of Edinburgh Artificial Intelligence Applications Institute. 1This report supersedes University of Cambridge Computer Laboratory Technical Report no. 127 which describes a previous version of the GDE. 1 Contents 1 Introduction 5 1.1 An Example GDE Session . 6 1.2 Background . 9 2 The Metagrammatical Formalism 10 2.1 Feature Declarations . 11 2.2 Set Declarations . 12 2.3 Alias Declarations . 12 2.4 Category Declarations . 13 2.5 Extension Declarations . 14 2.6 Top Declarations . 14 2.7 Immediate Dominance Rule Declarations . 15 2.8 Phrase Structure Rules . 17 2.9 Propagation Rule Declarations . 17 2.10 Default Rule Declarations . 18 2.11 Metarule Declarations . 19 2.12 Linear Precedence Rule Declarations . 22 2.13 Word Declarations . 22 2.14 Rule Patterns and Grammatical Categories .
    [Show full text]
  • Topics in Programming Languages, a Philosophical Analysis Through the Case of Prolog
    i Topics in Programming Languages, a Philosophical Analysis through the case of Prolog Luís Homem Universidad de Salamanca Facultad de Filosofia A thesis submitted for the degree of Doctor en Lógica y Filosofía de la Ciencia Salamanca 2018 ii This thesis is dedicated to family and friends iii Acknowledgements I am very grateful for having had the opportunity to attend classes with all the Epimenides Program Professors: Dr.o Alejandro Sobrino, Dr.o Alfredo Burrieza, Dr.o Ángel Nepomuceno, Dr.a Concepción Martínez, Dr.o Enrique Alonso, Dr.o Huberto Marraud, Dr.a María Manzano, Dr.o José Miguel Sagüillo, and Dr.o Juan Luis Barba. I would like to extend my sincere thanks and congratulations to the Academic Com- mission of the Program. A very special gratitude goes to Dr.a María Manzano-Arjona for her patience with the troubles of a candidate with- out a scholarship, or any funding for the work, and also to Dr.o Fer- nando Soler-Toscano, for his quick and sharp amendments, corrections and suggestions. Lastly, I cannot but offer my heartfelt thanks to all the members and collaborators of the Center for Philosophy of Sciences of the University of Lisbon (CFCUL), specially Dr.a Olga Pombo, who invited me to be an integrated member in 2011. iv Abstract Programming Languages seldom find proper anchorage in philosophy of logic, language and science. What is more, philosophy of language seems to be restricted to natural languages and linguistics, and even philosophy of logic is rarely framed into programming language topics. Natural languages history is intrinsically acoustics-to-visual, phonetics- to-writing, whereas computing programming languages, under man– machine interaction, aspire to visual-to-acoustics, writing-to-phonetics instead, namely through natural language processing.
    [Show full text]
  • Predicate Dispatching in the Common Lisp Object System by Aaron Mark Ucko S.B
    Predicate Dispatching in the Common Lisp Object System by Aaron Mark Ucko S.B. in Theoretical Mathematics, S.B. in Computer Science, both from the Massachusetts Institute of Technology (2000) Submitted to the Department of Electrical Engineering and Computer Science in partial fulfillment of the requirements for the degree of Master of Engineering in Computer Science and Engineering at the MASSACHUSETTS INSTITUTE OF TECHNOLOGY June 2001 © Massachusetts Institute of Technology 2001. All rights reserved. Author................................................................ Department of Electrical Engineering and Computer Science May 11, 2001 Certified by. Howard E. Shrobe Principal Research Scientist Thesis Supervisor Accepted by . Arthur C. Smith Chairman, Department Committee on Graduate Students 2 Predicate Dispatching in the Common Lisp Object System by Aaron Mark Ucko Submitted to the Department of Electrical Engineering and Computer Science on May 11, 2001, in partial fulfillment of the requirements for the degree of Master of Engineering in Computer Science and Engineering Abstract I have added support for predicate dispatching, a powerful generalization of other dis- patching mechanisms, to the Common Lisp Object System (CLOS). To demonstrate its utility, I used predicate dispatching to enhance Weyl, a computer algebra system which doubles as a CLOS library. My result is Dispatching-Enhanced Weyl (DEW), a computer algebra system that I have demonstrated to be well suited for both users and programmers. Thesis Supervisor: Howard E. Shrobe Title: Principal Research Scientist 3 Acknowledgments I would like to thank the MIT Artificial Intelligence Laboratory for funding my studies and making this work possible. I would also like to thank Gregory Sullivan and Jonathan Bachrach for helping Dr.
    [Show full text]