On Wed, Oct 24, 2001 at 04:56:19PM -0500, Scott T. Hildreth wrote: > > Well I'm not a web developer, never used mod_perl, there is > the article on Perl.com describing how they built e-toys with > mod_perl. I think at the time it was the 3rd busiest web site > at the time. I don't know if the hardware even compares, but > you can take a look, if you haven't already. Just to throw some fuel on the fire >:) I recently started working on a paper and developed the following little tidbit based on my experience using PHP and Perl, among other languages. It's painfully evident which ones I don't have a fair amount of experience with, but would anyone like to add to the data? :) I personally don't think speed of execution is everything. Comparison of languages: Description C C++ Perl Python Tcl Shell PHP Lisp Forth Namespace management N Y Y N N Y File-scope globals Y Y Y Y N Y Regular expressions N N Y Y(1) Y N OOP support N Y Y Y N N(2) N Run time code mutability Y Y Y Y(3) Y Y Y Extensive lib collection N N Y N Y(4) Closures N N Y N N N Y N anonymous subroutines N N Y N N N Y N automatic code creation N Y Y N N N N Y memory management N N Y Y Y Y Y Y N string support N N Y Y Y Y Y N run as machine code Y Y N N N N N N Y Notes: (1) Limited to argument completion and switch statements. (2) PHP support for objects is not much different than C++ support for structures. (3) With heavy wizardry. (4) Not quite extensive, but it's getting there - PEAR is only a year or so old. What do we mean by the descriptions? Namespace management: This means we can have our own set of symbols without colliding with identifiers from other libraries, files, or programs. This is denoted by the `namespace' keyword in C++ and the `package' keyword in Perl. File-scope globals: Globals that are not visible outside the current file. This is supported by the `static' keyword in C/C++ and the `my' keyword in Perl. This might also be the default state of variables in Shell, with variables visible outside of files requiring `export'. OOP support: This requires the following items: Namespace for the object methods/definitions Operator overloading Inheritance, preferably multiple-inheritance Polymorphism - same method name but appropriate function Run time code mutability: The running program should be able to modify and/or add to itself. Extensive lib collection: This requires a central repository from which code may be downloaded or otherwise obtained. Examples: CPAN, CTAN. If Freshmeat were exlusively C/C++ and was authoritative, it would be considered for C/C++. All the Unix utilities didn't count as an extensive lib collection for shell. Closures: These are subroutines that capture the current lexical environment in which they are defined, even though they may be used outside that environment. Anonymous subroutines: These are subroutines with no names. Automatic code creation: This implies the compiler/interpreter (as appropriate) can create code as needed. C++ satisfies this with templates. Perl with AUTOLOADs. Memory management: Allocation/deallocation of memory is automatic. The programmer doesn't need to worry about this. String support: Are strings a fundamental data type. Run as machine code: Does anything actually get interpreted at run time or is it pure machine? Forth qualifies because in the traditional implementation, the interpreter is just a `jump engine' that follows pointers to the actual machine code that does stuff. No `figuring out' is done at run time. --jimThread Previous | Thread Next