RE: Application letters at the Haskell workshop: suggestion
I think there's a lot of truth in all you said in your message and I make the following comment merely as a point of information. [Bryn Keller] Thanks very much, I was hoping my comments would be taken constructively.
I think I speak for the majority of 'industrial' programmers when I say Haskell is a very difficult language to approach. I believe a great deal of this difficulty stems from lack of documentation.
I think the Advanced Functional Programming books (which are proceedings of the advanced functional programming summer schools) are great for explaining some of the tricks/idioms required to use Haskell effectively for larger systems.
But there's still the problem of knowing that these are worth seeking out (merely listing them in amongst 100 other books, articles and papers isn't enough) and when you should read them (once you've mastered Bird and Wadler (ahem, Richard Bird's "Introduction to Functional Programming") or some similar book) or even of knowing where they are listed (2/3 of the way down the Haskell Bookshelf page: http://haskell.org/bookshelf/) [Bryn Keller] Very true.
Thanks for the pointer, I hadn't realized that the proceedings of those conferences were actually available as books from Amazon and so on. I may have missed it, but I don't think there's anything on the Haskell Bookshelf page that suggests they are... I count four links related to Advanced Functional Programming, of which the first two are broken, and the second two take you to registration sites. There are three (the 1st, 2nd, and 3d annual, natch) different proceedings available from Amazon. At $52 - $66.95, which should I start with? Granted I expect to pay around $50 for computer books, but I'd like to have some sense of what I'm getting. Also, do these books have good coverage of things like existential types, functional dependencies, other experimental-but-apparently-crucial features that are hard to find documentation for? Are they edited into a coherent whole, so that the books is greater than the sum of its papers?
I also have a question:
Speaking as an 'industrial' programmer who gave a 30-minute application presentation at the International Python Conference earlier this year,
I think you'll need to educate us as to what kind of conference this is, what kind of paper it was, etc. In particular: [Bryn Keller] Fair enough. :-)
1) Who is in the audience?
Is it other python users or is it python library developers or is it python compiler writers/porters? And if all three, then who make up the bulk of the audience, who were you primarily directing yoru talk at? [Bryn Keller] IPC is basically _the_ Python conference. Python is still a small enough developer community that basically all things Python are discussed there. There is some Python presence and some talks at Open Source and Linux conferences, but basically IPC is it. Since it is a general sort of conference, but Python I'd guess that users and library developers had about even representation (or possibly a majority of library developers), and the minority were compiler implementers. I believe attendance was in the neighborhood of 300. I'd say my intended audience was primarily application developers.
2) What was the point of your paper?
To suggest improvements in the language or libraries? To suggest a need for development tools? To suggest a neat coding trick? To describe some useful tool or library that python users might find useful when writing python? To describe some useful application that people might find useful for something other than writing python? To show that python is useful for some new application domain? To add to a body of concrete examples of people doing something useful with python? Other [the fact that I can't think of other points reflects my lack of imagination and narrow focus not anything else] [Bryn Keller] The point of the paper was to demonstrate the use of Python for an ambitious and reasonably large-scale project. Essentially we developed a thin client business application, an GUI-builder IDE, and a new extremely portable UI toolkit with excellent internationalization support. The main client application and library runs about 35,000 lines of code, and the generated code for the screens (over 200 of them) easily exceeds 100,000 lines. The main points were to 1) demonstrate that Python is actually suitable for use in a project of this size so others can use it as a data point when speaking to their managers, 2) explain some of the pitfalls we encountered so that others might avoid them, and 3) discuss the architectural considerations that went into designing such a system from scratch. I also made a few suggestions for tools and language improvements, but they were not by any means the main focus.
3) [this is partly covered by the above] What did you want to achieve in writing the paper and what did people at the conference or reading the proceedings hope to learn?
[Bryn Keller] I think this is mostly answered above as you suspected, but I should add that the papers that were presented (along with the lightning talks, and posters) covered quite a gamut. There were extensive discussions of, e.g., Stackless Python (a version of Python with first-class continuations), WAD (an extension module that traps C segfaults and whatnot and converts them to Python exceptions), the new compiler interface, and many, many more. The conference site is http://www.python9.org, if you're interested. I attended with a junior colleague who had been working with Python for about 6 months and he said he got a lot out of it. I also got a lot out of it, though we generally went to different sessions.
-- Alastair Reid reid@cs.utah.edu http://www.cs.utah.edu/~reid/
Quick reply to just one point (more later, I hope):
Also, do these books have good coverage of things like existential types, functional dependencies, other experimental-but-apparently-crucial features that are hard to find documentation for?
I consider myself a fairly hardcore Haskell user (I used to be a language designer and compiler/library developer but now I work on another language and write my tools in Haskell and perl). Despite this, I don't think I use any of the features you list (I guess I'm suggesting that these might not be the most important to you either). I do use the IO monad, IORefs (sparingly), constructor classes, lots of libraries, the foreign function interface (lets you call C and C++), parser generators (happy) and parser combinators, exception handling and concurrency (even just the lame non-preemptive version that Hugs provides). Of course, this partly reflects the kinds of programs I write and, to some extent, my being comfortable with the features and libraries I know and not having time to really explore what I can do with the other features. -- Alastair Reid reid@cs.utah.edu http://www.cs.utah.edu/~reid/
Alastair David Reid wrote: | > existential types, functional dependencies, other | > experimental-but-apparently-crucial features [...] : | I do use the IO monad, IORefs (sparingly), constructor | classes, lots of libraries, the foreign function | interface (lets you call C and C++), parser generators | (happy) and parser combinators, exception handling and | concurrency (even just the lame non-preemptive version | that Hugs provides). One small point here: many libraries use experimental features in their implementation. Many efficient parsing combinator libraries for example rely on some kind of continuation monad, which often needs existential types to be implemented. /Koen.
participants (3)
-
Alastair David Reid -
brk@jenkon.com -
Koen Claessen