On Mon, 2005-04-25 at 22:24 -0500, Rod Adams wrote:
> Not exactly a fair comparison, since it's common to not "use English"
> due to the $& issue.
>
> I suspect that if that was not the case, it would be used more.
The reasons I don't "use English" in P5:
* Variable access is slower
* Names like OUTPUT_AUTOFLUSH are painful
* I remember $', $/, $\ more easily (that's probably just from
having written code with them for 13+ years)
Now, assuming P6 makes:
$FUNKYNAME := $*;
efficient, then my only real concern is how much of a pain these are to
type. I'd really love to have names that are short (3-7 characters) and
yet clear enough to justify using English.
Let's look at P5 English, and see how that might look. Note that these
are all regular variables (e.g. no "$*" noise), which is because an
explicit call to "use English" would import these names to your
namespace.
P5 P6
$ARG ok
$MATCH ok
$PREMATCH $BEFORE
$POSTMATCH $AFTER
$LAST_PAREN_MATCH $LAST
@LAST_MATCH_END @POSEND
$INPUT_LINE_NUMBER n/a
$INPUT_RECORD_SEPARATOR n/a
$OUTPUT_AUTOFLUSH n/a
$OUTPUT_FIELD_SEPARATOR $FIELDSEP
$OUTPUT_RECORD_SEPARATOR $RECSEP
$LIST_SEPARATOR $LISTSEP
$SUBSCRIPT_SEPARATOR $SUBSEP (already an alias in P5)
$FORMAT_PAGE_NUMBER n/a
$FORMAT_LINES_PER_PAGE n/a
$FORMAT_LINES_LEFT n/a
@LAST_MATCH_START @POSSTART
$FORMAT_NAME n/a
$FORMAT_TOP_NAME n/a
$FORMAT_LINE_BREAK_CHARACTERS n/a
$FORMAT_FORMFEED n/a
$ACCUMULATOR n/a
$CHILD_ERROR n/a
$ERRNO $ERR (it's not just a number, POSIX aside)
$EXTENDED_OS_ERROR $OSERR
$EVAL_ERROR n/a
$PID good (note: might be n/a if accessed through OO)
$UID good
$EUID good
$GID good
$EGID good
$PROGRAM_NAME $PROG
$COMPILING n/a?
$DEBUGGING n/a?
$SYSTEM_FD_MAX ? (will P6 have access to this?)
$INPLACE_EDIT ?
$OSNAME good (but might be in a separate module)
$PERLDB ?
$LAST_REGEXP_CODE_RESULT $RULEEVAL
$EXCEPTIONS_BEING_CAUGHT ?
$BASETIME good
$PERL_VERSION $PERL
$WARNING ?
$EXECUTABLE_NAME $PERLEXE
ARGV ?
$ARGV good, but probably ARGS
ARGVOUT ?
@F ?
@INC ?
@_ alias: @PARAMS
%INC ?
%ENV good
%SIG good (but possibly different)
As a side note, I'd like to suggest that "English" is just rubbing
people's noses in the fact that they're not allowed to program in their
native tongue. "Names" might be less in-your-face.