In his History of Python: Introduction and Overview, Guido van Rossum repeats the confusion between “scripting” and “dynamic” languages:
Python is currently one of the most popular dynamic programming languages, along with Perl, Tcl, PHP, and newcomer Ruby. Although it is often viewed as a “scripting” language, it is really a general purpose programming language along the lines of Lisp or Smalltalk (as are the others, by the way).
I think there’s a big difference between the two categories, and the reason they get confused is that both are usually high level languages with dynamic typing, automatic memory management, etc.
But the two types of languages are really different when it comes to how the programmer interacts with them, and in how they are implemented:
- Scripting languages read whole programs from outside the compiler and execute them immediately, usually with a minimal amount of processing.
- Dynamic languages include the compiler in their own environment, and programming is seen as adding or modifying that environment.
For some reason, calling a language “scripting” is seen as somehow implying it’s a lower, less powerful language. That’s clearly not true. Nothing in the way Python works makes it a less-than-general purpose language. It simply doesn’t work the way Lisp or Smalltalk do.
- 7 (Stupid) People Who Sued the Scientific Method | Cracked.com –
- Common Lisp Weekly News –
- Mudballs: Index – “Mudballs was written with the goal of providing an easy to use system for loading Common Lisp code into your image in a reliable and predictable manner.”
One consequence of the NULL historical memory our trade has is that we get to see Worse is Better replayed from time to time. I’ve seen it on languages, editors, kernels, windowing systems…
This time it’s distributed version control systems, with discussions flaring up the Internet to decide which shall be The One DVCS to Rule Them All. And, once again, no surprises. The fast has won over the flexible, the cool has triumphed over the supportive, the macho has destroyed the elegant: Git‘s won and Bazaar‘s lost. Nothing new here, move along…
Wait a moment, though, as I’d like to make some suggestions to the major players in this epic battle that will not go into the programming annals, but only because we have none.
Git developers: Congratulations! You have created a good tool which, when you buy into its process, works superbly and –has anyone commented on this before?– it’s incredibly fast. Just be aware that not everyone works on the Linux kernel, and supporting different workflows is clearly an area of improvement.
Git supporters: You’ve won a battle, but not the war, and there’s much work to be done yet. Do not tolerate people using other tools, specially if they are constrained by their employers or customers. Keep proselytizing, in every venue, with your chants of “Faster, faster!”, because you know that’s the argument that always wins, that completely trumps any other. It’s also a good way of passing time until the next battle, because the world is imperfect and there will always be other people, other projects to ridicule.
Bazaar developers: You made something better, and you should have known that’s, unfortunately, worse. But your ideas can still be useful. That great plugin you wrote? Reimplement it for git, using a mix of bash scripts, Perl and C. It should take you three to ten times longer, but now you know your cycles are worth a lot less than your CPU’s.
Bazaar supporters: Yes, all three of you. Sorry, but there’s no prize for fair play, if that was what you were aiming for. Learn Git, it’s not as difficult as it’s said to be, and you’re intelligent people. Welcome to the Better is Worse corner of the world, there’s lots of interesting (but sometimes smug) people here and you get to say “That’s been done before, and better” a lot.
Other DVCS devs and supporters: Yes, I know you exist and are used in some project and each one of you is like a precious flower, unique with its pros and cons. But Git and Bazaar are the two extremes here, so apply one side or the other depending on whether you think your tool of choice has won or lost.
- Crack.NET « Josh Smith on WPF – “Crack.NET is a runtime debugging and scripting tool I made that gives you access to the internals of any .NET desktop application running on your computer.” Greasemonkey for .NET. I wish something like this existed for gobject.
- Room 101: We have Good news, and we have Bad news – “We will be releasing a Newspeak prototype in the first week of January 2009.” Unfortunately, they’ll also need funding.
- Neopythonic: Scala? – “Types are just the primary focus of compile-time checking at the moment.” Guido van Rossum’s thought on Scala.
- bitwize comments on Lisp at Google: Killed in 2001 Reborn in 2008! – “Any sufficiently complicated Common Lisp or Scheme program will eventually be rewritten in C++, Java, or Python.” – Greenspun’s 1/10 rule.
- SSA Bibliography – A lot of references and research on Single Static Assignment
- Room 101: Dynamic IDEs for Dynamic Languages! – “In an IDE written in a dynamic language (such as Smalltalk or Self or Lisp), the IDE code itself can be modified on the fly. This is a double edged sword?”
- Casual Connect: Sony On Developing for an Open PS2 Platform – ‘The most important information Bain had for his audience was news that, in Europe, the PlayStation 2 “is effectively an open platform,” adding, “You no longer have to submit a game for content approval.”‘ This could be an industry-transforming move.
- DreamHost Blog » How To Make Money – A good article on banks and hosters.
- MOAP – Maintenance of a project – Trac – “moap is a swiss army knife for project maintainers and developers. It aims to help in keeping you in the flow of maintaining, developing and releasing, automating whatever tasks can be automated.”
- Valério Valério?s Blog » BlueMaemo – “BlueMaemo is a remote controller program for the Maemo-powered devices. With BlueMaemo you can turn your Maemo-powered device in a mixed Bluetooth keyboard-and-mouse device through the HID Bluetooth profile.”
Dear people making announcements, specially on planets:
Please provide a small description of what the project does or at least a link to the main page. “Text Editor” is easy to understand, but many project names are not. What does PiTiVi do, and why is the Simple Timeline gone? What’s a gbrainy and why is it included in a CD? We really want to know!
Thanks and have a good day 🙂
- X.Org Wiki – XKB – “The XKB data files for the various keyboard models, layouts, and locales are now maintained by the X Keyboard Config project on freedesktop.org” At last, some configuration help for xkb.
- The Perry Bible Fellowship – Today’s My Birthday
- kenodoxia: Why feel guilty? – Richard Dawkins, for example, reveals his guilty pleasure is ‘computer programming’
- Interaction Design Pattern Library – Welie.com – A long and interesting list of UI patterns.
- Armed and Dangerous » Blog Archive » C++ Considered Harmful – “Rob Landley and I are concentrating heavily on writing a paper together. The working (and probably final) title is ?Why C++ is Not Our Favorite Programming Language?.” Looking forward to this one.