Computerworld is undertaking a series of investigations into the most widely-used programming languages. Previously we have spoken to Alfred v. Aho of AWK fame, S. Tucker Taft on the Ada 1995 and 2005 revisions, Microsoft about its server-side script engine ASP, Chet Ramey about his experience maintaining Bash, Bjarne Stroustrup of C++ fame, to Charles H. Moore about the design and development of Forth and a chat with the irreverent Don Woods about the development and uses of INTERCAL.
This interview is dedicated to the investigation of YACC, and to chatting with AT&T alumni Stephen C. Johnson. Johnson is currently employed at The MathWorks, where he works daily with MATLAB. Computerworld snatched the opportunity recently to get his thoughts on working with Al Aho and Dennis Ritchie, as well as the development of Bison.
Please note that we are no longer following exact alphabetical order for this series due to popular demand. If you'd like to submit any suggestions for programming languages or language authors that you'd like to see covered, please email naomi@computerworld.com.au.
What made you name your parser generator in the form of an acronym: Yet Another Compiler Compiler?
There were other Compiler-compilers in use at Bell Labs, especially as part of the Multics project. I was familiar with a version of McClure's TMG. When Jeff Ullman heard about my program, he said in astonishment "Another compiler-compiler?". Thus the name...
What prompted the development of YACC? Was it part of a specific project at AT&T Labs?
"Project" sounds very formal, and that wasn't the Bell Labs way. The Computer Science Research group had recently induced AT&T to spend many million dollars on Multics, with nothing to say for it. Some of my co-workers felt that the group might be disbanded... But in general, Bell Labs hired smart people and left a lot of interesting problems around. And gave people years to do things that were useful. It's an environment that is almost unknown now.
YACC began for me as an attempt to solve a very simple, specific problem.
What problem were you trying to solve?
Dennis Ritchie had written a simple language, B, which ran on our GE (later Honeywell) system, and I started to use it to write some systems programs. When Dennis started to work on Unix, the compiler became an orphan, and I adopted it. I needed access to the exclusive-or operation on the computer, and B did not have any way to say that. So, talking to Dennis, we agreed that would be a good name for the operator, and I set out to put it into the compiler. I did it, but it was no fun.
One day at lunch I was griping about this, and Al Aho said "There's a paper by Knuth-I think he has a better way...". So Al agreed to build the tables for the B expression grammar. I remember giving him about 30 grammar rules, and he went up to the stockroom and got a big piece of paper, about 2 by 3 feet, ruled it into squares, and started making entries in it. After an hour of watching him, he said "this will take a while". In fact, it took about 2 days!
Finally, Al handed me the paper in triumph, and I said "what do I do with this?" He taught me how to interpret the table to guide the parser, but when I typed the table in and tried to parse, there were errors. Each error we found involved another hour of Al's time and some more rows in the table. Finally, after the third time I asked him "what are you doing when you make the table?" He told me, and I said "I could write a program to do that!" And I did...
Latest on C/C++
- KDE 4.5 release ups stability, adds Webkit browser
- KDE innovation still brewing amid stable 4.5 release
- OpenCL 1.1 ratified by The Khronos Group
- MeeGo adds developers, needs 'investment' to succeed
- Surround Vision hopes to change TV viewing experience
- Fedora 13 beta looks to streamline Linux
- KDE 4.4 released, new Web site launched
- Palm opens up developer program, adds plug-in support
- KDE 4.4 aims to take free desktop skyward
- Open source identity: PulseAudio creator Lennart Poettering
Development Essentials
- Security experts name top 25 programming screw-ups
- Top 10 wicked cool algorithms
- Facebook app verification fee draws criticism
- Microsoft's openness stressed
- Yahoo's developer platform to launch this week
- Microsoft starts new developer portal
- Google API allows creating apps that can track laptops
- PHP, JavaScript, Ruby, Perl, Python, and Tcl Today: The State of the Scripting Universe
- Analyst: In-house app development fraught with waste
- Is unit testing doomed?
- WebSphere Solution Design (S20) - CBD, contract role3/09/2010
Other
I.T. & T
WebSphere Solution Design (S20) - CBD, contract role - Solution Architect - Web Application Architecture Project!3/09/2010
Other
I.T. & T
Solution Architect to provide strategic and operational consulting for the end-to-end Web Application System project! Experienced with J2EE or .NET?! - Principal Consultant - ITIL2/09/2010
Other
I.T. & T
Excellent opportunity for an experienced ITIL Principal Consultant to join an innovative leading IT Service management consultancy. Attractive packag - Mainframe Developer - COBOL - 12 Month Contract2/09/2010
Other
I.T. & T
Mainframe Developer - COBOL - 12 Month Contract - Business Systems Analyst2/09/2010
Other
I.T. & T
Perm CBD based role for an experienced Business Systems Analyst - Senior SAP Project Manager2/09/2010
Other
I.T. & T
Senior SAP Project Manager - SAP FICO Consultant - 6 week contract - West Sydney2/09/2010
Other
I.T. & T
SAP FICO Consultant - 6 week contract - West Sydney
TechWorld Blogs
Recent blog posts
- Windows Phone 7: how big can it get?
- NBN gets a turn at political football
- Internet filter gets caught up in politics
- TechWorld Forums goes live
- Selective sourcing the hybrid of cloud services
- Social networks catch more business attention
- RIP Kin
- Telstra’s copper and NBN’s fibre: will the two ends meet?
- RIP Windows 2000, XP lives on
- Does the world need another iPhone? Why not
Recent comments
- java development
12 hours 25 min ago - When mine called they
13 hours 8 min ago - 3D TV cannot fall - no way! Why?
16 hours 22 min ago - Thanks for taking the time to
1 day 4 hours ago - Windows scam
1 day 12 hours ago - My only anti fraud method is
2 days 6 hours ago - Private Cloud Taxonomies
2 days 7 hours ago - ...however...
2 days 16 hours ago - This Guy
2 days 16 hours ago - Glasses Free technology
2 days 17 hours ago - FOSS community
3 days 48 sec ago - i have dv6000 with nvidia
3 days 1 hour ago - i have dv6000 and suddenly
3 days 1 hour ago - This is an awesome comment.
3 days 5 hours ago - Real Estate
3 days 7 hours ago - Scam - eventvwr scammers
3 days 11 hours ago - Well I never...
5 days 1 hour ago - Too bad Microsoft was mentioned
5 days 4 hours ago - Phone card is a better option to make calls at a lower rate
5 days 8 hours ago - In other words: "Developers,
5 days 14 hours ago










Comments
Nope. You are wrong. Read
Nope. You are wrong. Read it again. He is saying that even after you rewrite it, you can do it again and make it even better.
Transcription mistake
Hi! I think there's a transcription mistake in the answer of the last question: You CAN'T rewrite a program ...
Probably it should be: You CAN rewrite a program ...
GNU does credit Unix, constantly
"Unix" is the U in GNU, so I'm somewhat bemused at Stephen Johnson's bemusement about how much credit Unix gets.
GNU stands for "GNU's not Unix" because that sums up GNU's key characteristics. One is that its design is based on Unix, and the other is that it is a rewrite. Being a rewrite meant that GNU was not encumbered by Unix's copyright. This allowed GNU to pursue the goal of using copyright to give users freedom instead of restricting users.
Richard Stallman describes the naming process in detail here:
http://www.fsfeurope.org/documents/rms-fs-2006-03-09.en.html#the-name-gnu
Post new comment