4 ms·
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://pr
by ectoplasm 11y ago
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-makes-a-language-turing-complete 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.
- sepeth 11y ago> 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 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.
- dalke 11y ago"... wrote programs". I think it's better to say they wrote algorithms. A program is an algorithm instantiated for use by a machine, which might be analog or digital. I can accept the argument that a human following an algorithm emulates a machine, but I consider it an imperfect analogy.