Siebe 的个人资料Siebe Tolsma日志列表留言簿 工具 帮助

Happy anniversary, mom & dad!

This day in history: 30 years ago, in 1977, my parents got married (that means diamonds!). Yay! Party!

Microsoft ships X. Company Y did it first.

Sometimes I can get very annoyed at the short sightedness of people. This time it is about the constant bickering when Microsoft ships a cool new product (be it software or hardware, but mostly hardware) that a different company ("preferably" either Google or Apple) has done it all before. However, most of the time the product by the other company isn't around that long (say, a couple of weeks, maybe a month or so at most). One of the most heard complaints is: "Microsoft probably copied this from company Y, again."

A great example of this is the Zune v2 with touch screen (versus the iPod Touch and iPhone). Okay, seriously, reality check here. How long do you think it takes to design, manufacture, write software for, and ship a product like the Zune v2 with touch screen? Certainly not the small amount of time between the release of iPod Touch and the announcement of the Zune v2. Yes, there were rumours, but not for very long befor Apple announced its products. Then tell me how Microsoft could have possibly copied this "idea" (which has been around for ages ayway, so Apple isn't very innovative, either!) in the space of maybe a month or two?

Yeah, Microsoft has copied some ideas from other companies in the past. It is not like Apple or Google (or IBM, or Sony, or ...) ever borrowed ideas from someone else. If it's a good idea and it sticks, then why not use it (or something similar)?

Another often-heard complain is "Finally, Microsoft gets it", usually after a product announcement. Huh, say what? You don't think Microsoft has enthusiastic and smart people who get it? Of course it does! But obviously designing a product (sometimes from scratch), getting all ideas worked out, etc. etc., take a lot of time (and, granted, there is some office politics to be done as well). Microsoft got it, the teams and people got it -- just because there isn't currently a product that makes use of <insert hip technology here> doesn't mean they aren't working on it.

[EOB].

Dive into Python

So I took a dive into Python a week or so ago. So far I like it, it is very clean, and reasonably fast (equal to or faster than Perl, anyway). Yea, I keep comparing it to Perl, because that is still one of my favorite languages, and comes reasonably close to Python in genre.
 
I like the *.pyc thing where Python source files are stored in byte code, speeding up loading (not execution, though). I'm also drooling over the fact that Python has proper multithreading support, and not the crap Perl has (memory usage goes through the roof). It's also totally awesome it has operator overloading (Java, I'm looking at you!).
 
I have encountered some things I'm not too happy about, however.
 
The first is the support for classes in Python. While okay, it is not the best implementation of OO I've seen either. Heck, I could argue that Perl's class (or rather, module) support is cleaner (or clearer, anyway). While Python does support inheritence (neat!), it also does support multiple inheritence.. and that's where things get yucky. Also, I miss having properties and static methods. Yes, there are "decorators" for that, but it feels hacky and like and afterthought.
 
The second I am somewhat annoyed about is not having a clean "system" namespace. It's all thrown into seperate packages, with very descriptive names like urllib, urllib2, etc. Then, of course, there is httplib, ftplib and other whatshamacallems. Why aren't they in a hypothetical shared package, something like web.url, web.http, web.ftp, etc.? Also, really, why do we need package2? This, to me, is just bad naming. Either use the new version of the library/package, or stick to the old one. Mixing them up is bad. Offering something new in package2 while the old interface/classes/constants haven't changed is bad too. I just want one package, with some versioning, is that too much to ask for? (Perl solves this nicely with the $VERSION in modules).
 
I'm somewhat afraid Python is going in the direction of PHP when it comes to packages, classes, and function names. They are a mess (Exception vs. Error, anyone?). If someone doesn't step in and cleans up the stuff (and keeping it clean by reviewing all packages that come with the default Python distro) it will only get worse.