TIOBE Declares Python the Programming Language of 2007
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."
Oh, wait. A bit late for that isn't it?
...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.
Two oblig python links:
Python @ xkcd
and
Python @ Bash.org
HHSSSHSHSSS
Who?
Python is a great language.
Obligatory XKCD comic: http://xkcd.com/353/
I'm sure the python haters will be coming out of the woodwork soon though.
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.
"Thanks for all the money you paid to us. We've used it to buy off ISO among other things" -Microsoft
PHP and ActiveX over Python?
Mamama!!!! Make the bad man go away, please.
I'm hate python.
Man, you take this stuff seriously. Changing your name is hardcore.
Light the blue touch-paper and retire immediately.
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.
Often wrong but never in doubt.
I am Jack9.
Everyone knows me.
What's up with all the PHP haters on Slashdot? For building most web applications it's the place to be. Zend is working hard to increase the level of professionalism of the PHP community. I've recently started using Zend Framework and it's a really nice way to build web applications.
Bradley Holt
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?
Slightly disreputable, albeit gregarious
It all depends how you count it. For example, here 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.)
I can't quite figure out if you're a subtle troll or not? However, one of the biggest complaints about PHP programmers is that they're oblivious to a lot of important aspects of programing. Security being one of the biggies. Not being aware of the general criticisms of their chosen tools is another. (Which, if you're not a troll, you've proven my point.) I happen love Python, but I'm also aware of why many people don't like it.
Entrepreneur : (noun), French for "unemployed"
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!
To the making of books there is no end, so let's get started
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.
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.
Take care,
Mark
There is a solution...
I'm not a troll, just wondering why there's so much bashing of PHP on Slashdot. I am aware of many of the criticisms of PHP. One of them you mentioned:
You'll see that I partly addressed that criticism with my "Zend is working hard to increase the level of professionalism of the PHP community" statement. I'm not going to go into a full length defense of PHP but if you are looking for such a defense I would suggest 10 PHP Myths Dispelled. I am not a PHP zealot, I just have a lot of experience with it and would prefer to build web applications using PHP over the alternatives that I've tried (Java/JSP, ASP.NET). I can't compare it to RoR or Python since I have tried neither. I've read about both and have seen nothing compelling to make me consider switching. I'm quite productive developing in PHP and am quite aware of both it's advantages and criticisms.
Bradley Holt
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.
[
Perl is de-facto standard and is going to stay this way forever. Python just can't surpass perl shell-like syntax and C-likeness.. Not gonna happen in any time soon. ;)
And we love it this way
- Arwen, I'm your father, Agent Smith.
- Well, you're just Smith, but my father is Aerosmith!
TIOBE bases their ratings on the number of search engine queries for "<language> programming'. 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
Never let reality temper imagination
Just say no to Bondage and Discipline Languages!
...any language where the author thinks lambda is "too confusing" and should be removed is doomed from the start.
Ce n'est pas une signature automatique.
OOP - Python is, if you want to use it this way, Object Oriented!
It uses lots of POSIX standards, so if you ever did an OPEN call in-order to get fd, you have it here as-well :)
Indents, makes the coder must use indents, which makes the code easier to read.
Easy use in web-applications.
Easy to use and learn, build classes for later use, and come with every popular Linux distribution today.
Cross-platform, yeah, not all the functions, but most of them, which is good enough. Too bad that in Windows you have to install interpreter.
:)
I'm quite sure that in the next OS by MS or the one afterwards, they will release it with Python interpreter by default.
I can think of hundreds of reasons why to use python, just learn it already
Read and Comment at my BLOG
!!!
> Zend is working hard to increase the level of professionalism of the PHP community.
I'd be satisfied if they just worked to improve the damn language.
no_i_really_mean_it_mysql_really_escape_strings()
Done with slashdot, done with nerds, getting a life.
Technically you're talking about the available functions, not the "language" itself. But, semantics aside, I would argue that your complaint is being addressed. The Zend Framework I linked to and the SPL are PHP class libraries that you can use if you would prefer to work with PHP in OO way and (for the most part) forget about calling PHP functions outside of a class or object context.
Bradley Holt
http://uk.php.net/create_function
And if you can't see what's wrong with that (especially if you think it's comparable to anonymous functions in Lisp, Ruby, Haskell, etc etc), you need to go boil yourself in oil.
We looked into it, and scons is very good. The reason we didn't use it is because, ironically, it's too powerful (and relatedly complicated)---it gives a nifty complexity-for-power tradeoff that we simply decided we didn't want to leverage. Since we already knew exactly what we wanted our make process to do, we found it faster and easier to just write the Python script we wanted than to figure out the "scons way" to do things. Dependency management is a good example: scons offers automatic dependency walking, but we already had explicit dependency lists that we were comfortable updating, and didn't want to take the time to learn enough about the scons dependency walker to trust it.
If we'd been writing a make process on a brand new project, reading up on scons and understanding the structure it places upon your build process would have been a better choice. As it stands, we had a very specific plan, we could see it fairly clearly in "straight-line" python, and the instant scons's requirements got in the way we tossed it overboard and forged ahead.
Take care,
Mark
There is a solution...
I tried PHP out for a while a couple years ago. Quite a lot of useful libraries, but the language itself didn't seem to offer much. For just gluing together the existing libraries with minimal new code, it seemed to quite usable (and a lot of web development might get by with that), but it seemed a lot less nice when there was more processing involved. Maybe I just didn't get it, or maybe its improved since then...
Why? Sure, it featured neat embedding in HTML before there were Python or Ruby templating engines that used Python or Ruby in HTML, but why would it be preferred now, for a new, ground-up web application, besides familiarity to the developer? (I'm not trying to be argumentative, just looking for perspectives on "why PHP?")
That obscure link you posted claims "bondage and discipline" languages to be lacking compared to opposing (and superiour) Languages of Choice. 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.
We suffer more in our imagination than in reality. - Seneca
Every language has something to offer, something that it does better than others. The point is, choose your language based upon what the problem you are faced rather than the "popularity" of that language. Besides, Perl will never die, it will only sit and collect the programmers who jump from every other language q:)
http://www.gibby.net.au
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.
Don't thank God, thank a doctor!
First 2007 was the Year of the Linux Desktop, and now THIS??
What a great year!
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 them what the secret is.
In a fair world, refrigerators would make electricity.
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.
We at slashdot are scientists, specialists and kernel hackers. Your FUD will be found out.
Sure there is PHP bashing, as is bashing of many other PLs. Just watch a Lisp or C guy go after Java to see what I mean.
The truth is, the people that really are programming and solving problems rarely rant about a PL without having tried it. PHP is an extremely n00by-friendly programming language - also because of it's wide availability - and thus lots of code in PHP is quite wacky actually. This falls back on to the PL itself. Flash/ActionScript has simular problems (aside from having a strong prorpietary touch to it).
In the end PHP, with its neighbourhood to markup, is the web-eras basic. With way more succesfull and impacting open-source web applications than any other solution - Python included.
I *am* a Python fan, but it just didn't have that critical mass of an install base back then when mod_php gained traction. And that the true King and ruler of all webkits, Zope, has had a backend that looks like shit for 7 years now didn't help it either. Nowadays nobody gives a hoot if Zope is lightyears ahead of Rails and a few years older - it's just a niche webkit for people who've bumped into it
There are a lot of factors that make a language successfull, and PHP meets very many of those. Just because people rant about it doesn't mean it really is bad. Nobody I know would say that programming in C is really fun and modern and hip. And many people rant about it. Yet look how many mission critical work still is done with it - because the untested alternatives aren't any better.
On the server-side I've been mostly doing PHP for last 3 years now and am now going totally OOP with the CakePHP Framework and a large international project. It works, is extremely neat and quick to develop with. So be it that PHP has a few bizarly named core functions and arrow->syntax. So *fucking* what? My friend who has a business aswell and is a Sun partner and Java fanboy just moved his webproject from Java to PHP so they could finish it faster.
"Java Fanboy speeds up project by switching to PHP" - enough said.
Slashdotters rant a lot, but reality is allways a tad different.
We suffer more in our imagination than in reality. - Seneca
The main library of functions in the core namespace along with the syntax rules for the language pretty much are the language. Having an extensible language with multiple namespaces is a much cleaner alternative to lumping so much into the core. That's the complaint.
There are people who use PHP with proper modularization, but most of what people see isn't done that way. In a language that's largely used for Open Source software, the state of the code in those OSS projects will be what the language is based on, fair or not.
Did you consider BitBake? http://developer.berlios.de/projects/bitbake
It's not as ambitious as SCons.
It's part of the build framework for Open Embedded Linux - http://developer.berlios.de/projects/bitbake/
Its metadata repository takes care of keeping track of all the different ways to build things on different hardware.
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 its stuff.
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.)
Don't thank God, thank a doctor!
http://miller.emu.id.au/pmiller/books/rmch/
It's not that you can't do the same regexs in Python. It's that the syntax for doing is different and more OOPy in Python. man perlre and look at how Perl uses them...
PHP is a better web templating language then python. Given a free choice in selecting the best tool for the job, I'd favor awk, bash, erlang, haxe, javascript, lua, perl, php, pike, ruby or scheme (as appropriate). I'm fluent in some of these; I can get by in all.
;) lua makes a smaller, faster extension language and ruby wins the "nice to work in" prize. It's probably better for larger web apps than PHP, not so good as perl, haxe or erlang IMO. As for python as a client-side scripting language to replace javascript... whitespace much?
Python people are pushing it as the ultimate scripting solution, we already have a scripting language like that - perl
What exactly is pythons forte? Everywhere I look, it makes for a bad choice.
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.
Combination - fun iPhone puzzling
A few of the reasons:
Bradley Holt
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.
:) An actual game written in a language that's derived from a language that was originally designed for games.
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
Coz eternity my friend, is a long *ing time.
Do you seriously think your speed up was do to the fact that you don't have to parse a makefile each time??? That time is going to be overwhelmed by your compile times. I doubt your speed up was do to Python being compiled.
They also assert that Python has become the "defacto glue language," being "especially beloved by system administrators and build managers."
This does not make sense because of the space/tab difference between different editors and Python's sensitivity to tab-to-space conversion because it uses indentation to determine blocking levels. A glue language should be friendly to ANY text editor that happens to be around, not just those adjusted for Python-friendly spacing.
Table-ized A.I.
I wouldn't class myself as a php hater; but sometimes it seems like most of the php apps out there are tied to MySQL, which I dislike.
If someone is passing you on the right, you are an asshole for driving in the wrong lane.
With all these new fangled languages coming out, pardon the cliche, but where are my f'ing flying cars? We got Ruby, Rails, Python, Parrot, AJAX, Javascript, C#, .net, Silverlight, and a billion or two "frameworks", Java, Swing, Beans, etc, blah blah blah ... yet we're still basically doing the same websites/applications over and over again.
I don't see anything on most websites that couldn't be accomplished with a bit of Perl or C. At what point will people stop inventing derivative APIs and languages, and actually sit down and do something.
To put this in perspective, it'd be like getting excited about the new 2008 model of lawn rakes. Ok that's a bit far fetched, it's more like getting excited about subtle variations of say the English language. The new derivations are no better than the previous, they're just "new" and therefore a "must have." I'd expect that with all these new development platforms that they would at least offer things that are drastically different from one another.
Python was written to be the scripting language for Amoeba (a research operating system developed in the Netherlands).
Our source-compile times were much larger than our make parsing times, but in the common case (where there was a single file to re-compile), the several seconds of delay that were added by all of the Makefile rules reporting in that they had nothing to do were noticeable. It's possible that this was not due to parsing the makefile but instead due to the need to complete the dependency evaluation, but if that were the case I don't understand why we saw such a significant speed-boost when we went to Python.
But I don't really have enough hard evidence to lay the blame at the fault of gmake's parser. It is more accurate to say "When we re-wrote the build scripts in Python, running them on an already-built (or nearly-built) project was notably faster than running the gmake scripts on an already-built (or nearly-built) project." It is possible that this was due to some other element of the end-to-end process (such as the way the different systems access files or query the OS for file metadata).
Take care,
Mark
There is a solution...
For me, vehement PHP basher, it isn't the language specification. It has more to do with 90% of the PHP code I encounter which gleefully intermingles presentation logic with functional application logic, abuses cut and paste, and generally demonstrates blatant disregard for readability.
I have seen a little PHP that is written more like a bunch of page templates with external modular core logic. There just seems to be a bias towards rickety code in PHP. I fully acknowledge that I must seriously fear those programmers whom might abandon PHP for Python without adopting 'Pythonic' code idioms.
I personally have a problem with Python's list comprehension. I totally abuse nested list comprehensions. They are difficult to follow mentally. I must constantly restrain myself.
--- Nothing clever here: move along now...
I'll bite. Please explain what's so terrible about it.
I've worked with a number of IBM products this year that use Python embedded into them for various things. For example, WebSphere switched to python for it's internal configuration language. This finally replaced TCL. Is increased exposure by using this in various products increasing the popularity?
This signature would be better if I was creative.
Also don't forget about Jython which may be one of the best glue languages for java and we all know there is a LOT of java out there needing to be glued together!
.Ellis Web Based Database
You're absolutely right, file manipulation is a wart in Python. Thankfully, there's the path module, a good idea done well (and which should be in the stdlib!).
I was in the same boat, and made the same choice. Scons is very good (it rocks for C/C++ projects for example), but for custom build systems is way too complicated. I wish there was a "skin" you could use over Scons to build custom systems w/o delving into Scons internals unless you really, really have to.