Hacker News new | ask | show | jobs
by ectoplasm 3974 days 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-...

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

1 comments

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

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