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...

4 comments:

Martina said...

Some ideas:
Did you ever damage a piece of hardware with a program that you have written?
Did you ever write software that run on (the processor of) a peripheral device?
Have you been able to recognize which compiler was used to write a program just by looking at its disassembly?
Have you ever written code that stopped working at a certain date? Unintentionally? Not a Y2000 bug?
Did you ever patch a binary by hand?

Berle said...

- Have you ever reverse engineered a program?
- ...into source code that did compile?
- Have ever designed a copy protection scheme?
- ...that tries to hinder others from reverse engineering it?
- Have you ever hacked a system/device so that it does something it was not intended for?
- was the unintended use something the vendor was explicitly trying to keep you from doing?
- Have you ever discovered a security hole?
- ...written an exploit for it?

Mark Bessey said...

Thanks, these are great.

Brandon Craig Rhodes said...

A very similar list that you will love looking at was a popular item on USENET newsgroups and FTP textfile sites through the 1980s. It weighs in at a bit longer than your attempt here — for example, it followed your question about self-modifying code with the brilliant follow-up, “[But] are you proud of it?”

Enjoy!

http://www.armory.com/tests/hacker.html