X
xahlee
Today, i took sometime to list some major or talked-about langs that
arose in recent years.
Here's the result:
http://xahlee.org/UnixResource_dir/writ/new_langs.html
Plain text version follows.
-------------------------------------
There is a proliferation of computer languages today like never
before. In this page, i list some of them.
In the following, i try to list some of the langs that are created
after 2000, or become very active after 2000.
* Erlang↗. Functional, concurrent.
* Haskell↗ Oldish, functional.
* Mercury↗. Logic, functional.
* Q↗. Functional lang, based on term rewriting. To be replaced by
“Pure†http://pure-lang.sourceforge.net/.
ML Family:
* Oz↗. Concurrent. Multiparadigm.
* Alice↗. Concurrent, ML derivative. Saarland University, Germany.
* OCaml↗
* F#↗. Microsoft's functional lang.
Lisp family:
* Mathematica↗
* NewLisp↗
* Arc↗. Paul Graham's selling his name.
* Qi↗. Common Lisp added with modern functional lang features.
* Scheme↗, notably PLT Scheme↗.
* Dylan programming language↗. Rather dead.
Proof systems:
* Coq↗. For formal proofs.
* For much more, see Automated theorem proving↗.
Perl Family or derivative:
* PHP↗. Decendent of Perl for server side web apps.
* Ruby↗. Perl with rectified syntax and semantics.
* Perl6↗
* Sleep↗. A scripting lang, perl syntax. On Java platform.
Java related:
* C#↗. Microsoft's answer to Java.
* Scala↗. A FP+OOP lang on Java platform as a Java alternative.
* Groovy↗. Scritping lang on on Java platform.
2D graphics related.
* Scratch↗
* Adobe Flash↗'s ActionScript↗. 2D graphics.
* Processing↗. 2D graphics on Java platform.
Misc:
* Linden_Scripting_Language↗. Used in virtual world Second Life..
------------------------------
Following are some random comments on comp langs.
in the above, i tried to not list implementations. (e.g. huge number
of Scheme implemented in JVM with fluffs here and there; also e.g.
JPython, JRuby, and quite a lot more.) Also, i tried to avoid minor
derivatives or variations. Also, i tried to avoid langs that's one-
man's fancy with little followings.
For those of you developens in Java, Perl, Python for example, it
would be fruitful to spend a hour or 2 to look at the Wikipedia
articles about these, or their home pages. Wikipedia has several pages
that is a listing of comp langs, of which you can read about perhaps
over 2 hundreds of langs if you want.
The user base of the langs differ by some magnitude. Some, such as for
example PHP, C#, are within the top 10 most popular lang with active
users (which is perhaps in order of hundreds of millions). Some
others, are niche but still with huge users (order of tens or hundreds
of thousands), such as LSL, Erlang, Mathematica. Others are niche but
robust and industrial (counting academic use), such as Coq (a proof
system), Processing, PLT Scheme, AutoLisp. Few are mostly academic
followed with handful of experimenters, Qi, Arc, Mercury, Q,
Concurrent Clean are probably examples.
------------------
I was prompted to have a scan at these new lang because recently i
wrote a article titled “The Fundamental Problems of Lispâ€
( http://xahlee.org/UnixResource_dir/writ/lisp_problems.html (ranty)),
which mentioned my impression of a proliferation of languages (and all
sorts of computing tools and applications). Quote:
10 years ago, in the dot com days (~1998), where Java, Javascript,
Perl are screaming the rounds. It was my opinion, that lisp will
inevitably become popular in the future, simply due to its inherent
superior design, simplicity, flexibility, power, whatever its existing
problems may be. Now i don't think that'll ever happen as is. Because,
due to the tremendous technological advances, in particular in
communication (i.e. the internet and its consequences, e.g. Wikipedia,
youtube, youporn, social networks sites, blogs, Instant chat, etc)
computer languages are proliferating like never before. (e.g. erlang,
OCaml, Haskell, PHP, Ruby, c#, f#, perl6, arc, NewLisp, Scala, Groovy,
Goo, Nice, E, Q, Qz, Mercury, Scratch, Flash, Processing, ..., helped
by the abundance of tools, libraries, parsers, existance of
infrastructures) New langs, basically will have all the advantages of
lisps or lisp's fundamental concepts or principles. I see that,
perhaps in the next decade, as communication technologies further hurl
us forward, the proliferation of langs will reduce to a trend of
consolidation (e.g. fueled by virtual machines such as
Microsoft's .NET. (and, btw, the breaking of programer's social taboo
of cross communication of computing languages, led by Xah Lee)).
---------------------
in general, creating a lang is relatively easy to do in comparison to
programing tasks in the industry (such as, for example, writing robust
signal processing lib, a new feature in web server, video web server
framework, a game engine ...etc.). Computing tasks typically have a
goal, where all sorts of complexities and nit-gritty detail arise in
the solving process. Creating a lang often is simply based on a
individual's creativity that doesn't have much fixed constraints, much
as in painting or sculpting. Many langs that have become popular, in
fact arose this way. Popularly known examples includes perl6, Ruby,
Arc, Python. Creating a lang requires the skill of writing a compiler
though, which isn't trivial, but today with mega proliferation of
tools, even the need for compiler writing skill is reduced. (e.g. Arc.
(10 years ago, writing a parser is mostly not required due to existing
tools such as lex/yacc))
Some lang are created to solve a immediate problem or need.
Mathematica, Adobe Flash's ActionScript, Emacs Lisp, LSL would be good
examples. Some are created due to a new discoveries in computing
models. Lisp, Haskell, Qi, Prolog, SmallTalk, are of this type...
Some are created by corporations from scratch for one reasons or
another. e.g. Java, Javascript, AppleScript, Dylan, C#. The reason is
mostly to make money by creating a lang that solves perceived problems
or need, as innovation. The problem may or may not actually exist. (C#
is a lang created probably mostly just for legal reasons)
-------------------
Looking at some tens of langs, one might think that there might be
some unifying factor, some unifying theory or model, that limits their
type, class, or model. With influence from Stephen Wolfram book “A New
Kind of Scienceâ€, i'd think there's no such thing. That is to say,
different languages are potentionally endless, and each can become
quite useful or important or with large user bases. In other words, i
think there's no theoretical basis that would govern what languages
will be popular due to its technical/mathematical properties... (sorry
just writing out my thoughts here...) Perhaps another way to phrase
this imprecise thought is that, languages will keep proliferating, and
even if we don't consider langs that are one-man's fancy, there will
still probably be forever birth of languages, and they will all be
useful or solve some niche problem, because there is no theoretical or
techinacal reason that sometimes in the future there would be one lang
that can be fittingly used to solve all computing problems.
Also, the possibilities of lang's syntax are basically unlimited, even
considering that they be practical and human readible. So, any joe,
can potentionally create a new syntax. The syntaxes of existing langs,
when compared to the number of all potentionally possible (human
readible) syntaxes, are probably a very small fraction. That is to
say, even with so many existing langs today with their wildly
differing syntax, we probably haven't seen nothing yet.
Also note here all langs mentioned here are all plain-text linear
ones. Spread sheet and visual programing langs would be example of 2D
syntax... but i haven't thought about how they can be classified as
syntax. (nor do i fully understand the ontology of syntax)
(see e.g.
http://en.wikipedia.org/wiki/Syntax
http://en.wikipedia.org/wiki/Visual_programming_language
)
Just some extempore thoughts.
Xah
∑ http://xahlee.org/
☄
arose in recent years.
Here's the result:
http://xahlee.org/UnixResource_dir/writ/new_langs.html
Plain text version follows.
-------------------------------------
There is a proliferation of computer languages today like never
before. In this page, i list some of them.
In the following, i try to list some of the langs that are created
after 2000, or become very active after 2000.
* Erlang↗. Functional, concurrent.
* Haskell↗ Oldish, functional.
* Mercury↗. Logic, functional.
* Q↗. Functional lang, based on term rewriting. To be replaced by
“Pure†http://pure-lang.sourceforge.net/.
ML Family:
* Oz↗. Concurrent. Multiparadigm.
* Alice↗. Concurrent, ML derivative. Saarland University, Germany.
* OCaml↗
* F#↗. Microsoft's functional lang.
Lisp family:
* Mathematica↗
* NewLisp↗
* Arc↗. Paul Graham's selling his name.
* Qi↗. Common Lisp added with modern functional lang features.
* Scheme↗, notably PLT Scheme↗.
* Dylan programming language↗. Rather dead.
Proof systems:
* Coq↗. For formal proofs.
* For much more, see Automated theorem proving↗.
Perl Family or derivative:
* PHP↗. Decendent of Perl for server side web apps.
* Ruby↗. Perl with rectified syntax and semantics.
* Perl6↗
* Sleep↗. A scripting lang, perl syntax. On Java platform.
Java related:
* C#↗. Microsoft's answer to Java.
* Scala↗. A FP+OOP lang on Java platform as a Java alternative.
* Groovy↗. Scritping lang on on Java platform.
2D graphics related.
* Scratch↗
* Adobe Flash↗'s ActionScript↗. 2D graphics.
* Processing↗. 2D graphics on Java platform.
Misc:
* Linden_Scripting_Language↗. Used in virtual world Second Life..
------------------------------
Following are some random comments on comp langs.
in the above, i tried to not list implementations. (e.g. huge number
of Scheme implemented in JVM with fluffs here and there; also e.g.
JPython, JRuby, and quite a lot more.) Also, i tried to avoid minor
derivatives or variations. Also, i tried to avoid langs that's one-
man's fancy with little followings.
For those of you developens in Java, Perl, Python for example, it
would be fruitful to spend a hour or 2 to look at the Wikipedia
articles about these, or their home pages. Wikipedia has several pages
that is a listing of comp langs, of which you can read about perhaps
over 2 hundreds of langs if you want.
The user base of the langs differ by some magnitude. Some, such as for
example PHP, C#, are within the top 10 most popular lang with active
users (which is perhaps in order of hundreds of millions). Some
others, are niche but still with huge users (order of tens or hundreds
of thousands), such as LSL, Erlang, Mathematica. Others are niche but
robust and industrial (counting academic use), such as Coq (a proof
system), Processing, PLT Scheme, AutoLisp. Few are mostly academic
followed with handful of experimenters, Qi, Arc, Mercury, Q,
Concurrent Clean are probably examples.
------------------
I was prompted to have a scan at these new lang because recently i
wrote a article titled “The Fundamental Problems of Lispâ€
( http://xahlee.org/UnixResource_dir/writ/lisp_problems.html (ranty)),
which mentioned my impression of a proliferation of languages (and all
sorts of computing tools and applications). Quote:
10 years ago, in the dot com days (~1998), where Java, Javascript,
Perl are screaming the rounds. It was my opinion, that lisp will
inevitably become popular in the future, simply due to its inherent
superior design, simplicity, flexibility, power, whatever its existing
problems may be. Now i don't think that'll ever happen as is. Because,
due to the tremendous technological advances, in particular in
communication (i.e. the internet and its consequences, e.g. Wikipedia,
youtube, youporn, social networks sites, blogs, Instant chat, etc)
computer languages are proliferating like never before. (e.g. erlang,
OCaml, Haskell, PHP, Ruby, c#, f#, perl6, arc, NewLisp, Scala, Groovy,
Goo, Nice, E, Q, Qz, Mercury, Scratch, Flash, Processing, ..., helped
by the abundance of tools, libraries, parsers, existance of
infrastructures) New langs, basically will have all the advantages of
lisps or lisp's fundamental concepts or principles. I see that,
perhaps in the next decade, as communication technologies further hurl
us forward, the proliferation of langs will reduce to a trend of
consolidation (e.g. fueled by virtual machines such as
Microsoft's .NET. (and, btw, the breaking of programer's social taboo
of cross communication of computing languages, led by Xah Lee)).
---------------------
in general, creating a lang is relatively easy to do in comparison to
programing tasks in the industry (such as, for example, writing robust
signal processing lib, a new feature in web server, video web server
framework, a game engine ...etc.). Computing tasks typically have a
goal, where all sorts of complexities and nit-gritty detail arise in
the solving process. Creating a lang often is simply based on a
individual's creativity that doesn't have much fixed constraints, much
as in painting or sculpting. Many langs that have become popular, in
fact arose this way. Popularly known examples includes perl6, Ruby,
Arc, Python. Creating a lang requires the skill of writing a compiler
though, which isn't trivial, but today with mega proliferation of
tools, even the need for compiler writing skill is reduced. (e.g. Arc.
(10 years ago, writing a parser is mostly not required due to existing
tools such as lex/yacc))
Some lang are created to solve a immediate problem or need.
Mathematica, Adobe Flash's ActionScript, Emacs Lisp, LSL would be good
examples. Some are created due to a new discoveries in computing
models. Lisp, Haskell, Qi, Prolog, SmallTalk, are of this type...
Some are created by corporations from scratch for one reasons or
another. e.g. Java, Javascript, AppleScript, Dylan, C#. The reason is
mostly to make money by creating a lang that solves perceived problems
or need, as innovation. The problem may or may not actually exist. (C#
is a lang created probably mostly just for legal reasons)
-------------------
Looking at some tens of langs, one might think that there might be
some unifying factor, some unifying theory or model, that limits their
type, class, or model. With influence from Stephen Wolfram book “A New
Kind of Scienceâ€, i'd think there's no such thing. That is to say,
different languages are potentionally endless, and each can become
quite useful or important or with large user bases. In other words, i
think there's no theoretical basis that would govern what languages
will be popular due to its technical/mathematical properties... (sorry
just writing out my thoughts here...) Perhaps another way to phrase
this imprecise thought is that, languages will keep proliferating, and
even if we don't consider langs that are one-man's fancy, there will
still probably be forever birth of languages, and they will all be
useful or solve some niche problem, because there is no theoretical or
techinacal reason that sometimes in the future there would be one lang
that can be fittingly used to solve all computing problems.
Also, the possibilities of lang's syntax are basically unlimited, even
considering that they be practical and human readible. So, any joe,
can potentionally create a new syntax. The syntaxes of existing langs,
when compared to the number of all potentionally possible (human
readible) syntaxes, are probably a very small fraction. That is to
say, even with so many existing langs today with their wildly
differing syntax, we probably haven't seen nothing yet.
Also note here all langs mentioned here are all plain-text linear
ones. Spread sheet and visual programing langs would be example of 2D
syntax... but i haven't thought about how they can be classified as
syntax. (nor do i fully understand the ontology of syntax)
(see e.g.
http://en.wikipedia.org/wiki/Syntax
http://en.wikipedia.org/wiki/Visual_programming_language
)
Just some extempore thoughts.
Xah
∑ http://xahlee.org/
☄