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 NIGERIA’S HEAD OF STATE FROM NOVEMBER 17TH 1993 TILL JUNE 1998 WHEN HE DIED MISTERIOUSLY IN ASO-ROCK VILLA (NIGERIA’S 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 PERSON’S OR GROUP’S 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
|