| There is a binary test for a programmer: someone with basic proficiency in a Turing-complete language. I like this answer on SO about what that is: https://programmers.stackexchange.com/questions/132385/what-... > In general, for an imperative language to be Turing-complete, it needs: 1. A form of conditional repetition or conditional jump (e.g., while, if+goto) 2. A way to read and write some form of storage (e.g., variables, tape) For a lambda-calculus–based functional language to be TC, it needs: 1. The ability to abstract functions over arguments (e.g., lambda abstraction, quotation) 2. The ability to apply functions to arguments (e.g., reduction) -- Note that you can be a programmer without ever having touched a computer, people have been coming up with algorithms and integrating them into systems for ages. |
Slightly different, but the first episode of SICP videos helped me to reach the same conclusion:
https://www.youtube.com/watch?v=2Op3QLzMgSY
We can even say Newton, or Euclid wrote programs. Maybe not by sitting in front of a computer, but they described a process to calculate something.