The Principal Programming Paradigms See "Concepts, Techniques, and Models of Computer Programming"

Total Page:16

File Type:pdf, Size:1020Kb

The Principal Programming Paradigms See record Explanations Descriptive The principal programming paradigms See "Concepts, Techniques, and Models of Computer Programming". declarative programming The chart classifies programming paradigms according to their kernel XML, "More is not better (or worse) than less, just different." languages (the small core language in which all the paradigm’s S−expression abstractions can be defined). Kernel languages are ordered according to Data structures only the creative extension principle: a new concept is added when it cannot be Turing equivalent + procedure v1.08 © 2008 by Peter Van Roy encoded with only local transformations. Two languages that implement the same paradigm can nevertheless have very different "flavors" for the First−order + cell (state) Imperative programmer, because they make different choices about what Observable functional programming techniques and styles to facilitate. nondeterminism? Yes No programming programming Pascal, C When a language is mentioned under a paradigm, it means that part of + closure Imperative the language is intended (by its designers) to support the paradigm search Functional + search without interference from other paradigms. It does not mean that there programming programming is a perfect fit between the language and the paradigm. It is not enough + unification Scheme, ML + name SNOBOL, Icon, Prolog that libraries have been written in the language to support the paradigm. (equality) (unforgeable constant) The language’s kernel language should support the paradigm. When + continuation there is a family of related languages, usually only one member of the Deterministic ADT ADT + cell logic programming Continuation + cell + port (state) + closure family is mentioned to avoid clutter. The absence of a language does functional imperative (channel) not imply any kind of value judgment. programming programming programming Sequential + search Scheme, ML Event−loop object−oriented Haskell, ML, E CLU, OCaml, Oz programming State is the ability to remember information, or more precisely, to store a Relational & logic + by−need + thread programming sequence of values in time. Its expressive power is strongly influenced by programming synchron. + single assign. + nondeterministic + port E in one vat Stateful the paradigm that contains it. We distinguish four levels of expressiveness, Prolog, SQL Lazy Monotonic choice (channel) + thread functional which differ in whether the state is unnamed or named, deterministic or embeddings functional dataflow Nonmonotonic Multi−agent programming nondeterministic, and sequential or concurrent. The least expressive is Multi−agent functional programming (threaded state, e.g., DCGs and monads: + solver programming programming dataflow dataflow programming Java, OCaml programming programming unnamed, deterministic, and sequential). Adding concurrency gives Constraint (logic) Haskell Declarative Message−passing + thread declarative concurrent programming (e.g., synchrocells: unnamed, programming concurrent Concurrent logic Oz, Alice, AKL concurrent Concurrent deterministic, and concurrent). Adding nondeterministic choice gives CLP, ILOG Solver programming programming programming object−oriented concurrent logic programming (which uses stream mergers: unnamed, + thread Pipes, MapReduce Oz, Alice, Curry, Excel, Erlang, AKL programming nondeterministic, and concurrent). Adding ports or cells, respectively, + thread + by−need AKL, FGHC, FCP gives message passing or shared state (both are named, nondeterministic, Concurrent Shared−state + single assignment synchronization + synch. on partial termination + local cell concurrent and concurrent). Nondeterminism is important for real−world interaction constraint (e.g., client/server). Named state is important for modularity. programming Lazy Functional reactive Active object programming dataflow programming LIFE, AKL programming (FRP) Smalltalk, Oz, Axes orthogonal to this chart are typing, aspects, and domain−specificity. programming Object−capability Java, Alice + by−need synchronization Weak synchronous Typing is not completely orthogonal: it has some effect on expressiveness. Lazy programming programming + log Aspects should be completely orthogonal, since they are part of a Lazy concurrent declarative FrTime, SL CSP, Occam, Software program’s specification. A domain−specific language should be definable constraint concurrent in any paradigm (except when the domain needs a particular concept). programming programming + instantaneous computation E, Oz, Alice, transactional publish/subscribe, memory (STM) Oz, Alice, Curry Oz, Alice, Curry Strong synchronous tuple space (Linda) Metaprogramming is another way to increase the expressiveness of a programming SQL embeddings language. The term covers many different approaches, from higher−order Logic and Esterel, Lustre, Signal Dataflow and programming, syntactic extensibility (e.g., macros), to higher−order constraints Functional message passing Message passing Shared state programming combined with syntactic support (e.g., meta−object protocols and generics), to full−fledged tinkering with the kernel language Nondet. state (introspection and reflection). Syntactic extensibility and kernel language Unnamed state (seq. or conc.) Named state tinkering in particular are orthogonal to this chart. Some languages, such More declarative Less declarative as Scheme, are flexible enough to implement many paradigms in almost native fashion. This flexibility is not shown in the chart. .
Recommended publications
  • BUGS Code for Item Response Theory
    JSS Journal of Statistical Software August 2010, Volume 36, Code Snippet 1. http://www.jstatsoft.org/ BUGS Code for Item Response Theory S. McKay Curtis University of Washington Abstract I present BUGS code to fit common models from item response theory (IRT), such as the two parameter logistic model, three parameter logisitic model, graded response model, generalized partial credit model, testlet model, and generalized testlet models. I demonstrate how the code in this article can easily be extended to fit more complicated IRT models, when the data at hand require a more sophisticated approach. Specifically, I describe modifications to the BUGS code that accommodate longitudinal item response data. Keywords: education, psychometrics, latent variable model, measurement model, Bayesian inference, Markov chain Monte Carlo, longitudinal data. 1. Introduction In this paper, I present BUGS (Gilks, Thomas, and Spiegelhalter 1994) code to fit several models from item response theory (IRT). Several different software packages are available for fitting IRT models. These programs include packages from Scientific Software International (du Toit 2003), such as PARSCALE (Muraki and Bock 2005), BILOG-MG (Zimowski, Mu- raki, Mislevy, and Bock 2005), MULTILOG (Thissen, Chen, and Bock 2003), and TESTFACT (Wood, Wilson, Gibbons, Schilling, Muraki, and Bock 2003). The Comprehensive R Archive Network (CRAN) task view \Psychometric Models and Methods" (Mair and Hatzinger 2010) contains a description of many different R packages that can be used to fit IRT models in the R computing environment (R Development Core Team 2010). Among these R packages are ltm (Rizopoulos 2006) and gpcm (Johnson 2007), which contain several functions to fit IRT models using marginal maximum likelihood methods, and eRm (Mair and Hatzinger 2007), which contains functions to fit several variations of the Rasch model (Fischer and Molenaar 1995).
    [Show full text]
  • A Quick Reference to C Programming Language
    A Quick Reference to C Programming Language Structure of a C Program #include(stdio.h) /* include IO library */ #include... /* include other files */ #define.. /* define constants */ /* Declare global variables*/) (variable type)(variable list); /* Define program functions */ (type returned)(function name)(parameter list) (declaration of parameter types) { (declaration of local variables); (body of function code); } /* Define main function*/ main ((optional argc and argv arguments)) (optional declaration parameters) { (declaration of local variables); (body of main function code); } Comments Format: /*(body of comment) */ Example: /*This is a comment in C*/ Constant Declarations Format: #define(constant name)(constant value) Example: #define MAXIMUM 1000 Type Definitions Format: typedef(datatype)(symbolic name); Example: typedef int KILOGRAMS; Variables Declarations: Format: (variable type)(name 1)(name 2),...; Example: int firstnum, secondnum; char alpha; int firstarray[10]; int doublearray[2][5]; char firststring[1O]; Initializing: Format: (variable type)(name)=(value); Example: int firstnum=5; Assignments: Format: (name)=(value); Example: firstnum=5; Alpha='a'; Unions Declarations: Format: union(tag) {(type)(member name); (type)(member name); ... }(variable name); Example: union demotagname {int a; float b; }demovarname; Assignment: Format: (tag).(member name)=(value); demovarname.a=1; demovarname.b=4.6; Structures Declarations: Format: struct(tag) {(type)(variable); (type)(variable); ... }(variable list); Example: struct student {int
    [Show full text]
  • Lecture 2: Introduction to C Programming Language [email protected]
    CSCI-UA 201 Joanna Klukowska Lecture 2: Introduction to C Programming Language [email protected] Lecture 2: Introduction to C Programming Language Notes include some materials provided by Andrew Case, Jinyang Li, Mohamed Zahran, and the textbooks. Reading materials Chapters 1-6 in The C Programming Language, by B.W. Kernighan and Dennis M. Ritchie Section 1.2 and Aside on page 4 in Computer Systems, A Programmer’s Perspective by R.E. Bryant and D.R. O’Hallaron Contents 1 Intro to C and Unix/Linux 3 1.1 Why C?............................................................3 1.2 C vs. Java...........................................................3 1.3 Code Development Process (Not Only in C).........................................4 1.4 Basic Unix Commands....................................................4 2 First C Program and Stages of Compilation 6 2.1 Writing and running hello world in C.............................................6 2.2 Hello world line by line....................................................7 2.3 What really happens when we compile a program?.....................................8 3 Basics of C 9 3.1 Data types (primitive types)..................................................9 3.2 Using printf to print different data types.........................................9 3.3 Control flow.......................................................... 10 3.4 Functions........................................................... 11 3.5 Variable scope........................................................ 12 3.6 Header files.........................................................
    [Show full text]
  • A Tutorial Introduction to the Language B
    A TUTORIAL INTRODUCTION TO THE LANGUAGE B B. W. Kernighan Bell Laboratories Murray Hill, New Jersey 1. Introduction B is a new computer language designed and implemented at Murray Hill. It runs and is actively supported and documented on the H6070 TSS system at Murray Hill. B is particularly suited for non-numeric computations, typified by system programming. These usually involve many complex logical decisions, computations on integers and fields of words, especially charac- ters and bit strings, and no floating point. B programs for such operations are substantially easier to write and understand than GMAP programs. The generated code is quite good. Implementation of simple TSS subsystems is an especially good use for B. B is reminiscent of BCPL [2] , for those who can remember. The original design and implementation are the work of K. L. Thompson and D. M. Ritchie; their original 6070 version has been substantially improved by S. C. Johnson, who also wrote the runtime library. This memo is a tutorial to make learning B as painless as possible. Most of the features of the language are mentioned in passing, but only the most important are stressed. Users who would like the full story should consult A User’s Reference to B on MH-TSS, by S. C. Johnson [1], which should be read for details any- way. We will assume that the user is familiar with the mysteries of TSS, such as creating files, text editing, and the like, and has programmed in some language before. Throughout, the symbolism (->n) implies that a topic will be expanded upon in section n of this manual.
    [Show full text]
  • Command $Line; Done
    http://xkcd.com/208/ >0 TGCAGGTATATCTATTAGCAGGTTTAATTTTGCCTGCACTTGGTTGGGTACATTATTTTAAGTGTATTTGACAAG >1 TGCAGGTTGTTGTTACTCAGGTCCAGTTCTCTGAGACTGGAGGACTGGGAGCTGAGAACTGAGGACAGAGCTTCA >2 TGCAGGGCCGGTCCAAGGCTGCATGAGGCCTGGGGCAGAATCTGACCTAGGGGCCCCTCTTGCTGCTAAAACCAT >3 TGCAGGATCTGCTGCACCATTAACCAGACAGAAATGGCAGTTTTATACAAGTTATTATTCTAATTCAATAGCTGA >4 TGCAGGGGTCAAATACAGCTGTCAAAGCCAGACTTTGAGCACTGCTAGCTGGCTGCAACACCTGCACTTAACCTC cat seqs.fa PIPE grep ACGT TGCAGGTATATCTATTAGCAGGTTTAATTTTGCCTGCACTTGGTTGGGTACATTATTTTAAGTGTATTTGACAAG >1 TGCAGGTTGTTGTTACTCAGGTCCAGTTCTCTGAGACTGGAGGACTGGGAGCTGAGAACTGAGGACAGAGCTTCA >2 TGCAGGGCCGGTCCAAGGCTGCATGAGGCCTGGGGCAGAATCTGACCTAGGGGCCCCTCTTGCTGCTAAAACCAT >3 TGCAGGATCTGCTGCACCATTAACCAGACAGAAATGGCAGTTTTATACAAGTTATTATTCTAATTCAATAGCTGA >4 TGCAGGGGTCAAATACAGCTGTCAAAGCCAGACTTTGAGCACTGCTAGCTGGCTGCAACACCTGCACTTAACCTC cat seqs.fa Does PIPE “>0” grep ACGT contain “ACGT”? Yes? No? Output NULL >1 TGCAGGTTGTTGTTACTCAGGTCCAGTTCTCTGAGACTGGAGGACTGGGAGCTGAGAACTGAGGACAGAGCTTCA >2 TGCAGGGCCGGTCCAAGGCTGCATGAGGCCTGGGGCAGAATCTGACCTAGGGGCCCCTCTTGCTGCTAAAACCAT >3 TGCAGGATCTGCTGCACCATTAACCAGACAGAAATGGCAGTTTTATACAAGTTATTATTCTAATTCAATAGCTGA >4 TGCAGGGGTCAAATACAGCTGTCAAAGCCAGACTTTGAGCACTGCTAGCTGGCTGCAACACCTGCACTTAACCTC cat seqs.fa Does PIPE “TGCAGGTATATCTATTAGCAGGTTTAATTTTGCCTGCACTTG...G” grep ACGT contain “ACGT”? Yes? No? Output NULL TGCAGGTTGTTGTTACTCAGGTCCAGTTCTCTGAGACTGGAGGACTGGGAGCTGAGAACTGAGGACAGAGCTTCA >2 TGCAGGGCCGGTCCAAGGCTGCATGAGGCCTGGGGCAGAATCTGACCTAGGGGCCCCTCTTGCTGCTAAAACCAT >3 TGCAGGATCTGCTGCACCATTAACCAGACAGAAATGGCAGTTTTATACAAGTTATTATTCTAATTCAATAGCTGA
    [Show full text]
  • The C Programming Language
    The C programming Language The C programming Language By Brian W. Kernighan and Dennis M. Ritchie. Published by Prentice-Hall in 1988 ISBN 0-13-110362-8 (paperback) ISBN 0-13-110370-9 Contents ● Preface ● Preface to the first edition ● Introduction 1. Chapter 1: A Tutorial Introduction 1. Getting Started 2. Variables and Arithmetic Expressions 3. The for statement 4. Symbolic Constants 5. Character Input and Output 1. File Copying 2. Character Counting 3. Line Counting 4. Word Counting 6. Arrays 7. Functions 8. Arguments - Call by Value 9. Character Arrays 10. External Variables and Scope 2. Chapter 2: Types, Operators and Expressions 1. Variable Names 2. Data Types and Sizes 3. Constants 4. Declarations http://freebooks.by.ru/view/CProgrammingLanguage/kandr.html (1 of 5) [5/15/2002 10:12:59 PM] The C programming Language 5. Arithmetic Operators 6. Relational and Logical Operators 7. Type Conversions 8. Increment and Decrement Operators 9. Bitwise Operators 10. Assignment Operators and Expressions 11. Conditional Expressions 12. Precedence and Order of Evaluation 3. Chapter 3: Control Flow 1. Statements and Blocks 2. If-Else 3. Else-If 4. Switch 5. Loops - While and For 6. Loops - Do-While 7. Break and Continue 8. Goto and labels 4. Chapter 4: Functions and Program Structure 1. Basics of Functions 2. Functions Returning Non-integers 3. External Variables 4. Scope Rules 5. Header Files 6. Static Variables 7. Register Variables 8. Block Structure 9. Initialization 10. Recursion 11. The C Preprocessor 1. File Inclusion 2. Macro Substitution 3. Conditional Inclusion 5. Chapter 5: Pointers and Arrays 1.
    [Show full text]
  • R Programming for Data Science
    R Programming for Data Science Roger D. Peng This book is for sale at http://leanpub.com/rprogramming This version was published on 2015-07-20 This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishing process. Lean Publishing is the act of publishing an in-progress ebook using lightweight tools and many iterations to get reader feedback, pivot until you have the right book and build traction once you do. ©2014 - 2015 Roger D. Peng Also By Roger D. Peng Exploratory Data Analysis with R Contents Preface ............................................... 1 History and Overview of R .................................... 4 What is R? ............................................ 4 What is S? ............................................ 4 The S Philosophy ........................................ 5 Back to R ............................................ 5 Basic Features of R ....................................... 6 Free Software .......................................... 6 Design of the R System ..................................... 7 Limitations of R ......................................... 8 R Resources ........................................... 9 Getting Started with R ...................................... 11 Installation ............................................ 11 Getting started with the R interface .............................. 11 R Nuts and Bolts .......................................... 12 Entering Input .......................................... 12 Evaluation ...........................................
    [Show full text]
  • Winbugs for Beginners
    WinBUGS for Beginners Gabriela Espino-Hernandez Department of Statistics UBC July 2010 “A knowledge of Bayesian statistics is assumed…” The content of this presentation is mainly based on WinBUGS manual Introduction BUGS 1: “Bayesian inference Using Gibbs Sampling” Project for Bayesian analysis using MCMC methods It is not being further developed WinBUGS 1,2 Stable version Run directly from R and other programs OpenBUGS 3 Currently experimental Run directly from R and other programs Running under Linux as LinBUGS 1 MRC Biostatistics Unit Cambridge, 2 Imperial College School of Medicine at St Mary's, London 3 University of Helsinki, Finland WinBUGS Freely distributed http://www.mrc-bsu.cam.ac.uk/bugs/welcome.shtml Key for unrestricted use http://www.mrc-bsu.cam.ac.uk/bugs/winbugs/WinBUGS14_immortality_key.txt WinBUGS installation also contains: Extensive user manual Examples Control analysis using: Standard windows interface DoodleBUGS: Graphical representation of model A closed form for the posterior distribution is not needed Conditional independence is assumed Improper priors are not allowed Inputs Model code Specify data distributions Specify parameter distributions (priors) Data List / rectangular format Initial values for parameters Load / generate Model specification model { statements to describe model in BUGS language } Multiple statements in a single line or one statement over several lines Comment line is followed by # Types of nodes 1. Stochastic Variables that are given a distribution 2. Deterministic
    [Show full text]
  • Unix Commands January 2003 Unix
    Unix Commands Unix January 2003 This quick reference lists commands, including a syntax diagram 2. Commands and brief description. […] indicates an optional part of the 2.1. Command-line Special Characters command. For more detail, use: Quotes and Escape man command Join Words "…" Use man tcsh for the command language. Suppress Filename, Variable Substitution '…' Escape Character \ 1. Files Separation, Continuation 1.1. Filename Substitution Command Separation ; Wild Cards ? * Command-Line Continuation (at end of line) \ Character Class (c is any single character) [c…] 2.2. I/O Redirection and Pipes Range [c-c] Home Directory ~ Standard Output > Home Directory of Another User ~user (overwrite if exists) >! List Files in Current Directory ls [-l] Appending to Standard Output >> List Hidden Files ls -[l]a Standard Input < Standard Error and Output >& 1.2. File Manipulation Standard Error Separately Display File Contents cat filename ( command > output ) >& errorfile Copy cp source destination Pipes/ Pipelines command | filter [ | filter] Move (Rename) mv oldname newname Filters Remove (Delete) rm filename Word/Line Count wc [-l] Create or Modify file pico filename Last n Lines tail [-n] Sort lines sort [-n] 1.3. File Properties Multicolumn Output pr -t Seeing Permissions filename ls -l List Spelling Errors ispell Changing Permissions chmod nnn filename chmod c=p…[,c=p…] filename 2.3. Searching with grep n, a digit from 0 to 7, sets the access level for the user grep Command grep "pattern" filename (owner), group, and others (public), respectively. c is one of: command | grep "pattern" u–user; g–group, o–others, or a–all. p is one of: r–read Search Patterns access, w–write access, or x–execute access.
    [Show full text]
  • C Programming Tutorial
    C Programming Tutorial C PROGRAMMING TUTORIAL Simply Easy Learning by tutorialspoint.com tutorialspoint.com i COPYRIGHT & DISCLAIMER NOTICE All the content and graphics on this tutorial are the property of tutorialspoint.com. Any content from tutorialspoint.com or this tutorial may not be redistributed or reproduced in any way, shape, or form without the written permission of tutorialspoint.com. Failure to do so is a violation of copyright laws. This tutorial may contain inaccuracies or errors and tutorialspoint provides no guarantee regarding the accuracy of the site or its contents including this tutorial. If you discover that the tutorialspoint.com site or this tutorial content contains some errors, please contact us at [email protected] ii Table of Contents C Language Overview .............................................................. 1 Facts about C ............................................................................................... 1 Why to use C ? ............................................................................................. 2 C Programs .................................................................................................. 2 C Environment Setup ............................................................... 3 Text Editor ................................................................................................... 3 The C Compiler ............................................................................................ 3 Installation on Unix/Linux ............................................................................
    [Show full text]
  • Introduction to APL (A Programming Language)
    Xerox Data Systems XEr~ox~ 701 South Aviation Boulevard EI Segundo, California 90245 213 679-4511 lntroductlo: To APL (A Programming Language) by Dennis Taylor Xerox Data Systems The rearetw0 \v a )7s t o 5 U C c inct 1Y des c ribe APL : (1) APL is an interrretiv~, time-sharing, problem-solving 1a ]1 g U age; a 11 d (2) APL is an interactive implementation of Iverson notation. (1) lV}lat does "i11terpretive lt mean? In an interpretive environment, the system doesn't wait until a program is .completed to compile it into object code and execute it. Instead the system interprets each line of input as it is written to produce code which is immediately executed. Speak i 11 gin g e 11 era1 i tie s - - com p i 1 e y s are ill 0 r e e f fie i e 11t t han i n t e r pre t i \T e s )7s t ems ; bu t. t 11e compet i t i v e advantage b c c ome s less for .i.n t c r a c t i.vc r cqu i r crnc n t s . APL produces extremely tight code - and is, in fact, more 'efficient' than many of the compilers offered today. (2) l\Tha~ IS a "problem-solving" language? A problem-solving La ngu a g c is one wh i.ch does n o t r e q II ire t h e II S e r t 0 k11ow any t }1i n gab 0 U t t 11 e c 0 illpute r or.
    [Show full text]
  • APL-The Language Debugging Capabilities, Entirely in APL Terms (No Core Symbol Denotes an APL Function Named' 'Compress," Dumps Or Other Machine-Related Details)
    DANIEL BROCKLEBANK APL - THE LANGUAGE Computer programming languages, once the specialized tools of a few technically trained peo­ p.le, are now fundamental to the education and activities of millions of people in many profes­ SIons, trades, and arts. The most widely known programming languages (Basic, Fortran, Pascal, etc.) have a strong commonality of concepts and symbols; as a collection, they determine our soci­ ety's general understanding of what programming languages are like. There are, however, several ~anguages of g~eat interest and quality that are strikingly different. One such language, which shares ItS acronym WIth the Applied Physics Laboratory, is APL (A Programming Language). A SHORT HISTORY OF APL it struggled through the 1970s. Its international con­ Over 20 years ago, Kenneth E. Iverson published tingent of enthusiasts was continuously hampered by a text with the rather unprepossessing title, A inefficient machine use, poor availability of suitable terminal hardware, and, as always, strong resistance Programming Language. I Dr. Iverson was of the opinion that neither conventional mathematical nota­ to a highly unconventional language. tions nor the emerging Fortran-like programming lan­ At the Applied Physics Laboratory, the APL lan­ guages were conducive to the fluent expression, guage and its practical use have been ongoing concerns publication, and discussion of algorithms-the many of the F. T. McClure Computing Center, whose staff alternative ideas and techniques for carrying out com­ has long been convinced of its value. Addressing the putation. His text presented a solution to this nota­ inefficiency problems, the Computing Center devel­ tion dilemma: a new formal language for writing clear, oped special APL systems software for the IBM concise computer programs.
    [Show full text]