Keyword colorization example

Nonspam
[Part of a discussion of the need for enforcement of modularity in programming languages]

From: tlb@trevorblackwell.com
To: Jonathan A Rees
cc: paulgraham@yahoo.com, kanderson@bbn.com
Subject: Re: oop


> This is related to Lisp being oriented to the solitary hacker and
> discipline-imposing languages being oriented to social packs, another
> point you mention. In a pack you want to restrict everyone else's
> freedom as much as possible to reduce their ability to interfere with
> and take advantage of you, and the only way to do that is by either
> becoming chief (dangerous and unlikely) or by submitting to the same
> rules that they do. If you submit to rules, you then want the rules
> to be liberal so that you have a chance of doing most of what you want
> to do, but not so liberal that others nail you.
>
> In such a pack-programming world, the language is a constitution or
> set of by-laws, and the interpreter/compiler/QA dept. acts in part as
> a rule checker/enforcer/police force. Co-programmers want to know: If
> I work with your code, will this help me or hurt me? Correctness is
> undecidable (and generally unenforceable), so managers go with
> whatever rule set (static type system, language restrictions, "lint"
> program, etc.) shows up at the door when the project starts.


It's worth distinguishing a third category of programming
environments: one where a solitary hacker uses many open-source
modules written by various folks. I consider this a very good
environment, unlike pack programming. But it has some requirements in
common with it. Various languages succeed or fail dramatically in
making this work smoothly.

In C/C++, I find I can almost never use other people's stuff
conveniently. Most have some annoying requirements for memory
management, or use different string types (char *, STL string, GNU
String, custom string class), or array/hash types, or streams (FILE *,
iostream) or have nasty portability typedefs (int32, Float).

CL has fewer such troubles since it has standard memory management &
string/hash/array types, but there are often nasty namespace
collisions or load order dependencies, especially with macros.

Most chunks of CL code I've seen (which are mostly PG's) won't work
without special libraries, which have short names and are likely to
conflict with other macro libraries or even different versions of the
same macro libraries.

Perl packages work pretty well, because everyone agrees on how basic
types like string, stream, array and hash should work, and the normal
use of packages avoids any namespace collisions. I don't think I ever
had a open source Perl module break something. I guess Java also
prevents conflicts, but you have to give up an awful lot to get it.
The huge assortment of open source Perl packages testifies to the ease
of writing them. I've taken a few packages that I wrote for my own
purpose and found it very easy to make them self-contained and
contribute them. Usually, people only write C++ libraries for very
large projects, and it requires a different programming style from
what you'd use for your own code.


Anyway, I suggest that Arc's modularity features should be designed to
support use of open-source modules in single-hacker projects, not to
support pack programming. This suggests, in addition to what CL
already has:

- that modularity be a convention (CL, Perl), not something enforced
by the compiler (Java). Sadly, I find the CL module system way to
cumbersome to actually use. It has to be convenient enough to use in
ordinary programming, not a special thing you use when you're writing
a module for external use.

- there be a sufficient basic library that everyone won't have to
write their own basic library. I'm talking about the sort of functions
from On Lisp like last1, in, single, append1, conc1, mklist,
flatten. If everyone has their own, then you have to package it up
with any code you publish (making it awkward to publish) and it'll be
hard to read other people's code with different definitions of basic
functions.


--
Trevor Blackwell tlb@trevorblackwell.com (650) 776-7870


Spam
[The infamous Nigerian money laundering scam]

From: "PRINCE ALI"
To: tlb@eecs.harvard.edu
Subject: MAIL


E-MAIL alitg2525@rediffmail.com
DIRECT TELPHONE 234 -
8033216620
URGENT BUSINESS PROPOSAL

SIR,

I SEEK YOUR INDULGENCE TO ASSIST MY FAMILY IN THIS
BUSINESS PROPOSAL. MY NAME IS ALI ABACHA AND I AM THE
THIRD SON OF LATE GENERAL SANNI ABACHA, THE FORMER
MILITARY PRESIDENT OF NIGERIA WHO DIED IN OFFICE
INJUNE 1998
.MY FAMILY IS PRESENTLY FACING ENORMOUS PERSECUTION BY
THE PRESENT NIGERIAN GOVERNMENT.
MY ELDER BROTHER,
MOHAMMED ABACHA IS PRESENTLY FACING MURDER CHARGES IN
THE FEDERAL HIGH COURT IN NIGERIA.GENERAL SANI ABACHA
WAS NIGERIAS HEAD OF STATE FROM NOVEMBER 17TH 1993
TILL JUNE 1998 WHEN HE DIED MISTERIOUSLY IN ASO-ROCK
VILLA (NIGERIAS SEAT OF GOVERNMENT). DURING MY LATE
FATHERS TENURE,HE HAD VAST BUSINESS INTEREST IN STEEL,
CRUDE OIL, BANKING, AVIATION, SHIPPING ETC AND HE WAS
ALLEDGED BY THE PRESENT DEMOCRATIC GOVERNMENT OF
GENERAL OLUSEGUN OBASANJO (rtd) TO HAVE SIPHONED ABOUT
SIX BILLION UNITED STATES DOLLARS (US$6BILLION) OF
WHICH FOUR BILLION FIVE HUNDRED MILLION UNITED STATES
DOLLARS (US$4.5B)WERE DISCOVERED IN EIGHT
BRITISHBANKS.
I HAVE BEEN MANDATED BY MY FAMILY MEMBERS TO SEEK FOR
ANY PERSON OR GROUP WHO WILL ASSIST MY FAMILY BY USING
THE PERSONS OR GROUPS OFFSHORE ACCOUNT AND COMPANY
TO CLAIM THE BALANCE OF CONTRACT WHICH WAS EXECUTED
FOR THE NIGERIAN NATIONAL PETROLEUM CORPORATION DURING
MY FATHERS REGIME IN 1996.

THE CONTRACT IN QUESTION WAS EXECUTED BY MECOSTA
SECURITIES INC, ONE OF THE MANY OFFSHORE COMPANIES
WHICH MY FATHERS JEWISH FRIEND NASSIM GOAN FLOATED AND
WAS USED IN CRUDE OIL TRANSACTIONS

.PRESENTLY, ON 27TH FEBRUARY, 2001, JUSTICE RIX OF
COMMERCIAL CROWN COURT LONDON GAVE A FOUR HUNDRED PAGE
RULING SEIZING SOME OF OUR FAMILY DEPOSITS AMOUNTING
TO THREE HUNDRED MILLION DEUTSCHEMARKS DEPOSITED IN
CITIBANK NA, CITICORP,STANDARD ALLIANCE AND
CREDITSUISSE SWITZERLAND

.BECAUSE OF ALL THESE PROBLEMS, I AM BEGGING FOR YOUR
ASSISTANCE IN THE NAME OF GOD TO USE YOUR COMPANY NAME
AND OFFSHORE ACCOUNT TO CLAIM THIS MONEY FROM THE OIL
CORPORATION, SINCE YOU ARE NOT A NIGERIAN. I HAVE
CONTACTED ALL MY FATHERS LOYALISTS WHO ARE STILL IN
GOVERNMENT AND THEY HAVE GIVEN ME FIRM ASSURANCES THAT
ONCE I BRING A RELIABLE COMPANY WITH SECURED OFFSHORE
ACCOUNT, THAT THEY WILL ISSUE THE
NECESSARYGOVERNMENTAL APPROVAL FOR THE PAYMENT

.THE MONEY IN QUESTION IS TWENTY ONE MILLION, FIVE
HUNDRED THOUSAND UNITED STATES DOLLARS AND FOR USING
YOUR COMPANY NAME AND OFFSHORE ACCOUNT, I HAVE THE
MANDATE OF MY MOTHER AND OTHER FAMILY MEMBERS TO OFFER
YOU 20%. 10% IS SET ASIDE FOR MISCALLENEOUS EXPENSES
INCURRED BY BOTH PARTIES WHILE THE BALANCE OF 70%
COMES TO MY FAMILY.
IT WILL TAKE MAXIMUM OF 21 BANKING
DAYS FROM THE DAY I RECEIVE YOUR ACCOUNT DETAILS FOR
CONCLUSION OF THIS TRANSACTION.
PLEASE NOTE THAT THIS TRANSACTION IS 100% FOOLPROOF
AND SHOULD REMAIN STRICTLY CONFIDENTIAL BETWEEN BOTH
PARTIES.
PLEASE REPLY THROUGH THIS E MAIL ADDRESS. ON YOUR
ACCEPTANCE, MORE DETAILS AND MODALITIES ABOUT THIS
TRANSACTION WILL BE GIVEN TO YOU.
YOURS FAITHFULLY,

ALI ABACHA

YOU CAN ALSO REPLY THROUGH ALIGX7575@YAHOO.COM








Copyright 2003, Trevor Blackwell. Home