Slashdot Mirror


FSF Awards Guido van Rossum For Python

bkuhn writes: "The FSF today bestowed its fourth annual Award for the Advancement of Free Software upon Guido van Rossum . The two other finalists were L. Peter Deutsch and Andrew Tridgell." Developing Python seems like a good reason :)

135 comments

  1. Python by MarkusQ · · Score: 4, Funny

    *smile* I assume they only care if it's free-as-in-speech, and not if it's free-as-in-format.

    -- MarkusQ

    P.S. I say this as a Python fan; truth be known, that's pretty much how I've indented my code (in anything but forth/postscript) since the mid-seventies.

  2. Great by __past__ · · Score: 3, Interesting
    This is really nice, especially after all this fuss about the Python license not being GPL-compatible.

    I really like Python, and the style Guido and the other core hackers manage it. Best example are the PEPs (Python Enhancement Proposals), a very open and community-oriented way to deal with language evolution.

    1. Re:Great by djmitche · · Score: 2, Insightful

      Guido's management of this enormous, popular project stands in some contrast to Linus' management of Linux, as discussed here on slashdot in January. Guido has held a tight on his project, but has always been careful to justify his positions with solid reasoning based in a few of his own well-known principles of language design.

      Guido's PEPs are a good way for him to relinquish some responsibility for the project while ensuring proper formal scrutiny of and public comment on all language improvements.

      In its relatively short existence, Python has made some impressive gains in popularity and diversity of uses (from embedded systems to "supercomputers" and from 10-second syadmin hacks to full-scale applications). Congratulations, Guido.

    2. Re:Great by sketerpot · · Score: 1

      It is good that GNU/RMS have been acting rather reasonably lately. RMS said recently that the GNU project was missing a kernel for a long time, but now it has one: Linux. A bit different from what some people might expect, and I would say that's a good thing.

    3. Re:Great by neroz · · Score: 1

      When did RMS say that? I thought he was still trying to say Hurd is the GNU kernel :-) Maybe in another 10 years it will be mature....

  3. Previous awards by arnoroefs2000 · · Score: 5, Informative

    In 1998, Larry Wall for his work on Perl and other software.

    "Larry Wall won the Free Software Foundation Award for the Advancement of Free Software for his many contributions to the advancement of freely distributed software, most notably Perl, a robust scripting language for sophisticated text manipulation and system management. His other widely-used programs include rn (news reader), patch (development and distribution tool), metaconfig (a program that writes Configure scripts), and the Warp space-war game."

    In 1999, Miguel de Icaza for his work on GNOME

    "de Icaza headed a team of more than 300 programmers worldwide, most of them volunteers, in the development of GNOME. GNOME is a user-friendly graphical users interface (GUI) and programming platform for GNU/Linux. GNOME 1.0 was first released in March, 1999 and has since had a step-up release."

    In 2001, Brian Paul for his ground-breaking work on the Mesa 3D Graphics Library

    "The Mesa 3D Graphics Library allows free software users to model and render in full 3D." Jeff Bates, chairman of the Free Software Foundation Awards Committee said. "The library has added tools and capabilities to the GNU/Linux system that are being utilized by people all over the world."

    1. Re:Previous awards by motox · · Score: 1, Funny

      Next year the award will go to M$ for .NET :D

  4. Congratulations Guido! by Anonymous Coward · · Score: 0

    He's a class act project maintainer & a master software designer. Way to go!

  5. Cannot trim to fit frame by Anonymous Coward · · Score: 3, Funny

    Unfortunately, Guido cannot trim this award to fit into the picture frame.

    Because white space matters on this award.

  6. And that in turn... by Anonymous Coward · · Score: 2, Interesting

    makes it possible for me as a probably far less advanced programmer to be able to *read* your code :-)

    Python deserves all credit it gets really, mostly because it's really really simple. They should ditch tk as default windowing/widget environment though and switch to wx but other than that I love it.

    And it is NOT true that any stuff one can do on 2 lines in perl would take 6 in python. Not at all.

    1. Re:And that in turn... by neroz · · Score: 1

      > They should ditch tk as default windowing/widget
      > environment though and switch to wx but other
      > than that I love it.

      Unfortunately wx uses a *lot* of ram just to load.. other than that it is very nice though.

    2. Re:And that in turn... by Shiny+Metal+S. · · Score: 3, Funny
      And it is NOT true that any stuff one can do on 2 lines in perl would take 6 in python. Not at all.
      Well... It depands.

      "You want it in one line? Does it have to fit in 80 columns?" - Larry Wall

      ;)

      --

      ~shiny
      WILL HACK FOR $$$

    3. Re:And that in turn... by PythonOrRuby · · Score: 0

      That, and if I recall correctly, wxPython isn't yet a reality on MacOS, so even though Tk is somewhat broken under = OS 9, Tkinter apps will still run on more platforms than ones done with wxPython.

    4. Re:And that in turn... by PythonOrRuby · · Score: 0
      And it is NOT true that any stuff one can do on 2 lines in perl would take 6 in python.
      Aren't list comprehensions great? Alas, though, I have fallen for Ruby, and now must use collect!
    5. Re:And that in turn... by Anonymous Coward · · Score: 0

      Ahhhh, but one can always come back! ;-)))

      One mistress is good, but two are better! ;-)))

      Python City

  7. more awards blather by Anonymous Coward · · Score: 0, Offtopic
    in this respect, hollywood and the open-source world has this much in common. every company and their mother has an award ceremony to congratulate themselves for yet another well done year. it's so tired, like guido even needs an award to validate his work in the eyes of others.

    i don't know anybody who actually gives a rat ass about these awards bullshit. except for the oscars maybe because of all the hype, it's all really meaningless.

  8. Re:However... by Anonymous Coward · · Score: 0

    What part of "Advancement of Free Software" didn't you understand? An awful lot of Java apps are distributed and run without source (thankfully decompiling is relatively effective) and most JVM implementations are still proprietary.

  9. simpsons reference by RN · · Score: 1, Funny
    Guido van Rossum Awarded the Free Software Foundation Award for the Advancement of Free Software

    when i first read this, it sounded too much like in the simpsons episode where homer won some bullshit award from Mr. Burns,

    You've won the uh..first annual ..uh..Montgomery Burns award..uh.. for the outstanding achievement in the field of ..uhh .uhh. EXCELLENCE!

    1. Re:simpsons reference by Kidder · · Score: 2, Funny

      Gah!
      ObSimpsons:
      Lisa: This award is the biggest farse I've ever seen.
      Bart: What about the Emmy's?
      Lisa: I stand corrected.

  10. This award goes to all the Python community. by sinserve · · Score: 5, Funny

    You know, Guido is the root object, and we all have
    the Award attirbute, inherited from out based class.

    1. Re:This award goes to all the Python community. by Frank+White · · Score: 0

      That's interesting, sinserve, but consider this: I'm your biological father.

      --

      Custer's Revenge: The greatest video

    2. Re:This award goes to all the Python community. by sinserve · · Score: 1

      Where were you all my life?!!

      Don't touch me, I don't need your instantiation,
      I am a big object now, full of features and attributes,
      and YOU are the one who needs me, you crippled
      abstract class.

      Sorry parent object, you were just an interface
      donor. Thanks to my decorator patterns and multiple
      inheritance, I made it through instantiation,
      and I don't need you now.

      Live alone til garbage collection.

  11. Speaking of Ghostscript by Reality+Master+101 · · Score: 1, Offtopic

    ... and related technologies. Just out of curiosity, is anyone working on a Display PDF emulator? That's one of the technologies that I've found interesting that Apple embraced in OS X.

    I haven't decided if Display PDF is a good idea or not, but it would be interested to play around with it without having to spring for a Mac*.

    *I've sworn a sacred oath never to give Apple any of my money until they change their ways (closed systems, stupid lawsuits over "look and feel", high prices, etc).

    --
    Sometimes it's best to just let stupid people be stupid.
    1. Re:Speaking of Ghostscript by Anonymous Coward · · Score: 2, Informative

      DGS

    2. Re:Speaking of Ghostscript by Reality+Master+101 · · Score: 2

      Display PDF is different from Display Postscript. Display Postscript is an older technology, although I'm not exactly sure of the differences.

      --
      Sometimes it's best to just let stupid people be stupid.
    3. Re:Speaking of Ghostscript by Anonymous Coward · · Score: 0

      PDF does not require licensing from Adobe. Postscript does.

    4. Re:Speaking of Ghostscript by Anonymous Coward · · Score: 0

      You can find a short discussion of some differences here. Same family, younger and perhaps fresher.

    5. Re:Speaking of Ghostscript by Doctor+Faustus · · Score: 1


      I haven't decided if Display PDF is a good idea or not


      Just like Display PostScript, I think it would be a really great idea so long as the interpreter ran on its own CPU, possibly with it's own RAM. Every generation of CPU seems to basically double its speed, and require tripling the component count to accomplish that, and the ratio is gradually getting worse as the easy fixes have already been done. This makes coprocessers a really good way to get performance more cheaply, just so long as they're used steadily. Graphics code, I think, is just begging for it.

    6. Re:Speaking of Ghostscript by alangmead · · Score: 1
      Postscript and Display postscript were developed first, but describing them as "an older technology" has an implication of it being a less advanced system, where really it is still the more advanced one.

      According to The PDF Reference, (labeled page 21 in the document, but the 41 page to the PDF renderer) "To simplifiy the processing of content streams, PDF does not include common programming language features such as procedures, variables, and control constructs." The imaging model of Postscript, Display Postscript, and PDF are the same, but PDF's limited set of operators don't return values. Instead of procedures, PDF has parameterized streams (similar to macros)

      On the plus side, the rigidly defined file format allows PDF renderers to jump to any section of the document without rendering previous ones, and allows documents to be statically checked for validity. (Postscript documents need to be executed before you can actually know whether they are valid or not.)

      Ghostscript does have PDF encoding and decoding capabilities, making use of the strong similarities between the two systems.

  12. Yes, but... by code65536 · · Score: 2, Insightful

    I still like Perl, better, though. :) I'm not sure I like Python's strict style rules. It's one thing to program in good style, but it's another to have the language force you to. Yes, I'm still resentful over that.

    1. Re:Yes, but... by Zagadka · · Score: 4, Insightful
      It's one thing to program in good style, but it's another to have the language force you to. Yes, I'm still resentful over that.
      If you ever have to maintain code written by others, you'll be glad that Python encouraged them to use good style. (I say "encouraged", because no language really forces good or bad style.) It's a well known fact, even among Perl advocates, that the vast majority of Perl code is indecipherable. It isn't impossible to write fairly clean code in Perl, but the language certainly doesn't encourage it.
    2. Re:Yes, but... by __past__ · · Score: 2
      I still like Perl, better, though. :)

      Come on, Larry Wall got the award in 1998! (And he was in the commite chosing GvR for this years award)

      However, note that Python is not strict at all, other than with indentation - and Emacs handles that for you. It's just a nicer syntax - it doesn't matter much, but it definitly doesn't hurt. (And, btw, I believe it might have something to do with Guido being from the Netherlands - I don't think their keyboard layout is much different from the german one, and on that, typing curly braces is a major PITA [Alt-Gr 8/9]).

      And if you insist on Perls broken syntax, but without its broken semantics, there's always Ruby... :)

      However, Guido and Larry once should get an award together for this great Parrot hoax last april. Remember? It read like

      if dollar_underscore == 1:
      do_something()
      }

    3. Re:Yes, but... by Shiny+Metal+S. · · Score: 3, Insightful
      It's one thing to program in good style, but it's another to have the language force you to. Yes, I'm still resentful over that.
      It's a well known fact, even among Perl advocates, that the vast majority of Perl code is indecipherable. It isn't impossible to write fairly clean code in Perl, but the language certainly doesn't encourage it.

      Please, don't argue Perl vs. Python, it will only start pointless flame wars. Let's agree that it's just a matter of taste. Remember, There's More Than One Way To Do It. I personally prefer Perl, but it's a totally subjective opinion. Perl and Python are more or less equally powerful languages today. But what I'm really looking forward to is Parrot, i.e. the virtual machine for Perl 6 and, I hope, also for Python, Ruby, Tcl and maybe few other good languages. It's a VM and a low-level assembly language for that VM - the language, to which Perl 6 (and hopefully other high-level languages) will be compiled to (as a layer between Perl and the VM bytecode) like C is compiled to machine-specific Assembbler (between C and the machine code). See the examples of Parrot use and read Parrot: Some Assembly Required to see what it is. Also the perl6-internals at perl.org mailing list archives is a good place to start. I'd love to see Perl and Python playing nice together, thanks to Parrot. It'd be really cool if I could write a program in Perl with someone who writes his part in Python, and another one writing in Ruby. I would just use their classes and objects, they would just use mine as well, without worrying about the language of our implementation. Parrot can be the answer here. Would it be the end of language flame wars? I do hope so.

      --

      ~shiny
      WILL HACK FOR $$$

    4. Re:Yes, but... by Trepidity · · Score: 3, Insightful

      The original poster's point still stands though - most Perl code is utter crap and completely unreadable. This is not to say that Perl is inherently worse than Python, and good Perl code is probably comparable to good Python code (maybe better?). But Perl is much more lenient in allowing really really horrible code, which for some reason a lot of people take advantage of.

    5. Re:Yes, but... by johnnyb · · Score: 2

      I spent two years not learning Python simply because of those rules. However, they are kind of nice. THe thing I absolutely LOVE about python, though, is the ability to pass bound methods as first class objects. In addition to that, I like it's implementation of lambda, as well as the new generator stuff in 2.2. Python is a very-well-constructed language.

      However, for those who have done python longer than I, what happens if person A edits in emacs using spaces for spacing, and person B edits in vi using tabs for spacing? How does Python determine the length of a tab, and is there anything to help you out if you are the victim of such a tragedy?

    6. Re:Yes, but... by Pussy+Is+Money · · Score: 0

      True enough. But then, Python isn't exactly getting the kind of exposure Perl is getting, either, because having whitespace as tokens makes it quite a bit harder to transcribe (copy-paste-mail-send, those kind of routine jabs).

      --
      Pushin' 'n dealin', shovin' 'n stealin'
    7. Re:Yes, but... by Kirruth · · Score: 3, Interesting

      I love both Python and Perl, but they occupy different parts of my brain-space. Python is very much a well-thought out, systematic kind of language whereas Perl is more of a code party.

      With Perl it's either, "My God, Larry, you are a genius" or "What exactly were you smoking, buddy" (more usually the former), whereas Python's strength lies in having a very solid core language sitting squarely across the areas people use for general purpose programming. If its text I use Perl, if its objects I use Python.

      Using either of them, I am just amazed at how great they are, and definitely cheer on Guido for his award.

      --
      "Well, put a stake in my heart and drag me into sunlight."
    8. Re:Yes, but... by Pussy+Is+Money · · Score: 0

      It doesn't matter. Most of the really, really horrible Perl code is that way simply because it was written to occupy very little space. Something you can't even decide on with Python, most of the time.

      --
      Pushin' 'n dealin', shovin' 'n stealin'
    9. Re:Yes, but... by Anonymous Coward · · Score: 0

      Do you really feel you are forced in this case?

      I mean, it's kind of having to take off your shoes in a Japanese restaurant.

      Everybody expects you to do so, but in reality you there because you chose so.

      It's not like some prison where you would have your shoes taken out, even against your will.

      That said, I invite you and others to consider how many times we trade some freedom for usefulness.

      Entry forms, for instance, they are useful because you can tab-jump from one field to another. And you don't have to worry about typing outside the fields, 'cause the computer won't let you.

      Likewise, a drawing template is also useful because it restricts your hand movement in order to get a well-rounded circle.

      I could devise many, many examples...

      My point is that right from the start we don't have all the freedom we assume (e.g., if I want a circle, a square just won't do).

      We need order and structure. We can put this structure in a program with care and get a not 100% perfect result, or we can use some tool to aid the task, something that, by taking some degree of freedom, will make programming surely more structured.

      In the end, I think the trade-off in Python may be a good one. It looks like a template to me.

    10. Re:Yes, but... by Anonymous Coward · · Score: 0
      However, for those who have done python longer than I, what happens if person A edits in emacs using spaces for spacing, and person B edits in vi using tabs for spacing? How does Python determine the length of a tab, and is there anything to help you out if you are the victim of such a tragedy?

      Python is reasonably smart about this. As long as everyone agrees how many spaces a tab represents, you should be fine. Also, a module called "tabnanny" is included to detect ambiguous indentation.

    11. Re:Yes, but... by Shiny+Metal+S. · · Score: 5, Informative
      The original poster's point still stands though - most Perl code is utter crap and completely unreadable. This is not to say that Perl is inherently worse than Python, and good Perl code is probably comparable to good Python code (maybe better?). But Perl is much more lenient in allowing really really horrible code, which for some reason a lot of people take advantage of.
      Most of everything is uter crap. This includes every aspect of human creation.

      Few days ago, someone posted this Perl code:

      #!/usr/bin/perl
      use MIME::Base64; $x = ""; while(<&gt) { $x .= $_; $x =~ s/[\r\n\t ]//g; } print decode_base64($x); exit 0;
      to which I posted this:
      $ perl -0MMIME::Base64 -e 'print decode_base64 <&gt'
      a one-liner to be typed directly at a shell prompt, which does exactly the same. Much simpler, isn't it? It's just that, like Larry Wall has well said, Give people enough rope to hang themselves, and they'll usually figure out how not to, after several successes.

      I'll give you another good example. Some time ago I tuned Perl code of one Senior Design Technologist (I won't tell you the name of his company, for obvious reasons). This was one of my records, so I have the exact stats. His program had 190 lines of code in 6530 characters and he asked me if the same can be done in more elegant way. I wrote my version from scratch, which had only 13 lines of code in 227 characters, i.e. it was 30 times smaller - it's 3% of original size. It was also over 900% faster than the original (doing exactly the same of course), as a side effect of my elegance-tuning. And no, it wasn't obfuscated and I wasn't writing it just to use as small space as possible. Later I wrote a minimal version of that program and it had 2 lines in 112 characters (including a new-line), so the real 13-lines version was quite readable, with descriptive function and variable names, indentation, etc.

      So, my point is: Most of everything is uter crap. This includes Perl code. But it says more about programmers than about the language itself. Like the fact that most of text available on the Internet is crap, doesn't mean that the English or any other natural language is crap.

      The problem with newbie Perl programmers is that they usually write in C, not in Perl. The Perl motto is There's More Than One Way To Do It. That means that you can also program using a C-style if you want. This is sometimes very useful, but it's often abused by beginners. So it's very common to see a code like this:

      for($index = 0; $index <= $maxindex; $index++){
      printf("ITEM: %s\n", $items[$index]);
      }
      where you could just write:
      print "ITEM: $_\n" for @items;
      You see my point. I'll quote Larry once again: Perl is designed to give you several ways to do anything, so consider picking the most readable one.

      That said, I may surprise you, that I am going to learn Python. For few reasons: It's a nice and powerful language, with many unique features (like e.g. the idea of using the indentation to define blocks scope) so it's definitely worth learning, even if it won't be my main language, and the WorldForge AI scripts are written in Python.

      OK, I said a lot, much more than I originally wanted to... Now you should tell me something interesting about Python, as a revenge. :)

      --

      ~shiny
      WILL HACK FOR $$$

    12. Re:Yes, but... by Anonymous Coward · · Score: 0

      Seeing as how parrot is being developed pretty much entirely by Perl developers (heck, the development is being done on the perl6-internals mailing list), I think it's unlikely that it'll ever be adopted by the Python community. Does Parrot even support real type systems, or does it only support Perl's broken "scalars are scalars" type system?

    13. Re:Yes, but... by ameoba · · Score: 2

      Even if those 'strict style rules' closely mimic accepted 'best practices' in code formatting?

      Indenting code is a lot like punctuatiting English. Yeah, ee cummings was able to get some milage out of creative punctuation, but when most people do it they look retarded. The same goes for code; a few ppl can make their code better by using creative punctuation, but most ppl end up using the freedom to write unreadable, unmaintainable code. It's OK to write in a language that doesn't look like C.

      Considering all things that Python does allow you to do, it's a fair trade off. 'Sides, your code never gets confused with line noise.

      --
      my sig's at the bottom of the page.
    14. Re:Yes, but... by WNight · · Score: 2

      I was going to make your point about most of everything being crap, but you made it so very well.

      I'll just add that I've cleaned up hideous code in C, C++, ASM, Perl, Basic, VB, ObjectPAL, and probably other languages. Usually because somebody didn't know a simpler way to accomplish the task and ended up reinventing the wheel, or used a bubble sort where a quicksort would do, etc. Or, in nasty cases, coded their own quicksort as an optimization, because they didn't realize the libraries contained a quicksort routine...

      I think my code has gotten easier to read and less crufty in languages like perl because things that would have been such a pain in C (for instance) are just a line or two of code. This lets you get down to the business of writing the program, not the functions.

      (The side effect of this though is programmers who do terribly complex list operations without an understanding of what would be involved in coding them manually, and thus no idea of what is involved in processing them. But that's my example of why formal education (forcing you to do stuff that doesn't immediately make sense, like ASM) is really a good thing.)

      Perl can make an unreadable program, but it'd be an unreadable C program, just ten times longer. And I'm sure many of the people I've worked with (myself included I'm sure, at times) could mangle it even with Python, if we were rushed.

    15. Re:Yes, but... by costas · · Score: 3, Informative

      One common misconception: Python only forces you to use consistent identation *within the same code block* not the entire file or project. Which makes perfect sensem if you think about it.

    16. Re:Yes, but... by smallpaul · · Score: 2

      Perl is designed to give you several ways to do anything, so consider picking the most readable one.

      The problem is that programmers that care will differ radically in which the consider the most readable one and many programmers just don't care at all. So in either case we have trouble reading each other's code because even when we are trying our hardest we can easily make code that is mutually incomprehensible. Python cannot prevent this but it can encourage a consistent and readable style. The language encourages good taste. No more, no less.

    17. Re:Yes, but... by Shiny+Metal+S. · · Score: 2
      The problem is that programmers that care will differ radically in which the consider the most readable one and many programmers just don't care at all. So in either case we have trouble reading each other's code because even when we are trying our hardest we can easily make code that is mutually incomprehensible.
      When you know the syntax and semantics, you won't have problems reading different styles. At least I don't have any problems, and I don't consider myself a Perl guru. Read The Camel Book and you'll learn everything you need to understand any Perl code. I don't know personaly any Perl coder who would not understand the Perl syntax.

      It doesn't meter if someone has written
      print "ITEM: $_\n" for @items;
      or
      for(@items){ print "ITEM: $_\n" }
      or
      foreach $item (@items) { print "ITEM: $item\n" }
      or
      print map {"ITEM: $_\n"} @items;
      when you know the basics of Perl, you understand it.

      Also you have to remember a very important thing, true for Perl, Python, Smalltalk, C++, Ruby, Java or any other higher-level language. When you have a good code, you don't have to fully understand or often even read the implementation details to maintain it (not to say about simply using it). All you need is to understand the interfaces. When you have a working class and you need to add a new functionality, you shouldn't edit the implementation. You should subclass it instead. These are the most basic concepts of code design for future reuse. But you have to actually design the code in the first place, not just write some crap.

      Python cannot prevent this but it can encourage a consistent and readable style. The language encourages good taste. No more, no less.
      Perl is designed somehow similar to natural languages. You don't have anything in English, Latin, Polish, Russian or any other natural language, which would "encourage a consistent and readable style", still there's a lot of great art. Remember that there's not only one good style of English, almost every poet, every novelist, every writer has his or her own, unique style. And that freedom of choice also means that you can hear lots of crap. But we can't restrict English to only a subset of lexical and semantic rules, because any restrictions which would prevent stupid people from saying stupid things, would also prevent really smart people from saying really smart things.
      --

      ~shiny
      WILL HACK FOR $$$

    18. Re:Yes, but... by smallpaul · · Score: 2

      When you know the syntax and semantics, you won't have problems reading different styles. At least I don't have any problems, and I don't consider myself a Perl guru.

      Lots of Perl people do tell me that they have trouble reading other people's Perl code. The examples you give are four extremely readable Perl snippets. They are not typical. Even so, they are enough to confuse a new Perl programmer which I would say is reason enough to choose one way and stick with it.

      When you have a good code, you don't have to fully understand or often even read the implementation details to maintain it (not to say about simply using it). All you need is to understand the interfaces.

      And when you find that there is a bug in that code? Or need to add a feature that cannot be added by subclassing (i.e. MOST features!)

      Perl is designed somehow similar to natural languages.

      I know that that it the mantra of the Perl community but that doesn't make it either true or relevant.

      You don't have anything in English, Latin, Polish, Russian or any other natural language, which would "encourage a consistent and readable style", still there's a lot of great art.

      When I'm working together on a project artistry is secondary to engineering. Natural languages are not typically used for engineering. In fact, we tend to use languages that are more formal: like algebraic symbols or pseudo-code languages.

      Remember that there's not only one good style of English, almost every poet, every novelist, every writer has his or her own, unique style. And that freedom of choice also means that you can hear lots of crap. But we can't restrict English to only a subset of lexical and semantic rules, because any restrictions which would prevent stupid people from saying stupid things, would also prevent really smart people from saying really smart things.

      The descriptive power of a natural language is not proportional to either its vocabulary or its grammatical complexity. As I'm sure you've been told, the problem solving power of a programming language is exactly equivalent to that of any other programming language. Really smart people can say really smart things in ASSEMBLY LANGUAGE. So if you want to compare languages you have to look at other factors such as cost of development, cost of maintenance, amount of fun (Perl probably wins in that category for some people), etc.

      If what you really mean to say is that Perl is more fun, for you, and you've actually tried the other languages to compare, then I will support that wholeheartedly. But there is a price to be paid: and whoever has maintain your code is probaby paying it. And there is no payoff in descriptive power or cost of development.

    19. Re:Yes, but... by Shiny+Metal+S. · · Score: 2
      I'll just add that I've cleaned up hideous code in C, C++, ASM, Perl, Basic, VB, ObjectPAL, and probably other languages. Usually because somebody didn't know a simpler way to accomplish the task and ended up reinventing the wheel, or used a bubble sort where a quicksort would do, etc. Or, in nasty cases, coded their own quicksort as an optimization, because they didn't realize the libraries contained a quicksort routine...
      You're right. The most important mistakes which I've seen, was caused by the lack of knowledge about CPAN or STL. The syntax is on the second place. Such programs run much slower, have more bugs, and are harder to maintain, but what's even more important, it took much more time (and money) to write them. That is why it's not smart to hire a poor programmer for $10/hour to produce some crap after a week of full-time work, when someone for $100/hour can do it better in few hours. Hackers with high rates are often much cheaper in the long run, that's something which is often being not fully understood by the management.
      (The side effect of this though is programmers who do terribly complex list operations without an understanding of what would be involved in coding them manually, and thus no idea of what is involved in processing them. But that's my example of why formal education (forcing you to do stuff that doesn't immediately make sense, like ASM) is really a good thing.)
      That's a very good point. Only when I know Assembler, I can fully understand what is really going on, when I run my C program. The same is true with e.g. Perl, when I know C and perl internals. I didn't write any assembly code in the last five years, but still I use that knowledge even while hacking Perl. You have to know how much and what exactly is being done, very low in the machine, when you write
      print "$_ $hash{$_}\n" for sort keys %hash;
      to fully understand your own abstract code. That's true that you have to master hacking on every level of abstraction, to truly master any one of them.

      But speaking about formal education, I actually haven't got much, to be honest. Unless you count dozens of books read, as a formal education. But don't get me wrong, it's not that I think that I don't need a more formal education, it's actually quite complicated, mostly from the economical standpoint.

      Perl can make an unreadable program, but it'd be an unreadable C program, just ten times longer. And I'm sure many of the people I've worked with (myself included I'm sure, at times) could mangle it even with Python, if we were rushed.
      Good point. Before I knew Perl, I used to write text-processing programs in C. Sometimes many screens of C code, for what I write in Perl one-liners today. And however obfuscated would it be, it's still just one line.

      Besides, I do like to have a choice. I write unreadable, quick and dirty Perl one-liners every day, and it's a Good Thing that I can write them in few seconds directly from the shell command line, which would be impossible witch such verbose languages like Java. It's not that I have to write larger programs that way, it's however important that I can if I want to.

      You know, you sometimes just want to know hexadecimal values of ip addresses in Net-HOWTO.txt.gz, and you just want to write:

      shell$ zcat Net-HOWTO.txt.gz | perl -ne 'print"$1\n"for/((\d+\.){3}\d+)/g' | sort | uniq | perl -pe 's/(\d+)/sprintf"%.2X",$1/eg;y/.//d'

      hit enter, get answers, and forget about this crap. Not to design a nice and elegant program. This code is ugly, it's probably not efficient, elegant, fast or readable, but I have my answers after few second from thinking my questions, which is quite important to me. (BTW, I wonder how the same would look in Python or Java - not that I want to start any flame wars whose language is better - I just wonder how exactly the same filter would be written by Java and Python wizards. Would it be smaller? Larger? Simpler? More complicated? More elegant? I'm curious.) And the ability itself to write ugly code, like that above, didn't prevent Tim Bunce from writing DBI, or Lincoln Stein from writing CGI.pm, which are both great examples of beautiful Perl code.

      Disclaimer: (this is for some people, who get this thread very personally, even when I stated at the very beginning: "Please, don't argue Perl vs. Python, it will only start pointless flame wars. Let's agree that it's just a matter of taste. Remember, There's More Than One Way To Do It. I personally prefer Perl, but it's a totally subjective opinion. Perl and Python are more or less equally powerful languages today.") I do not think that Perl is better than [insert your language here]. I'm just telling about things which I like in Perl, with many examples of code, real-life situations, etc. I hope that maybe people find it somehow interesting. I'd also love to hear other interesting stories, about other languages. When people tell me about advantages of Python I'm not mad that it means that Python is better than Perl, or that my IQ is lower than theirs, or anything like that - I listen to what they have to say and I'm glad that I can learn something new. It's about time for many people to understand the same.

      --

      ~shiny
      WILL HACK FOR $$$

    20. Re:Yes, but... by Shiny+Metal+S. · · Score: 2
      Lots of Perl people do tell me that they have trouble reading other people's Perl code. The examples you give are four extremely readable Perl snippets. They are not typical.
      I've already said, that I personally don't know any Perl coder (excluding beginners) who doesn't know the Perl syntax and semantics, and who therefore doesn't understand Perl code of other people, written in different styles.
      Even so, they are enough to confuse a new Perl programmer which I would say is reason enough to choose one way and stick with it.
      Remember that you're a beginner only at the beginning, and after you learn it, you're an expert for the rest of your life. That is why I don't prefer to save few hours (or even few months) at the start and stick with something simple and easy to the end of my days. I prefer to chose what's better for me in the long run.
      And when you find that there is a bug in that code? Or need to add a feature that cannot be added by subclassing (i.e. MOST features!)
      Then I fix the bug. Isn't that quite obvious? I've already told you that I don't have problems in understanding Perl syntax.
      Perl is designed somehow similar to natural languages.
      I know that that it the mantra of the Perl community but that doesn't make it either true or relevant.
      What is your point? Do you say that Perl is not "designed somehow similar to natural languages"?
      When I'm working together on a project artistry is secondary to engineering. Natural languages are not typically used for engineering. In fact, we tend to use languages that are more formal: like algebraic symbols or pseudo-code languages.
      That is exactly why I'm saying that "Perl is designed somehow similar to natural languages". It's a quite unique design goal. If every programming language had this property, then it would be quite pointless talking about it to explain what I like about Perl, wouldn't it?
      The descriptive power of a natural language is not proportional to either its vocabulary or its grammatical complexity.
      But you have to agree, that "A language that is artificially simple induces artificial complexity in all solutions written in that language."
      As I'm sure you've been told, the problem solving power of a programming language is exactly equivalent to that of any other programming language. Really smart people can say really smart things in ASSEMBLY LANGUAGE. So if you want to compare languages you have to look at other factors such as cost of development, cost of maintenance, amount of fun (Perl probably wins in that category for some people), etc.
      If I didn't consider anything other than the bare ability to solve problems, I wouldn't see the difference between any two Turing-complete languages, and I'd be probably using Unlambda instead of Perl, because the syntax is much simpler to learn, while it's still Turing-complete.
      If what you really mean to say is that Perl is more fun, for you, and you've actually tried the other languages to compare, then I will support that wholeheartedly.
      And what did you think I could mean otherwise? I was telling different stories and showing many code examples, to illustrate what I like in Perl, not why Perl is better than your favorite language, while strongly stating that these are my subjective opinions, from the beginning, through the whole thread. Please read the disclaimer at the end of this post.
      But there is a price to be paid: and whoever has maintain your code is probaby paying it. And there is no payoff in descriptive power or cost of development.
      Here you assumed that: I use Perl, therefore my code is less maintainable. Which is irrational, I hope you realize that.
      --

      ~shiny
      WILL HACK FOR $$$

    21. Re:Yes, but... by smallpaul · · Score: 2

      Remember that you're a beginner only at the beginning, and after you learn it, you're an expert for the rest of your life. That is why I don't prefer to save few hours (or even few months) at the start and stick with something simple and easy to the end of my days. I prefer to chose what's better for me in the long run.

      Fortunately, you don't have to choose. You can have easy at the beginning and sophisticated in the long run.

      What is your point? Do you say that Perl is not "designed somehow similar to natural languages"?

      I'm saying that no linguist other than Larry Wall would think that Perl was anything vaguely similar to a natural language. Yes, natural languages are crufty and context sensitive and Perl is crufty and context sensitive. That doesn't mean Perl is like a natural language.

      Here you assumed that: I use Perl, therefore my code is less maintainable. Which is irrational, I hope you realize that.

      I said "probably". As in "statistically". As in "that's what I've observed" and "heard many other people observe". If you've observed otherwise and we don't have the funds for a study I guess I'll have to leave it at that. No way to come to agreement. You can have the last word if you want it.

    22. Re:Yes, but... by Shiny+Metal+S. · · Score: 2
      I'm saying that no linguist other than Larry Wall would think that Perl was anything vaguely similar to a natural language. Yes, natural languages are crufty and context sensitive and Perl is crufty and context sensitive. That doesn't mean Perl is like a natural language.
      There's much more than only context sensitivity. But I see I won't convince you, for some reason.
      I said "probably". As in "statistically". As in "that's what I've observed" and "heard many other people observe". If you've observed otherwise and we don't have the funds for a study I guess I'll have to leave it at that. No way to come to agreement. You can have the last word if you want it.
      I commented your point as irrational, when you came to conclusion that my code is probably hard to maintain, because of fact, that there's more hard to maintain than easy to maintain Perl code out there (which is true of course). It doesn't make sense in the context of this thread and everything I was talking about. The whole long thread I talk about how I fix Perl code so it's more readable, faster, more maintainable, more clear, what are the most common mistakes of beginners, how I help them, etc. - which you conclude with:
      But there is a price to be paid: and whoever has maintain your code is probaby paying it.
      You shouldn't be surprised, that I call it irrational.

      But it's not so important to me any more. You may however want to visit CPAN and search for such distributions as CGI.pm, DBI, DBD*, and the core Perl modules, and read them, to see lots of extremely well written Perl code. It's really worth reading.

      --

      ~shiny
      WILL HACK FOR $$$

    23. Re:Yes, but... by WNight · · Score: 2

      Ditto on the formal education, but I try to read books on theory as well as practice, to make sure I understand why as well as what.

      It's *always* served me well. I've never had a CPU or disk bound program that I couldn't speed up by a factor of five (or more) by something I found in an algorithms books. (Excepting perhaps, when I use an existing algorithm like SHA1 that I assume has already been fairly well written.)

  13. for some perspective on lightweight languages by markj02 · · Score: 4, Interesting

    I recommend reading this article on DDJ on the lightweight languages workshop at MIT. It talks about Python and similar languages, and their role in the world. Note that both the LL1 workshop and the FSF are at MIT.

    1. Re:for some perspective on lightweight languages by Anonymous Coward · · Score: 0

      this is a great article. Someone should mod this up, even if it's offtopic.

  14. Bravo for a powerful, easy to learn, easy to use L by Anonymous Coward · · Score: 2, Informative

    Python is the easiest to learn, easiest to use programming language ever. It is also a very powerful, object oriented, recursive, workhorse suited to scripting and general porgramming in the large. Google is written in Python, Red Hat installation is written in Python, NASA uses Python; it takes one tenth the time develop a program in Python that it takes in Java, C++, or similar languages. Python can be learned in one day of tutorials on the web.

    Ron Stephens
    Python City (for learning Python, including web spider that displays all new Pythonic web articles four times a day, continuously).
    http://www.awaretek.com/plf.html

  15. Re:Speaking of Ghostscript [OT] by Broccolist · · Score: 1
    Why don't lottery players ever pick "1, 2, 3, 4, 5, 6"?

    Actually, they do. I read a newspaper article saying that it was by far the most popular sequence in my local lottery, with something like 10,000 tickets every lottery.

    What's ironic is that all these people picking "1,2,3,4,5,6" think they're so witty, since they know that it has the same probability of coming up as any other sequence. But in fact, it's the worst possible choice: if it did come up, the jackpot would be split among 10,000 people!

  16. DPS Implementations... by Christopher+B.+Brown · · Score: 3, Informative
    Yes, there would be:



    For those that think GNOME and KDE are too big and bloated, this is moving towards being usable for some applications.

    Keeping relevance, if L. Peter Deutsch didn't win, the somewhat-inadequacy of DGS work that the FSF contracted for might very well be part of the reason...

    --
    If you're not part of the solution, you're part of the precipitate.
  17. Not quite... by Christopher+B.+Brown · · Score: 2
    If you use Ghostscript (from one of the runners-up!), then you're using Postscript, and haven't forcibly licensed anything from Adobe.

    On the other hand, if you read a PDF document using acroread, you do have to have a valid license from Adobe

    What happened with DPS was that Adobe was not prepared to continue licensing it to Apple under terms they were prepared to agree on. The natural result was that Apple went away and implemented their own thing, namely a "Display PDF" renderer, called Quartz.

    The notion that this has much of anything to do with the formats is just silly...

    --
    If you're not part of the solution, you're part of the precipitate.
    1. Re:Not quite... by Reality+Master+101 · · Score: 2

      The natural result was that Apple went away and implemented their own thing, namely a "Display PDF" renderer, called Quartz.

      Is that true? There is no standard from Adobe called "Display PDF" and that's totally an Apple thing? I thought it came from Adobe.

      --
      Sometimes it's best to just let stupid people be stupid.
  18. yeah, but by global_diffusion · · Score: 0, Offtopic

    ... did he write Perl? I don't think so.

    Next!

    (joking of course. props to Guido)

    1. Re:yeah, but by TeknoHog · · Score: 5, Funny
      ... did he write Perl? I don't think so.

      Somebody wrote Perl? I thought it grew by itself, out of the stray code that had leaked inside hot mainframes from unterminated cables. Python, on the other hand, was designed...

      --
      Escher was the first MC and Giger invented the HR department.
    2. Re:yeah, but by global_diffusion · · Score: 1

      how is this offtopic? Perl and Python arguments happen all the time, so a joke concerning that argument an a post about a Python developer getting an award is very on-topic. Moderators: Don't be a bitch like this person; don't moderate something down just because you don't think it's funny. It's okay to leave it at 1.

  19. congrats, Guido by Anonymous Coward · · Score: 1, Interesting

    Although I've never programmed in Python, I've read the O'Reilly book and really respect what you've done to advance computer languages.

    You got a lot of balls forcing people to indent their code in a standard way!

  20. Re:Something you DIDNT know about those 3... by Anonymous Coward · · Score: 0

    We are GNU age hippies.

  21. Thanks Guido by MAXOMENOS · · Score: 2
    Not that it matters much, but I really want to thank Guido for everything he's done for the Python world, including working things out with the FSF regarding GPL compatibility. It's a real pleasure developing in this language, and I know it's cut development for some projects I've worked on by about half.

    So, congrats on a job well done and an award well deserved.

  22. yukk by Anonymous Coward · · Score: 0

    no braces {} for blocks,
    no ";" to end the statement.
    Whitespace mandatory.

    Yukk,
    Puke.

    I'd rather program in C, C++, Java, or Perl.

    1. Re:yukk by sinserve · · Score: 1

      > no braces {} for blocks,
      > no ";" to end the statement.
      > Whitespace mandatory.
      >
      > Yukk,
      > Puke.
      >
      > I'd rather program in C, C++, Java, or Perl.

      With that attitude, I guess you are only half jokingly
      serious about the first three languages.
      But Perl, oooh, perl is sooo your type.

    2. Re:yukk by TeknoHog · · Score: 2
      no braces {} for blocks,
      no ";" to end the statement.
      Whitespace mandatory.

      Yukk,
      Puke.

      So you don't like whitespace and line breaks. Then why the heck are you indenting your code? You have such fine {;} operators, you can write every program in one line. ;-)

      --
      Escher was the first MC and Giger invented the HR department.
  23. Re:Speaking of Ghostscript [OT] by Reality+Master+101 · · Score: 1

    Really! Very interesting. I didn't realize there were so many people who had a clue on the odds. You would think that people who had that much of clue would also have enough of clue not to play at all. :)

    --
    Sometimes it's best to just let stupid people be stupid.
  24. Python is nice. Python is useful. But... by oodl · · Score: 1

    Python is nice. Python is useful. But it's still just a scripting language. It saddens me that Dylan, which is better in several important ways, has not gained acceptance. Dylan has a real macro facility, is compilable to efficient code (see http://cristal.inria.fr/ICFP2001/prog-contest/), has real garbage collection, multiple inheritance, etc.

    "Dylan--which I think has a very academic flavor--is everything Python is plus so much more" -Guido van Rossum, 1999

  25. Python Topic! by Anonymous Coward · · Score: 1, Interesting


    I realize slashdot is perl-centric, but this is getting ridiculous!

    It's time for a python topic!

    I realize a topic for every language out there is impractical, but there have been a TON of python related postings!

  26. Re:Python is nice. Python is useful. But... by JohnBE · · Score: 1

    Tomato vs. Tomato. Whilst I can understand the preference of all of these languages I would argue that since 2.x Python has really shone. However there are such an abundance of good scripting languages out there (Ruby, Perl, Python, Scheme etc.) that praise the difference. They all serve to further the widespread acceptance of free languages. Yesterday Perl, Today PHP, Tommorow Python, next Dylan? Your mentioning it has certainly made me want to look at it. Especially if it has serious Academic review.

    Unfortunately the link doesn't work at the moment, so I'll try tommorow.

    --
    e4 e5
  27. Dylan is nice, but Python is a general purpose lan by Anonymous Coward · · Score: 1, Informative

    Python is perfect for large programs, because it is object oriented, modular, easy to read, especially easy to maintain, and powerful. Zope is written entirely in Python. The Google search engine is written in Python. Python is used by Dreamworks, NASA, Disney, Industrial Light and Magic, Lawrence Livermore Labs, IBM, and Yahoo.
    Python is used extensively in the most complex scientific computing applications, including nuclear accelerators and leading biological research labs. Dylan is a fine language; but the statement you made that Python is only a scripting language is 100% wrong. Python is so easy to learn and use that it is popular; but that doesn't mean it isn't powerful and suited to the biggest of programming jobs!

    Your post illustrates a common mis-perception that needs to be corrected. You seem to equate "difficult and complex" with powerful; this is not always true. Sometimes, the apparently simple and easy tool is also the most powerful; and that is precisely Guido's genius and the crowning glory of his creation; Python is the easiest programming tool ever created, so much so that one can learn to program in Python in one day, but is also one of the most powerful programming tools on earth, enabling the creation of the world's greatest search engine, Google, and one of its most complex object oriented web servers, Zope.
    In creating Python, Guido has advanced the state of the art in programming languages.

    Ron Stephens
    Python City Python City

  28. Re:Python is nice. Python is useful. But... by thesupraman · · Score: 1

    You have to be kidding. Python is certainly not 'just a scripting language', I personally have written some rather major software using it, and find it a fantastic tool.

    It finally answered the question that had been sitting in the back of my mind WRT C++, ie: 'this is good, but not quite what I want, it's overkill, but what is wrong?'. Python makes complex tasks my simpler, and does not try and make simple tasks appear complex.

    The lack of a true compiler (and also good linking system) is an issue, but not, IMHO, a major one, there are options available (pyco, py2exe, JPython, etc) that partially address this, but more often it is not a real issue.

    Python has probably doubled my efficiency as a developer, which is no small feat. C++ was probably the last tool to come close to that, and the startup time on c++ was around 6 months, python was closer to 2 weeks!

  29. Things I love about Python.. by thesupraman · · Score: 1, Interesting

    - A clean, SIMPLE, powerfull core language
    - Data types that make life easy (lists/dictionaries)
    - A FANTASTIC set of cross-platform libraries
    - A GREAT standard and simple GUI library (Tk)
    - A GREAT powerful GUI library (WX)

    Things I would love about python :)
    - A compiler (very hard, but I can dream)
    - Smaller/more tunable installs
    - wxWindows built in

    Python is the 'simple c++' I was always looking for and have now found ;), 90% of the functionality with 1% of the complexity, and great cross-platform support to boot!

    As a developer, I just love it. Python reduces my development time significantly, and also allows me to express algorithms in a logic way, without fighting the language. This is a VERY important feature. It lowers development stress, so I can spend more time working and less time reading language manuals.

    1. Re:Things I love about Python.. by fperez · · Score: 2, Interesting
      Things I would love about python :)

      - A compiler (very hard, but I can dream)

      Keep an eye on the weave project here. Currently it allows you to inline C/C++, and work is under way to have automatic acceleration of arbitrary python code via compilation to C/C++. It's *really* cool.

  30. Re:Bravo for a powerful, easy to learn, easy to us by Xerithane · · Score: 2

    Google is not written in Python. Google has pieces of it written in Python.

    NASA also uses Fortran, COBOL, Pascal, Perl, C, C++, Java. What's your point?

    Python is really not an all-in-wonder language, it's good but please don't tote it that it is the wonder language that will solve all the problems of the world, because no language is. Python has it's fallacies as well.

    --
    Dacels Jewelers can't be trusted.
  31. Re:Bravo for a powerful, easy to learn, easy to us by Anonymous Coward · · Score: 0

    OK, Xeriphane, what are some "fallacies" of Python, as you call them? As far as I'm concerned, Python is just great in all its aspects. I would really be interested in hearing about the "fallacies" you discern. Or were you just pontificating without any actual knowledge ;-)))

    Seriously, Python is just a great, easy, powerful, language. It's nice to just celebrate a good thing once in while. As to "fallacies" I'll let you deliniate them ;-))

  32. No Tragedy at all... by Anonymous Coward · · Score: 0

    No tragedy at all. It won't hurt anything. As long as each block of code is indented the same amount ,compared to its parent block, everything will work fine. If the next block is indented two spaces instead of one, no problem. Now , if you just randomly indent differently *within the same block of code*, of course, you get a nice error message on improper indentation that tells you exactly where to fix it. No problem.

    Debugging Python is the fastest, easiest , most painless process I have ever encountered in the coding world. In fact, the really great debugging is the part of Python I like the most!

    Anyone who actually tries Python's indentation style coding is unlikely to want to ever go back to using curly braces, that's for sure! I have seen raving madmen who expound utter hatred for Python's indentation *before* they try it out. After coding in Python for a couple of weeks, they invariably become the languages' most ardent supporters and would never consider going back to an insane world of curly braces, and unreadable, ugly code.

    Of course, what they really like is the secret weapon of coding efficiency that Python gives them, allowing them to be many times more efficient than their competitor coders, turning out much more code in the same period of time with less hassle and infintiely eaiser debugging .

  33. Here's hoping by alext · · Score: 1

    My impression is that Parrot is going to be a VM for Perl only, thanks to somewhat less than wild enthusiasm from the Python contributors, plus the decline of TCL, the fragmented LISP world etc. But I would like to be wrong! any pointers to recent progress in this area?

    <digression>

    Although, having said that, I rather wish that Parrot was more than just another bytecode machine. It would have been nice to have embodied some programs as data capabilities, that general advance is surely long overdue. (Turing put modifiable code in the ACE design in, er, 1945, and LISP did it quite neatly back in 1960).

    Algol seems to cast a long shadow, don't you think?

    </digression>

  34. Python complaints by Tablizer · · Score: 1, Interesting

    (* Python is perfect for large programs, because it is object oriented *)

    How *exactly* does OO help large programs? I keep hearing this cliche, but it is never demonstrated, besides comparing it to bad procedural design. The 1st Orielly Python book gave a lame, rigged menu example to justify OO.

    Although I much prefer Python over Java, there are some annoying things about it IMO. First of all, it has too many collection "types". These should be rolled into one protocol so that one can scale clear up to RDBMS's without changing access syntax. (Perhaps the engine will be switched, but the access syntax should not have to be.) OOer's don't "get" scaling collection protocols IMO, stuck in the artificial make-a-taxonomy-of-collections-because-
    Smalltalk-did-that mindset.

    Further, it is too easy to mix up tabs and spaces in scripts. Scripting should *not* assume a controlled editor environment. When you can mix up tabs and spaces, then WYSIWYG indentation goes out the door. The compiler cannot know how tabs *appear* to you. Think about it.

    1. Re:Python complaints by Anonymous Coward · · Score: 1, Interesting

      I wrote "Python is perfect for large programs, because it is object oriented, modular, easy to read, especially easy to maintain, and powerful."

      From which you quoted only the first part
      (* Python is perfect for large programs, because it is object oriented *) and attacked it.

      Well, it is the combination of qualties and characteristics that make a programming langauge good at large programs, not just any one part. I actually agree with you 100% that merely being object oriented does not guarantee that a language will be good at large projects. In fact, extreme purity that puts all emphasis on object orientation or any other one kind of programming leads to very poor languages, in my opinion.

      Indeed, one can program in Python in a purely procedural way, or even a functional way, without ever even using classes or object orientation at all! Newcomers to programming often start out this way in Python and do just fine, creating wonderfully useful programs without classes or any notion of object orientation entering their brains, until they are ready for it. This helps to make Python a perfect first language for new programmers, and yet Python eventually leads them to a clear understanding of even the most advanced programming concepts, in a painless, enjoyable, and useful process.

      Python is very practical, pragmatic, and takes a middle course. This middle way, the Python way, just happens to be a great way to program. And Guido's leadership of the development process is a shining example of open source development that really works well. Python is continuing to evolve into a better and better language all the time.

      The evolution of the Python langauge is a great Work of Art in and of itself.

      learn Python

    2. Re:Python complaints by Anonymous Coward · · Score: 0

      Lots of good comments, and questions. Let me try and answer :)

      OO for large programs; Inheritence allows you to take an object and modify it, using existing behaviour with little effort. Then all of your code can use the modified behaviour without even knowing about the change(polymorphism). For a concreate example;

      The code below inherits from a normal list, and adds a feature which I need. That is I need the feature to optionally add a base directory to these file names. This code is used for c/c++ header files, where I want to change the directory where the header files are included from.

      from UserList import UserList

      class HeaderFileNames(UserList):
      """ A list of file names for headers,
      with the base directory they are in.
      """

      def __init__(self, base_dir = ""):
      UserList.__init__(self)
      # whether to include a full path or not.
      self.expand_paths = 0
      self.base_dir = base_dir

      def __getitem__(self, i):
      if self.expand_paths:
      return self.base_dir + "/" + self.data[i]
      else:
      return self.data[i]

      def test_HeaderFileNames():
      a = HeaderFileNames()

      a.append("math.h")
      a.append("quats.h")
      print "---without base directory"
      for x in a:
      print x

      a.base_dir = "include/new_funcs"
      a.expand_paths = 1

      print "---with base directory"
      for x in a:
      print x

      >>> test_HeaderFileNames()
      ---without base directory
      math.h
      quats.h
      ---with base directory
      include/new_funcs/math.h
      include/new_funcs/quats.h

      As you can see I took a normal list and added other functionality to it. Most of my code does not know about this other functionality, or does it care about it. I do not need to worry about it for my other code, nor do I need to rewrite it. This is important in large projects where you have multiple people.

      Obviously OO isn't the total solution for successful big projects, however it can help with large projects.

      With python you can code in only functions and modules if you want.

      Too many collection types; From my python experience there are only two collection types in python. They are: list and dictionary. These are the ones that I use every day, and it is all I need. Compare this to c/c++ where there are many indeed.

      As for scalability of these containers take this example to prove that they are scalable: Was using a dict type in python to do some comparisons of fairly large data sets(400-700MB). This was fairly quick as I could fit the dictionary in memory. However when the data grew to over a gig I needed to switch to a disk based approach, as it was swapping. To do this I changed one line in my program(and added an import line for the db3 object):
      species_dict = {}

      to

      species_dict = bsddb3.rnopen( "/tmp/db_file" )

      No other code in my program had to be changed. This is a lot faster data store than any RDBMS that I've used.

      Python doesn't beat the "how many spaces is one tab" thing. However, errors are as easy to spot as missing semi colons.

      From python 2.1 (and maybe earlier) the compiler does raise IndentationError, usually correctly pointing out where the offending code is. I really have not had many problems with python indentation. However python code is made a lot easier to code once you have an editor set up for it( and there are many ). Even with a dumb editor I prefer indenting( which I do any way) to having to put in braces, and semicolons :)

      Rene Dudfield.

    3. Re:Python complaints by Tablizer · · Score: 2, Interesting

      (* Inheritence allows you to take an object and modify it, using existing behaviour with little effort. *)

      Often the differences are not on method boundaries. IOW, the change granularity often does not match the method granularity in reality. Plus, you end up with the "fragile parent problem" in that changes to the parent may break many children. Thus, nobody wants to clean up the creeping inheritance vine.

      Many seasoned OO proponents suggest using inheritance sparingly. They agree that inheritance is way oversold in the "Learn X in 21 Days" kind of books. (However, their alternatives are often even messier IMO.)

      I don't quite follow your example. Maybe after some sleep I will have more patience with it. I don't use C, especially in a big project setting, so I guess I cannot relate to managing header files. I tend to use relational tables. If I need a Path column or BaseDir column, I simply add a path column. Code that uses other columns usually does not need any changing. (Note that not all relational systems are as bulky as most SQL API's.) I also find it easy to study the table data in a table browser and table structure without writing RAM dumps. The structure and data usually exist outside of the program, so I can inspect, study, grok, and filter it any way and time I want.

      (* species_dict = bsddb3.rnopen( "/tmp/db_file" )
      No other code in my program had to be changed. This is a lot faster data store than any RDBMS that I've used *)

      Well, but dictionaries only have *one* index. That is an arbitrary limit. It is like, "I declare a new collection taxonomy type called the Zork. It has 3 indexes and 13 columns." Listen, everybody likes different things. For me, having every collection able to potentially have full relational capabilities is a good thing. I hate rewriting code just because my collections grow up. I can also sort, view, and filter the data into tables any way I want without writing RAM dumps.

      The judges simply think kinda like Guido. My own pet language would be different. Collection "types" are a pet peeve of mine.

      (* From my python experience there are only two collection types in python. They are: list and dictionary. *)

      I thought it had 3. Anyhow, even 2 is too many. I don't think there should be *any* sharp syntactical boundary between the smallest and largest collection. I see no excuse for such, other than historical habit. Smalltalkers have repeatedly failed to objectively justify it. I doubt Python fans can pull it off also. It will eventually come down to, "you just get used to arbitrary boundaries and then they won't bother you so much. You take the boundary penalty in stride, like New Jersey weather."

      (* Python doesn't beat the "how many spaces is one tab" thing. However, errors are as easy to spot as missing semi colons. *)

      I am not a semi-colon fan either. However, block-ender syntax and line separator syntax are two different issues anyhow. You are intermixing two independent syntax issues it appears.

      (* However python code is made a lot easier to code once you have an editor set up for it( and there are many ). *)

      But that is *counter* to the very idea of a scripting language IMO. I *have* had tab problems in other languages because one editor or one computer was set up different than a prior editor. Requiring a strict editor setup is a feature that I would expect from one of those stuffy languages, not a programmer-friendly one.

      BTW, another Python fault is not consolidating dictionaries and classes. A class is simply a dictionary of methods and attributes with an inheritance option thrown in. Other scripting languages have successfully consolidated these two concepts. Python blew the opportunity IMO. (Dictionaries are great as interface mechanisms, such as passing and storing dynamic parameters. However, as a data container, they suck IMO because they don't scale in complexity, as already described.)

      Thanks for your feedback.

    4. Re:Python complaints by webmaven · · Score: 2
      BTW, another Python fault is not consolidating dictionaries and classes. A class is simply a dictionary of methods and attributes with an inheritance option thrown in. Other scripting languages have successfully consolidated these two concepts. Python blew the opportunity IMO. (Dictionaries are great as interface mechanisms, such as passing and storing dynamic parameters. However, as a data container, they suck IMO because they don't scale in complexity, as already described.)

      Python 2.2 now unifies types and classes, allowing you to subclass the built in data types, including dictionaries.
      --
      The real Webmaven is user ID 27463. I don't rate an imposter, because my ID is such a lame-ass high number.
    5. Re:Python complaints by Tablizer · · Score: 1

      (* Python 2.2 now unifies types and classes [python.org], allowing you to subclass the built in data types, including dictionaries. *)

      I don't think that addresses the issue. I mean that dictionaries and objects be interchangable such that there would be no difference between:

      a.foo = 7

      and

      a["foo"] = 7

      And

      a.bar()

      would be equiv to

      eval(a["bar"])

      I like using the dot notation on table field names, but don't want to create objects to get that, just a dict. When you are dealing with DB-centric applications, the brackets and quotes kind of clutters things.

  35. Open Source advocates on the FSF panel? by ftobin · · Score: 2

    I find it interesting that Eric Raymond was on the selection committee. If I rcall correctly, Raymond has specfically stated he is not a follower of the Free Software movement (just as Stallman has specifically stated he is not a follower of the Open Source movement).

  36. Numpy and other modules by jdg · · Score: 1

    The Numerical extensions to Python make it a fabulous language for engineers and researchers trying to get stuff done in a hurry. The language itself is easy to learn and use for real work.

    Similarly, their is tremendous power and ease of use in the other modules that come with the language.

  37. Re:Bravo for a powerful, easy to learn, easy to us by FFFish · · Score: 2

    "Fallacies"?!?

    pray, do explain!

    --

    --
    Don't like it? Respond with words, not karma.
  38. Implementation != Specification by Christopher+B.+Brown · · Score: 2

    PDF is a specification on which Apple based their own scheme, Quartz.

    There is no such thing, in formal terms, as "Display PDF." Neither Apple nor Adobe use that name. Apple calls their thing (which, as near as can be told, has NO Adobe encumbrances) Quartz. Adobe has a document format that they call PDF, but nothing that they call "Display PDF."

    --
    If you're not part of the solution, you're part of the precipitate.
  39. Re:Yes, but...it's a feature by fferreres · · Score: 0
    But Perl is much more lenient in allowing really really horrible code, which for some reason a lot of people take advantage of.

    I can think of several reasons:

    If someone else can't fix it, then you'll be needed forever. That's in some people unconcious. They just do the things assuming that what their are doing is perfect (in terms of what he was asked to do).

    They don't have in mind reusability, enhanceablity, debugablility, etc. They'd walk into a dead end street and not turn back until they hit the wall ("Dead end? How? I'm still moving forward!").

    Time constraints. It's often the case that you can save a lot of time coding in ugly ways permited by a language.

    At least that's what i saw in practice happen (with some slamm proyect i'm involved). Most noteably, the people doint the less readable code where really smart guys (iq).

    --
    unfinished: (adj.)
  40. Re: question about PHP by fferreres · · Score: 0

    Is it any good? Of course it's biased towards web development, but i keep reading how simple python is compared to C or C++. PHP resembles C/C++ yet it's very easy to use and understand.

    The question is, what do people think of PHP? Is there any good in it? I'd been able to use MySQL and many other tools from it (like IMAP, etc.). Also, has anyone tried the apha gtk bindings?

    I'd like to try and see if i can code anything non-web-based but are afraid of doing things the wrong way.

    --
    unfinished: (adj.)
  41. Re:Python is nice ... Interested in Dylan by JohnBE · · Score: 1
    Just a quick link to all those interested in Dylan (to save you the Sourceforge link):
    Here

    Interesting to note the paragraph under the heading 'The Downside of Dylan'.

    --
    e4 e5
  42. Let me call up some painful memories here... by onjay · · Score: 1

    If you can't figure out the majority of what the programmer is getting at... There's more than one way to RE-do it.

    1. Re:Let me call up some painful memories here... by Shiny+Metal+S. · · Score: 2
      If you can't figure out the majority of what the programmer is getting at... There's more than one way to RE-do it.
      I don't know what painful memories do you have with redoing something (do you know about CPAN?), but if you can't figure out the majority of what the programmer is getting at... There's a sign, that you need more education. Sad but true. This includes much more than only programming.
      --

      ~shiny
      WILL HACK FOR $$$

  43. Congrats! by NeuroMorphus · · Score: 1

    I tip my hat to Guido, and take a toast and a SWIG of red, Ruby Wine.

    --

    python >>>
    reduce(lambda x,y:x+y,map(lambda x:chr(ord(x)^42),tuple('zS^BED\nX_FOY\x0b')))
  44. The best thing about Python by LadyLucky · · Score: 1

    Was always the ministry of silly walks.

    --
    dominionrd.blogspot.com - Restaurants on
  45. Two that I can think of ... by some+guy+I+know · · Score: 1

    1. It's slower than a language that can be compiled into machine code (such as C/C++).
    2. Interfacing to libraries written in other languages frequently requires writing wrappers.

    Note: I have been using Python for over two years (since 1.5.2), and have written some extension libraries for it (mostly wrappers; see point 2 above), and applications, etc., etc., so I'm not a Pyhton-basher.
    I just recognize that no language is perfect.

    --
    Those who sacrifice security to condemn liberty deserve to repeat history or something. - Benjamin Santayana
  46. Re:Bravo for a powerful, easy to learn, easy to us by Xerithane · · Score: 1

    Python, while a good language, does not encompass everything. Python on an embedded device is not a great choice. Python also cannot be compiled into a native binary, nor does it have decent alternate language bindings and requires wrappers.

    Any programmer who thinks one language can do anything, and is the best, is quite frankly an idiot and shouldn't code.

    --
    Dacels Jewelers can't be trusted.
  47. Parrot, Python and Perl 6 by Shiny+Metal+S. · · Score: 3, Informative
    Seeing as how parrot is being developed pretty much entirely by Perl developers (heck, the development is being done on the perl6-internals mailing list), I think it's unlikely that it'll ever be adopted by the Python community.
    Given that a Google search for "Parrot" on the Python.org shows 570 matches, I don't think so.
    Does Parrot even support real type systems, or does it only support Perl's broken "scalars are scalars" type system?
    If you had ever clicked one of the links in my post, you'd have known that. There are these basic data types:
    • IV (integer)
    • NV (floating-point)
    • STRING (encoding-independent string)
    • PMC (Parrot Magic Cookie)
    Parrot Magic Cookie type is the whole magic here. Let me quote Simon Cozens' article Parrot: Some Assembly Required , emphasis is mine:
    Vtable Datatypes

    The next major thing that Parrot needs to implement is PMCs; these are almost like Perl 5's SVs, only more so. A PMC is an object of some type, which can be instructed to perform various operations. So when we say

    inc P1
    to increment the value in PMC register 1, the increment method is called on the PMC - and it's up to the PMC how it handles that method.

    PMCs are how we plan to make Parrot language-independent - a Perl PMC would have different behavior from a Python PMC or a Tcl PMC. The individual methods are function pointers held in a structure called a vtable, and each PMC has a pointer to the vtable which implements the methods of its "class." Hence a Perl interpreter would link in a library full of Perl-like classes and its PMCs would have Perl-like behavior.

    [ read more ]

    And about ``Perl's broken "scalars are scalars" type system''. I won't argue with you, as you obviously have no idea what are you talking about, but other people may be interested in this subject as well, so I'll point out where to find informations on how these things are going to change in Perl 6: For a good introduction to Perl 6 in current shape read Larry Wall's Apocalypses and Damian Conway's Exegeses: For more detailed info, join the mailing lists and read the archives: There's more info about in on dev.perl.org - the Perl 6 homepage.
    --

    ~shiny
    WILL HACK FOR $$$

  48. Re:Bravo for a powerful, easy to learn, easy to us by Anonymous Coward · · Score: 0

    I'll jump in ...

    (1) Python's dynamic typing is a major show stopper for writing *huge* programs.

    (2) Python is very slow compared to the fastest compiled languages.

    (3) Information hidding is not part of Python's OOP policy which is also making it a somewhat bad choice for big projects.

    There are certainly other points which could be revealed by detailed analysis, but since this thread is now quite old I stop here ...

  49. Languages and brain patterns by t482 · · Score: 1

    I believe that programming languages are much like human languages in that some are better able to explain ideas more than others are. Like Inuit (Eskimo) languages have 10-15 words for snow, some computer languages are better able to express some ideas than others.

    The flip side to this is that people's brains work better with different languages. Having learned/studied French, German, Spanish, Chinese, Japanese, Finnish and English - my brain works better with some languages than others. Similarly I believe there are those people whose brains work better with Perl than Python.

    But I find python syntax "fits in my brain" better than perl. For others who find dynamically typed languages difficult to fit their heads around perhaps neither (Java?) is better. I find a good naming convention more important than using strict typing. Standardized ways for calling classes, etc nicer. Fewer built in mystery variables ($@#...), Less clutter important as well as not forcing OOP (Java).

    Python is fairly flexible in coding styles (functional, OOP, Xtreme Programming etc), has a nice class library, is fairly easy to extend, and is not controlled by a corporate entity(Sun/Microsoft). Most importantly, discovering it got me excited about programming again.

  50. Re:Bravo for a powerful, easy to learn, easy to us by Ursus+Maximus · · Score: 1

    You (an Anonynmous Coward) wrote: (1) Python's dynamic typing is a major show stopper for writing *huge* programs. (Well, Ursus Maximuus finds that dynamic typing is the wave of the future. It speeds up the writing of code by a factor of 10. Anyway, Zope is a HUGE project, entirely written in Python using of course, dynamic typing, and it doesn't seem to have suffered. (2) Python is very slow compared to the fastest compiled languages. (Well, true as far as it goes. But with processor speed going up continually, Python is fast enough you won't notice hardly ever. If you do notice, there are easy fixes (embed a C routine for perfomrance sensitive routines, easily done, Python is made for it. Besides, if its fast enough for the nuclear scientists amnd fast enough for NASA, and for Indutrial Light and Magic to use for special effects, its fast enough for me. Thank God for Moore's Law; Its about time that we help out programmers with easy, quick to write code, and let the microprocessor do the fast drudge work; better to overwork the computer on drudgery, not me!!!) (3) Information hidding is not part of Python's OOP policy which is also making it a somewhat bad choice for big projects. (Well, information hiding can be done with Python through mangling.) Learn Python at Python City

  51. Re: question about PHP by Ursus+Maximus · · Score: 1

    PHP is a fine tool for web automation, an excellent tool. Python, on the other hand, is a general purpose language that can be used for anything (including web automation ;-))) Python stands alone. I also find it easier to learn than PHP; and oh, so much more powerful Learn Python at Python City

  52. Python license has been Certified by RMS as GPL Co by Ursus+Maximus · · Score: 1

    Recently, due to changes in the Python license, RMS Himself Certified that the Python license is now fully GPL Compatible, thus putting an end to this digression. Python has ALWAYS been open source and free software, now no one can ever again use this canard against this beautiful piece of work that is an ongoing arttistic and technological evolutionary miracle ;-))) Learn Python at Python City

  53. Re:Bravo for a powerful, easy to learn, easy to us by MrBlack · · Score: 2

    I'm more of a dabbler in python than anything else, but I like it quite a lot. The information hiding thing kinda bothered me when I first heard about it too.....I guess I always wondered why python doesn't allow it? Is it a technical thing? or a philosophical one?