Doug Tolton:
It depends what you are talking about. If you are talking about
making some large cross industry library I might be inclined to agree,
but when it comes to building good high level abstractions within a
company, this argument doesn't make sense. Any feature has to be used
in the proper context for it to be useful, Macros are also this way.
As a consultant, I don't have the luxury of staying inside a singular
code base. By your logic, I would need to learn each different
high level abstraction done at my clients' sites. And given the usual
software engineering experience a chemist or biologist has, those
are unlikely to be good.
I just don't find that argument compelling. By that logic we should
write the most restrictive language possible on the most restrictive
platform possible (ie VB on Windows) because allowing choice is
clearly a bad thing.
The inference is that programming language abstractions should
not be more attractive than sex. Classes, functions, and modules
are not. Arguing as you do is an all-or-nothing approach which
overly polarizes the discussion.
Linux is based on this concept of allowing people to extend the
system, it doesn't seem to have suffered from it.
I don't use Linus's kernel. The machine I have with Linux on it
runs a modified version distributed by a company and with all
the other parts needed to make a useful environment for my
work. And I loath the times I need to recompile the kernel,
even though I actually have done kernel mods on Minix in OS
class back in school.
In a similar vein, the different distributions once upon a time were
very divergent on where files were placed, how startup scripts
worked, which libraries were included, and how things were
configured in general (eg, which libc to use?). If I wanted to
distributed precompiled binaries, I was in a bind because I
would need to ship all the variations, even though it's just for
"Linux".
There's more consensus now on, but it took a lot of time.
In short, my comment is that Linux does allow the diversity,
it did cause problems, and people now decide that that
diversity isn't worth it, at least for most uses. For me as an
applications developer, that diversity just makes my life more
complicated.
Same argument as above, I don't agree with this logic. Python is a
great language, that doesn't mean it couldn't be better though. If
that were the case development would be cease.
What if Python had a marker so people could tell the intepreter that
the next few lines are Lisp code, or Perl, or Tcl, or any other language.
Would the result be more flexible? Yes? More powerful? Yes.
Better? I think not.
Why do we allow people to write functions even, I mean you have to
learn the syntax for calling them, what the variables are and what
they do. Bah, we should make everyone use only built in functions, if
they want a different one, use a different language. What? It makes
no sense to me.
Your argument of an extreme has no weight because it's different
than what I'm saying.
Extra power and flexibility can have bad effects, not just on the
language but on the community built around the language. Software
development is rarely a singleton affair, so a good language should
also optimize the ability for different people to use each others'
libraries.
Functions and modules and objects, based on experience, promote
code sharing. Macros, with their implicit encouragement of domain
specific dialect creation, do not.
So don't allow people to customize the system huh? They why is Python
Open Source? That's the *entire* point of Open Source, so that people
can tweak and customize to their own environment.
Err, no. I use open source because it's cheap, because the tools
are of good quality, because if something breaks I can track down
the problem, and as a risk management bonus, if the project ever
dies, I can still maintain things on my own.
I never, ever, ever, want to get into the case where I'm maintaining
my own private, modified version of Python.
Do you have any
specific examples that are comparable where customization broke a
community down? This sounds like baseless hypothetical speculation to
me.
Lisp.
A language which allows very smart people the flexibility to
customize the language, means there will be many different flavors,
which don't all taste well together.
A few years ago I tested out a Lisp library. It didn't work
on the Lisp system I had handy, because the package system
was different. There was a comment in the code which said
"change this if you are using XYZ Lisp", which I did, but that
that's a barrier to use if I ever saw one.
You are saying you don't know how to tweak a language to fit it your
specific domain better than a general puprose language? And you are
saying you are a pretty good language designer? If you don't know
your specific domain well enough to adapt a general purpose language
to it better than it is already written there are several
possibilities:
1) You don't know your domain that well
2) You work in a very general purpose domain
3) You aren't a very good language designer
4) a small change in a language to better fit my needs has
subtle and far-reaching consequences down the line. Instead,
when I do need a language variation, I write a new one
designed for that domain, and not tweak Python.
Designing a good language is all about designing the right high level
abstractions. Even a medium skilled designer should be able to design
a language that maps better to their specific domain than a general
purpose domain (actually implementing is of course a vastly different
story).
But if Python is HERE ............................... and my domain is HERE
I'm not going to try to force them together.
You are in essence saying that Python is perfect, that no one could
make a more useful abstraction than it already has, and that saying
that one could do so is hubristic.
I looked up 'hubris' just now. It's the wrong word for me to use.
http://dictionary.reference.com/search?q=hubris
hubris: Overbearing pride or presumption; arrogance
I don't mean 'overbearing', I mean perhaps 'confidence'.
'arrogance' is also the wrong word. Something without the
negative overtones.
Andrew
(e-mail address removed)