,,SNOBOL "<,STRI,NG ,ORIENTED SYM,B,OLIC ,LANGUAGE"> IS A FAMILY OF PROGRAMMING LANGUAGES BUILT AT ,BELL ,TELEPHONE ,LABORATORIES BETWEEN #AIFB AND #AIFG BY ,DAVID ,FARBER1 ,RALPH ,GRISWOLD1 AND ,IVAN ,POLONSKY AND ,ICON IS ITS DIRECT DESCENDANT1 DESIGNED BY ,GRISWOLD AT THE ,UNIVERSITY OF ,ARIZONA IN #AIGG#GH4 ,BETWEEN THEM THEY INTRODUCED TWO OF THE MOST QUIETLY CONSEQUENTIAL IDEAS IN THE HISTORY OF PROGRAMMING3 THE PATTERN AS A FIRST-CLASS DATA TYPE1 AND GOAL-DIRECTED EXECUTION DRIVEN BY GENERATORS4 ,EVERY PROGRAMMER WHO HAS EVER WRITTEN A REGULAR EXPRESSION1 OR CALLED A ,PYTHON YIELD1 IS STANDING DOWNSTREAM OF THESE TWO LANGUAGES4 ,,SNOBOL#D1 THE MATURE FORM1 WAS THE MOST POWERFUL TEXT-PROCESSING LANGUAGE OF ITS ERA ARGUABLY OF ANY ERA4 ,IT TREATED PATTERNS NOT AS STRINGS OF CRYPTIC NOTATION BUT AS STRUCTURED DATA THAT COULD BE BUILT1 STORED1 PASSED TO FUNCTIONS1 AND EVEN MODIFIED WHILE A MATCH WAS IN PROGRESS4 ,ITS MATCHER COULD EXPRESS FULL ,BACKUS,NAUR FORM GRAMMARS A CLASS OF PROBLEM PROVABLY BEYOND ORDINARY REGULAR EXPRESSIONS1 WHICH WOULD NOT ACQUIRE COMPARABLE POWER FOR FORTY YEARS4 ,ICON TOOK THE SAME ENGINE SUCCESS1 FAILURE1 AND BACKTRACKING AND WRAPPED IT IN THE ,,ALGOL-STYLE SYNTAX THE INDUSTRY HAD LEARNED TO EXPECT1 ADDING THE GENERATOR1 A CONSTRUCT SO NATURAL THAT ,PYTHON'S DESIGNERS CITED ,ICON BY NAME WHEN THEY ADOPTED IT IN #BJJA4.1 LISTS ,ICON AMONG THE GENERATORS' DIRECT INSPIRATIONS4.>.> ,THIS ARTICLE TELLS THE WHOLE STORY3 THE LANGUAGE ITSELF1 ITS HISTORY AND LIFETIME1 AND THE CONCEPTS IT GAVE THE WORLD PATTERN MATCHING1 GOAL-DIRECTED PROGRAMMING1 GENERATORS1 AND THE ENTIRE TRADITION OF STRING-PROCESSING LANGUAGES THAT FOLLOWED4 ,THE WORLD BEFORE STRINGS ,TO UNDERSTAND WHAT ,,SNOBOL DID1 YOU HAVE TO REMEMBER WHAT PROGRAMMING LOOKED LIKE WHEN IT ARRIVED4 ,THE LANGUAGES OF THE #AIEJ;S WERE BUILT FOR NUMBERS4 ,,FORTRAN "<#AIEG"> PROCESSED ARRAYS OF FLOATING-POINT VALUES2 ITS STRING HANDLING WAS1 CHARITABLY1 AN AFTERTHOUGHT TEXT LIVED IN FIXED-LENGTH FIELDS MANIPULATED THROUGH FORMAT STATEMENTS4 ,,COBOL "<#AIEI"> THOUGHT IN RECORDS3 FIXED-LAYOUT ROWS OF DATA FOR PAYROLL AND INVENTORY4 ,,ALGOL "<#AIEH1 #AIFJ"> GAVE THE WORLD BLOCK STRUCTURE AND RECURSION AND ESSENTIALLY NO STRINGS AT ALL4 ,BUT COMPUTERS WERE ALREADY DROWNING IN TEXT3 PROGRAMS THEMSELVES1 DATA RECORDS1 NATURAL LANGUAGE4 ,THE FIRST PEOPLE TO NOTICE WERE THE LINGUISTS4 ,AT ,,MIT IN #AIEG1 ,VICTOR ,YNGVE'S GROUP BUILT ,,COMIT1 THE FIRST LANGUAGE DESIGNED SPECIFICALLY TO MANIPULATE STRINGS MOTIVATED BY THE DREAM OF MACHINE TRANSLATION1 WHICH IN THOSE OPTIMISTIC YEARS SEEMED A FEW YEARS FROM SOLVED4 ,,COMIT TREATED TEXT AS SOMETHING TO BE REWRITTEN BY RULES3 MATCH A FRAGMENT OF THE INPUT AGAINST A PATTERN1 REPLACE IT WITH SOMETHING ELSE1 AND REPEAT4 ,THAT SINGLE IDEA FIND THIS1 REPLACE IT WITH THAT IS THE SEED OF EVERYTHING IN THIS ARTICLE4 ,,COMIT WAS BRILLIANT AND AWKWARD IN ROUGHLY EQUAL MEASURE4 ,ITS NOTATION WAS DENSE1 ITS EXECUTION SLOW1 AND ITS PORTABILITY NONEXISTENT4 ,A SECOND EARLY LANGUAGE1 ,,TRAC "<#AIFD">1 PURSUED MACROS AND TEXT GENERATION4 ,THE STAGE WAS SET FOR SOMEONE TO DO STRING PROCESSING PROPERLY AND THE PEOPLE WHO DID WERE NOT LINGUISTS AT ALL1 BUT RESEARCHERS AT THE MOST FERTILE LABORATORY IN THE HISTORY OF COMPUTING4 ,BELL ,TELEPHONE ,LABORATORIES IN THE #AIFJ;S WAS A PLACE WHERE A RESEARCHER COULD BE HANDED A PROBLEM1 A MAINFRAME1 AND EFFECTIVELY NO SUPERVISION4 ,THE ,PROGRAMMING ,RESEARCH ,STUDIES DEPARTMENT AT THE ,HOLMDEL1 ,NEW ,JERSEY SITE SIX PEOPLE SAT INSIDE AN INSTITUTION THAT IN A SINGLE DECADE PRODUCED THE TRANSISTOR'S SUCCESSORS1 ,UNIX1 ;,C1 INFORMATION THEORY'S MATURE FORM1 AND HALF THE THEORETICAL FOUNDATION OF THE DIGITAL CENTURY4 ,COMPUTING THERE MEANT PUNCHED CARDS1 BATCH QUEUES1 AN ,,IBM #GJIJ SHARED BY A BUILDINGFUL OF RESEARCHERS1 AND TURNAROUND MEASURED IN THE TIME IT TOOK TO WALK A CARD DECK TO THE MACHINE ROOM AND FIND YOUR PRINTOUT IN A BIN4 ,INTERACTIVE TERMINALS WERE A RUMOR4 ,YOU GOT A FEW SHOTS A DAY2 EACH ONE HAD TO COUNT1 WHICH IS PRECISELY THE ENVIRONMENT IN WHICH DENSE1 EXPRESSIVE NOTATION THRIVES4 ,BELL ,LABS AND THE BIRTH OF ,,SNOBOL ..> ,IN THE FALL OF #AIFB1 THREE MEMBERS OF THE SIX-PERSON ,PROGRAMMING ,RESEARCH ,STUDIES DEPARTMENT AT ,BELL ,LABS IN ,HOLMDEL1 ,NEW ,JERSEY ,DAVID ,FARBER1 ,RALPH ,GRISWOLD1 AND ,IVAN ,POLONSKY WERE FRUSTRATED4 ,THEIR ACTUAL WORK INVOLVED THE SYMBOLIC MANIPULATION OF POLYNOMIALS1 SYMBOLIC INTEGRATION1 AND THE STUDY OF ,MARKOV CHAINS4 ,THEIR TOOL WAS ,,SCL1 A LANGUAGE WRITTEN BY DEPARTMENT HEAD ,CHESTER ,LEE SLOW1 LOW-LEVEL1 AND PRODUCING 8VOLUMES OF CODE FOR EVEN SIMPLE PROJECTS40 ,THEY CONSIDERED ADOPTING ,,COMIT1 FOUND IT WANTING1 AND DID WHAT ,BELL ,LABS PEOPLE DID IN THAT GOLDEN AGE3 THEY WROTE THEIR OWN LANGUAGE4.1 AND THE ,,HOPL PAPER ,GRISWOLD "<#AIHA"> THE STANDARD PRIMARY SOURCES ON ,,SNOBOL'S ORIGINS4.>.> ,THE FIRST VERSIONS RAN ON THE LAB'S ,,IBM #GJIJ MAINFRAME IN EARLY #AIFC1 AND BY SUMMER THE LANGUAGE WAS IN USE ACROSS ,BELL4 ,IT HAD ONE DATA TYPE THE STRING NO FUNCTIONS1 NO DECLARATIONS1 ALMOST NO ERROR CONTROL1 AND A SYNTAX OF BEAUTIFUL SIMPLICITY3 EVERY STATEMENT WAS A PATTERN MATCH WITH AN OPTIONAL REPLACEMENT AND AN OPTIONAL BRANCH4 ,ITS AUTHORS CALLED IT A PERSONAL TOOL4 ,TOOLS THAT GOOD NEVER STAY PERSONAL4 ,,SEXI1 OR HOW ,,SNOBOL GOT ITS NAME ,THE NAMING STORY IS ONE OF COMPUTING'S GREAT ANECDOTES1 TOLD BY ,FARBER HIMSELF4 ,THE TEAM FIRST SETTLED ON ,,SEXI 8,SYMBOLIC ,E,XPRESSION ,INTERPRETER40 ,ALL WENT WELL UNTIL THE DAY ,FARBER SUBMITTED A BATCH JOB2 ON THE ,,JOB CARD1 IN STANDARD ,BELL ,LABS STYLE1 HE PUNCHED THE PROGRAM NAME AND HIS OWN3 ,,SEXI ,FARBER4 @> 8,ONE OF THE ,COMP ,CENTER GIRLS LOOKED AT IT AND SAID1 ',THAT'S WHAT YOU THINK4'0 ,A NEW NAME WAS REQUIRED4 ,THE TEAM SAT1 TALKED1 DRANK COFFEE1 SHOT RUBBER BANDS4 ,AFTER FAR TOO LONG SOMEONE MOST LIKELY ,RALPH SAID THEY DIDN'T HAVE 8A SNOWBALL'S CHANCE IN HELL0 OF FINDING A NAME4 ,THE ROOM YELLED AT ONCE3 ,,SNOBOL IN THE SPIRIT OF THE ERA'S ,7-,,BOL0 LANGUAGES4 ,THE EXPANSION CAME AFTER3 ,STRI,NG ,ORIENTED SYM,B,OLIC ,LANGUAGE1 A BACKRONYM STRETCHED AS FAR AS IT WOULD GO4 ,THE THREE AUTHORS ..> ,THE TRIO BEHIND ,,SNOBOL EACH WENT ON TO NOTABLE CAREERS4 ,DAVID ;,J4 ,FARBER LEFT ,BELL ,LABS FOR A LONG ACADEMIC CAREER AT ,,UC ,IRVINE1 THE ,UNIVERSITY OF ,DELAWARE1 ,CARNEGIE ,MELLON1 AND FINALLY THE ,UNIVERSITY OF ,PENNSYLVANIA1 WHERE HE BECAME ONE OF THE ELDERS OF COMPUTER NETWORKING4 ,HIS STUDENTS BUILT EARLY PIECES OF THE ,INTERNET'S INFRASTRUCTURE2 THE COMMUNITY NICKNAMED HIM1 WITH AFFECTION1 A GRANDFATHER OF THE ,INTERNET1 AND HIS ,INTERESTING ,PEOPLE MAILING LIST RAN FOR DECADES AS THE INDUSTRY'S BACK CHANNEL4 ,IVAN ;,P4 ,POLONSKY CONTINUED AT ,BELL ,LABS IN LANGUAGE RESEARCH2 AND ,RALPH ;,E4 ,GRISWOLD THE MEMBER OF THE TRIO FOR WHOM STRING LANGUAGES BECAME A LIFE'S WORK CARRIED ,,SNOBOL TO THE ,UNIVERSITY OF ,ARIZONA IN #AIGA AND SPENT THE NEXT THREE DECADES EXTENDING THE FAMILY THROUGH ,,SL#E1 ,ICON1 AND ,UNICON4 ,HE DIED IN #BJJF1 HAVING OUT-PUBLISHED1 OUT-IMPLEMENTED1 AND OUT-TAUGHT NEARLY EVERYONE IN HIS NICHE4 ,THE ,,SNOBOL LINEAGE IS UNUSUAL IN LANGUAGE HISTORY FOR HAVING A SINGLE CONTINUOUS STEWARD3 NEARLY EVERY IDEA IN THIS ARTICLE PASSED THROUGH ONE MAN'S MIND1 TWICE1 TWENTY YEARS APART4 ,THE VERSIONS3 ,,SNOBOL #A THROUGH #D ,,SNOBOL EVOLVED QUICKLY AND ITS EARLY HISTORY IS A LESSON IN HOW LANGUAGES ACTUALLY GROW4 ,,SNOBOL#A "<#AIFB#FC"> WAS THE PERSONAL TOOL3 STRING PROCESSING WITH PATTERN MATCHING AND REPLACEMENT1 ONE DATATYPE1 MINIMAL SYNTAX1 WRITTEN IN ,,IBM #GJIJ ASSEMBLY4 ,,SNOBOL#B "<,APRIL #AIFD"> ADDED BUILT-IN FUNCTIONS AND THE ABILITY TO LINK IN EXTERNAL ASSEMBLY CODE4 ,IT WAS USED MOSTLY INSIDE ,BELL1 THOUGH IT REACHED AS FAR AS ,,MIT'S ,PROJECT ,,MAC4 ,BUILT-IN FUNCTIONS1 ONCE PRESENT1 IMMEDIATELY TAUGHT USERS TO WANT USER-DEFINED ONES4 ,,SNOBOL#C "<,JULY #AIFD"> SUPPLIED EXACTLY THAT PROGRAMMER-DEFINED FUNCTIONS AND BECAME GENUINELY POPULAR4 ,OTHER SITES REIMPLEMENTED IT FOR OTHER MACHINES1 AND INCOMPATIBLE DIALECTS BLOOMED4 ,SUCCESS HAD CREATED THE CLASSIC PROBLEM3 THE AUTHORS WERE BEING BUG-REPORTED AGAINST VERSIONS THEY NEVER WROTE4 ,,SNOBOL#D "<#AIFG"> WAS THE ANSWER AND THE MASTERPIECE4 ,THE TEAM DECIDED TO DEFINE THE LANGUAGE ONCE1 COMPLETELY1 AND MAKE IT RUN EVERYWHERE AN EXTRAORDINARY DECISION FOR #AIFG4 ,THE INTERPRETER WAS WRITTEN IN ASSEMBLY1 BUT THROUGH ASSEMBLER MACROS IT TARGETED AN ABSTRACT MACHINE3 THE ,,SNOBOL ,IMPLEMENTATION ,LANGUAGE1 OR ,,SIL1 A GENERALIZATION OF STRING-MANIPULATION MACROS BY ,DOUGLAS ,MC,ILROY THE SAME ,MC,ILROY WHO WAS THEN INVENTING PIPES DOWN THE HALL4 ,TO PORT ,,SNOBOL#D1 YOU REIMPLEMENTED THE ,,SIL MACROS ON YOUR MACHINE2 THE WHOLE LANGUAGE CAME ALONG FOR FREE4 ,,SNOBOL#D WAS RUNNING ON THE ,,IBM #CFJ IN #AIFG AND WAS RAPIDLY PORTED ESSENTIALLY EVERYWHERE4 ,IT IS ONE OF THE EARLIEST SERIOUS VIRTUAL-MACHINE IMPLEMENTATIONS IN COMPUTING HISTORY THE ,,JVM'S ANCESTOR1 BY TWO DECADES4 ,IT IS WORTH PAUSING ON WHAT ELSE EXISTED IN #AIFG1 BECAUSE ,,SNOBOL#D'S AMBITION ONLY REGISTERS AGAINST THE BACKDROP4 ,,FORTRAN ,,IV WAS FIVE YEARS OLD4 ,,BASIC WAS THREE4 ,,PL_/,I WAS NEW4 ,,ALGOL #FJ HAD GIVEN THE WORLD RECURSION AND BLOCKS BUT NO STRINGS TO SPEAK OF4 ,,LISP HAD SYMBOLIC COMPUTATION AND ITS OWN EXOTIC SYNTAX2 ,PROLOG WAS STILL FIVE YEARS IN THE FUTURE1 UNBUILT4 ,INTO THAT WORLD LANDED A LANGUAGE WITH GARBAGE COLLECTION1 A PORTABLE VIRTUAL MACHINE1 PROGRAMMER-DEFINED DATATYPES1 ASSOCIATIVE ARRAYS1 RUNTIME CODE GENERATION1 AND A PATTERN FACILITY EQUIVALENT TO CONTEXT-FREE GRAMMARS A FEATURE LIST THAT READS LIKE A #AIIJ;S SCRIPTING LANGUAGE'S SALES PITCH1 SHIPPED WHEN THE MOON LANDING WAS STILL TWO YEARS AWAY4 ,MC,ILROY STRUCK TWICE4 ,IN #AIFI HE INSISTED ,,SNOBOL#D ADD AN ASSOCIATIVE-ARRAY TYPE THE TABLE DECADES BEFORE 8HASH MAP0 OR 8DICTIONARY0 BECAME EVERY LANGUAGE'S STANDARD FEATURE4 ,IT ARRIVED AND STAYED4 ,UNDER THE HOOD3 WHAT ,,SNOBOL#D COULD DO ,BEHIND THE FIVE-PART STATEMENT SAT AN UNUSUALLY MODERN MACHINE4 ,,SNOBOL#D SUPPORTED INTEGERS1 LIMITED-PRECISION REALS1 STRINGS1 PATTERNS1 ARRAYS1 TABLES1 AND PROGRAMMER-DEFINED DATATYPES THE ,,DATA FUNCTION LET A USER DECLARE RECORD TYPES WITH NAMED FIELDS1 A FACILITY COMPARABLE TO ,,COBOL'S RECORDS AND AHEAD OF ,PASCAL'S4 ,EVERYTHING LIVED IN A SINGLE GARBAGE-COLLECTED HEAP AUTOMATIC MEMORY MANAGEMENT ON A #AIFG MAINFRAME1 WHEN MOST LANGUAGES STILL TREATED MEMORY AS THE PROGRAMMER'S PROBLEM4 ,MOST STARTLING OF ALL1 ,,SNOBOL#D STRINGS COULD BE TURNED INTO PROGRAMS AT RUNTIME4 ,,EVAL EVALUATED A STRING AS AN EXPRESSION1 AND THE ,,CODE FUNCTION TOOK A STRING OF ,,SNOBOL SOURCE1 COMPILED IT INSIDE THE RUNNING PROGRAM1 AND RETURNED IT AS A CALLABLE VALUE EVAL-STYLE METAPROGRAMMING1 OR ,,JIT-COMPILATION FROM THE USER'S SEAT1 ON A MACHINE THAT COST MILLIONS AND SHARED AN HOUR AMONG DOZENS OF USERS4 ,A PROGRAM COULD WRITE A PROGRAM4 ,THIS PRODUCED THE CELEBRATED ,,SNOBOL FOOT JOKE3 A PROGRAM THAT READS ITS OWN SOURCE1 STRIPS EVERY LINE CONTAINING THE LETTER ;E1 RUNS THE RESULT AND AMPUTATES ITSELF1 BECAUSE A SOURCE FILE WITH EVERY ;E REMOVED IS A FOOT SHORT4 ,DR4 ,DOBB'S COMMEMORATED THE GENRE AS 8,PROGRAMS ,THAT ,TRANSFORM ,THEIR ,OWN ,SOURCE ,CODE02 ,,SNOBOL#D MADE SUCH SELF-MODIFICATION ROUTINE ENOUGH TO JOKE ABOUT4 ,THE ,,SPITBOL EXTENSIONS1 LATER ABSORBED INTO EVERY MODERN IMPLEMENTATION1 PUSHED FURTHER STILL3 NESTED CONDITIONAL EXPRESSIONS1 IMMEDIATE ASSIGNMENT DURING MATCHING1 AND THE ABILITY FOR A FUNCTION CALLED MID-PATTERN TO ALTER THE PATTERN BEING MATCHED4 ,A ,,SNOBOL#D PATTERN WAS LESS A QUERY THAN A LIVE COMPUTATION WITH SIDE EFFECTS THE PATTERN COULD THINK ABOUT ITSELF WHILE IT RAN4 ,WHAT A ,,SNOBOL PROGRAM LOOKS LIKE ,,SNOBOL IS COLUMN-ORIENTED A PUNCHED-CARD-ERA LANGUAGE AND EVERY STATEMENT HAS THE SAME FIVE PARTS1 ALL OPTIONAL3 . ,A LABEL MARKS A JUMP TARGET4 ,THE SUBJECT IS THE STRING UNDER EXAMINATION2 THE PATTERN IS WHAT TO MATCH AGAINST IT2 "7 OBJECT REPLACES WHATEVER MATCHED2 AND THE 3 TRANSFER SENDS CONTROL TO A LABEL ON SUCCESS 3;,S"<444">1 ON FAILURE 3;,F"<444">1 OR UNCONDITIONALLY4 ,THAT IS THE ENTIRE LANGUAGE'S CONTROL FLOW3 THERE IS NO IF1 NO WHILE1 NO FOR ONLY MATCH1 AND BRANCH ON THE OUTCOME4 ,,OUTPUT "7 8,HELLO1 ,WORLD60 ,,END ,HELLO ,WORLD IS ONE ASSIGNMENT TO THE PSEUDO-VARIABLE ,,OUTPUT1 WHICH PRINTS WHATEVER IS ASSIGNED TO IT4 ,SOMETHING WITH A LITTLE MOTION GREET THE USER DIFFERENTLY BY INITIAL3 ,,OUTPUT "7 8,WHAT IS YOUR NAME80 ,USERNAME "7 ,,INPUT ,USERNAME 8;,J0 3;,S"<,,LOVE"> ,USERNAME 8;,K0 3;,S"<,,HATE"> ,,MEH ,,OUTPUT "7 8,HI1 ,7 ,USERNAME 3"<,,END"> ,,LOVE ,,OUTPUT "7 8,HOW NICE TO MEET YOU1 ,7 ,USERNAME 3"<,,END"> ,,HATE ,,OUTPUT "7 8,OH4 ,IT'S YOU1 ,7 ,USERNAME ,,END ,LINE THREE MATCHES ,USERNAME AGAINST THE PATTERN 8;,J0 IMPLICITLY ANCHORED1 SO IT MATCHES ONLY IF THE NAME BEGINS WITH ;,J4 ,ON SUCCESS IT JUMPS TO ,,LOVE2 OTHERWISE IT FALLS THROUGH TO THE NEXT LINE4 ,THE 3"<,,END"> IS AN UNCONDITIONAL TRANSFER4 ,A PROGRAM THAT KEEPS READING UNTIL THE INPUT RUNS OUT SHOWS THE IDIOM AT FULL STRENGTH ,,LEN"<#A"> IS A PATTERN THAT SUCCEEDS ONLY IF AT LEAST ONE CHARACTER REMAINS3 ,,OUTPUT "7 8,PRESS RETURN ALONE TO FINISH0 ,NAME,COUNT "7 #J 3"<,,GETINPUT"> ,,AGAIN ,NAME,COUNT "7 ,NAME,COUNT "6 #A ,,OUTPUT "7 8,NAME ,7 ,NAME,COUNT ,73 ,7 ,PERSONAL,NAME ,,GETINPUT ,,OUTPUT "7 8,NAME PLEASE3 ,7 ,PERSONAL,NAME "7 ,,INPUT ,PERSONAL,NAME ,,LEN"<#A"> 3;,S"<,,AGAIN"> ,,OUTPUT "7 8,FINISHED4 ,7 ,NAME,COUNT ,7 NAMES REQUESTED40 ,,END . ,IT LOOKS ALIEN BECAUSE IT IS ALIEN THIS IS PROGRAMMING AS A SEQUENCE OF REWRITE RULES1 CLOSER IN SPIRIT TO ,,COMIT AND TO ,PROLOG'S CLAUSE LOGIC THAN TO ANYTHING ,,ALGOL-SHAPED4 ,THE SAME FIVE-PART LINE HANDLES PATTERN MATCHING1 SUBSTITUTION1 ,I_/,O1 AND EVERY CONDITIONAL AND LOOP THE PROGRAM WILL EVER NEED4 ,PATTERN MATCHING ,PATTERN MATCHING IS ,,SNOBOL'S REASON TO EXIST1 AND THE REASON IT STILL MATTERS4 ,THE IDEA GENERALIZES WHAT A REGULAR EXPRESSION DOES FIND STRUCTURE IN TEXT AND LIFTS IT INTO THE LANGUAGE ITSELF4 ,A ,,SNOBOL PATTERN IS A FIRST-CLASS DATA TYPE3 A VALUE LIKE A STRING OR A NUMBER1 STORED IN VARIABLES1 PASSED TO FUNCTIONS1 RETURNED FROM FUNCTIONS1 CONCATENATED INTO LARGER PATTERNS1 AND BUILT AT RUNTIME4 ,TWO OPERATORS CONSTRUCT THEM3 CONCATENATION " AND ALTERNATION "4 ,PATTERNS NEST FREELY4 ,THIS LOOKS ORDINARY NOW BECAUSE ,JAVA,SCRIPT REGEX LITERALS AND PARSER COMBINATOR LIBRARIES MADE IT ORDINARY4 ,IN #AIFG IT WAS A DECADE AHEAD OF EVERYONE4 ,THE MATCHER ITSELF IS A BACKTRACKING ENGINE THE SAME ALGORITHMIC FAMILY AS ,PROLOG'S RESOLUTION1 DEVELOPED IN THE SAME YEARS4 ,TRY AN ALTERNATIVE2 IF THE MATCH LATER FAILS1 BACK UP AND TRY THE NEXT4 ,,SNOBOL#D PATTERNS CAN CAPTURE SUBSTRINGS DURING THE MATCH "1 INVOKE USER FUNCTIONS MID-MATCH THAT CAN STEER OR EVEN REWRITE THE PATTERN WHILE IT RUNS1 AND EXPRESS RECURSIVE STRUCTURES3 A PATTERN CAN CONTAIN A REFERENCE TO ITSELF4 ,THAT LAST PROPERTY IS THE CRUCIAL ONE IT LETS A ,,SNOBOL PATTERN DESCRIBE A FULL CONTEXT-FREE GRAMMAR1 THE SAME CLASS AS ,BACKUS,NAUR FORM4 ,A ,,SNOBOL PROGRAM COULD IMPLEMENT A LANGUAGE INTERPRETER ALMOST DIRECTLY FROM ITS PUBLISHED ,,BNF2 A MACRO ASSEMBLER FOR A THEORETICAL MACHINE WAS REPORTEDLY A FEW HUNDRED LINES1 WITH EACH NEW INSTRUCTION COSTING ONE LINE4.1 #IA#AJJ THE FORMAL TREATMENT ESTABLISHING THAT ,,SNOBOL#D PATTERNS SUBSUME CONTEXT-FREE GRAMMARS4.>.> ,REGULAR EXPRESSIONS1 BY CONTRAST1 ARE REGULAR THE NAME IS A THEOREM1 NOT A DESCRIPTION4 ,THEY CANNOT MATCH BALANCED PARENTHESES1 CANNOT PARSE A GRAMMAR1 CANNOT RECURSE4 ,THEY WERE GOOD ENOUGH FOR 8FIND TEXT LIKE THIS0 AND SO THEY WON THE POPULAR MARKET2 ,,AWK AND LATER ,PERL CARRIED THEM TO UBIQUITY IN THE #AIHJ;S AND #IJ;S WHILE ,,SNOBOL'S RICHER MODEL FADED FROM TEACHING4 ,ONLY IN ,DECEMBER #BJJG1 WITH RECURSIVE PATTERNS IN ,PERL #E4AJ1 DID THE MAINSTREAM FINALLY ACQUIRE WHAT ,,SNOBOL#D HAD SHIPPED IN #AIFG A FORTY-YEAR GAP IN WHICH THE LESS CAPABLE TOOL WAS SIMPLY THE FASHIONABLE ONE4 "9 A ,,SNOBOL#D PATTERN FOR 8WORD WORD0 A DOUBLED WORD "9 BUILT AS DATA1 MATCHED AS STRUCTURE ,,TWO "7 ,,BREAK"<0 ,7"> 4 ,,FIRST ,7 ,7 "9,,FIRST ,,LINE 8THE THE END0 ,,TWO 3;,S"<,,DOUBLE"> ,,OUTPUT "7 8NO DOUBLED WORD0 3"<,,END"> ,,DOUBLE ,,OUTPUT "7 8DOUBLED3 ,7 ,,FIRST ,,END ,HERE ,,BREAK"<0 ,7"> 4 ,,FIRST MATCHES UP TO A SPACE AND CAPTURES IT INTO ,,FIRST1 ,7 ,7 MATCHES THE SPACE LITERALLY1 AND "9,,FIRST MATCHES THE CAPTURED TEXT AGAIN THE PATTERN READS LIKE THE SENTENCE IT DESCRIBES4 ,A PRACTICAL PARSER FOR 8A COMPLETE NAME AND INTERNATIONAL POSTAL MAILING ADDRESS0 THE EXAMPLE THE LITERATURE LIKED TO GIVE IS EXPRESSIBLE THE SAME WAY1 AND WAS4 ,THE PRIMITIVE VOCABULARY ,REAL PATTERNS ARE ASSEMBLED FROM A SMALL VOCABULARY OF BUILT-IN MATCHERS1 EACH ONE A GENERATOR OF POSSIBLE SPANS3 ,PRIMITIVE ,MATCHES ,,LEN"<;N"> ANY ;N CHARACTERS ,,SPAN"<8#JABCDEFGHI0"> A RUN OF DIGITS LONGEST POSSIBLE ,,BREAK"<0 40"> EVERYTHING UP TO A SPACE OR PERIOD ,,ANY"<8AEIOU0"> EXACTLY ONE VOWEL ,,NOTANY"<8#JAB0"> ONE CHARACTER THAT IS NOT A DIGIT ,,ARB ANYTHING THE RELUCTANT WILDCARD ,,REM THE REMAINDER OF THE STRING ,,POS"<#J">1 ,,RPOS"<#J"> ANCHORED3 START _/ END OF SUBJECT ,,BAL"<0"<">0"> A BALANCED-PARENTHESES EXPRESSION THE SHOWCASE RECURSIVE PRIMITIVE ,,FAIL1 ,,SUCCEED1 ,,ABORT CONTROL THE MATCH ENGINE ITSELF ,,BAL DESERVES THE SPOTLIGHT IT ALWAYS GETS3 MATCHING BALANCED DELIMITERS IS THE CANONICAL PROBLEM THAT BREAKS REGULAR EXPRESSIONS1 AND ,,SNOBOL#D SHIPPED IT AS A BUILTIN4 ,COMBINED WITH CONDITIONAL CAPTURES PATTERN 4 VARIABLE BINDS TEXT ON SUCCESS1 PATTERN @S VARIABLE BINDS CURSOR POSITION AND THE ALTERNATION_/CONCATENATION OPERATORS1 THE VOCABULARY SCALES FROM TOKENIZING A LINE TO PARSING A LANGUAGE4 ,PATTERNS BEING DATA1 A PROGRAM COULD STORE A LIBRARY OF GRAMMAR FRAGMENTS IN A TABLE AND COMPOSE FULL PARSERS AT RUNTIME3 ,,DIGIT "7 ,,ANY"<8#JABCDEFGHI0"> ,,INT "7 ,,POS"<#J"> ,,SPAN"<8#JABCDEFGHI0"> ,,RPOS"<#J"> ,,INPUT 8#DJIF0 ,,INT 3;,S"<,,ISINT"> ,,OUTPUT "7 8NOT AN INTEGER0 3"<,,END"> ,,ISINT ,,OUTPUT "7 8INTEGER60 ,,END ,SCALE THAT SAME TECHNIQUE TO A REAL GRAMMAR AND THE MACHINERY SHOWS ITS MUSCLE4 ,A DATE PARSER 8#BE ,DECEMBER #AGDE0 IS A HANDFUL OF PATTERN DEFINITIONS1 EACH READABLE AS WHAT IT DESCRIBES3 ,,DIGITS "7 8#JABCDEFGHI0 ,,DAY "7 ,,POS"<#J"> ,,SPAN"<,,DIGITS"> 4 ;,N ,7 ,7 ,,MONTHS "7 8,JANUARY0 _\ 8,FEBRUARY0 _\ 8,MARCH0 _\ 8,APRIL0 "6 _\ 8,MAY0 _\ 8,JUNE0 _\ 8,JULY0 _\ 8,AUGUST0 "6 _\ 8,SEPTEMBER0 _\ 8,OCTOBER0 _\ 8,NOVEMBER0 _\ 8,DECEMBER0 ,,DATE "7 ,,DAY ,,MONTHS 4 ;,M ,7 ,7 ,,SPAN"<,,DIGITS"> 4 ;,Y ,,RPOS"<#J"> ,,INPUT ,,DATE 3;,S"<,,OK"> ,,OUTPUT "7 8NOT A DATE0 3"<,,END"> ,,OK ,,OUTPUT "7 ;,N ,7 OF ,7 ;,M ,71 ,7 ;,Y ,,END "6 CONTINUES A DEFINITION ON THE NEXT LINE4 ,THE WHOLE THING GRAMMAR DEFINITION1 MATCH1 CAPTURE1 AND FORMATTED OUTPUT FITS IN A DOZEN LINES1 AND THE PATTERN ,,DATE IS ITSELF A VALUE THAT COULD BE STORED1 COMBINED1 OR PASSED ELSEWHERE4 ,THIS IS THE DIFFERENCE A FIRST-CLASS PATTERN TYPE MAKES3 A REGEX SOLUTION EMBEDS THE SAME LOGIC AS ONE UNREADABLE STRING2 THE ,,SNOBOL VERSION IS A GRAMMAR1 COMPOSED LIKE A GRAMMAR1 DEBUGGED LIKE DATA4 ,TEXT PROCESSING LANGUAGES ,,SNOBOL#D BECAME THE CANONICAL TEXT-PROCESSING LANGUAGE THE TOOL FOR THE JOBS THE NUMERIC LANGUAGES COULDN'T SEE4 ,THE PATTERN FIT A NICHE THAT WAS EXPLODING IN THE #AIGJ;S3 THE DIGITAL HUMANITIES1 BEFORE THE FIELD HAD THAT NAME4 ,HUMANISTS NEEDED TO INDEX1 COLLATE1 TRANSLATE1 AND TRANSFORM TEXT AT SCALE CONCORDANCES1 STYLISTIC ANALYSIS1 MACHINE-TRANSLATION EXPERIMENTS1 CATALOGUES AND ,,SNOBOL#D WAS ESSENTIALLY THE ONLY SERIOUS INSTRUMENT4 ,IT WAS TAUGHT WIDELY AT ,AMERICAN UNIVERSITIES IN THE LATE #AIFJ;S AND EARLY #AIGJ;S1 AND USED THROUGH THE #AIGJ;S AND #HJ;S2 ,SUSAN ,HOCKEY'S ,,SNOBOL ,PROGRAMMING FOR THE ,HUMANITIES "<,CLARENDON ,PRESS1 #AIHE"> IS THE PERIOD'S STANDARD TEXTBOOK4 ,ITS SECOND HOME WAS LANGUAGE RESEARCH ITSELF3 COMPILERS1 FORMAL GRAMMARS1 AND EARLY ARTIFICIAL INTELLIGENCE ESPECIALLY MACHINE TRANSLATION AND NATURAL-LANGUAGE COMPREHENSION1 WHOSE RESEARCH COMMUNITY RAN ON THE ,,PDP-#AJ MACHINES WHERE ,,SNOBOL#D LIVED COMFORTABLY4 ,THE FILE EDITOR OF THE ,MICHIGAN ,TERMINAL ,SYSTEM ADOPTED ,,SNOBOL#D PATTERNS AS ITS SEARCH LANGUAGE AN EDITOR WHOSE REGEX EQUIVALENT WAS A FULL GRAMMAR ENGINE4 ,THE TEACHING FOOTPRINT MATTERED AS MUCH AS THE RESEARCH ONE4 ,A GENERATION OF STUDENTS MET SERIOUS STRING HANDLING THROUGH ,,SNOBOL#D IN THE LATE #AIFJ;S AND EARLY #GJ;S THE SAME YEARS THEIR ENGINEERING CLASSMATES WERE MEETING ,,FORTRAN4 ,THREE BOOKS DID THE CARRYING3 THE 8GREEN BOOK0 ITSELF "<,GRISWOLD1 ,POAGE @& ,POLONSKY'S ,THE ,,SNOBOL#D ,PROGRAMMING ,LANGUAGE1 #AIFH1 WITH ITS FAMOUSLY RIGOROUS-BUT-READABLE EXPOSITION">1 ,GRISWOLD'S OWN ,MACRO ,IMPLEMENTATION "<#AIGB"> FOR THE INTERNALS-CURIOUS1 AND ,GIMPEL'S ,ALGORITHMS IN ,,SNOBOL#D "<#AIGF">1 A GENUINE ALGORITHMS TEXT THAT HAPPENED TO BE WRITTEN IN A PATTERN LANGUAGE4 ,EMMER'S ,,SNOBOL#D"6 "<#AIHE"> CARRIED THE LANGUAGE ONTO PERSONAL COMPUTERS1 AND ,HOCKEY'S HUMANITIES TEXT INTO SEMINAR ROOMS WHERE THE MACHINE HAD PREVIOUSLY BEEN A PUNCH-CARD CURIOSITY4 ,FOR A NICHE LANGUAGE1 ,,SNOBOL#D WAS UNUSUALLY WELL-DOCUMENTED ONE REASON IT STILL READS WELL TODAY4 ,THE GENRE ,,SNOBOL#D DEFINED HAS A RECOGNIZABLE GENEALOGY AFTERWARD3 ,,AWK "<#AIGG1 ALSO FROM ,BELL ,LABS"> STREAMLINED THE MATCH-AND-ACT MODEL FOR LINE-AT-A-TIME FILES2 ,PERL "<#AIHG"> FUSED IT WITH REGEX AND SHELL CONVENIENCE INTO THE WEB-ERA GLUE LANGUAGE2 AND EVERY MODERN 8TEXT MANIPULATION0 FACILITY SED1 GREP1 ,PYTHON'S RE1 ,JAVA,SCRIPT'S REGEXES1 JQ LIVES SOMEWHERE ON THE SPECTRUM ,,SNOBOL#D STAKED OUT4 ,WHY THE BETTER TOOL LOST ,IT IS WORTH ASKING PLAINLY WHY ,,SNOBOL#D FADED WHILE OBJECTIVELY WEAKER TOOLS PROSPERED1 BECAUSE THE ANSWER IS A STANDING LESSON IN LANGUAGE HISTORY3 "9 ,SYNTAX CARRIED THE ERA'S FINGERPRINTS4 ,COLUMN LAYOUT AND LABEL-BRANCH FLOW BELONGED TO PUNCHED CARDS2 ONCE IF_/THEN_/WHILE BECAME THE INDUSTRY'S MUSCLE MEMORY1 ,,SNOBOL'S TRANSFER COLUMN READ LIKE ASSEMBLY4 "9 ,REGULAR EXPRESSIONS WERE SMALLER4 ,FOR #IJ.0 OF REAL WORK FIND THIS STRING1 SPLIT THIS LINE A COMPACT NOTATION THAT FIT INSIDE AN EDITOR BEAT A GRAMMAR ENGINE4 ,THE MARKET FOR 8A COMPLETE NAME AND INTERNATIONAL POSTAL MAILING ADDRESS0 WAS REAL BUT NARROW4 "9 ,,AWK AND ,PERL WERE FREE AND ON THE MACHINE YOU ALREADY HAD4 ,UNIX MADE THEM AMBIENT2 ,,SNOBOL#D REMAINED A LANGUAGE YOU INSTALLED DELIBERATELY4 "9 ,NO CHAMPION SURVIVED4 ,WHEN ,GRISWOLD'S GROUP MOVED ON TO ,ICON1 ,,SNOBOL LOST ITS RESEARCH ENGINE4 ,PERL HAD ,LARRY ,WALL WRITING ANNUAL ,STATE OF THE ,ONION ADDRESSES2 ,,SNOBOL HAD A LIBRARY OF EXCELLENT BOOKS AND NO MARKETING DEPARTMENT4 ,THE PATTERN RECURS THROUGHOUT THIS ENCYCLOPEDIA3 TECHNICAL SUPERIORITY LOSES TO DISTRIBUTION1 CONVENTION1 AND LUCK WHICH IS EXACTLY WHY PRESERVING THE KNOWLEDGE MATTERS4 ,THE BETTER TOOL DIDN'T DISAPPEAR2 IT JUST STOPPED BEING LOOKED AT4 ..> ,IMPLEMENTATIONS AND DIALECTS ,THE CLASSIC ,,SNOBOL#D RAN ON THE ,,PDP-#AJ SLOWLY1 BECAUSE A PORTABLE INTERPRETER PAYS IN CYCLES4 ,JAMES ,GIMPEL FIXED THAT TWICE4 ,IN #AIGB1 AT ,BELL ,LABS ,HOLMDEL1 HE DESIGNED ,,SITBOL1 A NATIVE ,,PDP-#AJ IMPLEMENTATION1 AND USED IT AS THE SEMESTER PROJECT FOR A STRING-PROCESSING COURSE AT ,STEVENS ,INSTITUTE OF ,TECHNOLOGY "3 STUDENTS EACH IMPLEMENTED A SLICE IN ,,PDP-#AJ ASSEMBLER1 AND THE FINISHED INTERPRETER WAS A FULL-FEATURED1 HIGH-PERFORMANCE ,,SNOBOL#D4 ,GIMPEL'S GREATER WORK WAS ,,SPITBOL THE COMPILED IMPLEMENTATION THAT GAVE ,,SNOBOL#D NEAR-NATIVE SPEED AND BECAME THE REFERENCE IMPLEMENTATION FOR DECADES2 AFTER YEARS AS A COMMERCIAL ,CATSPAW PRODUCT1 ,,SPITBOL WAS RELEASED AS FREE SOFTWARE UNDER THE ,,GNU ,,GPL IN ,APRIL #BJJI4. AND ,,SPITBOL'S HISTORY THROUGH ITS .<#BJJI ,,GPL RELEASE4.>.> ,THE ECOSYSTEM PRODUCED ITS OWN ODD CHILDREN4 ,SNOSTORM "<#AIGJ;S1 ,FRED ,SWARTZ1 ,UNIVERSITY OF ,MICHIGAN"> WAS A PREPROCESSOR ADDING STRUCTURED-PROGRAMMING CONSTRUCTS TO ,,SNOBOL FOR ,,MTS SITES4 ,SNOCONE "<,ANDREW ,KOENIG1 #AIHE"> WENT FURTHER A SELF-CONTAINED BLOCK-STRUCTURED LANGUAGE ON ,,SNOBOL SEMANTICS4 ,MINNESOTA ,,SNOBOL#D BY ,VIKTORS ,BERSTIS REPRODUCED THE ,,IBM MAINFRAME ORIGINAL MOST FAITHFULLY ON ,P,CS1 DOWN TO ,FORTRAN-STYLE ,,FORMAT SUPPORT4 ,CATSPAW1 ,INC4 SOLD COMMERCIAL PORTS FOR ,,DOS1 ,MACINTOSH1 ,SUN AND ,,RS_/#FJJJ ALL NOW FREE4 ,,GNU'S ,ADA COMPILER CARRIES ,,GNAT4,SPITBOL1 THE ,,SPITBOL STRING SEMANTICS CALLABLE FROM ,ADA4 ,AND THE LANGUAGE RUNS TODAY3 ,MACRO ,,SNOBOL#D BY ,PHIL ,BUDNE AND THE ,,BSD-LICENSED ,,CSNOBOL#D PORT KEEP THE ORIGINAL ,BELL ,LABS IMPLEMENTATION COMPILING WHEREVER ;,C EXISTS4 ..> ,GRISWOLD GOES WEST3 ,,SL#E ,IN ,AUGUST #AIGA1 ,RALPH ,GRISWOLD LEFT ,BELL ,LABS FOR A PROFESSORSHIP AT THE ,UNIVERSITY OF ,ARIZONA1 BRINGING ,,SNOBOL#D WITH HIM AND ,NATIONAL ,SCIENCE ,FOUNDATION SUPPORT TO KEEP EVOLVING IT4 ,BY THEN THE LANGUAGE'S DESIGN DEBTS WERE OBVIOUS4 ,ITS COLUMN FORMAT AND LABEL-DRIVEN BRANCHING BELONGED TO THE PUNCHED-CARD AGE2 STRUCTURED PROGRAMMING IF_/THEN1 WHILE1 BLOCKS HAD BECOME TABLE STAKES SINCE ,,ALGOL #FJ4 ,,SNOBOL#D'S SEMANTICS WERE BRILLIANT AND ITS SYNTAX WAS DEAD4 ,GRISWOLD'S FIRST ATTEMPT AT A SUCCESSOR1 ,,SL#E "<8,,SNOBOL ,LANGUAGE #E10 #AIGG">1 TRIED TO GRAFT THE SUCCESS_/FAILURE MACHINERY ONTO CONVENTIONAL CONTROL STRUCTURES4 ,HE JUDGED THE RESULT A FAILURE THE MECHANISMS FOUGHT EACH OTHER4 ,IN #AIGG HE WENT BACK TO FIRST PRINCIPLES AND SET THE CONSTRAINTS FOR THE REAL SUCCESSOR3 KEEP ,,SNOBOL#D'S PHILOSOPHICAL AND SEMANTIC BASIS2 TAKE ,,SL#E'S SYNTAX AND ITS FEATURES2 DROP THE OVER-GENERAL PROCEDURE MECHANISM4.1 AND ,GRISWOLD @& ,GRISWOLD1 ,THE ,ICON ,PROGRAMMING ,LANGUAGE1 #CRD ED4 ON ,,SL#E'S LESSONS AND ,ICON'S DESIGN CONSTRAINTS4.>.> ,THE NEW LANGUAGE WAS ,,SNOBOL#E FOR A WHILE1 BUT IT HAD DRIFTED TOO FAR FROM THE NAME4 ,THEY CONSIDERED ;S AN HOMAGE TO ;C1 A SIBLING TRIBUTE TO ;,C AND ABANDONED IT AS UNTYPESETTABLE4 ,IRVING AND BARD WERE PROPOSED AND DROPPED2 8,,TL0 8,THE ,LANGUAGE0 WAS TOO COY4 ,THEN ,XEROX ,,PARC'S GRAPHICAL-INTERFACE WORK PUT THE WORD ICON INTO THE COMPUTER LEXICON1 AND THE NAME WAS CHOSEN A DECISION ,GRISWOLD LATER REGRETTED1 SINCE 8ICON0 HAD NO GRAPHICAL FEATURES WHATEVER AND THE NAME CONFUSED EVERYONE IT ATTRACTED4 ,ICON ,ICON "<#AIGH"> IS THE IDEA OF ,,SNOBOL REBUILT FOR THE STRUCTURED-PROGRAMMING ERA3 ,PASCAL-FLAVORED SYNTAX "<3"71 PROCEDURE1 END"> WITH ,C'S BRACES AND A MAIN PROCEDURE1 DYNAMICALLY TYPED1 NO DECLARATIONS1 AUTOMATIC CONVERSION BETWEEN NUMBERS AND STRINGS4 ,ON THE SURFACE IT LOOKS LIKE A PLEASANT SCRIPTING LANGUAGE OF ITS DECADE4 ,UNDERNEATH IT RUNS THE STRANGEST AND MOST ELEGANT CONTROL MODEL ANY MAINSTREAM-ADJACENT LANGUAGE HAS EVER SHIPPED4 ,GOAL-DIRECTED PROGRAMMING ,IN CONVENTIONAL LANGUAGES A LOOKUP THAT FINDS NOTHING RETURNS A SENTINEL -#A1 NULL1 ,,EOF AND THE PROGRAMMER WRITES TESTS EVERYWHERE3 IF "1 WHILE "<"<;C "7 READ"<">"> 6"7 ,,EOF">4 ,IN ,,SNOBOL1 AN OPERATION THAT COULDN'T PRODUCE A RESULT FAILED1 AND THE 3;,S"<444">_/3;,F"<444"> TRANSFERS STEERED EXECUTION BY IT4 ,ICON KEEPS THE SEMANTIC AN EXPRESSION SUCCEEDS WITH A VALUE1 OR FAILS AND WIRES IT INTO ORDINARY STRUCTURED SYNTAX4 IF1 WHILE1 EVERY1 AND FRIENDS ARE ALL DRIVEN BY SUCCESS AND FAILURE RATHER THAN BY ,BOOLEAN TESTS4 ,THE PAYOFF IS CONCRETE4 ,FILE-COPYING IN ,JAVA REQUIRES THE ,,EOF SENTINEL AND AN EXPLICIT COMPARISON2 IN ,ICON IT IS3 WHILE WRITE""> READ"<"> PRODUCES A LINE1 OR FAILS AT END OF FILE2 FAILURE PROPAGATES THROUGH WRITE INTO WHILE1 WHICH STOPS CORRECTLY1 SILENTLY1 BY DESIGN4 ,COMPARISONS WORK THE SAME WAY3 A @< ;B IS AN OPERATOR THAT SUCCEEDS AND RETURNS ;B1 OR FAILS SO A @< ;B @< ;C DOES EXACTLY WHAT IT LOOKS LIKE1 SINCE THE FIRST COMPARISON HANDS ITS SECOND OPERAND TO THE SECOND4 ,AND FAILURE IS NOT AN EXCEPTION3 REACHING END OF FILE IS AN EXPECTED OUTCOME1 NOT A THROWN EMERGENCY4 ,ICON SIMPLY DECLINED THE SENTINEL-AND-TEST INDUSTRY THAT OCCUPIED EVERY OTHER LANGUAGE OF ITS GENERATION4 ,BACKTRACKING COMPLETES THE PICTURE3 WHEN A BRANCH FAILS1 ,ICON CAN REWIND TO AN EARLIER POINT AND TRY ANOTHER ALTERNATIVE AND REVERSIBLE ASSIGNMENT "<@<-1 @<-@>"> EXISTS SO THAT VARIABLES CHANGED INSIDE A FAILED COMPUTATION RESTORE THEMSELVES1 A BUILT-IN ATOMICITY THAT STRING SCANNING RELIES ON CONSTANTLY3 _< I @<- #AJ @& ;J @<- FIND" _> ,IF FIND FAILS1 THE BLOCK FAILS AND I @<- #AJ ROLLS ITSELF BACK1 LEAVING NO PHANTOM ASSIGNMENT BEHIND4 ,IN A LANGUAGE WITHOUT REVERSIBILITY1 A FAILED PARSE ATTEMPT LEAVES THE CURSOR WHEREVER THE ATTEMPT ABANDONED IT1 AND THE NEXT ATTEMPT STARTS FROM A CORRUPT STATE4 ,ICON'S SCAN EITHER COMMITS ITS CURSOR MOVEMENT OR UNDOES IT1 WHICH IS EXACTLY THE SEMANTICS A BACKTRACKING PARSER WANTS AND EXACTLY WHAT EVERY HAND-WRITTEN REGEX LOOP GETS SUBTLY WRONG4 ,ONE MORE CONTROL-FLOW SUBTLETY SEPARATES ,ICON FROM EVERY NEIGHBOR3 EVERY AND WHILE LOOK ALIKE BUT ARE NOT4 WHILE ;E RE-EVALUATES ;E UNTIL IT FAILS ITS JOB IS REPETITION4 EVERY ;E DRIVES A GENERATOR1 FETCHING THE NEXT RESULT ON EACH PASS ITS JOB IS ENUMERATION4 EVERY WRITE" AND WHILE ARE THE DIFFERENCE BETWEEN 8GIVE ME EVERYTHING THIS CAN PRODUCE0 AND 8KEEP DOING THIS UNTIL IT STOPS WORKING40 ,THE DISTINCTION MATTERS BECAUSE AN ,ICON PROGRAMMER IS ALWAYS ASKING THE SAME QUESTION3 DOES THIS EXPRESSION STILL HAVE SOMETHING TO GIVE8 ,GENERATORS ,IF GOAL-DIRECTED EXECUTION IS ,ICON'S ENGINE1 THE GENERATOR IS ITS GREATEST EXPORT4 ,IN ,ICON1 AN EXPRESSION DOESN'T EVALUATE TO A VALUE IT PRODUCES A RESULT SEQUENCE3 EVERY VALUE IT COULD PRODUCE1 YIELDED ONE AT A TIME TO WHATEVER ASKED4 FIND"<8THE01 ;S"> DOESN'T RETURN THE FIRST POSITION OF 8THE0 AND STOP2 IT GENERATES POSITIONS #D1 THEN #BI AND WHEN IT HAS NO MORE TO GIVE1 IT FAILS4 ,THE EVERY CONSTRUCT CONSUMES A SEQUENCE3 ;S 3"7 8,ALL THE WORLD'S A STAGE4 ,AND ALL THE MEN AND WOMEN MERELY PLAYERS0 EVERY WRITE""> ,TWO LINES1 AND EVERY OCCURRENCE IS PRINTED NO INDEX VARIABLE1 NO -#A SENTINEL1 NO LOOP BOOKKEEPING4 ,WHERE OTHER LANGUAGES' INDEX,OF REQUIRES A THREE-PARAMETER OVERLOAD AND A HAND-ROLLED LOOP1 ,ICON'S GENERATOR SIMPLY KEEPS ANSWERING UNTIL IT CAN'T4 ,USER PROCEDURES BECOME GENERATORS WITH SUSPEND1 WHICH YIELDS A VALUE AND PARKS EXECUTION MID-PROCEDURE UNTIL RESUMPTION A RETURN THAT DOESN'T DESTROY STATE3 PROCEDURE ,ITO,J" WHILE I @<"7 ;J DO _< SUSPEND I I "63"7 #A _> FAIL END ,CALL ,ITO,J"<#A1 #E"> UNDER EVERY AND IT YIELDS #A1 SUSPENDS2 RESUMES1 YIELDS #B2 AND SO ON1 UNTIL FAIL ENDS THE SEQUENCE4 ,ADD THE ALTERNATOR _\ WHICH LOOKS LIKE OR BUT ACTUALLY GENERATES ITS OPERANDS IN TURN AND TO FOR INTEGER RANGES1 AND ITERATION COLLAPSES TO INTENT3 EVERY WRITE"<#A TO #AJ"> EVERY I 3"7 "<#A _\ #C _\ #D _\ #E _\ #AJ _\ #AA _\ #BC"> DO WRITE" EVERY ;X 3"7 ,ITO,J"<#J1AJ"> @& ;X .0 #B "7"7 #J DO WRITE"<;X"> _? EVENS ONLY . YIELDS RESULTS ONE AT A TIME2 EVERY CONSUMES THEM2 @&FAIL ENDS THE LOOP CLEANLY.> ,IF THIS SOUNDS LIKE ,PYTHON'S YIELD1 THAT'S BECAUSE IT IS4 ,WHEN ,PYTHON ADOPTED GENERATORS IN ,,PEP #BEE "<#BJJA">1 ITS AUTHORS LISTED ,ICON AMONG THE DIRECT INSPIRATIONS THE MECHANISM A GENERATION OF ,PYTHON PROGRAMMERS KNOW AS LAZINESS WAS RUNNING IN ,TUCSON TWO DECADES EARLIER4 ,THE SAME ,,DNA SURFACES IN JQ'S STREAM SEMANTICS AND THE ,ICON-DESCENDED ,GOALDI4 ,GENERATORS ARE NOW THE STANDARD ANSWER TO 8ITERATE WITHOUT MATERIALIZING02 ,ICON WAS THE PROOF OF CONCEPT1 COMPLETE WITH THE COROUTINE MACHINERY " THAT MODERN LANGUAGES STILL WRAP IN ITERATORS AND ASYNC4..> ,STRING SCANNING ,ICON'S THIRD PILLAR IS THE STRING SCANNING ENVIRONMENT3 ;S 8 EXPR BINDS ;S AS THE SUBJECT FOR A BLOCK OF STRING OPERATIONS1 WITH TWO IMPLICIT VARIABLES @&SUBJECT AND @&POS " DOING THE BOOKKEEPING THAT STRING PARSING ALWAYS MAKES EXPLICIT4 ,INSIDE 81 FUNCTIONS LIKE TAB "1 MANY "1 UPTO "1 MATCH "1 AND POS " COMPOSE INTO PARSERS OF STARTLING BREVITY4 ,WORDS FROM A LINE3 ;S 8 _< WHILE NOT POS"<#J"> DO _< TAB""> _? SKIP BLANKS WORD 3"7 TAB" _\ #J"> _? GRAB UP TO THE NEXT BLANK OR END WRITE" _> _> ,THE SAME MACHINERY THAT POWERED ,,SNOBOL#D PATTERNS SUCCESS1 FAILURE1 CURSOR BACKTRACKING IS ALL HERE1 JUST RECAST IN FUNCTIONS ON AN IMPLICIT SUBJECT INSTEAD OF A PATTERN DATATYPE4 ,AN ,ICON STRING SCANNING BLOCK FOR A REAL GRAMMAR " IS THE LINEAL DESCENDANT OF ,,SNOBOL'S ,,BNF-AS-PATTERN1 TRADED DOWN IN RAW POWER FOR A LARGE GAIN IN READABILITY4 ,THE PAYOFF SHOWS MOST CLEARLY IN THE CLASSIC UTILITY PROGRAM A WORD-FREQUENCY COUNTER1 THE KIND OF THING AWK PEOPLE WRITE TO SHOW OFF4 ,IN ,ICON THE WHOLE JOB IS TWENTY LINES AND MOST OF IT IS THE SORTING3 PROCEDURE MAIN"<"> COUNTS 3"7 TABLE"<#J"> _? DEFAULT VALUE #J FOR NEW KEYS EVERY LINE 3"7 6@&INPUT DO _< _? GENERATOR READS THE STREAM LINE 8 WHILE TAB""> DO _< COUNTS.">.> "63"7 #A _> _> PAIRS 3"7 .<.> EVERY WORD 3"7 KEY" DO PUSH".>"> EVERY ;P 3"7 6PAIRS DO WRITE"1#F">1 ,7 ,71 ;P.<#A.>"> END TABLE"<#J"> IS A MAP WHOSE MISSING KEYS DEFAULT TO ZERO2 KEY GENERATES THE TABLE'S KEYS2 THE SCANNING BLOCK WALKS EACH LINE PULLING ALPHABETIC WORDS4 ,NO REGEX LITERALS1 NO SPLIT_/JOIN CEREMONY THE SAME JOB THAT TAKES A PAGE IN MOST LANGUAGES' STANDARD STYLE IS A PARAGRAPH HERE1 AND THE PARAGRAPH IS STILL READABLE4 ,STRUCTURES AND STRINGS ,ICON'S COLLECTIONS WERE EQUALLY PRESCIENT3 LISTS USABLE AS ARRAYS1 STACKS1 AND QUEUES2 TABLES THE ASSOCIATIVE ARRAYS ,MC,ILROY FORCED INTO ,,SNOBOL#D1 HERE A FIRST-CLASS CITIZEN2 SETS WITH UNION "6"61 INTERSECTION .*1 DIFFERENCE --2 AND CSETS"91 CHARACTER SETS LIKE @&DIGITS1 @&LCASE1 AND USER-DEFINED 'AEIOU'1 BUILT FOR THE SCANNING OPERATIONS4 ,STRINGS ARE INDEXABLE BETWEEN"9 CHARACTERS "1 SLICEABLE FROM EITHER END1 AND MUTABLE THROUGH THEIR SUBSCRIPTS ;S.<#B.> 3"7 8#ABC0 INSERTS INTO THE MIDDLE OF 8ABC04 ,EVERYTHING ITERABLE IS A GENERATOR1 DOWN TO 6LIST PRODUCING A LIST'S ELEMENTS AND 68,HELLO0 PRODUCING A STRING'S CHARACTERS4 ,EVEN @&INPUT STANDARD INPUT IS A GENERATOR3 EVERY PUSH".* READS A WHOLE STREAM INTO A LIST IN ONE EXPRESSION4 ,FOR COMPLETENESS1 ,ICON ALSO SHIPPED CO-EXPRESSIONS FIRST-CLASS COROUTINE OBJECTS THAT CAPTURE A SUSPENDED COMPUTATION AND CAN BE RESUMED EXPLICITLY WITH @A4 ,GENERATORS GET THEIR VALUES FOR FREE1 IN LEXICAL ORDER2 A CO-EXPRESSION GETS THEM ON DEMAND1 FROM WHEREVER YOU LIKE1 MAKING IT THE GENERAL MECHANISM BENEATH SUSPEND AND THE DIRECT ANCESTOR OF THE COROUTINE_/YIELD MACHINERY MODERN LANGUAGES EXPOSE DIRECTLY4 ,IT IS ONE MORE CASE OF ,ICON QUIETLY SHIPPING IN #AIGH WHAT OTHER LANGUAGES WOULD SPEND THE NEXT FOUR DECADES REDISCOVERING PIECEMEAL FIRST AS ITERATORS1 THEN AS GENERATORS1 THEN AS ASYNC4 ,,SNOBOL#D AND ,ICON SIDE BY SIDE ,,SNOBOL#D "<#AIFG"> ,ICON "<#AIGH"> ,SURFACE ,COLUMN-FORMAT1 LABELS AND 3,S_/3;,F TRANSFERS ,,ALGOL_/,PASCAL-FLAVORED BLOCKS1 PROCEDURE1 3"7 ,CONTROL MODEL SUCCESS_/FAILURE BRANCHING SUCCESS_/FAILURE EVERYWHERE GOAL-DIRECTED ,PATTERN FACILITY PATTERNS AS FIRST-CLASS DATA1 FULL CONTEXT-FREE POWER STRING SCANNING3 81 @&SUBJECT1 @&POS1 TAB_/MANY_/UPTO ,ITERATION MANUAL LOOPS VIA TRANSFERS GENERATORS EVERY1 TO1 1 61 SUSPEND ,DATA STRINGS1 NUMBERS1 ARRAYS1 TABLES1 ,,DATA RECORDS LISTS1 TABLES1 SETS1 CSETS1 RECORDS1 CO-EXPRESSIONS ,THE TRADE MAXIMUM EXPRESSIVE POWER MOST OF THE POWER1 DRESSED FOR THE STRUCTURED-PROGRAMMING ERA ,THE TWO ARE NOT RIVALS BUT STAGES OF ONE IDEA3 ,,SNOBOL#D PROVED THAT MATCHING AND FAILURE COULD BE A PROGRAMMING LANGUAGE2 ,ICON PROVED THAT IDEA COULD WEAR THE CLOTHES OF A NORMAL ONE4 ,CRITICISMS ,AN HONEST ACCOUNT HAS TO INCLUDE WHAT WENT WRONG4 ,LAURENCE ,TRATT'S #BJAJ ANALYSIS OF ,ICON'S DESIGN IS THE STANDARD CRITICAL TEXT1 AND ITS TWO MAIN FINDINGS ARE INSTRUCTIVE4. THE STANDARD DESIGN CRITIQUE4.>.> ,FIRST1 THE DEFAULT-FAIL CONVENTION3 A PROCEDURE THAT RUNS OFF ITS END RETURNS @&FAIL4 ,ELEGANT FOR GENERATORS1 IT MAKES ;X 3"7 ;F"<-#A"> A SILENT NO-OP ;X KEEPS ITS OLD VALUE1 NO WARNING AND ,TRATT FOUND THE VAST MAJORITY OF REAL ,ICON PROCEDURES ARE NOT GENERATORS1 SO THE LANGUAGE'S DEFAULT BEHAVIOR OPTIMIZES FOR THE MINORITY CASE WHILE CREATING A SUBTLE TRAP IN THE MAJORITY4 ,SECOND1 THE ABSENCE OF ,BOOLEAN LOGIC CREATES EDGE CASES OF ITS OWN3 IF ;C THEN 444 SUCCEEDS EVEN WHEN ;C WAS NEVER ASSIGNED1 BECAUSE AN UNASSIGNED VARIABLE'S VALUE "<@&NULL"> IS STILL A VALUE SO THE TEST MUST BE WRITTEN IF _/C THEN 444 OR ;C "7"7"7 @&NULL4 ,ICON TRADED ,BOOLEAN COMPLEXITY FOR FAILURE PROPAGATION1 AND MOSTLY WON BUT NOT EVERYWHERE1 AND NOT FREE4 ,THE FAIR SUMMARY IS THE ONE ,ICON'S OWN COMMUNITY REACHES3 FOR THE DOMAIN IT WAS BUILT FOR STRINGS1 SCANNING1 SEARCH GOAL-DIRECTED CODE IS SHORTER1 CLEARER1 AND HARDER TO GET WRONG THAN ANYTHING BEFORE OR SINCE4 ,FOR GENERAL-PURPOSE PROGRAMMING1 THE SAME RULES OCCASIONALLY SURPRISE4 ,THE IDEA WAS TOO GOOD FOR ITS MEDIUM4 ,UNICON AND TODAY ,ICON'S LINEAGE CONTINUES4 ,UNICON " ADDS OBJECTS1 NETWORKING1 DATABASES1 AND CONCURRENCY TO THE CORE LANGUAGE AND REMAINS ACTIVELY DEVELOPED4 ,THE REFERENCE ,ICON IMPLEMENTATION ITSELF IS STILL MAINTAINED RELEASE #I4E4BE;A SHIPPED IN ,SEPTEMBER #BJBE1 FORTY-SEVEN YEARS AFTER THE LANGUAGE WAS DESIGNED4 ,,SNOBOL#D RUNS WHEREVER ,,CSNOBOL#D COMPILES2 ,GRISWOLD'S IMPLEMENTATION AND BOOKS REMAIN AVAILABLE2 AND THE ,UNIVERSITY OF ,ARIZONA KEEPS THE ,ICON PROJECT PAGES THAT THE LANGUAGE'S RESEARCHERS BUILT4 ,THESE LANGUAGES ARE NOT SPECIMENS UNDER GLASS4 ,THEY COMPILE1 THEY RUN1 AND THEIR MAINTAINERS STILL SHIP RELEASES4 ,RUNNING IT TODAY ,EVERY IMPLEMENTATION MENTIONED HERE IS FREE3 ,,SNOBOL#D ,,CSNOBOL#D "<,,BSD-LICENSED PORT OF THE ,BELL ,LABS ORIGINAL1 BUILDS ANYWHERE ;,C EXISTS">1 ,MACRO ,,SNOBOL#D "<,PHIL ,BUDNE'S PORTABLE ;,C IMPLEMENTATION">1 ,,SPITBOL "<,,GPL SINCE #BJJI1 THE FASTEST BY FAR">1 AND THE FAITHFUL ,MINNESOTA ,,SNOBOL#D"9 FOR ,,PC-ERA FIDELITY4 ,THE CLEARINGHOUSE IS SNOBOL#D4ORG2 THE PRESERVATION MIRROR IS REGRESSIVE4ORG_/SNOBOL#D4 ,ICON THE REFERENCE IMPLEMENTATION FROM THE ,UNIVERSITY OF ,ARIZONA ,ICON PROJECT "1 PLUS ,JCON FOR THE ,,JVM4 ,THE ,GRISWOLDS' ,THE ,ICON ,PROGRAMMING ,LANGUAGE"9 "<#CRD ED41 #BJJB"> IS THE BOOK1 AND THE ,ARIZONA SITE HOSTS THE DOCUMENTATION SET4 "9 ,UNICON UNICON4ORG1 FOR ,ICON WITH OBJECTS1 ,,POSIX FACILITIES1 AND A STANDARD LIBRARY THE ORIGINAL NEVER NEEDED4 ,THE CLASSIC TEXTS REMAIN FINDABLE3 THE 8GREEN BOOK0 ,GRISWOLD1 ,POAGE @& ,POLONSKY1 ,THE ,,SNOBOL#D ,PROGRAMMING ,LANGUAGE "<#AIFH"> ,GRISWOLD'S ,THE ,MACRO ,IMPLEMENTATION OF ,,SNOBOL#D "<#AIGB"> FOR THE VIRTUAL-MACHINE INTERNALS1 ,GIMPEL'S ,ALGORITHMS IN ,,SNOBOL#D "<#AIGF">1 AND ,HOCKEY'S ,,SNOBOL ,PROGRAMMING FOR THE ,HUMANITIES "<#AIHE"> FOR THE PERIOD'S APPLIED TRADITION4 ,GRISWOLD'S OWN 8,A ,HISTORY OF THE ,,SNOBOL ,PROGRAMMING ,LANGUAGES0 "<#AIGH"> AND THE ,,HOPL VOLUME CHAPTER ARE THE PRIMARY-SOURCE HISTORY THIS ARTICLE LEANS ON THEM THROUGHOUT4 ,LANGUAGE HISTORY3 WHAT THE LINE TAUGHT US ,PLACED END TO END1 THE ,,SNOBOL,ICON STORY IS A COMPRESSED HISTORY OF HOW PROGRAMMING-LANGUAGE IDEAS ACTUALLY TRAVEL4 ,A CONCEPT APPEARS "<,,COMIT'S REWRITE RULES">1 IS PERFECTED IN A FORM THE MAINSTREAM CAN'T ABSORB "<,,SNOBOL#D'S PATTERN DATATYPE ON A #AIFG MAINFRAME">1 IS REDISCOVERED IN DILUTED FORM BY FASHIONABLE SUCCESSORS "<,,AWK'S PATTERNS1 ,PERL'S REGEXES">1 AND IS FINALLY RE-EMBEDDED SO QUIETLY THAT ITS USERS NEVER LEARN WHERE IT CAME FROM "<,PYTHON'S YIELD1 JQ'S STREAMS1 EVERY PARSER-COMBINATOR LIBRARY ON ,EARTH">4 ,THERE IS A SUBTLER LESSON IN THE LINEAGE1 TOO3 IDEAS PERSIST BETTER THAN IMPLEMENTATIONS4 ,,SNOBOL#D THE ARTIFACT IS A CURIOSITY COLUMN-FORMAT1 MAINFRAME-BOUND1 ITS IDIOMS EXTINCT4 ,BUT THE IDEA THE ARTIFACT CARRIED TURNED OUT TO BE LOAD-BEARING4 ,IT SURVIVED A SYNTAX CHANGE "<,ICON">1 SURVIVED BEING RENAMED "1 SURVIVED BEING DILUTED "1 AND SURFACED AGAIN EVERY TIME THE INDUSTRY REDISCOVERED THAT TEXT IS MOST OF WHAT COMPUTERS ACTUALLY PROCESS4 ,WHEN ,LUA'S DESIGNERS WROTE THEIR ,,HOPL HISTORY1 THEY LISTED ,,SNOBOL AMONG THEIR LANGUAGE'S INFLUENCES THE PATTERN TRADITION REACHING EVEN THE EMBEDDABLE-SCRIPTING NICHE BY WAY OF ITS REPUTATION4 ,WHEN ,STEPHEN ,BOURNE NEEDED A ,UNIX SHELL SCRIPTING LANGUAGE IN THE SAME ,BELL ,LABS BUILDING WHERE ,,SNOBOL WAS MADE1 THE RESULT1 BS1 BORROWED ,,SNOBOL-FLAVORED FEATURES OUTRIGHT4 ,THE FAMILY TOUCHES NEARLY EVERY STRING-HANDLING IDIOM IN DAILY USE4 ,THREE OF THE MODERN PROGRAMMER'S DAILY TOOLS DESCEND DIRECTLY FROM THIS FAMILY3 "9 ,PATTERN MATCHING ,,SNOBOL#D DEFINED THE PROBLEM SPACE REGULAR EXPRESSIONS STILL OCCUPY1 AND ITS CONTEXT-FREE POWER REMAINS BEYOND STOCK REGEX FORTY-FIVE YEARS LATER4 "9 ,GENERATORS ,ICON'S SUSPEND_/RESUME IS ,PYTHON'S YIELD1 AND THE LAZY SEQUENCE IS NOW HOW THE INDUSTRY THINKS ABOUT ITERATION4 "9 ,GOAL-DIRECTED EVALUATION SUCCESS_/FAILURE AS A CONTROL PRIMITIVE PREVIEWS TODAY'S RESULT TYPES AND EARLY-RETURN STYLES "<,RESULT IN ,RUST1 ERR "7"7 NIL IN ,GO"> THE SAME INSTINCT3 MAKE FAILURE A VALUE1 AND LET THE PROGRAM STEER BY IT4 ,THE LANGUAGES THEMSELVES1 MEANWHILE1 SIMPLY PERSISTED MAINTAINED1 PORTED1 FREE1 AND STILL TAUGHT TO ANYONE WILLING TO LOOK BACK4 ,TEXT DIDN'T STOP NEEDING PROCESSING IN #AIFG1 AND THE TOOLS ,BELL ,LABS AND ,TUCSON BUILT FOR IT HAVE NEVER ACTUALLY BEEN IMPROVED UPON AT THE THINGS THEY WERE BUILT FOR4 ,AND ONE MORE THING PERSISTS3 THE RECORD ITSELF4 ,GRISWOLD WROTE HIS HISTORY IN #AIGH1 WHILE THE STORY WAS STILL WARM4 ,THE GREEN BOOK IS STILL READABLE4 ,THE ,,SPITBOL SOURCE STILL COMPILES4 ,THE ,ARIZONA ,ICON PAGES STILL SERVE4 ,,SNOBOL AND ,ICON ARE AMONG THE BEST-PRESERVED LANGUAGES OF THEIR GENERATION DOCUMENTED BY THEIR OWN AUTHORS1 IN THEIR OWN WORDS1 WITH THE SOURCE STILL RUNNABLE4 ,THAT IS WHAT PRESERVATION LOOKS LIKE WHEN IT WORKS4 ,KNOWLEDGE IS ONLY EVER LOST WHEN THE WORLD STOPS LOOKING AND PAGES LIKE THIS ONE EXIST TO MAKE SURE IT DOESN'T4 ,SEE ALSO "9 ,,FORTRAN THE NUMERIC WORLD ,,SNOBOL ANSWERED TO "9 ,ADA " ,,GNAT4,SPITBOL CARRIES ,,SNOBOL#D'S SEMANTICS INTO ,ADA "9 ,HISTORY OF ,PROGRAMMING THE LARGER MAP THIS LINEAGE BELONGS TO "9 ,CHEVALIER DE ,SAINT-,GEORGES ON PRESERVING PEOPLE HISTORY NEARLY LOST2 LANGUAGES DESERVE THE SAME "9 ,,REBOL THE MESSAGING BRANCH OF THE SAME DATA-IS-CODE TRADITION