Threads - Threat or Menace? - Eric S. Raymond % Twisted is amazingly flexible and Pythonic, but that darn asynchronous event loop makes thread-happy people run in terror. - Mike Orr, April 2004 % I'd no more use non-event based networking code than I'd use a non-event based GUI toolkit. - Jasper Phillips, June 2004 % With Twisted, you don't need threads. You don't want threads. Threads are actually harmful: http://www.kuro5hin.org/story/2002/11/18/22112/860 - Jonathan Lange, August 2004 % If you think threads are hot, use threads and don't waste your time with tools like Twisted. If you think asynchronous programming presents serious benefits (as I do), embrace it all the way: it won't be easy (writing software rarely is), [...] grit your teeth and get on with it. - J.P. Calderone, August 2005 % No inventions have really significantly eased the cognitive difficulty of writing scalable concurrent applications and it is unlikely that any will in the near term. [...] Most of all, threads do not help, in fact, they make the problem worse in many cases. - G. Lefkowitz, August 2005 % A computer is a state machine. Threads are for people who can't program state machines. - Alan Cox, Linux kernel mailing list, January 2000 % Use of threads can be very deceptive. [...] in almost all cases they also make debugging, testing, and maintenance vastly more difficult and sometimes impossible. http://java.sun.com/products/jfc/tsc/articles/threads/threads1.html#why % The X server, able to execute literally millions of ops/second, is not threaded; it uses a poll/select loop. Various efforts to make a multi- threaded implementation have come to no good result. The costs of locking and unlocking get too high for something as performance-sensitive as graphics servers. - Jim Gettys % Using threads is like having no backups: you stay in denial of the problem until it bites you, and then it's too late. - Nicola Larosa, November 2005 % One does not use threads for the same reason one does not use global variables or habitually modify other objects' attributes from outside. - Allen Short, December 2005 % Continuation-based web frameworks (like Seaside) seem lame to me. I'm so much more impressed by event-based programming, and continuations (used in that way) seem like a way to avoid explicit events. Events are the web. Continuations are people who want to make the web into an MVC GUI. - Ian Bicking, February 2006 % Using abstractions like producer/consumer, deferreds, etc., can make concurrent programming not so hard, and you have to be basically insane to use threads in your concurrent programming (I've been doing it for about 7 years, and am thoroughly insane). - Josiah Carlson, September 2006 % Shared state threading is a hack built on to existing languages. [...] Transaction memory is another hack bolted on to all the previous concurrency hacks, and somehow it's going to make all the other concurrency hacks to work reliably. Yeah right. - Damien Katz, February 2007 % The world is getting ready for shared nothing, semi-functional programming. Get out of the backwater and catch up to your audience. [...] All that low-level monitor-based [transactional memory] garble? Just leave it [where] it is now. Walk away from it slowly. Turn your back, and run. - Patrick Logan, February 2007 % Complex problems remain with implementing concurrent systems. But [message passing] mechanisms like Erlang's raise them to a higher level, closer to the problem domain. This transactional memory is a false hope covering a bottomless pit that could have easily been walked around in the first place. Stay on the path. - Patrick Logan, February 2007 % Multi-threaded programming will fall out of favor by 2012. [...] I predict that the programming community at large, even Java prog- rammers, will finally deprecate multithreaded programming around seven or eight years from now. That's about par for the course. - Steve Yegge, November 2004 % Threads violate abstractions six ways to Sunday. Mainly by creating race conditions, deadlock hazards, and pessimistic locking overhead. And still they don't scale up to handle the megacore teraflop future. [...] So my default answer to questions such as [...] "When will you add threads to JavaScript?" is: "over your dead body!" - Brendan Eich, February 2007 % If you really want "true" multi-threading for Python, use Jython or IronPython; the JVM and the CLR do support multi-CPU threads. Of course, be prepared for deadlocks, live-locks, race conditions, and all the other nuisances that come with multi-threaded code. - Guido van Rossum, July 2007 % I'm the first to admit that I'll probably never be able to create a correct threaded program in C++ or Java, despite years of study. It's just too hard. - Bruce Eckel, September 2007