Inhaltsverzeichnis Geschichte

Total Page:16

File Type:pdf, Size:1020Kb

Load more

10.12.12 Lisp – Wikipedia Lisp aus Wikipedia, der freien Enzyklopädie Lisp ist eine Familie von Programmiersprachen, die 1958 erstmals spezifiziert wurde und am Massachusetts Institute Lisp of Technology (MIT) in Anlehnung an den Lambda-Kalkül Paradigmen: multiparadigmatisch: entstand. Es ist nach Fortran die zweitälteste funktional, prozedural; manche Programmiersprache, die noch verbreitet ist. Dialekte außerdem modular, objektorientiert, reflexiv Auf Basis von Lisp entstanden zahlreiche Dialekte. Zu den Erscheinungsjahr: 1958 bekanntesten zählen Common Lisp und Scheme. Daher Designer: John McCarthy bezieht sich der Begriff Lisp oft auf die Sprachfamilie und nicht auf einen konkreten Dialekt oder eine konkrete Entwickler: Steve Russell, Timothy P. Implementierung. Hart, Mike Levin Typisierung: dynamisch Dialekte: Common Lisp, Scheme, Emacs Lisp und viele weitere Inhaltsverzeichnis Beeinflusst von: Lambda-Kalkül, Fortran, IPL Beeinflusste: Logo, Perl, Smalltalk, Clojure, 1 Geschichte Python, Ruby, Dylan, 2 Bedeutung Mathematica, REBOL, Haskell 3 Syntax 4 Minimaler Funktionsumfang für Lisp 5 Zitate 6 Lisp-Dialekte 6.1 Heute häufig verwendete Dialekte 6.2 Historisch relevante Dialekte 6.3 Dialekte für besondere Zwecke 6.4 Neuere Dialekte 7 Einzelnachweise 8 Literatur 9 Weblinks Geschichte Lisp steht für List Processing (Listen-Verarbeitung). Damit waren ursprünglich Fortran-Unterprogramme gemeint, mit denen symbolische Berechnungen durchgeführt werden sollten, wie sie im Lambda-Kalkül gebraucht werden. Steve Russell, einer der Studenten von John McCarthy, kam dann auf die fundamentale Idee, einen Interpreter für diese Ausdrücke zu programmieren, womit die Programmiersprache Lisp geboren war. Die Grunddatenstrukturen von Lisp sind Einzelwerte (Skalarwerte), die Atome genannt werden, und Listen. Die Listen können beliebig verschachtelt werden (Listen von Listen). Damit lassen sich auch leicht Datenstrukturen wie ein assoziatives Array implementieren. Die Listen werden mit runden Klammern dargestellt: (A B C) de.wikipedia.org/wiki/Lisp 1/6 10.12.12 Lisp – Wikipedia Auch Programmanweisungen sind Listen, wobei das erste Listenelement die auszuführende Funktion identifiziert. Es gibt somit keinen grundsätzlichen Unterschied zwischen Daten und Programmanweisungen. Dies ermöglicht u. a., Programmteile zur Laufzeit beliebig zu manipulieren. Diese Eigenschaft wird Homoikonizität genannt. Der Programmierer kann so beispielsweise neue Kontrollstrukturen oder Objektsysteme (OOP) entwickeln (Metaprogrammierung, Makros). Lisp bietet dem Programmierer große Flexibilität und weitreichende Einflussmöglichkeiten, weshalb es manchmal auch als programmierbare Programmiersprache bezeichnet wird. Datenstrukturen werden dynamisch aufgebaut, ohne dass der Programmierer explizit Speicherplatz reservieren oder freigeben muss (siehe auch automatische Speicherbereinigung). Deklarationen für Daten sind nicht nötig, und ein Lisp-Symbol kann als Variable beliebige Arten von Objekten bezeichnen. Viele dieser Eigenschaften sind im Laufe der Zeit in weitere Programmiersprachen übernommen worden. Anfang der 1960er waren sie jedoch ihrer Zeit weit voraus. In den 1970er und 1980er Jahren wurden spezielle Lisp-Maschinen entwickelt und vertrieben. Diese ermöglichten das schnelle Ausführen von Lisp-Programmen, was auf damaligen allgemeinen Computern nur unter dem Verzicht von Typ-Überprüfung und automatische Speicherbereinigung möglich war. Dies hat sich durch schnellere Computer jedoch geändert. Programme in Lisp können interpretiert oder von einem Compiler in effizienten Code übersetzt werden. Typische Compiler sind Batch- Compiler oder inkrementelle Compiler. Inkrementelle Compiler können einzelne Ausdrücke übersetzen. Batch-Compiler übersetzen einzelne Lisp-Dateien oder ganze Lisp-Programme. Compiler Eine Lisp-Maschine im MIT-Museum übersetzen entweder in einen Bytecode für eine virtuelle Maschine oder in Maschinencode für einen Prozessor. Das Akronym LISP wird manchmal scherzhaft als „Lots of Irritating Superfluous Parentheses“ (eine Menge lästiger, überflüssiger Klammern) interpretiert. Bedeutung Historisch gesehen ist Lisp zusammen mit Prolog eine der Programmiersprachen der künstlichen Intelligenz. Im Unterschied zu Europa, wo Programmiersprachen wie Assembler, Fortran oder Pascal als klassische Vertreter der Familie der prozeduralen Programmiersprachen gelehrt wurden, war und ist zum Teil bis heute in den USA Lisp die erste gelehrte Programmiersprache. Das hatte einen großen Einfluss, da es sich bei den klassischen Vertretern der prozeduralen Sprachfamilien um Vertreter einer statischen Verarbeitungsweise von Daten handelt, während dagegen unter anderem Lisp ein strikt dynamisches Konzept vertritt. Syntax Lisp benutzt S-Expressions als externes Format, um sowohl Source-Code als auch Daten darzustellen. Funktions- und Makroaufrufe werden als Listen geschrieben, die als erstes Element den Namen der Funktion bzw. des Makros enthalten. Kommentare werden mit ; eingeleitet. Beispiele in Common Lisp: de.wikipedia.org/wiki/Lisp 2/6 10.12.12 Lisp – Wikipedia ;; Addiere 2 und 3 und 4: (+ 2 3 4) ;; Setze die Variable p auf den Wert 3,1415: (setf p 3.1415) ;; Definiere eine Funktion, die ihr Argument quadriert: (defun square (x) (* x x)) ;; Quadriere die Zahl 3: (square 3) [1] LISP-Hallo-Welt-Programm (Mit (terpri) erfolgt ein Zeilenumbruch ) : (princ "Hello, world!") (terpri) Minimaler Funktionsumfang für Lisp Um ein minimales Lisp-System zu implementieren, sind nur sehr wenige Operatoren und ein allgemeiner Mechanismus zur Funktionsdefinition nötig. Die folgenden Funktionen sind im ursprünglichen Bericht von McCarthy enthalten: first (gibt das erste Element einer Liste zurück; hieß ursprünglich car (von Contents of Address Register)) rest (gibt die Restliste (ohne das erste Element) zurück; hieß ursprünglich cdr (von Contents of Decrement Register)) cons (fügt ein Element am Anfang einer Liste an) (von CONStruct) quote (verhindert die Auswertung des nachfolgenden Objekts) eq (Test auf Identität) cond (bedingte Ausführung: wenn der erste Parameter ungleich NIL ausgewertet wird, wird der zweite Parameter ausgeführt, sonst der dritte) Mechanismus zur Funktionsdefinition lambda Bereits mit diesen Sprachmitteln kann ein bemerkenswerter Teil der Funktionen, die übliche Lisp-Systeme mitbringen, definiert werden. Zitate “Lisp is a programmable programming language.” „Lisp ist eine programmierbare Programmiersprache.“ [2] – JOHN FODERARO: CACM, September 1991 “Lisp seems to be a lucky discovery of a local maximum in the space of programming languages.” „Lisp scheint die glückliche Entdeckung eines lokalen Maximums in der Menge der Programmiersprachen zu sein.“ – JOHN MCCARTHY: Let Over Lambda (http://letoverlambda.com/index.cl/guest/chap1.html) de.wikipedia.org/wiki/Lisp 3/6 10.12.12 Lisp – Wikipedia Lisp-Dialekte Heute häufig verwendete Dialekte Common Lisp ist der umfangreichste und in der Praxis am häufigsten eingesetzte Lisp-Dialekt. Er ist ANSI-standardisiert und bietet Unterstützung für prozedurale Makros, lexikalische wie dynamische Variablenbindung und vieles mehr. Der Name erinnert an die Absicht, mehrere inkompatible Bestrebungen zu vereinigen, einen Nachfolger für Maclisp zu finden (ZetaLisp, Spice Lisp, NIL und S-1 Lisp). Weitere Einflüsse waren InterLisp und Scheme. Scheme ist eine minimale und elegante Variante, die u. a. Continuations unterstützt. Im Gegensatz zu Common Lisp kennt sie nur lexikalische Variablenbindung und hygienische Makros. Sie findet aufgrund ihrer Einfachheit häufig in der Lehre Gebrauch, obgleich auch produktive Programmierung mit ihr möglich ist und praktiziert wird. Emacs Lisp ist die Skriptsprache des Texteditors GNU Emacs. Historisch relevante Dialekte LISP 1.5 war die erste Lisp-Version, die über das MIT hinaus verbreitet wurde und enthält die erste funktionsfähige Quelle einer Lispimplementierung. Maclisp war ein weit verbreiteter und einflussreicher Vorläufer von Common Lisp und die ursprüngliche Implementationssprache des Computeralgebrasystems Macsyma. InterLisp entwickelte sich ab 1967 aus BBN-Lisp und wurde zu Interlisp-D weiterentwickelt, das ein komplettes Entwicklungssystem für die Lisp-Maschine Xerox Dolphin bildete. 1992 verlieh die ACM den Software System Award an Daniel G. Bobrow, Richard R. Burton, L. Peter Deutsch, Ronald Kaplan, Larry Masinter und Warren Teitelman für ihre Pionierarbeit an Interlisp. ZetaLisp (auch Lisp Machine Lisp genannt) ist eine Weiterentwicklung von MacLisp und lief auf verschiedenen Lisp-Maschinen. Auf Basis dieses Dialekts wurde Flavors, die erste objektorientierte Erweiterung entwickelt. Franz Lisp wurde 1978 aus MacLisp entwickelt, um auf einer VAX das Computeralgebrasystem Macsyma laufen zu lassen. Es fand weite Verbreitung, weil es mit BSD Unix ausgeliefert wurde. Später wurde die Firma Franz Inc. gegründet, um dieses Lisp zu pflegen. Seit Mitte der 80er Jahre verkauft Franz Inc. aber eine Common-Lisp-Implementierung (Allegro CL). XLISP ist ein LISP mit objektorientierten Erweiterungen, das auch auf schwächeren Computern lief. Eine bekannte Anwendung ist das Statistikpaket XLispStat. EuLisp war ein europäischer Versuch, ein aufgeräumtes und einheitliches Lisp zu definieren. ISLisp ist ein ISO-standardisierter, kompakter Lisp-Dialekt, der sich für die Programmierung eingebetteter Systeme eignet. Portable Standard Lisp und das sogenannte Standard Lisp wurden ab 1980 an der University of Utah entwickelt und v. a. für das Computeralgebrasystem Reduce genutzt. Darin war es in einer ALGOL-
Recommended publications
  • IDOL Connector Framework Server 12.0 Administration Guide

    IDOL Connector Framework Server 12.0 Administration Guide

    Connector Framework Server Software Version 12.0 Administration Guide Document Release Date: June 2018 Software Release Date: June 2018 Administration Guide Legal notices Copyright notice © Copyright 2018 Micro Focus or one of its affiliates. The only warranties for products and services of Micro Focus and its affiliates and licensors (“Micro Focus”) are set forth in the express warranty statements accompanying such products and services. Nothing herein should be construed as constituting an additional warranty. Micro Focus shall not be liable for technical or editorial errors or omissions contained herein. The information contained herein is subject to change without notice. Trademark notices Adobe™ is a trademark of Adobe Systems Incorporated. Microsoft® and Windows® are U.S. registered trademarks of Microsoft Corporation. UNIX® is a registered trademark of The Open Group. Documentation updates The title page of this document contains the following identifying information: l Software Version number, which indicates the software version. l Document Release Date, which changes each time the document is updated. l Software Release Date, which indicates the release date of this version of the software. To verify you are using the most recent edition of a document, go to https://softwaresupport.softwaregrp.com/group/softwaresupport/search-result?doctype=online help. You will also receive new or updated editions of documentation if you subscribe to the appropriate product support service. Contact your Micro Focus sales representative for details. To check for new versions of software, go to https://www.hpe.com/software/entitlements. To check for recent software patches, go to https://softwaresupport.softwaregrp.com/patches. The sites listed in this section require you to sign in with a Software Passport.
  • Comparative Programming Languages CM20253

    Comparative Programming Languages CM20253

    We have briefly covered many aspects of language design And there are many more factors we could talk about in making choices of language The End There are many languages out there, both general purpose and specialist And there are many more factors we could talk about in making choices of language The End There are many languages out there, both general purpose and specialist We have briefly covered many aspects of language design The End There are many languages out there, both general purpose and specialist We have briefly covered many aspects of language design And there are many more factors we could talk about in making choices of language Often a single project can use several languages, each suited to its part of the project And then the interopability of languages becomes important For example, can you easily join together code written in Java and C? The End Or languages And then the interopability of languages becomes important For example, can you easily join together code written in Java and C? The End Or languages Often a single project can use several languages, each suited to its part of the project For example, can you easily join together code written in Java and C? The End Or languages Often a single project can use several languages, each suited to its part of the project And then the interopability of languages becomes important The End Or languages Often a single project can use several languages, each suited to its part of the project And then the interopability of languages becomes important For example, can you easily
  • Towards Left Duff S Mdbg Holt Winters Gai Incl Tax Drupal Fapi Icici

    Towards Left Duff S Mdbg Holt Winters Gai Incl Tax Drupal Fapi Icici

    jimportneoneo_clienterrorentitynotfoundrelatedtonoeneo_j_sdn neo_j_traversalcyperneo_jclientpy_neo_neo_jneo_jphpgraphesrelsjshelltraverserwritebatchtransactioneventhandlerbatchinsertereverymangraphenedbgraphdatabaseserviceneo_j_communityjconfigurationjserverstartnodenotintransactionexceptionrest_graphdbneographytransactionfailureexceptionrelationshipentityneo_j_ogmsdnwrappingneoserverbootstrappergraphrepositoryneo_j_graphdbnodeentityembeddedgraphdatabaseneo_jtemplate neo_j_spatialcypher_neo_jneo_j_cyphercypher_querynoe_jcypherneo_jrestclientpy_neoallshortestpathscypher_querieslinkuriousneoclipseexecutionresultbatch_importerwebadmingraphdatabasetimetreegraphawarerelatedtoviacypherqueryrecorelationshiptypespringrestgraphdatabaseflockdbneomodelneo_j_rbshortpathpersistable withindistancegraphdbneo_jneo_j_webadminmiddle_ground_betweenanormcypher materialised handaling hinted finds_nothingbulbsbulbflowrexprorexster cayleygremlintitandborient_dbaurelius tinkerpoptitan_cassandratitan_graph_dbtitan_graphorientdbtitan rexter enough_ram arangotinkerpop_gremlinpyorientlinkset arangodb_graphfoxxodocumentarangodborientjssails_orientdborientgraphexectedbaasbox spark_javarddrddsunpersist asigned aql fetchplanoriento bsonobjectpyspark_rddrddmatrixfactorizationmodelresultiterablemlibpushdownlineage transforamtionspark_rddpairrddreducebykeymappartitionstakeorderedrowmatrixpair_rddblockmanagerlinearregressionwithsgddstreamsencouter fieldtypes spark_dataframejavarddgroupbykeyorg_apache_spark_rddlabeledpointdatabricksaggregatebykeyjavasparkcontextsaveastextfilejavapairdstreamcombinebykeysparkcontext_textfilejavadstreammappartitionswithindexupdatestatebykeyreducebykeyandwindowrepartitioning
  • Comparing LISP and Object-Oriented Programming Languages

    Comparing LISP and Object-Oriented Programming Languages

    Wang 1 Pengfei Wang Professor Christopher A. Healy Computer Science 475 11 April 2016 Compare LISP with Object-Oriented Programming Languages Introduction LISP, which stands for List Processor, is a family of functional programming languages, invented by John McCarthy in MIT based on Lambda Calculus in 1958. It is the second-oldest high-level programming language and it was originally designed for Artificial Intelligence, but it is a good general-purpose language as well. This paper is going to discuss the differences between LISP and Object-Oriented Languages, focusing mainly on LISP. This paper is going to firstly introduce functional programming language and LISP. Then, advantages and disadvantages of LISP comparing to object-oriented languages will be discussed, and finally a specific case study will be done. Functional Programming Languages and List Processor Typically, programming languages are divided into two general types, imperative languages and declarative languages. The computer program written in imperative languages consists of statements, instructions, which indicate how (and in what order) a computation should be done. Imperative languages include all of the object-oriented languages. On the other hand, declarative languages define functions, formulas or relationships. Declarative languages do not specify how the functions are performed step-by-step in program. Functional Wang 2 programming language is one type of the declarative languages. ;; Example: Written in Common LISP (format t “Result: ~A.~%” (* 2 (+ 2 3))) ; functions /* Example: Written in C*/ int a = 2 + 3; /*statement*/ int b = a * 2; /*statement*/ printf("Result: %d.\n", b); /*statement*/ Function languages employ a computational model based on the recursive definition of functions.
  • Introduction to Newlisp

    Introduction to Newlisp

    Introduction to newLISP en.wikibooks.org December 29, 2013 On the 28th of April 2012 the contents of the English as well as German Wikibooks and Wikipedia projects were licensed under Creative Commons Attribution-ShareAlike 3.0 Unported license. A URI to this license is given in the list of figures on page 199. If this document is a derived work from the contents of one of these projects and the content was still licensed by the project under this license at the time of derivation this document has to be licensed under the same, a similar or a compatible license, as stated in section 4b of the license. The list of contributors is included in chapter Contributors on page 197. The licenses GPL, LGPL and GFDL are included in chapter Licenses on page 203, since this book and/or parts of it may or may not be licensed under one or more of these licenses, and thus require inclusion of these licenses. The licenses of the figures are given in the list of figures on page 199. This PDF was generated by the LATEX typesetting software. The LATEX source code is included as an attachment (source.7z.txt) in this PDF file. To extract the source from the PDF file, you can use the pdfdetach tool including in the poppler suite, or the http://www. pdflabs.com/tools/pdftk-the-pdf-toolkit/ utility. Some PDF viewers may also let you save the attachment to a file. After extracting it from the PDF file you have to rename it to source.7z.
  • GAS144 - a GA144 Simulator-Project in Newlisp

    GAS144 - a GA144 Simulator-Project in Newlisp

    GAS144 - A GA144 Simulator-Project in newLISP Introduction: This is the first release of my Green-Arrays GA144 chip simulator in newLISP. A proof of concept, it is possible to simulate one node with it, see also www.ForthSeen. de for more. The development is in progress and the first step towards a complete IDE for the GA144. Contact: I am happy about every kind of feedback: mailto:[email protected] Quick Start: 1. Install newLISP. You can download it here: http://www.newlisp.org 2. I assume you have already the „Java run time environment“ from : http://www.java.com 3. The GAS144a source is here: http://www.ForthSeen.de/stuff/GAS144a.zip or you can copy it from the following appendix 4. For Windows and for simplicity copy the 7 small files in a new directory C:\GAS144\ , but you can use any other directories if you change the path in line 3 in file „gas-7.lsp“ 5. Start newLISP-GS and load and run gas-7.lsp Some hints for experts who can't wait: - The hex code in the example is from the Practical Example No. 9 - The program generates a csv file, you can import and analyze it with Excel or LibreOfficeCalc - gas-7.lsp the main-loop line 10: true: generate csv file false: print in newLISP-GS output window line 17: iterates max 1000 times, you can fill in any number, 10000 is ok, too line 25: you can fill in any or multiple condition ( eg: prints the first 500 iterations ) line 14: define here all variable you like to print - after the program stops with „bye..“ - you can look at all variables in the lower monitor window of the newLISP-GS - example, the data stack with TSDS or return-stack with RRS - you can execute every command like ( gand ) or ( gor ) or ( g2* ) GAS144a Alpha-Release www.ForthSeen.de / dmemos 30.Dec.2014 Page: 1 / 6 GAS144 - A GA144 Simulator-Project in newLISP Why newLISP: • I use newLISP when I want to enjoy programming • Free and open source - you can download it from http://www.newlisp.org • Very powerful, you'll find probably everything you'll need, look into the manual.
  • Free and Open Source Software

    Free and Open Source Software

    Free and open source software Copyleft ·Events and Awards ·Free software ·Free Software Definition ·Gratis versus General Libre ·List of free and open source software packages ·Open-source software Operating system AROS ·BSD ·Darwin ·FreeDOS ·GNU ·Haiku ·Inferno ·Linux ·Mach ·MINIX ·OpenSolaris ·Sym families bian ·Plan 9 ·ReactOS Eclipse ·Free Development Pascal ·GCC ·Java ·LLVM ·Lua ·NetBeans ·Open64 ·Perl ·PHP ·Python ·ROSE ·Ruby ·Tcl History GNU ·Haiku ·Linux ·Mozilla (Application Suite ·Firefox ·Thunderbird ) Apache Software Foundation ·Blender Foundation ·Eclipse Foundation ·freedesktop.org ·Free Software Foundation (Europe ·India ·Latin America ) ·FSMI ·GNOME Foundation ·GNU Project ·Google Code ·KDE e.V. ·Linux Organizations Foundation ·Mozilla Foundation ·Open Source Geospatial Foundation ·Open Source Initiative ·SourceForge ·Symbian Foundation ·Xiph.Org Foundation ·XMPP Standards Foundation ·X.Org Foundation Apache ·Artistic ·BSD ·GNU GPL ·GNU LGPL ·ISC ·MIT ·MPL ·Ms-PL/RL ·zlib ·FSF approved Licences licenses License standards Open Source Definition ·The Free Software Definition ·Debian Free Software Guidelines Binary blob ·Digital rights management ·Graphics hardware compatibility ·License proliferation ·Mozilla software rebranding ·Proprietary software ·SCO-Linux Challenges controversies ·Security ·Software patents ·Hardware restrictions ·Trusted Computing ·Viral license Alternative terms ·Community ·Linux distribution ·Forking ·Movement ·Microsoft Open Other topics Specification Promise ·Revolution OS ·Comparison with closed
  • Apache-Ivy Wordgrinder Nethogs Qtfm Fcgi Enblend-Enfuse

    Apache-Ivy Wordgrinder Nethogs Qtfm Fcgi Enblend-Enfuse

    eric Ted fsvs kegs ht tome wmii ttcp ess stgit nut heyu lshw 0th tiger ecl r+e vcp glfw trf sage p6f aris gq dstat vice glpk kvirc scite lyx yagf cim fdm atop slock fann G8$ fmit tkcvs pev bip vym fbida fyre yate yturl ogre owfs aide sdcv ncdu srm ack .eex ddd exim .wm ibam siege eagle xlt xclip gts .pilot atool xskat faust qucs gcal nrpe gavl tintin ruff wdfs spin wink vde+ ldns xpad qxkb kile ent gocr uae rssh gpac p0v qpdf pudb mew cc e afuse igal+ naim lurc xsel fcgi qtfm sphinx vmpk libsmi aterm lxsplit cgit librcd fuseiso squi gnugo spotify verilog kasumi pattern liboop latrace quassel gaupol firehol hydra emoc fi mo brlcad bashdb nginx d en+ xvnkb snappy gemrb bigloo sqlite+ shorten tcludp stardict rss-glx astyle yespl hatari loopy amrwb wally id3tool 3proxy d.ango cvsps cbmfs ledger beaver bsddb3 pptpd comgt x.obs abook gauche lxinput povray peg-e icecat toilet curtain gtypist hping3 clam wmdl splint fribid rope ssmtp grisbi crystal logpp ggobi ccrypt snes>x snack culmus libtirpc loemu herrie iripdb dosbox 8yro0 unhide tclvfs dtach varnish knock tracker kforth gbdfed tvtime netatop 8y,wt blake+ qmmp cgoban nexui kdesvn xrestop ifstatus xforms gtklife gmrun pwgen httrack prelink trrnt ip qlipper audiere ssdeep biew waon catdoc icecast uif+iso mirage epdfview tools meld subtle parcellite fusesmb gp+fasta alsa-tools pekwm viewnior mailman memuse hylafax= pydblite sloccount cdwrite uemacs hddtemp wxGT) adom .ulius qrencode usbmon openscap irssi!otr rss-guard psftools anacron mongodb nero-aac gem+tg gambas3 rsnapshot file-roller schedtool
  • Citation File Format (CFF)

    Citation File Format (CFF)

    Citation File Format (CFF) Stephan Druskat ([email protected]) 06 October 2017 Abstract The Citation File Format (CFF) is a human- and machine-readable format for CITATION files. These files provide citation metadata for (research and scientific) software. The format aims to support all use cases for software citation described in [1]. CFF is serialized in YAML 1.2, and is therefore Unicode-based and cross- language (in terms of both natural language scripts and programming languages). This specification, together with the Unicode standard for characters, aims to provide all the information necessary to understand CFF, and to use (i.e., write) and re-use (i.e., read, validate, convert from) it. These specifications are maintained openly at https://github.com/sdruskat/citation-file-format. Contents Introduction 2 Status of this document .............................................. 2 Rationale ...................................................... 2 Goals ........................................................ 3 Concepts ...................................................... 3 Format 3 File structure .................................................... 3 Reference structure .............................................. 4 Notable reference keys ............................................ 4 Formatting ..................................................... 5 Reference keys ................................................... 5 Exemplary uses ................................................ 8 Reference types ..................................................
  • 600.103 FUNDAMENTALS of PRACTICAL COMPUTING Ken Church

    600.103 FUNDAMENTALS of PRACTICAL COMPUTING Ken Church

    600.103 FUNDAMENTALS OF PRACTICAL COMPUTING Ken Church • Intended audience: – Students considering a major in • science, engineering or medicine • Small Class • Diversity: Geeks Mainstream – like Calculus &“typing” – College High School Elementary School – Fun (not too much work) Sell the field • Practical: – Please bring laptops to class if you can • Familiarize students with lots of stuff (breadth) • Not just a single programming language (not depth) • Fundamentals: – Lots more to Computer Science than hacking Teamwork, Web-work, etc. • Encourage teamwork, Google, Wikipedia, etc. • Homework: – Submit by email to [email protected] – Due Tuesday morning at sunrise • So I have time to adjust my Tuesday lectures (if necessary) – Target: 2 hours per hour of class • 1 hour installing software, plus • 1 hour of exercises (as opposed to problem sets) – Homework comes with hints (as opposed to recipes) • Feel free to ask for more hints ([email protected]) – Example: Use Google to figure out how to install • R (a stat package) • LISP (http://www.newlisp.org/) • cygwin (Unix for Windows) Cheating • Please don’t, but if you do, you are only cheating yourself • I want to encourage teamwork & web-work – Because they are great ways to learn – “Although you may work in small groups, each student must submit his/her own program and the code may not be a copy of others’ code. You may share ideas and help – but you must write your own code and your assignment MUST be SUBSTANTIALLY different from all others.” – Ok to submit a team effort
  • Conceptive C Harry Mcgeough

    Conceptive C Harry Mcgeough

    Conceptive C Harry McGeough Version 1.0 Published by Harry McGeough at Smashwords ISBN-13: 978-1465934888 ISBN-10: 1465934888 Copyright 2011 Harry McGeough About Cover Image A billowing tower of gas and dust rises from the stellar nursery known as the Eagle Nebula. This small piece of the Eagle Nebula is 57 trillion miles long (91.7 trillion km). Credit: NASA, ESA, and The Hubble Heritage Team (STScI/AURA) Conceptive C by Harry McGeough is licensed under a Creative Commons Attribution 3.0 Unported License. Based on a work at www.wikipedia.com. Permissions beyond the scope of this license may be available at http://www.wikipedia.com. Contents Preface Natural Language Basic English Word Definition Machine Learning Compiler Changes Know Thyself AI History Deduction, Reasoning, Problem Solving Knowledge Representation Commonsense Knowledge Learning Natural Language Processing Creativity General Intelligence Evaluating progress Philosophy C Language Characteristics Early Developments K&R C ANSI C and ISO C C99 Embedded C Uses Syntax Keywords Operators "Hello, world" Example Data Types Pointers Arrays Array-pointer Interchangeability Memory Management Libraries Objective C History Popularization through NeXT Syntax Messages Interfaces and Implementations Implementation Instantiation Protocols Dynamic Typing Forwarding Categories #import Objective-C 2.0 Garbage Collection Properties Non-fragile Instance Variables Fast Enumeration Library Use Analysis of the Language Lisp Connection to Artificial Intelligence Symbolic expressions Lists Operators
  • Functional and Concurrent Programming

    Functional and Concurrent Programming

    Functional and Concurrent Programming Simon Thompson [email protected] CO545 Lecture 1 CO545: functional and concurrent programming CO545: functional and concurrent programming Lectures 22 lectures: introduction, functional programming, concurrent programming, going further CO545: functional and concurrent programming Lectures Classes 22 lectures: introduction, 11 two-hour functional programming, terminal sessions: concurrent programming, from this week going further CO545: functional and concurrent programming Lectures Classes 22 lectures: introduction, 11 two-hour functional programming, terminal sessions: concurrent programming, from this week going further Resources Moodle for slides, lecture recordings, programs, class and seminar resources CO545: functional and concurrent programming Lectures Classes 22 lectures: introduction, 11 two-hour functional programming, terminal sessions: concurrent programming, from this week going further Resources Lecturers Moodle for Simon Thompson slides, lecture recordings, [email protected] programs, class and Dominic Orchard seminar resources [email protected] What will I learn? What will I learn? Functional ideas Values, names, evaluation, structured types, lists, higher-order functions, recursion, PBT. What will I learn? Functional ideas Concurrent ideas Values, names, evaluation, Processes and messages, structured types, lists, process ids and spawn, higher-order functions, asynchrony and mailboxes, recursion, PBT. fail-safe and exits, … What will I learn? Functional ideas Concurrent ideas Values, names, evaluation, Processes and messages, structured types, lists, process ids and spawn, higher-order functions, asynchrony and mailboxes, recursion, PBT. fail-safe and exits, … Put it into practice Using these ideas in practice in the Erlang programming language. What will I learn? Functional ideas Concurrent ideas Values, names, evaluation, Processes and messages, structured types, lists, process ids and spawn, higher-order functions, asynchrony and mailboxes, recursion, PBT.