On Nov 25, 2:47 pm, Jorgen Grahn <[EMAIL PROTECTED]> wrote: > On Mon, 24 Nov 2008 20:25:51 -0500, [EMAIL PROTECTED] <[EMAIL PROTECTED]> > wrote: > > QuotingXahLee<[EMAIL PROTECTED]>: > > >> herald: Python surpasses Perl in popularity! > > >> According to > >> ?TIOBE Programming Community Index for November 2008? at > >>http://www.tiobe.com/content/paperinfo/tpci/index.html > > >> it seems that Python has surpassed Perl in popularity this month! > > Interesting topic ! > > 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/ ☄ -- http://mail.python.org/mailman/listinfo/python-list