Thursday, December 06, 2007

Programmer's purity test

There's an enormous list of programming languages up on the Wikipedia at Alphabetical List Of Programming Languages

It occurred to me that that'd make for an interesting variation on the classic "purity test". A number of "hacker" and "geek" purity tests are out there, but I haven't seen one specifically for programming. There are way too many extremely obscure languages on that Wikipedia list, though.

If we trimmed out the truly obscure languages, we'd get something like this:

Have you ever:
  1. Programmed a computer?
  2. In ADA?
  3. In ALGOL?
  4. In APL?
  5. In APPLESCRIPT?
  6. In Assembly?
  7. In AWK?
  8. In B, or BCPL?
  9. In BASIC?
  10. In brainf*ck?
  11. In Bourne Shell?

Nah - too boring, and we haven't even gotten out of the B's yet. Maybe we could organize it by generation:

Have you ever:

  1. Programmed a computer?
  2. With jumper wires?
  3. In machine code?
  4. ...without a coding sheet or other aid?
  5. ...with toggle switches?
  6. ...from a Hex keypad?
  7. In assembly language?
  8. On punched cards?
  9. In a language whose syntax assumes that you're still using punched cards (eg Fortran, RPG)?
  10. In COBOL?
  11. In C or Pascal?
  12. In Forth?
  13. In Lisp (Scheme, Logo)?
  14. In Smalltalk?
  15. In a 4GL?
  16. In C++?
  17. In Java or C#?
  18. With a scripting language?
  19. In a modern functional language (Haskell, etc)?
  20. In an object-oriented language without class-based inheritance?

That's a pretty good start, maybe we could add a few questions on how you used these various tools.

Have you ever...

  1. Written a program that directly controlled objects in the physical world?
  2. ...did you ever injure anyone with a bug?
  3. ...other than yourself?
  4. Written software for internal business use?
  5. Written software that was sold at retail?
  6. Written software that sends email?
  7. ...did it ever send thousands of messages due to a bug?
  8. ...outside the organization you were working at?
  9. Programmed in a language of your own design?
  10. ...did anyone else ever use your language?
  11. ...did it become a de-facto standard?
  12. ...or an ISO or ECMA standard?
  13. Written a compiler?
  14. ...not as an assignment for a class?
  15. ..."by hand" (without using lex/yacc or related tools)?
  16. Created self-modifying code?
  17. Written code that modifies some other program's binary?
  18. Written self-reproducing code?
  19. ...without it getting away from you?
  20. Changed the class of an object at runtime?
  21. ...in a language without dynamic dispatch?
  22. Created a program that took longer to run (once) than it did to write?
  23. ...while running on a cluster of computers?
  24. ...or a conventional supercomputer?

I seem to have run out of ideas. Suggestions for additional questions would be greatly appreciated. A traditional Purity Test would have 100 questions, so you could easily generate a percentage score.

For what it's worth, I scored 32/44, or about 27% pure. I think that probably indicates that the test is a little too focused on my own experiences. Send me your questions, and I'll work up a better list...