I wouldn't argue that it's easier to maintain code in a dynamic high- level language like Python rather a compiled relatively low-level language like C. Some projects benefit from focus on elements of programming like memory management and are thus better written in C, but the problem that's impacting the population of C programmers is that C is chiefly used in "close to the metal" code or things that need to run with a minimum of support from other OS facilities like kernels or SMF. Languages like Java have been made central to an approach to development that emphasises higher-level logic and more general problem solving. This has its ups and its downs, but the fact of the matter is that languages like perl, Python, and Ruby that can be used as much for scripting and automation as web development. That amounts to access to a much wider range of jobs, so people tend to have a loose ability to read C and at least a passable ability to write in a high-level language and a capability to climb the learning curve quite a lot faster learning another dynamic language rather learning C. This is reflected in education: from what I've seen of computer science programs in the US and UK, the move away from C to Java or C# as the first language taught in computer science courses and in many cases the only language learned in the classroom has been fairly firmly entrenched for more than 15 years. The emphasis has thus shifting towards code that expresses the logic of the problem you're trying to solve as opposed to the lower-level mechanics of the implementation.

Such is why perl and Python tend to be the integration glue that holds large-scale infrastructure together at places like Google: these sites use technologies which solve their problems and for which they can readily source talented people familiar with the technology. To the extent that there's a question of "hip" or "cool", it's just as fair to say that movement from mainframes to distributed systems or from terminal applications to client-server to n-tier partake of fashion phenomena: you can't completely extricate motion in marketplaces with so much money sloshing around from trendiness. You go on to mention Bill Joy, but these are also the kind of dynamics that led Joy to think that developers already versed in C might benefit from a Unix shell using C syntax rather than having to learn Bourne. Conversely, Joy found himself fifteen years later sufficiently convinced that C wasn't the be-all, end-all of language design or implementation that he helped mid-wife Java at Sun.

I don't therefore see it as inherently objectionable that something like packaging be written in Python. The upside of writing in a dynamic language is that you can read the code from any point where the documentation leaves off (e.g. internals), which can also make it easier to get not just bug reports but patches from the community. As far as performance goes, any well-designed packaging system is going to have most of the work done on its behalf by system calls when it comes time to lay down the software. The difference in execution time when evaluating metadata, which is the rest of what you'll need to do, is likely to be sufficiently comparable that no one's going to complain that their software install is intolerably slow. Performance optimisation past a certain point of adequacy becomes a trade-off between maintainable code and further performance benefits, which is why premature optimisation is said to be a fatal mistake in software engineering. Choosing the right language for a project can be a version of that dilemma.

Again, I'm not arguing that there are perfect languages (or that there haven't been some nasty side effects from dynamics that have resulted in a generation of developers who generally think that memory management is a magic property of the virtual machine running their code and don't understand much about how these classes of problems impact performance and scale, not to mention reinforcing unnecessarily short lifetimes for computers, as developers expect consumers to continue compensating for poor software engineering by buying systems with faster CPUs, more cores, and more memory to run it)–I think some of the benefits of higher-level languages can be overstated to support conclusion and that this has had some downsides in terms of software quality and development expertise. I don't think that's the case here.

Am 17 Dec 2009 um 09:50 schrieb Joerg Schilling:

Joseph Mocker <m...@sun.com> wrote:

While I don't entirely agree with UNIX admin, I am sort of concerned
with the growing number of scripting environments that are now required
to make [Open]Solaris run.

First I realized that Perl was needed was when I discovered the kstat
was rewritten in Perl, which kind of bummed my Operations folks out to have to install Perl just for a few utilities that had previously been written in C. (I ended up rewriting kstat for them in C, pretty easily).

Now Python is needed for IPS, Xen, probably more. What other language
platforms are necessary?

+1 and BTW: I don't see that software written in scripting languages is easier
to maintain than C programs.

Jörg

--
EMail:jo...@schily.isdn.cs.tu-berlin.de (home) Jörg Schilling D-13353 Berlin
      j...@cs.tu-berlin.de                (uni)
      joerg.schill...@fokus.fraunhofer.de (work) Blog: 
http://schily.blogspot.com/
URL:  http://cdrecord.berlios.de/private/ ftp://ftp.berlios.de/pub/schily
_______________________________________________
opensolaris-discuss mailing list
opensolaris-discuss@opensolaris.org

_______________________________________________
opensolaris-discuss mailing list
opensolaris-discuss@opensolaris.org

Reply via email to