Leave a comment

yatur March 7 2018, 04:48:03 UTC
Я читал ленту сплошняком, не заметил, кто автор, и решил, что тебе, наверное, это будет интересно почитать. Но уже поздно. Разве что, в интересах Тьюринг-полноты ты не читаешь собственных постов :)

Бесконечность во всех ее проявлениях вообще коварная штука. Замечание про 64-битный С очень верное. А вот насчет невозможности написать на С тотальную функцию сложения натуральных чисел я не совсем понял. Что такого волшебного может Хаскель, что не может С, даже при условии, что "мы используем только память"?

Reply

aklepatc March 7 2018, 13:34:34 UTC
Я даже не понял, почему стандартный C - Turing complete. Память то всё равно конечна.
Для меня находка автора в том, что не всякий "настоящий" язык должен быть Turing complete.
Наивная идея, которая у многих осталось со школы. Приятно подкорректировать собственное укоренившееся заблуждение.

Reply

yatur March 7 2018, 15:06:03 UTC
Стандартный С может лезть на диск, который потенциально бесконечен. Реализовать ленту можно операциями fseek() со смещением 1 и -1

Reply

aklepatc March 7 2018, 15:18:11 UTC
Кажется, должно быть что-то ещё (другое)... Ведь потенциально бесконечный (на самом деле конечный) диск концептуально ничем не отличается от "очень большой" (на самом деле конечной) памяти.

Reply

yatur March 7 2018, 15:37:08 UTC
В С - принципиально отличается. Нельзя же nponeccop пишет про размер указателя.

Во всяких си-шарпах, джавах и джаваскриптах указатели неявные. Теоретически их можно реализовать как угодно, хоть строкой переменного размера. Впрочем, в C# есть IntPtr.Size, но это скорее нужно для общения с миром С, и если его выкинуть, мало что изменится.

В С указатели - это по определению целые числа фиксированной битности. sizeof(int*) не может меняться в рантайме. Поэтому память в С принципиально конечна. А диск нет - можно открыть себе текстовый файл и писать в него сколько влезет, ничто не мешает ему быть больше максимального размера, адресуемого указателем.

Reply

aklepatc March 7 2018, 15:46:55 UTC
Разумно. Спасибо!

Reply


Leave a comment

Up