Slashdot Mirror


User: Ian+Bicking

Ian+Bicking's activity in the archive.

Stories
0
Comments
1,108
First seen
Last seen
Profile
(view on slashdot.org)

Comments · 1,108

  1. Re:Toenails on Python Moving into the Enterprise · · Score: 3, Insightful
    Ruby is a fine language, and if Python didn't exist I'd probably be using it. But I think Python has some advantages. Off the top of my head:
    1. Older
    2. More mature: used by a wider variety of people for a wider variety of tasks, community process more developed
    3. Unicode
    4. Syntactically simpler; less punctuation
    5. There Should Only Be One (Best) Way To Do It (not always succeding -- but at least we try)
    6. Less opportunity to globally effect the language/process -- e.g., you can't change the behavior of strings throughout the system
    7. Larger community
    8. More libraries and software
    9. Better OS support -- standard on most Linuxes, Mac OS X
    10. Some corporate support (e.g., IronPython); EU funding
    11. Distributing Python apps fairly easy. Large-scale distributions have been successful (e.g., BitTorrent, iPodder)
    12. OS-level threading (I don't believe Ruby has this, though I think they are trying to add it)
    Well, those are the ones I can think of now.
  2. Re:Kill the GIL (Global Interpreter Lock) on Python Moving into the Enterprise · · Score: 1

    Someone tried getting rid of the GIL several years ago, and CPython ran about 2x slower. That said, some implementations -- like Jython and IronPython -- don't have the GIL. So, it's possible. But hurting everyone's performance for the negligable benefit of multi-processor scalability (which isn't the same as any actual performance requirement) is pretty silly. I'd much, much, much rather see better multi-process capabilities in Python. That Java leans so heavily on threads doesn't mean Python has to.

  3. Don't Fall For Premature Optimizations on Python Moving into the Enterprise · · Score: 1
    I almost never have problems with performance in Python, and I program in it exclusively. For those things where performance really matters -- e.g., image processing -- there are library written in C that are available from Python (and fairly easy to use) like PIL. There are lots of algorithms in Python itself that are extremely fast, like a great hashtable implementation (Python dictionaries) and sort algorithm.

    If it's really a problem, there are a myriad of solutions -- Numeric and numarray for lots of numbers, psyco for JIT optimizations, Pyrex for a Python-like syntax that compiles to C (and can be as fast as C if you use it correctly), and lots of other new options as well -- IronPython is supposed to be faster than CPython (the standard implementation), there's quite a bit of work on type inference, PyPy is working hard at compiling Python to fast C, Boost can inline C++ code... there's a huge number of options.

    I've never encountered someone who had to throw a project away because of performance issues in Python. Sometimes they have to change the design, move some small parts of C, make better use of other people's libraries, and always of course driven by profiling -- but that's the kind of refactoring that always happens in development. And for a very large number of applications it simply is never a problem.

  4. Re:Jython? on Python Moving into the Enterprise · · Score: 1

    BTW, there's been a lot of recent development on Jython in the past few months, and it should resolve a lot of its issues (it's been stuck on par with Python 2.1 for quite a while, while Python is now up to 2.4). The Python Software Foundation actually gave a grant to a developer to help resolve the issue.

  5. Re:Whoa, this is all crazyness. on Python Moving into the Enterprise · · Score: 2, Insightful
    If you are writing code that only gets run infrequently and needs to work, you need to use unit testing. It's not a good idea, you ABSOLUTELY MUST TEST. Unless it doesn't matter if it works, and then who cares?

    You'll be able to write the code in Python, and the tests, in less time than most statically typed languages. Many would argue that you can write code and tests in any language faster than writing WORKING code without tests... but that starts down a different avenue of discussion.

  6. Re:Yes, but what about the GUI - speed no problem on Python Moving into the Enterprise · · Score: 1
    I think the standard library is challenging because it's representative of a younger Python, when backward compatibility wasn't a liability (since there was no backward) and the community of developers was small. As it grew older, there's been several cases where people have ported Java libraries as part of the standard library (unittest, logging), and the result hasn't been very good. Not to pick on those programmers who made those modules, but it has made the Python community a little shy about adding new modules unless they are really stable and have proven their utility and pleasantness of interface. So now the standard library is growing slowly; maybe with some language changes this could be resolved, but it's just a hard problem.

    I wrote more about the standard library sometime back on my blog.

  7. Re: CPAN on Python Moving into the Enterprise · · Score: 1

    Re: CPAN -- a bunch of improvements for PyPI (the Python Package Index) were written during PyCon, which should go some length to making something like CPAN. It's hard to really say -- CPAN is actually just a very simplistic FTP site, with lots of tools built on top. So it's a very different design. But with just a little more work, and a lot more evangelism PyPI (a lot of Python programmers don't even know about it) should become very useful.

  8. Re:Oh really? Um, yay.. on Sun Hints At Open-Source Database Offering · · Score: 1

    SAP's is called SAPDB, or more recently MaxDB, and they are connected with MySQL now. There's also Firebird, which was Interbase when it was proprietary. Then there's the embeddable SQLite for the low-low end of SQL databases.

  9. Re:Rsync or mkzftree for backups on Backing Up is Hard to Do? · · Score: 1

    this page at riseup.net describes some software that supports the options for incremental hardlink-based backups, as there's been a bunch of packages that implement that.

  10. Re:This seems to be asking for trouble on An FM Broadcast Transmitter For Your Home · · Score: 1

    Ah... from my reading I was confusing, and thought it was power-limited to 200 of wire, not 200 feet from the wire. Hmmm... so does this mean everyone on my block gets my radio station, or just everyone in my building, or just all the rooms that share my circuit?

  11. Re:This seems to be asking for trouble on An FM Broadcast Transmitter For Your Home · · Score: 1

    If you use one of these transmitters, will plugged-in radios pick up the stations? Or do receivers require some special hardware as well? What kind of sound quality can you expect?

  12. Logo lives! on Introducing Children to Computers? · · Score: 1
    I'm a big fan of Logo. One of the reasons is that it's not written for programmers, it's written for kids who may or may not become programmers. It has things that would make normal programmers cringe -- like all the shortcuts (FD for FORWARD). But have you seen a young child type? Believe me, FD is enough of a struggle, "intention-revealing selectors" is not one of their top priorities.

    Really Logo wasn't intended to teach programming (though of course it did that). It was intended to teach math, and algorithmic thinking, and thinking in general. And, paired with the right teacher and an interested pupil, it's really great at that. Without realizing it, a child can end up learning not just geometry (through the turtle graphics), but a lot of pre-algebra. I think programming is a far more accessible way to introduce algebra than the traditional techniques; even young children can understand variables in programs, when the declarative variables that are used in mathematics are much more challenging.

    It's also a better language than many of "teaching" languages, like Basic. It's an old-school version of Lisp, with a little tweak to avoid the parenthesis. And don't be fooled by things that call themselves Logo when they are just turtle graphics. Turtle graphics are cool, but just a piece of the equation. (Though not-so-coincidentally, Python has built-in turtle graphics).

    If you are really interested in programming as education, I might recommend the book Mindstorms, which is a classic about some of the theory behind teaching with Logo. It's not a practical guide, though many of those also exist.

    If you are looking for a Logo implementation, on Windows I would recommend Elica, MSWLogo, and UCBLogo, in that order. On Mac or Linux, you can use UCBLogo, Turtle Tracks (a cross-platform Java implementation), or on Mac one of a number of (rather expensive) commercial Logos. If you are a programmer and feel like fiddling alongside your child, you might try my project PyLogo, which is cross-platform and written in Python, but quite rough around the edges. Or if you want something that is Logo, but pretends to be a general-purpose scripting language, look at Rebol. Or for a slightly-lame but functional embedded robot Logo, Cricket Logo. Or for older people, NetLogo is a massively-multitasking implementation to use to play around with autonomous entities (e.g., ant simulations). NetLogo is kind of the successor to StarLogo.

    For more information on Logo, you can look at the Logo Foundation, or get in touch with many helpful users in the LogoForum Yahoo Group.

  13. Re:Discarding too many people on Defining Google · · Score: 1
    I think I'd rephrase your comments as: solving hard problems quickly is fine, but solving really really hard problems at all is much more valuable.

    And I'd agree, but Google is probably being conservative, being more concerned that they don't hire the wrong person, even if it means they miss the right person sometimes. I'm sure anyone at Google doing hiring would admit the possibility they've passed up good candidates.

  14. Re:Tolls on The Super Superhighway · · Score: 1

    It's not subsidizing to pay increased product costs due to increased shipping costs. That's just a matter of paying the *real* cost of the product. It's subsidizing when we collectively, as tax payers, pay for infrastructure used to ship products that go to individuals. I'm not 100% against subsidies, but I'm tiring of the road subsidies.

  15. Re:Not Learnn the API - Learn the Language on Defining Google · · Score: 2, Insightful
    once you have a few good years under your belt, any decent programmer will tell you that all languages are essentially the same.
    Maybe an okay programmer will tell you that, but a good programmer doesn't believe that. A good programmer has a thoughtful appreciation for their tools, and some tools are more powerful than others.

    I would interpret it, from a hiring perspective, that after a couple years the skills you gain while developing in a language are largely transferable. So, for a Java job it's good if you have a couple years of Java experience. It's also good if you have more than a couple years experience, but it doesn't have to be in Java. Maybe it would even be better if it wasn't in Java; though really it's more important that the candidate be intellectually curious, and that's not necessarily represented by the specific languages they've been employed to use.

    Programming is about algorithms and design. The language you use to implement those ideas is nothing more than a tool.
    I'd give the language more credit than that. The design you'll use in Smalltalk will be much different than the design you'll use in C. At least if you are doing it right. They say you can program FORTRAN in any language; but that doesn't make it right ;)

    I'd place algorithm skill at a distant second to design skills (at least for most jobs; maybe not if you are working on a 3D renderer). For most programming jobs, you only have to be Good Enough at algorithms, and know when to use the right ones. And if you get it wrong, it should be easy to fix. If it's not easy to fix, you've got a design problem. Good design is way more important than good algorithms, and bad design can be way more damaging than bad algorithms.

    I'd probably lump metholodogies in with design, but maybe it should be considered separately; knowledge and use of good programming methodologies (even informally) is also very valuable, and something that is very tied to experience. Of course, some people don't get anything out of their experience, and some people get a lot -- but that's just what you'll have to find out in the interview.

    The days of needing to know the language's API inside and out are over - Google took care of that.
    For the most part I'd agree. Not because of Google, but because there's just too many APIs to reasonably know them. It should be expected that you'll learn the necessary domain-specific APIs on the job when you are hired.
  16. Tolls on The Super Superhighway · · Score: 1

    If you don't use it, what's the problem with tolls? And if you do use it, why do you think other people should be subsidizing your road use? I travel relatively short distances. I get angry when my tax dollars go to subsidize the excessive travel of other people. And if you really NEED to travel, then suck it up and pay the toll.

  17. 85mph speed limit on The Super Superhighway · · Score: 1

    As a bit of reference, the 55mph speed limit of yore was partly justified as a way of saving gas. And it does, in fact, save a lot of gas. But obviously these days saving gas doesn't matter.

  18. Re:Ruby seems on the right track. on RAD with Ruby · · Score: 2, Interesting

    Python Is Not Java is a good description of how to approach programming differently when using a dynamically-typed language. Pretty much everything it says applies to Ruby as well. One of the things it mentions is that in most cases where Java programmers use XML, it's to make up for the deficiencies of Java, and you express the same things using Python (or Ruby) source code, which is easier to work with and more general than any XML configuration.

  19. Re:Short version... on RAD with Ruby · · Score: 2, Interesting
    As for the Python vs. Ruby soapbox: I think it'a a valid component of the news because the two languages are fighting for mindshare in the same pool of savvy OO-script developers.
    Not really; if you are a savvy OO-script developer, you are using Ruby or Python or something like it already, you've made your choice. Both languages are trying to pull new developers from other languages, like C or Java. As such, I think they actually help each other -- the potential pool of new people is still very large. Once you've gotten as far as using Python (if you have a statically typed, compiled background), it's a small step to use Ruby, and vice versa. A Python developer should feel quite comfortable with Ruby, compared to most other languages (and vice versa).

    Or, if Python gets a good CLR/.NET implementation, the process and lessons will be very applicable to Ruby. Ditto Parrot. Ditto SWIG. And so on.

  20. Re:Trust your Instincts on How Important is a Well-Known CS Degree? · · Score: 1
    Once you know 1 or 2 languages you can pick up the others quickly if you REALLY understand how to develop software.
    I don't really agree with this, though I did at one point. As I've become a better, more experienced programmer, I no longer believe it to be true.

    If it's just syntax, sure. Libraries are also important, and change with each language. And they take a while to learn; first to learn what exists, then about the appropriateness and subtleties of that library. But learning those libraries is just work, not education. Learning to learn libraries is education, I suppose. But I digress...

    It's important to learn programming methodologies, and those are harder to pick up than just syntax. Or, maybe worse, you won't pick them up just by coding, because you can probably use techniques you are comfortable with and avoid the appropriate styles for the language and environment you are using. School gives you a chance to disregard (most) deadlines and need for productive code, and focus on longer term goals and deeper understanding.

    School is your chance to learn and study important languages that you might not use later, but which can effect your understanding of programming. Smalltalk is a good example -- it has had a deep impact on my programming since I learned it and studied it and its standard library (if you don't learn the Smalltalk library, you are missing out on most of the ideas it has to offer). But I don't use it at all anymore.

    I also use Scheme notions all the time, in the form of higher-order functions, and other functional programming techniques. You often won't encounter these techniques normally, or if you do you won't recognize them for what they are. And looking back, I wish I had learned a language like Erlang that emphasized concurrency.

    And while in many ways these higher-level languages were my influences, languages like C are important too. I never touch pointers these days, but it's important that I know they are under there, hidden from view but always present. It also helps me understand where other people are coming from. I never learned Java, which was probably a mistake, but then it's not really a very pure expression of any idea so I don't think I missed anything big. It's one of those few languages that makes me sad whenever I read it, so I doubt I would have effected me much (in any positive way). I knew Basic really well at one time, and it hasn't influenced me; not every language has something new to offer.

    Now I use a language that accomodates most any technique I care to use (Python). I think it's all the more important that I have the background of using other languages, because I could easily fall back into a small set of patterns, and miss out on important design techniques. One or two languages isn't nearly sufficient.

  21. Re:Not a Python Programmer... on Python 2.4 Final Released · · Score: 2, Informative
    I was also stunned to learn how flexible decorators were in the previous version of python. It's refreshing to be see functions treated as objects... unless I'm mistaken about the concept.
    Another important part has been Python 2.2's new-style classes and descriptors. Descriptors are basically objects with special methods (__get__, __set__, __delete__). When you access a class or instance attribute, instead of returning the descriptor, the a method of the descriptor is called. This is what allows classmethod, staticmethod, and property, but also a number of other declarative techniques for class definitions. Well, it's one of several things that work together to create interesting new possibilities in Python.
  22. Tom the Dancing Bug on Scientists Give Human Organs to Lamb · · Score: 1

    An Oldy-but-Goody from Tom the Dancing Bug: Ethical Issue Raised by Man-Cow Organ Slave (Salon, may involve mandatory ad watching)

  23. Distributed vs. centralized repositories on Interview: David Roundy of Darcs Revision Control · · Score: 2, Informative
    I played around with several source control systems a while back; I like Darcs, it was the easiest of the distributed systems to understand, with a concise and easy-to-understand command-line interface.

    But in the end I think a centralized repository is right for many (most?) projects: Why Bitkeeper Isn't Right For Free Software (by Greg Hudson) was the most convincing argument to me.

    Of course, you can simulate a centralized model with a distributed system (just don't use the distributed bits), but it seems like you are on your own at that point. Subversion is behind when you compare distributed features (of course), but when you compare the other features (usability, access via various method, programmatic access, etc), it's way ahead. As it would be; centralized systems are easier to think about, so they are easier to develop with and on top of.

  24. Re:The point of diminishing returns is just the st on Can People Really Program 80+ Hours a Week? · · Score: 1
    You don't even have to make egregious mistakes to have net negative returns. If adding 20% more time causes a 20% decrease in productivity, then you'll lose productivity: 40*1.2 = 48 (hours); 48 * 0.8 = 38.4 (actual productive time).

    If you are overworked for extended periods of time, your overtime isn't just effected; all your time is effected, which is why you have negative returns. According to studies even small amounts of consistent overtime can lead to negative returns.

  25. Re:Well, it can be done. But can it be done well? on Can People Really Program 80+ Hours a Week? · · Score: 1

    Push for quality ensurance measures like strong system and unit tests. It won't necessarily punish this programmer, but it might make his work more productive, and keep the rest of the team from the stressful and boring work of debugging someone else's code. Unit testing is not a hard sell to management, but it can be very hard to get individual programmers to actually participate.