This and other RFCs are available on the web at
http://dev.perl.org/rfc/
=head1 TITLE
Merge Perl and C#, but have default Main class for scripting.
=head1 VERSION
Maintainer: Timothy Covell <[EMAIL PROTECTED]>
Date: 29 Sep 2000
Mailing List: [EMAIL PROTECTED]
Number: 352
Version: 1
Status: Developing
=head1 ABSTRACT
Several Perl6 RFCs have stated that "everything should become
an object". I agree with this idea. I would go further and
state that perl should become an OO language at its core but
still retain a procedural front-end.
=head1 DESCRIPTION
First, let me state that I am not a language architect. However,
First, let me state that I am not a language architect. However,
I am a fan of Perl and like what I see of the core C# _language_.
What I propose is to move Perl in the C# direction. The KEY
difference is that Perl would have an defacto Main class whose
defacto main method which would be indestinquishable from a
legacy procedural based script. Of course, one is free to
override the builtin Main class with his own Main class and
his own main method, and thus work in a pure OO mode.
To those would would direct me to use Python or Ruby
instead, I would counter with a couple of points. First, Perl's
syntax is more in line with C, C++, ObjC, Java, and C#. Second,
Perl's syntax is more powerful (safer too) than that of indentation
based languages. Third, since C# and Java can be implemented as
a subset of C++, I imagine that Perl6 could also be implemented
thus. Fourth, due to the aforementioned similarities, defining
an intermediate language (a.k.a. bytecode) would be simpler.
Fifth, I like Perl, but wish it could do versioning and objects
better. Lastly, I don't want to have to get locked into the
Microsoft or Sun "Cathedral" platforms.
Finally, to those who think that object orientation is crazy,
I would suggest that you look at Perl5 and PostgreSQL. Perl5
as we all know has OO extentions. And, as I am sure that most
of us know already, PostgreSQL is an open source RDBMS that is
more properly called an "object-relational" database. At it's
heart each entry is an object and has an object id. Yet, it
retains the traditional RDBMS/SQL interface.
=head1 IMPLEMENTATION
As previously stated, I am not a systems programmer nor a language
architect; I am a systems administrator. Thus, I cannot offer
an implementation. However, I think that this idea holds water.
=head1 REFERENCES
RFC 73: All Perl core functions should return objects
RFC 159: True Polymorphic Objects
RFC 161: Everything in Perl becomes an object.
RFC 171: my Dog $spot should call a constructor implicitly