
On Thu, Jan 15, 2009 at 09:17:55AM -0700, John A. De Goes wrote:
On Jan 10, 2009, at 4:11 PM, Donn Cave wrote:
Maybe I haven't been paying enough attention, but I see Python and Haskell in about the same position on this, especially in light of how different they are (Haskell's FFI is a lot easier!) Plenty of Python software depends on C library modules and foreign code. The particular examples you mention - DB and UI - are great examples where it's sort of crazy to do otherwise for just the reasons you go on to list.
Python has pure interfaces to all the major databases. While it's true there are no "native" GUI libraries, there are pure Python libraries for just about everything else. Haskell is not yet to this point.
By "pure" do you mean "containing python code only"? I'm looking through a few, and: PostgreSQL - psycopg - C PostgreSQL - pgsql - C PostgreSQL - pygresql - C MySQL - mysqldb - C MS SQL Server - pymssql - C And any interface that uses ODBC will, by necessity, be calling to C, because ODBC is defined as a C API and not a network protocol. Where are all these pure-Python drivers?
I don't think it's a bold assertion. If I'm using a Haskell library that wraps a C library, and find a bug in it, my chances of tracking down the bug in C code and submitting a patch to whatever group maintains it are exactly zero. On the other hand, if it's a pure Haskell library, I'll at
Why?
least take a look. What would you do?
You have to balance that against the chances of there being bugs in code that is used by far fewer people. I don't care what language you're talking about -- I'm going to expect the C PostgreSQL library to be less buggy than a pure reimplementation in any other language, and will have less concern about its maintenance and stability in the future. It's a lot of wheel reinvention to try to re-implement a database protocol in n languages instead of do it in 1 and bind to it everywhere else. AFAIK, the only language where that sort of wheel reinvention is popular is Java. But then Java seems to encourage wheel reinvention anyhow ;-) -- John