Programming Languages

Programming Languages

Most of my work is related to data management and analysis, so the languages reflect that.  The languages that I mainly use are R and Java.  These languages are not as fast as the languages for real-time systems (C, C++).  However, I am becoming more interested in Domain Specific Languages (DSL).  DSLs are higher-level languages designed for a specific task or problem.
Languages Influence Network Diagram
http://exploringdata.github.io/vis/programming-languages-influence-network-2014/

R

R is a statistical programming language (www.r-project.org) that is interpretative in nature.  It also has elements of being a functional programming language. The best IDE for R currently is RStudio (www.rstudio.org).

R is also being used for interfacing with Nvidia GPGPU (parallel processing using Graphical Processing Units).

Julia
Julia was designed for high-performance technical computing.  

Julia is also designed out of the box for parallel computing.

Julia IDE: http://forio.com/products/julia-studio/

Julia IDE: http://www.lighttable.com/ with http://junolab.org/docs/installing.html

Python

Some useful Python toolkits are:

  • http://www.scipy.org/
  • http://nltk.org/
  • http://www.pygame.org
  • http://scikit-learn.org/dev/index.html

Python Random Forests using GPUs
http://blog.explainmydata.com/2013/10/training-random-forests-in-python-using.html

A good Python IDE is:  http://www.jetbrains.com/pycharm/

Java

A good Java IDE is: http://www.jetbrains.com/idea/

GPSS

GPSS (General Purpose Simulation System) was developed by IBM.  
A web-version of the language can be found here:  http://webgpss.com/

AMPL

AMPL is a an Algebraic programming language mainly used in integer programming (constraint based systems).  AMPL can be accessed via the NEOS webserver.   
source:  http://en.wikipedia.org/wiki/AMPL

REBOL

REBOL (Relative Expression Based Object Language) is a cross-platform[4] data exchange language and amulti-paradigm dynamic programming language originally designed by Carl Sassenrath (architect and primary developer ofAmigaOS) for network communications and distributed computing

Douglas Crockford of JavaScript fame has described REBOL as “a more modern language, but with some very similar ideas to Lisp, in that it’s all built upon a representation of data which is then executable as programs” and as one of the JSON influences.

REBOL introduces the concept of dialecting: small, optimizeddomain-specific languages for code and data, which is also the most notable property of the language according to its designer: “Although it can be used for programming, writing functions, and performing processes, its greatest strength is the ability to easily create domain-specific languages or dialects”.

source: http://en.wikipedia.org/wiki/REBOL

The REBOL Scripting Language
http://www.drdobbs.com/embedded-systems/the-rebol-scripting-language/184404172

Scala

Scala is a functional language that uses Java as an underlying component.  Scala is one programming language that I haven’t used yet — but would like to experiment with it.

Visual (Graphical) Programming

“There’s an old saying: ‘Visual programming is like trying to get to the moon by climbing a tree. You make a lot of good early progress, at first, but pretty soon you have to go back to your funding agency and ask for a bigger tree.'”
Marten
Graphical Programming for MacOSX
 http://www.andescotia.com/products/marten/

Prolog

Prolog is a logic programming language and used for Artificial Intelligence and Natural Language Processing (NLP).   IBM Watson used Prolog as one component of their system.

We have included a Prolog implementation with the WebReports software.  I also have a version of Borland Turbo Prolog from the 1990s.  I have done some experimenting with Prolog, mainly around NLP and expert-based systems.

Creating Web-Applications in SWI-Prolog
http://www.pathwayslms.com/swipltuts/html/index.html

Gentle Introduction to Prolog
https://bernardopires.com/2013/10/try-logic-programming-a-gentle-introduction-to-prolog/

Probabilistic Programming

http://radar.oreilly.com/2013/04/probabilistic-programming.html

BUGS (Bayesian inference Using Gibbs Sampling) http://www.mrc-bsu.cam.ac.uk/bugs/
DARPA – Probabilistic Programming for Advancing Machine Learning (PPAML)
https://www.fbo.gov/index?s=opportunity&mode=form&id=4a3a33415756f596fae229defed7deaa&tab=core&_cview=0

Processing

Processing is an open source programming language and environment for people who want to create images, animations, and interactions. Initially developed to serve as a software sketchbook and to teach fundamentals of computer programming within a visual context, Processing also has evolved into a tool for generating finished professional work. Today, there are tens of thousands of students, artists, designers, researchers, and hobbyists who use Processing for learning, prototyping, and production. (source: processing.org)

D3js

D3.js is a visualization language.  more information can be found at http://D3js.org.

Lisp


Language Comparison F#, Ocaml, Scala, Clojure, Ruby and Haskell

https://gist.github.com/2934374

Lisp Machine

One of the things that I would like to play with is a Lisp machine.  The Lisp machine was a computer developed in Lisp, which would be in contrast to the computers we currently use.  I found that the Lisp machien can be run on a DEC (Digital Equipment) computer, however, these are hard to find now.   

More information: http://en.wikipedia.org/wiki/Lisp_machine