Hard to take a popularity index seriously when Logo is at #19 and
Bourne shell at #32 ... and then they suggest that their readers can
use it "to make a strategic decision about what programming language
should be adopted when starting to build a new software system".
your remark is a bit overzealous. After all, we all know that site is
websearh based. Although it not some kinda scientific report, but it
does give some good indication of language popularity, however you
define that.
it is conceivable that logo is somewhat used more than bourne shell.
first of all, Logo is a lisp dialect. (it's one of the rare lisp sans
the parens.) The most famous logo book is the triology titled
something like Computer Science Logo Style, by Brian Harvey, who
teaches at UC Berkeley and now and then still post to
“comp.lang.schemeâ€. (who, like some many veteran Scheme Lisp
dignitaries, cries out against the utter fuckup Scheme 6 (aka R6RS))
Bourne Shell, is pretty much replaced by Bash since several years ago.
For example, as far as i know, linuxes today don't have Bourne Shell
anymore. “sh†is just a alias to bash with some compatibility
parameter. That immediately wipe out a huge sector of unixes that
lives on Bourne Shell. This is a good thing. In about 2000 i called
for this. The fucking asshole Sun Microsystems insists on installing
at least 3 versions of shell utilities in several directories... (and
the BSD unixes insist on their inferior stupid versions of shell
tools)
To be sure, Logo is very much a academic lang, mostly for teaching and
for younsters. Much of its code is about drawing graphics. Some other
major use of Logo is in robotics, much associated with the Lego
robotics toys.
While Bourne Shell, as far as i can venture a guess, is still the
primary startup scripts in various unixes.
It is hard to put down exactly which is “popularâ€. We have to first
define what we mean by popular, of course. Is it number of programers/
users? Popularity in the sense of awareness? Number of software using
them out there? etc.
However, as mentioned before, all things considered, it is conceivable
that Logo is more popular than sh. For one thing, for any use of shell
script other than the machine startup scripts, people don't use bourne
shell anymore. They use bash, maybe tcsh, and probably vast majority
of unix/server shell oriented installation scripts are done in Perl or
python today.
For those interested in languages, see:
• Proliferation of Computing Languages
http://xahlee.org/UnixResource_dir/writ/new_langs.html
It would be fruitful to actually set aside some 3 hours in some
weekend, to read thru these and the Wikipedia articles linked. You'll
get a survey of today's languages, what they are, what they do, their
nature, their field, and where the landscape of languages might be
tomorrow.
plain text version follows.
-------------------------------
Back to Computing and Its People.
Proliferation of Computing Languages
Xah Lee, 2008-07, 2008-11
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.
Functional langs:
Erlang↗. Functional, concurrent. Mostly used in a telecomunication
industry for corcurrency and continuous up-time features.
Haskell↗ Oldish, classic functional lang.
Mercury↗. Logic, functional.
Q↗. Functional lang, based on term rewriting. To be replaced by Pure↗.
Oz↗. Concurrent. Multiparadigm.
ML Family:
OCaml↗
Alice↗. Concurrent, ML derivative. Saarland University, Germany.
F#↗. Microsoft's functional lang.
Lisp family or similar:
Mathematica↗. Computer algebra system background. Used mostly for math
and research.
NewLisp↗. Lisp scripting style.
Arc↗. Paul Graham squeezing juice out of his celebrity status.
Qi↗. Common Lisp added with modern functional lang features.
Clojure↗. A new lisp dialect on Java platform.
Scheme↗, notably PLT Scheme↗. Used mostly for teaching.
(Dead. Dylan↗. Apple's re-invention of lisp for industrial programers,
active in the 1990s.)
Computer Algebra and Proof systems:
Coq↗. For formal proofs.
For much more, see Category:Computer algebra systems↗ and Automated
theorem proving↗.
Perl Family or derivative:
PHP↗. Perl derivative for server side web apps. One of the top 10 used
langs post 2000.
Ruby↗. Perl with rectified syntax and semantics.
Perl6↗. Next gen of perl.
Sleep↗. A scripting lang, perl syntax. On Java platform.
On Java Virtual Machine:
Scala↗. A FP+OOP lang on Java platform as a Java alternative.
Groovy↗. Scritping lang on Java platform.
C derivatives:
ObjectiveC↗. Strict superset of C. Used as the primary language by
Apple for Mac OS X.
C#↗. Microsoft's answer to Java. Quickly becoming top 10 lang with
Microsoft's “.NET†architecture.
D↗. Clean up of C++.
2D graphics related.
Scratch↗. Derived from SmallTalk + Logo.
Adobe Flash↗'s ActionScript↗. 2D graphics. Quickly becomes top 10 lang
post 2000 due to popularity of Flash.
Processing↗. 2D graphics on Java platform. Primarily used for art and
teaching.
Misc:
Linden_Scripting_Language↗. Used in virtual world Second Life.
Lua↗. Scripting.
Tcl↗. Scripting, esp GUI.
JavaScript↗. Web browser scripting.
Some Random Thoughts
Following are some random comments on comp langs.
Listing Criterion and Popularity
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.
In the above, i tried to list only “new†langs that are born or seen
with high activity or awareness after 2000. But without this
criterion, there are quite a few staples that still have some user
base. e.g. APL↗, Fortran↗, Cobol↗, Forth↗, Logo↗ (many variants),
Pascal↗ (Ada, Modula, Delphi). And others that are today top 10 most
popular langs: C++, ObjectiveC, Visual Basic.
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.
For those of you developers of 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.
Why The List
I was prompted to have a scan at these new lang because recently i
wrote a article titled Fundamental Problems of Lisp, 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, existence 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.).
Creating A Lang Is Easy
In general, creating a lang is relatively easy to do in comparison to
equivalent-sized programing tasks in the industry (such as, for
example, writing robust signal processing lib, a web server (e.g.
video web server), a web app 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 Perl, Python Ruby, Perl6, Arc. 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, various langs on JVM. (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 as computer science research byproducts,
usually using or resulting a new computing model. Lisp, Prolog,
SmallTalk, Haskell, Qi, Concurrent Clean, 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 primarily to overrun Java. Java was created first as
a lang for embedded devices, then Sun Microsystems pushed it to ride
the internet wave to envision “write once run everywhere†and
interactivity in web browser. In hindsight, Java's contribution to the
science of computer languages is probably just a social one, mainly in
popularizing the concept of a virtual machine.)
Infinite Number Of Syntaxes And Semantics
Looking at some tens of langs, one might think that there might be
some unifying factor, some unifying theory or model, that limits the
potential creation to a small set of types, classes, models. With
influence from Stephen Wolfram book “A New Kind of Science†(see:
Notes on A New Kind of Science) , i'd think this is not so. That is to
say, different languages are potentially endless, and each can become
quite useful or important or with sizable user base. In other words, i
think there's no theoretical basis that would govern what languages
will be popular due to its technical/mathematical properties. Perhaps
another way to phrase this imprecise thought is that, languages will
keep proliferating, and even if we don't count langs that created by
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 technical 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 readable. So, any joe,
can potentially create a new syntax. The syntaxes of existing langs,
when compared to the number of all potentially possible (human
readable) 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 are just seeing a few pixels in a
computer screen.
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↗ )
----------------------------
This post is posted to:
comp.lang.python,comp.lang.perl.misc,comp.lang.lisp,comp.lang.functional
Xah
∑
http://xahlee.org/
☄