Joho the Blog
|
|
|
November 06, 2006
I'm going to talk with Paul Graham as part of the intermittent Web of Ideas series at the Berkman Center this Wednesday evening at 7pm. You're invited. And we serve pizza. Paul Graham is a software guru, entrepreneur, essayist and painter. Inhis essay, "Taste for Makers," Paul argues that successful design, from math to software to painting, relies on the same aesthetic principles. Taste is therefore not a matter of subjectively appreciating fine works but is a required capability for creating great software. But is taste as timeless as Paul suggests? Do the design principles Paul points to result from aesthetic or functional characteristics? And why should we think that the visual and the programmatic, the artistic and the functional, the physical and the virtual might all be beautiful in similar ways? I'll interview Paul for a while and then it will be open discussion. Paul is deeply knowledgeable and thoughtful, so this ought to be fun. (Note: The Berkman Center moved around the corner this year. It's now at 23 Everett St in Cambridge. [map]) [Tags: berkman paul_graham web_of_ideas] Posted
by D. Weinberger at November 6, 2006 02:14 PM
|
Comments
I am great fan of Paul, But i do have my share of disagreements with him :). For example one of the most simple one is that he tends to portray java as an enterprise language not a hacker language!. I find this amusing as I have never seen a lanaguage as powerful as java which lets you work on technology without worrying abt the underlying implementation, its effective. I find hackers, normally dont work on huge stuff, they tend to focus on small,telling problems where they can single handedly solve the thing. perl/python etc does really well here. I find it really amusing that he judges a language without plunging into it. if you plunge i am sure he will find it useful at least for certain things.
Regarding design principles, i think paul is correct.A solution which is simpler most often is the beautiful. so making a beautiful solution to a telling problem may make the solution simpler!!
Posted by: Ashly | November 7, 2006 03:55 AM
I have never seen a lanaguage as powerful as java which lets you work on technology without worrying abt the underlying implementation
What languages have you seen? I've seen few weaker. (And yes, I've worked on large systems in both Java and Python.)
Posted by: Guy T. | November 7, 2006 04:19 PM
buddy, its easier to boast that python/perl/lisp is better and sure in some cases yes they are better..agreed. but where on earth the idea that java is weaker comes from ?
if you think so why not blog on it or say what specifically makes you think that its weaker?FYI we have done a reasonably decent project[webapp] recently interfacing to lagacy,MQ in 20 days all using PL jars.Now I can gurantee that if i use C++ i wont do it in 1 year and perl - i may get held up implementing transaction integrity, perl is good and CPAN is great but java is good as well and its one of the best serverside language.
if you say something like java is weaker provide justification, otherwise sadly buddy, it wont sell.
I think its more like of a fashion to say that java is bad.for a change tell something logical.
Posted by: Ashly | November 7, 2006 11:48 PM
Oh yeah .. this may help.
http://blog.vikdavid.com/2004/08/paul_graham_has.html
Posted by: Ashly | November 8, 2006 04:27 AM
I hate to point it out, ashly, but C++ is really close to the machine and I've read a number of articles about people having trouble growing Perl apps.
Java is a fine language, it's been on top long enough that it has plenty of libraries available. Nobody is saying that you can't implement stuff in Java, they're taking issue to your claims of not having to worry about the underlying implementation.
If you want examples, let's start with the type system. You have to explicitly declare all your types and the permissions on all your classes and methods. I consider that having to worry about the implementation. Python and Ruby have no such issues. If you really want types, you can optionally declare them in Lisp, Haskell and a number of other functional languages.
Moving on, let's talk about interfacing with non-java apps like databases. I know Python, Ruby, and OCaml have excellent C library integration, opening up a large range of apps that aren't written in the native language. I've heard (but don't have personal experience with) Java's native api interface sucks. This isn't a huge problem, as Java has a large range of software available in the language, but it does come up when you're trying to do something like GUI apps. In Java, I spent a whole lot of time worrying about system differences when doing a swing app. With Python, I just make a wxPython gui and have done with it.
Moving on, let's go to distributed apps and concurrency. Erlang is capable of working in a distributed fashion as easily as it is locally. There are experimental versions of concurrent Lisp and Haskell. The Stackless Python folks are reporting that they can migrate processes across platforms. Java might have something like this, but I haven't heard of it.
Finally, I find many of Java's libraries to be clunky. Compare the SAX and DOM APIs to the elegance of Python's elementtree/lxml or Javascript's E4X. In the web space, RoR is causing a number of migrations from Java, Seaside has a superb continuations, and Python has Django, which provides a free administrative interface based on your model definition, and TurboGears, whose widget system gets schema validation with minimal effort.
Bashing Java is in fashion, but it's not without reason. Java is the right tool for a number of situations, but it is wrongly used in many, many others. I encourage you to study one of the languages mentioned here. You'll learn a lot.
Posted by: Karl G | November 8, 2006 04:18 PM
but where on earth the idea that java is weaker comes from ?
Wow...
1. Just start listing language features that Java doesn't have: first-class functions and symbols, all the language all the time (e.g., for macros, and computation done at compile-time), optional type declarations, statements that return values, type inferring, lazy evaluation, parametric polymorphism, exception restarts, ... One of the hot new things in Java for a while was "AOP", which in Java meant rewriting the compiler, but it's trivial in, say, Lisp.
2. Examples (like this) of people writing code in Java and other languages. Java programs had ~100-600 LOC, compared to ~40-220 for Python or ~50-180 for Lisp. Not surprising: Java simply isn't an expressive language. (You can write anything you want ... as long as it's a class.)
3. Pick up your copy of SICP and try to work the examples in Java. Good luck...
4. Guy Steele (an author of the Java spec) famously said "We were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp". Yes, even the creators of Java knew that Java was no Lisp. :-)
You still haven't answered my question: what languages are you comparing it to? You mention only Perl and C++. If those are the only other languages you've used, I can kind of see why you're so defensive about Java.
Posted by: Guy T. | November 8, 2006 07:42 PM
How'd the talk go?
Posted by: Kevin Fischer | November 9, 2006 03:21 AM