Forgot your password?
typodupeerror
Programming

TIOBE Declares Python the Programming Language of 2007 166

Posted by timothy
from the welcome-to-the-annual-proggie-awards dept.
The TIOBE Programming Community Index has declared Python as the Programming Language of 2007 due to a 58% surge in its popularity rating during the year, making it now the sixth most popular programming language and finally surpassing Perl. They also assert that Python has become the "defacto glue language," being "especially beloved by system administrators and build managers."
This discussion has been archived. No new comments can be posted.

IOBE Declares Python the Programming Language of 2007

Comments Filter:
  • by Anonymous Coward
    Oh, wait. A bit late for that isn't it?

    • Re: (Score:2, Funny)

      by Anonymous Coward
      They got the date wrong. The year of the Python doesn't come until 2013 [wikipedia.org].
  • ...frameworks and apps written in Python. It got off to a good early start with Zope, but the hype over PHP sadly swamped all else.
    • by Scarblac (122480) <slashdot@gerlich.nl> on Wednesday January 09, 2008 @03:30PM (#21972604) Homepage
      Currently Django, Turbogears and Pylons are all hot. Great web frameworks are there, start using them :-)
      • Re: (Score:3, Interesting)

        by abigor (540274)
        I'll second the good words for Django. Never used the others, but Django is just great.
        • by SkelVA (1055970) <winhamwr.gmail@com> on Wednesday January 09, 2008 @04:14PM (#21973532) Homepage
          I just picked up django two weeks ago and I'm loving it. I'm converting a PHP project slowly, and as an anecdote on how much more productive django is than PHP (for me):

          I had some features I had estimated out in PHP (over the last 6 months my estimates have been pretty dang close), and I implemented several of them in Django/python instead. I averaged beating my PHP estimate by 1/3rd, and that's including the time I spent trying to learn how the heck to do things in Django. I can't wait to see how things look once I've got at least an intermediate understanding of my framework. I don't hate PHP, I just love python much more.
          • by mysqlrocks (783488) on Wednesday January 09, 2008 @04:58PM (#21974342) Homepage Journal

            I'm converting a PHP project slowly...I averaged beating my PHP estimate by 1/3rd

            Perhaps you learned something the first time you solved the problem which helps you solve the same problem quicker the second time? Perhaps if you redid the project in PHP (I know this would be pointless, but for sake of argument) it would be just as fast as in Python?

            • by SkelVA (1055970) <winhamwr.gmail@com> on Wednesday January 09, 2008 @05:13PM (#21974590) Homepage

              Perhaps you learned something the first time you solved the problem which helps you solve the same problem quicker the second time?


              That would definitely effect any re-implementation I had to do. I probably didn't make myself clear, but the efficiency was gained on 100% new code adding a new set of basically standalone features (A quizzing module added to a document control system). Of course, the efficiency gain was over my estimates, and they're subject to the accuracy of my initial estimates. I've been using the trac timing and estimation plugin to track my estimations over this project though, and they've been pretty dead-on (especially the last couple months).

              When I go back and do re-implementation of features already present in PHP, I should only expect big gains coming from being able to just port code instead of design. I would really like to see more empirical evidence on the topic myself, but all I have to go on is my personal data.
        • by daeg (828071)
          The only problem is finding easily relocatable Django candidates. :-) (*cough* Tampa, Florida, anyone?)

          We run almost everything in Django -- website, management, and patient records (secured, don't worry, and kept relatively anonymous... no SSN, etc).
        • by Joe Tie. (567096)
          Some more praise for django here. One of the great things about it for me is how well it scales up or down. I never feel like I'm forced to do anything when I'm using it. Unlike most php frameworks, where I feel like I'm being constrained at one level that's been prechosen for me, no more, no less. It's really beautifully elegant in design.
    • by Simon (815) <simon@s i m onzone.com> on Wednesday January 09, 2008 @03:44PM (#21972906) Homepage
      Dude, as was mentioned at PyCon 2007, there are more Python frameworks than reserved Python keywords. A framework shortage isn't the problem. ;-) http://www.b-list.org/weblog/2007/feb/23/pycon-2007-web-frameworks-panel/ [b-list.org]

      --
      Simon
  • by slyn (1111419) <ozzietheowl@gmail.com> on Wednesday January 09, 2008 @03:16PM (#21972338)
    Two oblig python links:

    Python @ xkcd [xkcd.com]

    and

    Python @ Bash.org [bash.org]

    HHSSSHSHSSS
  • by pembo13 (770295) on Wednesday January 09, 2008 @03:17PM (#21972354) Homepage
    I would just like to say thank you as I accept this award on behalf of my fellow Python brothers. We all know that God created the universe with Python, but allowed the non believers to think that it was Perl or LISP so that they would not commit seppuku.
  • OPED:
    Wouldn't call it the year of Python since there's nothing special that's happened with Python this year. Heard a LOT more hype about Ruby (f that).
    Tried the twisted framework. Garbage.
    Frameworks can't be written successfully in a baby language like PHP, Python frameworks aren't gonna magically appear.

    I'll take PHP, Java for backend and Flex/Actionscript for frontend.
    • by mstahl (701501) <marrrrrk AT gmail DOT com> on Wednesday January 09, 2008 @04:01PM (#21973308) Homepage Journal

      PHP, Java for backend and Flex/Actionscript for frontend

      Them's fightin' words, sir!

      But seriously.... I've just gotten so tired of PHP in the past two years, and Ruby was such a great improvement to it. I used Python before PHP and my only complaint at the time was that it really was more trouble than it was worth at the time to write whole web applications in Python. You could, but languages like PHP were made for the web, so it got superseded. Once upon a time I wrote a few games in Python using PyGame and PyOpenGL though and had nothing but great experiences with that. I wouldn't call Ruby a cure-all, but it's pretty flexible and really pleasant to use for a wide variety of projects.

      That being said, I think that your post really misses the fact that for every task there's usually one or two programming languages or frameworks that would be "best" for that task. While PHP and Java may work as a backend for you, many of my projects are almost completely perfect for a Ruby on Rails implementation or specifically require functionality that exists nowhere else. Meanwhile Actionscript implies Flash, and I only have a couple of things brewing right now where Flash is even an option, much less advisable. I'm not trying to slam you here; I'm just saying that like anything else your mileage may vary.

      Also, python's supposedly getting tail recursion and some other tasty features soon. I might be tempted to pick it back up if it can surpass ruby in its efficiency that way.

    • by AlXtreme (223728)

      Frameworks can't be written successfully in a baby language like PHP, Python frameworks aren't gonna magically appear.

      Like Django [djangoproject.com], perhaps?

      I'm with you on twisted; you nead to twist your head around it. Python has indeed had a relatively quiet year. Django on the other hand seems to be doing things just right and leaves the programmer with the final say in how he wants to structure his application. I've been using it for various projects over the last 1.5 years: it has never let me down and shortened develo

      • I'm with you on twisted; you nead to twist your head around it. ... Django on the other hand...

        As I understand it, Twisted is more of a framework for writing frameworks; it's not meant to provide the sort of higher-level stuff that people generally expect when they say "web framework." If I'm wrong about that, somebody please correct me.

        • by AlXtreme (223728)

          As I understand it, Twisted is more of a framework for writing frameworks; it's not meant to provide the sort of higher-level stuff that people generally expect when they say "web framework." If I'm wrong about that, somebody please correct me.

          Yes and no. I must admit having to look it up [wikipedia.org], as it has been a while I looked at twisted. Twisted provides a framework for networked applications, be them client-side or server-side. They have their own Web-oriented framework called TwistedWeb, which can be used to w

  • TIOBE? (Score:4, Funny)

    by LMacG (118321) on Wednesday January 09, 2008 @03:45PM (#21972928) Journal
    I plugged that into Wikipedia and I got redirected to The Importance of Being Earnest.

    The linked page in the summary doesn't give any clues. Do we get to make up our own meanings? How about The Infernal Order of Bastard Evildoers? Seriously, who are these herpephilic people?
    • Re: (Score:3, Informative)

      This Is One Big Earmuff.
    • Re:TIOBE? (Score:4, Informative)

      by Jugalator (259273) on Wednesday January 09, 2008 @08:03PM (#21977190) Journal
      It is short for The Importance of Being Earnest, and this is also shown on their company profile page.

      The name TIOBE stands for "The Importance Of Being Earnest". This is also the name of a comedy play written by Oscar Wilde at the end of the Nineteenth Century. By choosing this name, the founders of TIOBE Software emphasize their sincere and professional attitude towards customers, suppliers and colleagues.
  • by Haeleth (414428) on Wednesday January 09, 2008 @03:47PM (#21972970) Journal
    It all depends how you count it. For example, here [indeed.com] is a comparison based on available jobs that shows Perl still vastly in the lead, followed by PHP, with Python and Ruby both trailing by a long way. I'm sure there are other figures that prove that PHP is the biggest language, and yet others that show Ruby is growing fastest, etc. etc. etc.

    TIOBE's methodology is distinctly suspect, too. Looking at search engine result counts - which are estimates, and in the case of Google are well documented to be inaccurate - is hardly scientific. And they're using YouTube as one of their search engines?! How is that going to produce meaningful figures?

    (Yeah, I'm still bitter that ML is so unpopular. But you can't call me a Perl fanboy, because I dislike all "dynamic" programming languages equally, and program largely in C++ and OCaml.)
    • Re: (Score:3, Insightful)

      by DragonWriter (970822)

      TIOBE's methodology is distinctly suspect, too. Looking at search engine result counts - which are estimates, and in the case of Google are well documented to be inaccurate - is hardly scientific. And they're using YouTube as one of their search engines?! How is that going to produce meaningful figures?

      Their measuring the popularity of language foo by "Programming foo" hits, with some special case modifications to deal with particular languages where that kind of query would be problematic. Its not at all a

    • by Dasher42 (514179) on Wednesday January 09, 2008 @04:36PM (#21973966)
      Not to argue that TIOBE's statistics aren't suspect, but the number of available jobs banging on Perl isn't meaningful to me. I've already had too many jobs where the first order of business is someone pointing me at a directory and saying, "These are your predecessor's Perl scripts. Please figure this out and make things work."

      The last time I had free rein in something like that, I did just that, and made a clean rewrite to make a few cleanly commented, consistent Python modules that did the work of all the previous scripts, sans bugs. Just the fact that assignment by reference is the default, that building data structures deeply requires no line noise, makes the program design easy to get right the first time. No "oops, need another dollar sign there". No "how do I refer to a value in a hash of lists of hashes again?" You just do it.

      Maybe it's that my sense of programming comes from years of looking at some of the cleaner C and C++ out there, and reading Design Patterns, makes me prefer a language that encourages design and clean coding practices by default. I don't want to deal with one more script from someone who munged strings of data with regular expressions where they should have used data structures or objects. Those of you who are about to clean up piles of Perl code with Perl Medic in hand, I salute you. You're braver than I care to be anymore.
      • Just the fact that assignment by reference is the default, that building data structures deeply requires no line noise, makes the program design easy to get right the first time. No "oops, need another dollar sign there". No "how do I refer to a value in a hash of lists of hashes again?" You just do it.

        Yes, yes, yes. That was the exact issue that made me come to love Python. It's not that I can't make complex structures in Perl, but that every time I wanted to do anything non-trivial I had to reach for the camel book. And heaven help you if you wanted to change a function to return a hash of list of hashes instead of a scalar, because then you'd have to change the calling code's semantics for storing the results. Hard? No. Annoyingly pointless? Oh, yeah.

        I don't have anything against Perl. I ju

        • by mvdwege (243851)

          And heaven help you if you wanted to change a function to return a hash of list of hashes instead of a scalar, because then you'd have to change the calling code's semantics for storing the results.

          Being somewhat conversant in both languages, I can't help but wonder how you would go about the same thing in Python. I mean, the difference between a single value and a dictionary of lists of dictionaries is just as big. If your function returns data in a certain format, and you change the format of the retur

      • by Sentry21 (8183)

        Just the fact that assignment by reference is the default, that building data structures deeply requires no line noise, makes the program design easy to get right the first time. No "oops, need another dollar sign there". No "how do I refer to a value in a hash of lists of hashes again?" You just do it.

        This is definitely true, though your mention of assignment by reference reminded me of something.

        I was experimenting with writing an IRC bot in Python from the ground up, opening up a socket and sending data into it (no frameworks or anything). After a while, I got fed up with killing the bot and restarting it every time I wanted to test new code (and people were getting tired of it quitting and rejoining), so eventually I came up with a solution.

        I factored the bot class out into a separate module, and wro

        • Then, I added functionality to the class to take all of its data structures (list of channels, list of users, and even the TCP socket itself) and pack them up into a dict, then return the dict.

          Kudos for a slick hack! But here's how I might approach that:

          Create a class called "Settings" or similar. Change your bot class's __init__ method to accept a Settings object, like "def __init__(self, settings)". Then, change your code to refer to self.settings directly, such as replacing "self.socket" with "self.settings.socket". Once you do that, you can get rid of all the code that deals with saving and restore state, since all state will already be bundled into one convenient object.

        • I now have an IRC bot written in Python which allows me to modify the code live, without restarting the bot.
          .
          .
          .
          It was a rather ingenious hack, imho, was startlingly simple to implement, and was made possible by the amazing dynamicness of Python.

          Its a clever hack, but there is nothing really specific to Python about it. Lots of languages would let you do that: indeed, that's one of the things that I've seen raved about regarding the use of Lisp in, e.g., the space program. Certainly, Lisp/Scheme, Ruby, and P

      • by Nevyn (5505) *

        The last time I had free rein in something like that, I did just that, and made a clean rewrite to make a few cleanly commented, consistent Python modules that did the work of all the previous scripts, sans bugs.

        Sounds good, then someone can come in a few months/years from now and re-write in NBL [blogspot.com] because it's getting 100x as much data and now takes 3 weeks to process the data, using 500GB of RAM. Or because it's dumping pages of backtrace for a: missing file / an int() that should be a str() / misspelle

        • by Dasher42 (514179)
          In which case, a well-design prototype in a high level language is just part of the process. The alternative is premature optimization, and you know what they say about that.
        • by ricegf (1059658)

          Perl has basically been unmaintained for like 8 years now
          Give or take 7 years and 11 months [slashdot.org]. Even a Python enthusiast like me knows that!
    • Re: (Score:3, Interesting)

      by DavidNWelton (142216)
      Perfect stats are impossible. However, I think that even imperfect stats can give you a good glimpse of what's going on. This is my own attempt at doing so, which I think is a bit better than TIOBE's in that I track more things:

      http://www.langpop.com/ [langpop.com]

      Hopefully, I'll have trend data up there soon as well.
  • This is certainly interesting news. These days when I just need to script something fast, Python is definitely my tool of choice because it works everywhere that I do, and is easier, for me at least, to deal with than Perl. Though I still have a soft spot for Perl because it was the first programming language that actually earned me any money!
  • by Mark Programmer (228585) on Wednesday January 09, 2008 @04:13PM (#21973510) Homepage
    especially beloved by system administrators and build managers.

    Absolutely. This year we replaced an old build system written in make with a (vastly superior) Python solution written from scratch. The replacement took one programmer about two weeks. The make system had taken two programmers a disgusting amount of time to build and support. What suprised me most upon completing the changeover was that the Python solution was faster than the gmake solution; since Python compiles to bytecode, re-running the build script was a quicker operation than gmake's re-parsing of the make files.

    Python's advantage as build glue is that it is just simple enough to be nearly shell scripting (write a simple wrapper, and you can pretty much just write shell script). But it has the features of a decent high-level language---including, most importantly, integrated documentation and a debugger. Anyone who doesn't understand why one would need a debugger for a build system hasn't yet written a build system complicated enough.

    Really though, this is less a statement in support of Python and more a statement against gmake. Make's age really shows as a build language, and if not for all the tools in the GNU world that depend upon / assume the existence of a make engine, I would encourage everyone to just toss the whole thing overboard and create all new build scripts in something else. You have better things to do with your time than reverse engineer code written in a nearly incomprehensible string-parsing language by someone who---in spite of the "standards" that have built up around make over the years---has gone off and done his own thing anyway. If you're going to have to deal with custom build code, you may as well own the challenge completely.
    • re-running the build script was a quicker operation than gmake's re-parsing of the make files.

      Erm, make files? Plural? Well, there's your problem...

      I forget where, but there is a paper somewhere on the dangers of recursive make, advocating a single makefile instead (with a few includes). And they have a point.

      I'm all for replacing Make, but performance isn't the reason.

      • by TheLink (130905)
        How do you manage a single makefile for a project that has a fair number of people doing their own different modules (doing their own submodules etc)?

        Some of the modules don't need makefiles either.

        Those modules are to be packaged in their own separate packages (RPM or whatever).

        In the end it just seemed easier to let people handle their own makefiles (with certain limits) for their stuff, assuming of course if makefiles are necessary.

        The last I checked FreeBSD used to use some perl scripts to help build it
        • I'd have to find the article, but it does discuss all of these things. (Not RPM by name, but...)

          I'm not advocating makefiles, just saying that the complaint of performance, in particular, isn't relevant.

          (Oh, and you can always have different files -- include files and such. But including them is fundamentally different than a recursive make.)
    • Re: (Score:2, Interesting)

      Really? One of the problems I've had with Python is how hard it is to use it as a shell scripting language. Namely, the functions for browsing and manipulating the file system are low-level, OO-hostile, quirky, and scattered seemingly almost randomly between os, os.path and shutil. I find them so unwieldy I'll sometimes just cheat and call .bat files from Python to operate on files.
      Apparently some people even have it as their CLI of choice, so I may be missing something, but I've been unable to pry out of t
    • Do you know of a good guide to using Python as a replacement for bash shell scripts? Lots of people seem to use it for this purpose, and I was interested in finding a nice guide to learning how to do this.
  • tools for the task (Score:4, Interesting)

    by Speare (84249) on Wednesday January 09, 2008 @04:18PM (#21973614) Homepage Journal

    First off, let me say that I love both Perl 5 and Python 2.x and have used each of them on a wide diversity of projects. I've implemented my own OO system on top of each, I've used each for CGI, I've used each for AI, natural language processing, and game programming. Both languages have their idiosyncratic idioms and it's really annoying when you see a lot of C-ish code in either Perl or Python projects. It's also very possible to write ugly "write once" code in either one, don't be misled by the whitespace arguments: ugly code is about how you express (or fail to express) a problem and a solution.

    However, I have to say, pick the tool for the job. There are things that are more naturally expressed in Perl idioms than in Python idioms. There are things that are much more clear and direct about Python code for outsiders to read and understand. If I were doing a ton of regex text scanning work, Perl incorporates it into the language directly, whereas it's a bolt-on for most other languages. If I were doing a ton of object management, I like the compactness of Python's syntax over that of Perl's. Both have great extensibility but the available extensions and support can shape your choice for a given project. I wish Python had true equivalents to Perlmonks and CPAN; conversely I wish CPAN modules were more crisp and consistent, attributes I think I find in the community-written Python modules I've used.

    • by renoX (11677)
      > pick the tool for the job.

      That's why Ruby is nice, it's as readable as Python but it has regex included (of course if you use overcomplicated regex in your code the readability will suffer, but that's not a language issue).
      • That's why Ruby is nice, it's as readable as Python but it has regex included...

        Just curious, are you talking about having to "import re" in Python instead of just having regex support by default, or is there something significant lacking in Python's regex support? (Not trolling, it's just nice to have some additional information about the differences in the languages)

        • That's why Ruby is nice, it's as readable as Python but it has regex included...

          Just curious, are you talking about having to "import re" in Python instead of just having regex support by default, or is there something significant lacking in Python's regex support?

          The need to import a library isn't a big deal, but Ruby's core support isn't just support functions "included by default", its also a simple literal syntax available and perl-style magic variables related to regexs. Now, I'm not too fond of the m

    • by ricegf (1059658)

      I wish Python had true equivalents to... CPAN

      Just curious - in what way is the Cheeseshop not equivalent to CPAN? Not as many Python eggs as CPAN modules, of course, but otherwise I easy_install as easily as I ppm. Or maybe you mean something else?

  • TIOBE bases their ratings on the number of search engine queries for "<language> programming' [tiobe.com]. Maybe it's just me but I don't equate an increase in search engine queries regarding programming in python as indicating an increase in the popularity of python.

    Put another way, the number of people looking up information on a language X != the number of people programming in language X.


    Never let reality temper imagination
    • Re: (Score:2, Insightful)

      by rjames13 (1178191)
      I never put "language programming" into a search engine I find "language library tutorial" is better. Of course that means I am learning "language" and "library". If I'm already programming in a specific language and know where the libraries documentation is then I have it bookmarked.
  • Just Say No! (Score:3, Interesting)

    by Endymion (12816) <slashdot.org@tho ... t ['ise' in gap]> on Wednesday January 09, 2008 @04:43PM (#21974102) Homepage Journal
    Just say no to Bondage and Discipline Languages [catb.org]!

    ...any language where the author thinks lambda is "too confusing" and should be removed is doomed from the start.
    • That obscure link you posted claims "bondage and discipline" languages to be lacking compared to opposing (and superiour) Languages of Choice. [catb.org] The latter to which the author of this strange theory counts Python. Duh.

      I'd say your plan to get all smart-assy on Python backfired big time.
    • What are you talking about? A handful of idiomatic lambda uses have largely been replaced, sure, but lambda is still pretty common in Python code.
  • Now here's something probably most of you don't know :) Eve Online (The Space MMO from CCP) (You know, the one people seem to love bashing) is actually written in Python.

    First time I realized that was about 3 days after installing the game and seeing all kinds of familiar extensions in cache and library directories. Fun stuff :) An actual game written in a language that's derived from a language that was originally designed for games.

"Turn on, tune up, rock out." -- Billy Gibbons

Working...