Languages
to reformat
Languages
- http://colinm.org/language_checklist.html [1]
- http://joelgrus.com/2013/12/24/why-programming-language-x-is-unambiguously-better-than-programming-language-y/ [2]
- http://langlangmatrix.com/ [3]
Speedcoding
1953
IPL
1954
Fortran
1957
COMTRAN
1957
ALGOL
1958
COBOL
1959
Lisp
1959
See also Emacs
- http://ergoemacs.org/emacs/elisp.html
- http://nic.ferrier.me.uk/blog/2012_07/tips-and-tricks-for-emacslisp
- http://www-formal.stanford.edu/jmc/history/lisp/lisp.html
- http://www.defmacro.org/ramblings/lisp.html
- http://c2.com/cgi/wiki?GreenspunsTenthRuleOfProgramming
- http://ghostopera.org/blog/2012/06/24/the-newbie-guide-to-common-lisp/
- http://clqr.boundp.org/
- http://programmers.stackexchange.com/questions/41045/scheme-vs-common-lisp-which-characteristics-made-a-difference-in-your-project
- https://news.ycombinator.com/item?id=7212859
- http://picolisp.com/5000/!wiki?Home
- http://blog.thezerobit.com/2012/09/01/beautiful-quicksort-in-common-lisp.html
- http://xuanji.appspot.com/isicp/1-1-elements.html
- http://mr.gy/software/soundlab/ - common lisp sounds
- http://programmers.stackexchange.com/questions/55284/is-lisp-still-useful-in-todays-world-which-version-is-most-used/188048#188048
- http://funcall.blogspot.sg/2009/03/not-lisp-again.html
ALGOL 60
1960
CPL
1963
BASIC
1964
APL
1964
wut
- Conway's Game Of Life in APL
- http://www.computerhistory.org/atchm/the-apl-progamming-language-source-code/
BCPL
1966
Simula
1967
Logo
1967
Forth
1968ish
B
1969
Pascal
1970
Smalltalk
1972
- http://worrydream.com/EarlyHistoryOfSmalltalk/
- http://blog.smartbear.com/programming/todays-smalltalk-a-second-look-at-the-first-oo-language/
C / C++
1972 / 1979
to separate
- http://c.learncodethehardway.org/
- The Development of the C Language*
- http://scienceblogs.com/goodmath/2006/11/the_c_is_efficient_language_fa.php
- http://damienkatz.net/2013/01/the_unreasonable_effectiveness_of_c.html
- http://oncoding.posterous.com/the-c-programming-language-part-0
- http://www.chiark.greenend.org.uk/~sgtatham/cdescent
- http://denniskubes.com/2013/04/23/how-to-think-about-variables-in-c/
- http://blog.codygriffin.com/2012/09/a-case-for-tuples.html
- http://www.linuxforu.com/2012/06/gnu-make-in-detail-for-beginners/
- http://www.advancedlinuxprogramming.com/
- http://lwn.net/Articles/518329/
- http://www.lemis.com/grog/diary-oct2012.php?topics=c#D-20121012-233520
- https://gist.github.com/1091803
- http://www.a1k0n.net/2011/07/20/donut-math.html
- http://preshing.com/20121019/this-is-why-they-call-it-a-weakly-ordered-cpu
- http://zserge.com/blog/cucu-part1.html
- http://ccodearchive.net/list.html
- http://theck01.github.io/offbrand_lib/
- http://gmplib.org/
- https://github.com/ned14/uthash
- Boost provides free peer-reviewed portable C++ source libraries.
- http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html
- https://blogs.oracle.com/ksplice/entry/hello_from_a_libc_free
- http://www.drdobbs.com/cpp/programming-without-variables/240161204 [13] - tail recursion
openFrameworks
- openFrameworks is an open source C++ toolkit designed to assist the creative process by providing a simple and intuitive framework for experimentation. The code is written to be massively cross-compatible. Right now we support five operating systems (Windows, OSX, Linux, iOS, Android) and four IDEs (XCode, Code::Blocks, and Visual Studio and Eclipse). The API is designed to be minimal and easy to grasp. openFrameworks is distributed under the MIT License. The toolkit is designed to work as a general purpose glue, and wraps together several commonly used libraries, including:
- OpenGL, GLEW, GLUT, libtess2 and cairo for graphics
- rtAudio, PortAudio, OpenAL and Kiss FFT or FMOD for audio input, output and analysis
- FreeType for fonts
- FreeImage for image saving and loading
- Quicktime, GStreamer and videoInput for video playback and grabbing
- Poco for a variety of utilities
- OpenCV for computer vision
- Assimp for 3D model loading
ML / Standard ML
1973 / 1990 / 1997
CLU
1974
Iterators.
Mesa
1974
Xerox, used on Alto and Star
Influenced Modula-2 and Java
Modula
1975
Scheme
1975
Continuation-passing_style
Rexx
1979
Ada
1980
BBC BASIC
1981
C++
to move
Objective-C
1983
- Objective-C is a general-purpose, high-level, object-oriented programming language that adds Smalltalk-style messaging to the C programming language. It is the main programming language used by Apple for the OS X and iOS operating systems and their respective APIs, Cocoa and Cocoa Touch. Originally developed in the early 1980s, it was selected as the main language used by NeXT for its NeXTSTEP operating system, from which OS X and iOS are derived.[1] Generic Objective-C programs that do not use the Cocoa or Cocoa Touch libraries can also be compiled for any system supported by GCC or Clang.
Eiffel
1986
Caml / OCaml
1985 / 1996
Object Pascal
1986
Modula-3
1986/1989
Oberon
1986
Self
1987
Perl
1987
HyperTalk
1987
for hypercard
Tcl
1988
Mathematica
Haskell
1990
- Haskell is an advanced purely-functional programming language. An open-source product of more than twenty years of cutting-edge research, it allows rapid development of robust, concise, correct software. With strong support for integration with other languages, built-in concurrency and parallelism, debuggers, profilers, rich libraries and an active community, Haskell makes it easier to produce flexible, maintainable, high-quality software.
- GHC is a state-of-the-art, open source, compiler and interactive environment for the functional language Haskell. Highlights:
- Thinking Functionally with Haskell - 3rd Aug, 2012
- https://news.ycombinator.com/item?id=6116347
- https://news.ycombinator.com/item?id=6190005
- https://news.ycombinator.com/item?id=6197823
- https://news.ycombinator.com/item?id=7686690
Packages
A package is a library of Haskell modules known to the compiler. GHC comes with several packages: see the accompanying library documentation. More packages to install can be obtained from HackageDB.
Using a package couldn't be simpler: if you're using ––make or GHCi, then most of the installed packages will be automatically available to your program without any further options. The exceptions to this rule are covered below in Section 4.9.1, “Using Packages ”.
Building your own packages is also quite straightforward: we provide the Cabal infrastructure which automates the process of configuring, building, installing and distributing a package. All you need to do is write a simple configuration file, put a few files in the right places, and you have a package. See the Cabal documentation for details, and also the Cabal libraries (Distribution.Simple, for example).
- Cabal (Common Architecture for Building Applications and Libraries) is a system for building and packaging Haskell libraries and programs. It defines a common interface for package authors and distributors to easily build their applications in a portable way. Cabal is part of a larger infrastructure for distributing, organizing, and cataloging Haskell libraries and programs. Specifically, the Cabal describes what a Haskell package is, how these packages interact with the language, and what Haskell implementations must to do to support packages. The Cabal also specifies some infrastructure (code) that makes it easy for tool authors to build and distribute conforming packages.
- HackageDB (or just Hackage) is a collection of releases of Haskell packages. Each package is in the Cabal format, a standard way of packaging Haskell source code that makes it easy to build and install. These pages are a basic web interface to the Hackage package database.
- cabal-install package provides the cabal command-line tool which simplifies the process of managing Haskell software by automating the fetching, configuration, compilation and installation of Haskell libraries and programs. Those packages must be prepared using Cabal and should be present at Hackage.
- Gtk2Hs - A GUI Library for Haskell based on Gtk
Arch
- Arch Wiki: Haskell Package Guidelines
- News about Haskell on Arch Linux
- https://github.com/archhaskell/habs - AUR is out of date for haskell packages
pacman -Rncs ghc remove all haskell..
Web
- Yesod is a Haskell web framework for productive development of type-safe, RESTful, high performance web applications.
- Snap is a simple web development framework for unix systems, written in the Haskell programming language. Snap has a high level of test coverage and is well-documented. Features include: a fast HTTP server library, a sensible and clean monad for web programming, an HTML-based templating system for generating pages
JS
- Fay - A proper subset of Haskell that compiles to JavaScript. Fay is a small programming language which has the following properties: A proper syntactic and semantic subset of Haskell, Statically typed, Lazy, Pure by default, Compiles to JavaScript, Has fundamental data types (Double, String, etc.) based upon what JS can support, Outputs minifier-aware code for small compressed size, Has a trivial foreign function interface to JavaScript
Erlang
1990
J
1990
Piet
1990
Python
1991
See Python
Q
1991
Lua
1993
- Lua is a powerful, fast, lightweight, embeddable scripting language. Lua combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. Lua is dynamically typed, runs by interpreting bytecode for a register-based virtual machine, and has automatic memory management with incremental garbage collection, making it ideal for configuration, scripting, and rapid prototyping.
- http://tylerneylon.com/a/learn-lua/
- Awesome: The briefest introduction to Lua
- Lua Tutorial - lua-users wiki
- Programming in Lua This book is a detailed and authoritative introduction to all aspects of Lua programming, by Lua's chief architect. Programming in Lua gives a solid base for any programmer who wants to use Lua. It covers all aspects of Lua—from the basics to its API with C—explaining how to make good use of its features and giving numerous code examples. The book is targeted at people with some programming background, but it does not assume any prior knowledge about Lua or other scripting languages.
- Lua Unofficial FAQ (uFAQ)
- http://stackoverflow.com/questions/10891957/difference-between-tables-and-metatables-in-lua
- http://notebook.kulchenko.com/programming/lua-good-different-bad-and-ugly-parts
- Learning Lua/From JS - Know JavaScript, and want to learn Lua? Here's are some quick facts about the similarities and differences.
- http://stackoverflow.com/questions/1022560/subtle-differences-between-javascript-and-lua
- http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=lua&lang2=v8
- http://www.mediawiki.org/wiki/User:Sumanah/Lua_vs_Javascript
- http://code.google.com/p/lua-checker/
- LuaJIT — a Just-In-Time Compiler for Lua.
- Metalua is a language and a compiler which provide a complete macro system, similar in power to what's offfered by Lisp dialects or Template Haskell; manipulated programs can be seen as source code, as abstract syntax trees, or as an arbitrary mix thereof, whichever suits your task better.
os.time(); os.getenv() i.e. os.getenv( "HOME" ); ?? to confirm, hardcoded as no time atm.
- http://olivinelabs.com/busted/ - testing
- http://luvit.io/ - non-blocking node.js
R
1993
Good for stats, etc.
K
1993
Brainfuck
1993
Racket
1994
SAC
1994
PHP
1995
See PHP
Java
1995
- https://github.com/OmerShapira/Syntactic
- http://badassjs.com/post/32812527381/doppio-a-java-virtual-machine-compiler-and
Java syntax seems unwieldy.
- http://blog.paralleluniverse.co/2014/05/01/modern-java/ [19]
- http://blog.paralleluniverse.co/2014/05/08/modern-java-pt2/ [20]
Apache Tomcat
Jetty
JavaScript
1995
See JavaScript
Ruby
1995
See Ruby
Dylan
Mid 90s
C#
2000
D
2001
Processing
2001
- http://natureofcode.com/ - processing book
Io
2002
Scala
2003
- https://speakerdeck.com/ryanlecompte/confessions-of-a-ruby-developer-whose-heart-was-stolen-by-scala
- http://www.dehora.net/journal/2013/06/15/on-scala/
- http://overwatering.org/blog/2013/12/scala-1-star-would-not-program-again/ [21]
- https://groups.google.com/forum/#!msg/scala-debate/153H3Ya4Nxk/lSOgWy6pCTsJ
F#
2005
- http://msdn.microsoft.com/en-us/vstudio/hh388569.aspx
- http://www.tryfsharp.org/
- A Gray Beard Explores F#
- http://colinbul.wordpress.com/2013/02/23/f-end-to-end/
Agda
2005
Vala
2006
Sage
2006
- Sage is a prototype functional programming language designed to provide high-coverage checking of expressive program specifications (types).
Clojure
2007
- http://aphyr.com/posts/301-clojure-from-the-ground-up-welcome
- http://adambard.com/blog/clojure-batteries-included/
- https://github.com/dgrnbrg/spyscope
Arc
2008
Lisp dialect by PG etc. Developed in Racket.
Pure
2008
Go
2009
- http://commandcenter.blogspot.de/2012/06/less-is-exponentially-more.html
- http://pragprog.com/magazines/2012-06/the-beauty-of-concurrency-in-go
- http://nathany.com/why-go
Dao
2009
Zimbu
2009
- Zimbu is an experimental programming language. It is a very practical, no-nonsense kind of language. It mixes the good things of many existing languages and avoids their deficiencies. And then throws in a few brand new ideas.
Potion
2009
Rust
2010
- http://www.rust-lang.org/ - from mozilla
- http://winningraceconditions.blogspot.co.uk/2012/09/rust-0-index-and-conclusion.html
- http://lucumr.pocoo.org/2012/10/18/such-a-little-thing/
Crack
2010
Ur
2010?
Dart
2011
Elm
2011
- Elm is a functional reactive programming (FRP) language that compiles to HTML, CSS, and JS. FRP is a concise and elegant way to create highly interactive applications and avoid callbacks.
Elixier
2011
- Elixir is a functional meta-programming aware language built on top of the Erlang VM. It is a dynamic language with flexible syntax with macros support that leverages Erlang's abilities to build concurrent, distributed, fault-tolerant applications with hot code upgrades. Elixir also provides first-class support for pattern matching, polymorphism via protocols (similar to Clojure's), aliases and associative data structures (usually known as dicts or hashes in other programming languages). Finally, Elixir and Erlang share the same bytecode and data types. This means you can invoke Erlang code from Elixir (and vice-versa) without any conversion or performance hit. This allows a developer to mix the expressiveness of Elixir with the robustness and performance of Erlang.
Shen
2011
Julia
2012
Typescript
2012
From Microsoft, compiles to JS.
Slash
2012
Clay
Babar
2013
Lobster
2013
Chicken
2013
Z
2013
Urbit
2013
Ioke
2013
Pyret
2013