"""
Also, the markets for the two don't really converge. Most PDAs are used by executives, who for the most part have no intrest in Mp3s, and thus aren't willing to pay the extrea $$$.
"""
Funny, practically everybody in my graduate program has a PDA, as do a huge number of the technogeeks I know.
You're right though, the market of students and technogeeks and the market of people interested in MP3s don't converge at all.
"""
Let me highlight the keywords in your statement that cause me apprehensive to use this language.
"""
Reading Slashdot posts sounds like a good, rational basis for deciding whether or not to use a language. Myself? I usually try to write some code in the language. I also prefer to reserve my apprehension for design flaws that cause recurrent and serious problems. Do you really consider the possibility that you may have to change your editor's tab settings once to be such a grave problem?
"""
A lot of people: who most of which are intelligent (programmers are typically unstupid.)
"""
You haven't worked with many programmers, have you. They come in every make, model, and color, including stupid, lazy and opinionated. The point, which you seem to have completely missed, is that these "intelligent" people who have never actually *tried* Python spend a great deal of time and energy complaining about a feature that nobody who *has* used the language seems to have any problem with. This leads me to suspect that these people are relying on prejudice to judge the issue. "If C/Perl/Bash doesn't do it that way then it must be broken" is not an intelligent line of criticism.
"""
imagine: Coming up with logical scenarios as to where this would happen, or have experienced scenarios.
"""
No, imagined does not equal experienced, and imagined does not imply logical. In fact, imagined, as I used it, implies *not* experienced.
"""
almost nobody: yes, but there are some.
"""
You're right -- there are some people who have experienced whitespace related syntax errors (and since the compiler catches them and screams bloody murder they corrected them in seconds flat). You know what else? There are "some" people who have forgotten to add braces when a one-line for loop in C became a two-liner. There are "some" people who find Perl's syntax hard to read. There are some people who experience dry mouth, irritable bowels, and nausea when given a sugar pill.
What's your point? Python is fundamentally flawed because "some" people make syntax errors?
"""
If a solution is only good 99% of the time, it isn't a solution but a hack.
"""
Let me know when you make any real-world design decision that solves any problem 100% of the time.
"""
Assuming AIM is a 1MB file and the server can request the checksum beginning at any byte and ending at any byte, this leads to approx. 5*10^11 checksums (n ~= length^2/2), taking up about 8 GB (16 bytes/checksum).
"""
s/8 GB/8 Terabytes/
For some reason I always confuse 10^9 and 10^12...
BTW, another user commented that Wine works just fine for unpacking and installing AIM.
Exactly. This solution is much too complicated, if not impossible. Storing the checksums for every permutation of every DLL in AIM (or even a single DLL) is totally impractical. Assuming AIM is a 1MB file and the server can request the checksum beginning at any byte and ending at any byte, this leads to approx. 5*10^11 checksums (n ~= length^2/2), taking up about 8 GB (16 bytes/checksum). Plus the growth of this number is quadratic in the length of the file. Since 1MB is a pretty conservative estimate of the file size, you're quickly looking at a buttload of space for storing checksums. Any server-based solution will have to rely on a dynamic calculation of checksums, and that's probably not an option either.
If the chunking size is greater than 1 byte or the range of possible start/end points is more restricted, the space requirement will be less, but the quadratic growth will still be there and it'll be easy for AOL to crank up the combinatorics if they desire.
Just put in a "path to AIM.exe" option and let the user worry about getting the file. I expect a large number will be already have it (or could easily install it) on a windows partition. As for the version of the executable, just store a database of checksums of the various AIM.exe executables and use that to see what version the user has.
How will Linux users without Windows get it? Most will probably just d/l it from somewhere or copy it from a friend. This is probably illegal, but it should be perfectly legal to use Wine to unpack and install the version straight from AOL.
IANAL, but I don't see any legal issues. Reverse engineering IS LEGAL. Emulation IS LEGAL. If you download AIM and unpack it on a windows partition or use Wine, how is it illegal to supply the path to the executable to another program? There are *certainly* no legal issues for the GAIM developers for providing this capability -- only the individual users are even *potentially* culpable. Each user can decide for himself/herself whether or not to take the ever-so-slight risk of using AIM.exe in this manner.
Sounds like a problem with your install. I haven't had Konqueror crash since KDE 2.0. I use it as my primary browser now except for sites that use Java & Javascript. I know that Java can be set up in Konqueror, but I've never bothered. Javascript is a known deficiency and is being worked on.
I used Mozilla for a short time but it's just too bloody slow to be useful.
Don't you ever get sick of talking about Python? Are there times when you just want to talk about your collection of scotch-tape dispensers or your love of shuffleboard? Do you feel sad that people pidgeonhole you as "Guido van Rossum, the Python guy" or "Guido van Rossum, the father of Python", when perhaps you'd prefer to be "Guido van Rossum, the ballet dancer" or "Guido van Rossum, the Buddhist monk"?
In all seriosity (?) are there times when you overload on Python and just have to get away for a while?
As to not being able to figure out what version of aim.exe the user has, there's a simple solution: calculate the md5 digest of aim.exe (or any piece of the file that generates a unique digest for each version) and distribute a lookup table that translates from md5 digest to AIM version. If you've already got the md5 infrastructure this should be a piece 'o cake.
Let the users figure out how to get aim.exe -- they're awfully good at things like that when they need to be. . .;-)
> The block structure we perceive is the same block structure that the interpreter will see.
But what about the cosmic rays that routinely delete spaces from my files?? What about the highly agressive whitespace-eating nanovirus that is sweeping the globe?!? What if I forget the ASCII code for space when I'm coding my text files in hex??
Oh wait, none of that ever *actually* happens.
Maybe whitespace isn't so significant after all...
When the right way to do it is obvious (as it usually is in Python) you tend to *not* spend time agonizing at all. I would consider it more time-consuming to choose from 35 different ways to do things, each slightly different in subtle ways.
Coming from a mixed tradition of platforms and languages I also find that Perl's strong unix background gets in the way more than it helps. $_ has no intrinsic meaning to those outside of the Unix world. If you've written a million shell scripts I suppose Perl's heritage is a real plus, but to most of the world I don't think it's much of a win. This is why Perl is king among sysadmins (and probably always will be) but Python is getting just about everyone else.
As for the suitability of Python for "real programming", if you think that Java is somehow more "proper" than Python I'm afraid you're fooling yourself. Just because a language has a compile step and type declarations doesn't make it advanced or efficient! The Python VM starts a hell of a lot faster than Java's and in my experience Python uses *less* memory than Java for similar code! Plus, due to Python's clean design it scales extremely well to large projects. Don't believe me? Believe Google, Lawrence Livermore National Labs, Disney, and the others who have used it successfully for significant projects.
"""
I like perl and I do not know python very well. Like everyone, I've heard python proponents advocate their language, and I've been largely unimpressed by their advocacy. Their advocay generally takes one of the following forms:
[snip]
"""
I take it your only exposure to Python advocacy is Slashdot. Have you noticed that *all* slashdot advocacy comes down to [competing language or product] sucks! [advocated language or product] rules!
If you're really interested in finding out what Python advocacy is all about, check out comp.lang.python, one of the most useful, friendly, and civilized newsgroups in existence. Elite Python experts routinely answer newbie questions cordially and even take part in civil discussions of the advantages and disadvantages of other languages w.r.t. Python. The impression I get is that they have very little to worry about in a language comparison, so they don't get worked up about such things. It's hard to feel threatened when your favorite language is experiencing exponential growth in users.:-)
Couldn't have happened to a better language!
As for the advantages of Python over Perl, elegance is a big one. Maybe that's not important to you, but it is important to a lot of us. I went traipsing through the standard Python library the other day (for fun) and was able to fully comprehend everything I ran across.
I came to Python because I wanted a flexible, simple, very high level language. As a scientist, a programmer, and a hobbyist, Python appeals to me because I can use it for numerical programming, system administration, web programming, and application development, and it feels natural and even elegant in all of those roles. Then, if I exceed the boundaries of what the language is good at (usually I just need more speed), I can easily extend it in C.
I'm suspicious about the article that started this discussion. Guido isn't usually a strong partisan of language wars, and this interview felt overly stilted and abrupt, even slanted *towards* inciting controversy. I wouldn't be surprised at all to hear that this was heavily edited with an eye towards stirring up readers with (artificially) hot rhetoric.
For god's sake, don't switch to Python! It sounds like Perl is perfect for you. You like irregularity and context sensitivity, and you seem to think that the unreadability of mathematics somehow validates the unreadability of Perl. You'd hate Python. You'd have to waste all that brain space that you currently use to store the 15 different ways to print to stdout remembering things like the most efficient algorithms and data structures for a given coding problem.
Those of us who are "too stupid to understand Perl" will try to get by without you. (snicker)
As an experienced programmer, I would suggest that you consider which "fundamentals" you'll learn from C. Yes, you'll (have to) learn about explicit memory management and pointer arithmetic. You'll learn all about declaring variables and go crazy casting pointers-to-void to pointers-to-pointers-to-float. None of these things will make you a good programmer.
The truth is you'll be much better served by learning about algorithms and data structures, so that you know what the hell you're doing with all of those bloody pointers. The ease with which you can implement advanced data structures and algorithms in Python is what makes it a fantastic first language. The interactive Python prompt makes it easy for beginners to try out code quickly and find out what works. And nothing keeps a beginner's motivation strong like writing a working program with a modern GUI using a few dozen lines of code.
Your friend may think that he's doing you a favor by making you suffer like he did when he learned to program, but just because you're suffering doesn't mean you're learning something useful. I can ask you to do your math homework in binary, and you'll suffer, but you won't know anything more fundamental about math than the rest of us. Your friend is the same sort of person who used to grumble about the bad habits of programmers who used *compiled* programming languages instead of assembly. The times they are a changing...
C is a last resort, a lowest common denominator, not the pinnacle of programming languages. It's the tool that wise programmers turn to when their high-level language of choice just isn't quite fast enough, not the language that allows them to be most expressive and productive.
Learn Python. Learn C too (you'll need it for writing Python extension modules;-), but learn Python first. You won't be sorry.
Anybody who claims that C is "damn easy to learn" is either a troll or has forgotten the first time they tried to work with 2-D arrays.
Either that or they've never tried Python.
http://www.python.org
There's even a port of Python 1.5.2 for Palm OS (though it's alpha software).
http://www.isr.uci.edu/projects/sensos/python/
I use generic Office Depot 700MB CDR media with great results on my new Sony DVP-C600 (the same model the poster has). They're dirt cheap and they work great.
a sub routine call is always going to be a sub routine call, which has always slowed down CPUs.
Unless it's inlined. Really clever C++ compilers (www.kai.com) can optimize away whole classes.
Not that any of this matters a damn. The future belongs to dynamic, very high level languages like Python. Real programmers worry about complexity, not performance.
"""
Also, the markets for the two don't really converge. Most PDAs are used by executives, who for the most part have no intrest in Mp3s, and thus aren't willing to pay the extrea $$$.
"""
Funny, practically everybody in my graduate program has a PDA, as do a huge number of the technogeeks I know.
You're right though, the market of students and technogeeks and the market of people interested in MP3s don't converge at all.
Oh, wait...
-DA
Wow. Guido's handing you the keys to the Batmobile and you're upset because you want it in yellow.
-DA
"""
Let me highlight the keywords in your statement that cause me apprehensive to use this language.
"""
Reading Slashdot posts sounds like a good, rational basis for deciding whether or not to use a language. Myself? I usually try to write some code in the language. I also prefer to reserve my apprehension for design flaws that cause recurrent and serious problems. Do you really consider the possibility that you may have to change your editor's tab settings once to be such a grave problem?
"""
A lot of people: who most of which are intelligent (programmers are typically unstupid.)
"""
You haven't worked with many programmers, have you. They come in every make, model, and color, including stupid, lazy and opinionated. The point, which you seem to have completely missed, is that these "intelligent" people who have never actually *tried* Python spend a great deal of time and energy complaining about a feature that nobody who *has* used the language seems to have any problem with. This leads me to suspect that these people are relying on prejudice to judge the issue. "If C/Perl/Bash doesn't do it that way then it must be broken" is not an intelligent line of criticism.
"""
imagine: Coming up with logical scenarios as to where this would happen, or have experienced scenarios.
"""
No, imagined does not equal experienced, and imagined does not imply logical. In fact, imagined, as I used it, implies *not* experienced.
"""
almost nobody: yes, but there are some.
"""
You're right -- there are some people who have experienced whitespace related syntax errors (and since the compiler catches them and screams bloody murder they corrected them in seconds flat). You know what else? There are "some" people who have forgotten to add braces when a one-line for loop in C became a two-liner. There are "some" people who find Perl's syntax hard to read. There are some people who experience dry mouth, irritable bowels, and nausea when given a sugar pill.
What's your point? Python is fundamentally flawed because "some" people make syntax errors?
"""
If a solution is only good 99% of the time, it isn't a solution but a hack.
"""
Let me know when you make any real-world design decision that solves any problem 100% of the time.
-DA
Python:
Programming
the
way
Guido
indented
it
(Don't know if it was actually indented that way, but if it wasn't it should have been!)
"""
... I can imagine lots of bugs with inconsistent spaces.
"""
Funny, a lot of people can *imagine* those bugs and almost *nobody* who actually *uses* Python instead of whining about whitespace runs into them.
-DA
"""
Assuming AIM is a 1MB file and the server can request the checksum beginning at any byte and ending at any byte, this leads to approx. 5*10^11 checksums (n ~= length^2/2), taking up about 8 GB (16 bytes/checksum).
"""
s/8 GB/8 Terabytes/
For some reason I always confuse 10^9 and 10^12...
BTW, another user commented that Wine works just fine for unpacking and installing AIM.
-DA
Exactly. This solution is much too complicated, if not impossible. Storing the checksums for every permutation of every DLL in AIM (or even a single DLL) is totally impractical. Assuming AIM is a 1MB file and the server can request the checksum beginning at any byte and ending at any byte, this leads to approx. 5*10^11 checksums (n ~= length^2/2), taking up about 8 GB (16 bytes/checksum). Plus the growth of this number is quadratic in the length of the file. Since 1MB is a pretty conservative estimate of the file size, you're quickly looking at a buttload of space for storing checksums. Any server-based solution will have to rely on a dynamic calculation of checksums, and that's probably not an option either.
If the chunking size is greater than 1 byte or the range of possible start/end points is more restricted, the space requirement will be less, but the quadratic growth will still be there and it'll be easy for AOL to crank up the combinatorics if they desire.
Just put in a "path to AIM.exe" option and let the user worry about getting the file. I expect a large number will be already have it (or could easily install it) on a windows partition. As for the version of the executable, just store a database of checksums of the various AIM.exe executables and use that to see what version the user has.
How will Linux users without Windows get it? Most will probably just d/l it from somewhere or copy it from a friend. This is probably illegal, but it should be perfectly legal to use Wine to unpack and install the version straight from AOL.
IANAL, but I don't see any legal issues. Reverse engineering IS LEGAL. Emulation IS LEGAL. If you download AIM and unpack it on a windows partition or use Wine, how is it illegal to supply the path to the executable to another program? There are *certainly* no legal issues for the GAIM developers for providing this capability -- only the individual users are even *potentially* culpable. Each user can decide for himself/herself whether or not to take the ever-so-slight risk of using AIM.exe in this manner.
-DA
Sounds like a problem with your install. I haven't had Konqueror crash since KDE 2.0. I use it as my primary browser now except for sites that use Java & Javascript. I know that Java can be set up in Konqueror, but I've never bothered. Javascript is a known deficiency and is being worked on.
I used Mozilla for a short time but it's just too bloody slow to be useful.
-DA
Don't you ever get sick of talking about Python? Are there times when you just want to talk about your collection of scotch-tape dispensers or your love of shuffleboard? Do you feel sad that people pidgeonhole you as "Guido van Rossum, the Python guy" or "Guido van Rossum, the father of Python", when perhaps you'd prefer to be "Guido van Rossum, the ballet dancer" or "Guido van Rossum, the Buddhist monk"?
In all seriosity (?) are there times when you overload on Python and just have to get away for a while?
-DA
As to not being able to figure out what version of aim.exe the user has, there's a simple solution: calculate the md5 digest of aim.exe (or any piece of the file that generates a unique digest for each version) and distribute a lookup table that translates from md5 digest to AIM version. If you've already got the md5 infrastructure this should be a piece 'o cake.
;-)
Let the users figure out how to get aim.exe -- they're awfully good at things like that when they need to be. . .
-DA
> The block structure we perceive is the same block structure that the interpreter will see.
But what about the cosmic rays that routinely delete spaces from my files?? What about the highly agressive whitespace-eating nanovirus that is sweeping the globe?!? What if I forget the ASCII code for space when I'm coding my text files in hex??
Oh wait, none of that ever *actually* happens.
Maybe whitespace isn't so significant after all...
-DA
When the right way to do it is obvious (as it usually is in Python) you tend to *not* spend time agonizing at all. I would consider it more time-consuming to choose from 35 different ways to do things, each slightly different in subtle ways.
Coming from a mixed tradition of platforms and languages I also find that Perl's strong unix background gets in the way more than it helps. $_ has no intrinsic meaning to those outside of the Unix world. If you've written a million shell scripts I suppose Perl's heritage is a real plus, but to most of the world I don't think it's much of a win. This is why Perl is king among sysadmins (and probably always will be) but Python is getting just about everyone else.
As for the suitability of Python for "real programming", if you think that Java is somehow more "proper" than Python I'm afraid you're fooling yourself. Just because a language has a compile step and type declarations doesn't make it advanced or efficient! The Python VM starts a hell of a lot faster than Java's and in my experience Python uses *less* memory than Java for similar code! Plus, due to Python's clean design it scales extremely well to large projects. Don't believe me? Believe Google, Lawrence Livermore National Labs, Disney, and the others who have used it successfully for significant projects.
-DA
"""
:-)
I like perl and I do not know python very well. Like everyone, I've heard python proponents advocate their language, and I've been largely unimpressed by their advocacy. Their advocay generally takes one of the following forms:
[snip]
"""
I take it your only exposure to Python advocacy is Slashdot. Have you noticed that *all* slashdot advocacy comes down to [competing language or product] sucks! [advocated language or product] rules!
If you're really interested in finding out what Python advocacy is all about, check out comp.lang.python, one of the most useful, friendly, and civilized newsgroups in existence. Elite Python experts routinely answer newbie questions cordially and even take part in civil discussions of the advantages and disadvantages of other languages w.r.t. Python. The impression I get is that they have very little to worry about in a language comparison, so they don't get worked up about such things. It's hard to feel threatened when your favorite language is experiencing exponential growth in users.
Couldn't have happened to a better language!
As for the advantages of Python over Perl, elegance is a big one. Maybe that's not important to you, but it is important to a lot of us. I went traipsing through the standard Python library the other day (for fun) and was able to fully comprehend everything I ran across.
I came to Python because I wanted a flexible, simple, very high level language. As a scientist, a programmer, and a hobbyist, Python appeals to me because I can use it for numerical programming, system administration, web programming, and application development, and it feels natural and even elegant in all of those roles. Then, if I exceed the boundaries of what the language is good at (usually I just need more speed), I can easily extend it in C.
I'm suspicious about the article that started this discussion. Guido isn't usually a strong partisan of language wars, and this interview felt overly stilted and abrupt, even slanted *towards* inciting controversy. I wouldn't be surprised at all to hear that this was heavily edited with an eye towards stirring up readers with (artificially) hot rhetoric.
-DA
>> The trick is to use a decent editor which has good syntax highlighting
>And install it on every last machine you will ever find yourself editing code from, in every environment you could possibly use...
Yeah, it's a real challenge to find a platform that runs either vi or emacs.
If you want to criticize Python at least find a *real* problem with the language and don't just spread FUD about whitespace.
-DA
For god's sake, don't switch to Python! It sounds like Perl is perfect for you. You like irregularity and context sensitivity, and you seem to think that the unreadability of mathematics somehow validates the unreadability of Perl. You'd hate Python. You'd have to waste all that brain space that you currently use to store the 15 different ways to print to stdout remembering things like the most efficient algorithms and data structures for a given coding problem.
Those of us who are "too stupid to understand Perl" will try to get by without you. (snicker)
-DA
As an experienced programmer, I would suggest that you consider which "fundamentals" you'll learn from C. Yes, you'll (have to) learn about explicit memory management and pointer arithmetic. You'll learn all about declaring variables and go crazy casting pointers-to-void to pointers-to-pointers-to-float. None of these things will make you a good programmer.
;-), but learn Python first. You won't be sorry.
The truth is you'll be much better served by learning about algorithms and data structures, so that you know what the hell you're doing with all of those bloody pointers. The ease with which you can implement advanced data structures and algorithms in Python is what makes it a fantastic first language. The interactive Python prompt makes it easy for beginners to try out code quickly and find out what works. And nothing keeps a beginner's motivation strong like writing a working program with a modern GUI using a few dozen lines of code.
Your friend may think that he's doing you a favor by making you suffer like he did when he learned to program, but just because you're suffering doesn't mean you're learning something useful. I can ask you to do your math homework in binary, and you'll suffer, but you won't know anything more fundamental about math than the rest of us. Your friend is the same sort of person who used to grumble about the bad habits of programmers who used *compiled* programming languages instead of assembly. The times they are a changing...
C is a last resort, a lowest common denominator, not the pinnacle of programming languages. It's the tool that wise programmers turn to when their high-level language of choice just isn't quite fast enough, not the language that allows them to be most expressive and productive.
Learn Python. Learn C too (you'll need it for writing Python extension modules
-DA
Wrong.
Python got full garbage collection in 2.0.
As for lambdas, if you want to write lisp, use lisp.
-DA
"""
for(0..10) {
print unless($_%2);
}
"""
Is this example supposed to *dispute* Perl's reputation for unreadability, or is this a joke?
-DA
The rabbit would be very good, but I always liked the penguin on the telly.
:-)
Announcer: "It is now time for the penguin on top of your television set to explode."
Penguin: KABOOM!
Is the penguin icon available?
-DA
You don't program Python, do you?
-DA
Hear Hear!
*Amiga* has it's own topic, for God's sake!
Unfortunately, the can of spam is already taken for an icon, and so is the Monty Python foot. How about a dead parrot?
Damn, where are my moderator points when I need 'em?!
-DA
Can somebody tell me how to feed options like this to RPM when building SRPMS? Do you have to edit the specfile?
TIA
DA
Anybody who claims that C is "damn easy to learn" is either a troll or has forgotten the first time they tried to work with 2-D arrays.
Either that or they've never tried Python.
http://www.python.org
There's even a port of Python 1.5.2 for Palm OS (though it's alpha software).
http://www.isr.uci.edu/projects/sensos/python/
-DA
I use generic Office Depot 700MB CDR media with great results on my new Sony DVP-C600 (the same model the poster has). They're dirt cheap and they work great.
-DA
a sub routine call is always going to be a sub routine call, which has always slowed down CPUs.
Unless it's inlined. Really clever C++ compilers (www.kai.com) can optimize away whole classes.
Not that any of this matters a damn. The future belongs to dynamic, very high level languages like Python. Real programmers worry about complexity, not performance.
-DA