Математики и программирование

Jan 27, 2020 09:49

Незадолго до появления реального программирования ряд математиков уже начал мечтать о нём. И фантазировать, как оно могло бы быть устроено ( Read more... )

наука, философия

Leave a comment

ext_2568477 January 27 2020, 08:46:14 UTC
Насколько я понимаю вся идея с Тьюринг-машиной не в том чтобы на ней что-либо запускать, а использовать её в качестве простой математической модели, и потом просто строить изоморфизм между ТМ и реальными процессорами/байткодом и т.д.
Т.е. можно было бы в принципе не полениться и доказать что есть такие функции на условной Scala, для которых невозможно определить войдет ли она в бесконечный цикл - но вместо этого можно доказать что (упрощенно):
1. код Скалы компилируется на JVM
2. интерпретатор байткода JVM (опять же, упрощенно) эквивалентен машине Тьюринга
3. а для машины Тьюринга мы уже знаем про halting problem
Таким образом мы уже сразу же знаем что для кода и на Scala, и на Kotlin, и на Clojure, и на собственно Яве существует halting problem.
Т.е. это абстракция, которая позволяет ленивым программистам - а программист должен быть ленив - без особых усилий рассуждать о возможностях языка, что может быть весьма и весьма полезно при написании DSL и т.д.

Reply

lex_kravetski January 27 2020, 09:16:38 UTC
Любой нормальный язык программирования лучше подходит для рассуждений о языках программирования, чем машина Тьюринга. И его закономерности гораздо проще переносить на другие языки программирования.

Reply

the_cleanser January 27 2020, 10:14:16 UTC
Это чепуха, конечно.
Реальные языки программирования слишком сложны синтаксически, чтобы было возможно строго о них рассуждать.
Но каждый из них сводится к языку МТ, который чрезвычайно прост синтаксически и который, как уже отметили выше, служит прекрасной математической моделью.

Reply

lex_kravetski January 27 2020, 10:42:38 UTC
Но самая чепуха в том, что в двадцать первом веке кто-то всё ещё думает, что «синтаксическая простота» = «простоте анализа» = «простоте использования».

Хотя вроде бы каждый из них давно мог бы попробовать позаниматься математикой при помощи системы обозначений аксиоматики Пеано и быстро понять на собственном примере, что «S(S(S(S(1))))» хотя и выигрывает в «синтаксической простоте» перед позиционной записью чисел, поскольку не содержит этой самой позиционной записи, тем не менее, совсем не проще записи «5». А если в этом вдруг ещё останутся сомнения, то этот человек всё ещё может записать, например, 521 + 32 в аксиоматике Пеано и попробовать глазами проверить, не допустил ли он в этой записи какую-то ошибку.

Не, ну реал, двадцать первый век на дворе, а кто-то всё ещё думает, что «меньше команд» = «проще язык».

Reply

muh2 January 27 2020, 12:42:14 UTC
А так кто-то думает? Ну кроме придуманного Вами гомунклуса?

Reply

muh2 January 27 2020, 12:41:17 UTC
Для рассуждений вообще подходит любой язык. Язык программирования для рассуждений не сильно удобнее машины Тюринга. Русский любой язык программирования в рассуждениях бьет за раз.

А вот для доказательств - машина тюринга вполне удобна.

Reply

lex_kravetski January 27 2020, 13:20:50 UTC
> Язык программирования для рассуждений не сильно удобнее машины Тюринга. Русский любой язык программирования в рассуждениях бьет за раз.

Если кто-то сделает некий «русский язык» с однозначностью трактовок каждой фразы, я тут же порекомендую перейти на него при анализе алгоритмов и т.п.

Reply

muh2 January 27 2020, 15:48:45 UTC
Для "рассуждений о" язык с однозначностью трактовки не только не предпочтителен, а однозначно вреден.

Reply

lex_kravetski January 27 2020, 15:53:50 UTC
Ладно, я уточню: я порекомендую на него перейти инженерам, математикам и программистам. А философам, конечно, гораздо лучше продолжить пользоваться языками с широким простором для неоднозначности и расплывчатости.

Reply


Leave a comment

Up