Информация об изменениях

Сообщение Re: Для чего нужно лямбда-исчисление? от 03.08.2024 18:57

Изменено 03.08.2024 19:02 vdimas

Re: Для чего нужно лямбда-исчисление?
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>Существуют математики, существуют программисты. У первых это исчисление и TeX для того, чтобы в нём писа́ть,

ЭФ>а у вторых есть машины Тьюринга, Поста, которые полностью этому лямбда-исчислению эквивалентны,
ЭФ>и позволяют всё программировать на мейнстримной сишечке (ну или на упоротый случай на расте).

Мы ж не программируем в машине Тьюринга, мы пишем функции/методы. ))
Ты бы задолбался машину Тьюринга прогать.


ЭФ>Математикам очень хочется денег, и поэтому они настаивают именно на своём синтаксисе в "научных" статьях.


Синтаксис там минимальный, как любят математики.


ЭФ>Хотя так-то синтаксис программистов лучше (и это доказывается практикой ИТ).


Возможно.
Чёрч разработал эту нотацию до завоевания популярности Си-подбного или ML-подобного синтаксиса в ЯП.

На деле там достаточно простое отображение в привычный синтаксис, например в C#:
Л.И.:
(/xy.x+y) 42 43

Шарп:
((x, y) => x + y)(42, 43)

или, более педантично:
(но, увы, уже в типах и промежуточных переменных, бо сыроват до сих пор)
var xy = ((int x) => (int y) => x + y);
xy(42)(43);


ЭФ>Если бы математики были бы правы, то лисп бы всех зарулил.


Убогость Лиспа была связана с необходимостью достаточно быстрого его интерпретирования на технике конца 50-х.


ЭФ>Но нет, его в курсах MIT заменили на Python.


Давно пора.


ЭФ>Это о многом говорит. Или должно говорить.


Ес-но.

Хотя, Питон тоже гавнецо, но всяко лучше Бейсика.

Я пока не вижу достаточно удачного языка для начала обучения программированию.
Паскаль тоже донельзя дебильный — писать кучу "шапочного" объявления, заранее планировать, какие переменные могут понадобиться и заранее их объявлять.
Это всё сплошная тухлятина прямиком из 50-х, из Алгола.

Если бы чуть осовременить Фортран — было бы самое то.
(совместить объявление переменных и инициализацию их значениями, разрешить рекурсию, чуть упростить запись end type MyType и других аналогичных выражений до простого end)

Потому что совсем простые ЯП, типа Бейсика или Лого не тянут на язык для студентов, в лучшем случае как язык для школьников 5-8-х классов.

Я когда-то своих обучал программированию в их 15 лет, показал язык что-то типа осовремененного Лого — им хватило разобраться и начать писать минут через 10, хотя до этого не вникали ни в один ЯП и вообще этой темой не интересовались. А тут полюбопытствовали.

В итоге, "потолок" языка был достигнут за 2 занятия:
https://www.contextfreeart.org/gallery/view.php?id=3143
https://www.contextfreeart.org/gallery/view.php?id=3144

Еще 3 занятия были уже что-то вроде агонии — чувствовалось, что тема выдохлась, уже просто развлечения ни о чём:
https://www.contextfreeart.org/gallery/view.php?id=3145
https://www.contextfreeart.org/gallery/view.php?id=3146
https://www.contextfreeart.org/gallery/view.php?id=3158

Так вот, я так и не сообразил, что им дать для самостоятельного копания далее.

В мою эпоху в старших классах на 8-битных компах можно было хотя бы в видеопамять сразу писать, т.е. хотя бы минимально-примитивные игры можно было писать сходу на коленке, даже можно было генерировать сразу же звук в цикле. А мне для своих пришлось сделать достаточно громоздкую заготовку бойлерплейт-кода ради маленького участка "пишите сюда процедуру рисования".

И особо оно не впечатлило, и после первых экспериментов любопытства и задора далее не вызвало.
Т.е. когда вокруг дохрена непонятного кода, который нужен для запуска небольшого кусочка понятного — это признак нездоровой какой-то херни, конечно.

А со звуком и вовсе уже на совсем другом уровне возились, когда уже в ВУЗ-е учились.
В плане непосредственного контакта со звуком современные архитектуры страшно далеки от народа.

В общем, с одной стороны, моща и удобство компов выросли, но, с другой стороны, комп и ПО для новичков всё более видятся вещами в себе, которые хрен его знает каким таким волшебным образом вообще работают. И куча непонятного бойлерплейт кода для любой примитивщины чуть сложнее "Привет, Мир!" наглухо отбивает позывы к любопытству!

Ну вот на МатЛабе немного повозились еще, но это тоже весчь слишком узкоспецифичная.

В общем, на простейших персоналках из 80-х понять целиком и полностью принцип работы компьютера было элементарно, просто взглянув на схему, прочитав 15 мин вводную и немного попрограммировав.
Сейчас аналогичная глубина понимания достигается за годы близкого общения с техникой.

Я со своими разбирал комп, показывал и на бумажках рисовал, что там вообще унутре происходит.
И что должно произойти, чтобы пиксель засветился или звук появился.

Но одновременно с этим схематично показывал и рассказывал, как оно было на компах моей эпохи, чтобы ответить на немой вопрос "чего так всё мудрёно-то?"
Т.е. вот так — сразу же необходимо было оправдывать неприспособленность современных компов для близкого общения и экспериментов. ))

Питон в этом смысле тут хорош лишь тем, что позволяет обходиться без бойлерплейта.
Но сам язык — полное Г, конечно, еще больше отдаляет студентов от понимания принципов работы техники и ПО на ней.
Re: Для чего нужно лямбда-исчисление?
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>Существуют математики, существуют программисты. У первых это исчисление и TeX для того, чтобы в нём писа́ть,

ЭФ>а у вторых есть машины Тьюринга, Поста, которые полностью этому лямбда-исчислению эквивалентны,
ЭФ>и позволяют всё программировать на мейнстримной сишечке (ну или на упоротый случай на расте).

Мы ж не программируем в машине Тьюринга, мы пишем функции/методы. ))
Ты бы задолбался машину Тьюринга прогать.


ЭФ>Математикам очень хочется денег, и поэтому они настаивают именно на своём синтаксисе в "научных" статьях.


Синтаксис там минимальный, как любят математики.


ЭФ>Хотя так-то синтаксис программистов лучше (и это доказывается практикой ИТ).


Возможно.
Чёрч разработал эту нотацию до завоевания популярности Си-подбного или ML-подобного синтаксиса в ЯП.

На деле там достаточно простое отображение в привычный синтаксис, например в C#:
Л.И.:
(/xy.x+y) 42 43

Шарп:
((x, y) => x + y)(42, 43)

или, более педантично:
(но, увы, уже в типах и промежуточных переменных, бо сыроват до сих пор)
var xy = (int x) => (int y) => x + y;
xy(42)(43);


ЭФ>Если бы математики были бы правы, то лисп бы всех зарулил.


Убогость Лиспа была связана с необходимостью достаточно быстрого его интерпретирования на технике конца 50-х.


ЭФ>Но нет, его в курсах MIT заменили на Python.


Давно пора.


ЭФ>Это о многом говорит. Или должно говорить.


Ес-но.

Хотя, Питон тоже гавнецо, но всяко лучше Бейсика.

Я пока не вижу достаточно удачного языка для начала обучения программированию.
Паскаль тоже донельзя дебильный — писать кучу "шапочного" объявления, заранее планировать, какие переменные могут понадобиться и заранее их объявлять.
Это всё сплошная тухлятина прямиком из 50-х, из Алгола.

Если бы чуть осовременить Фортран — было бы самое то.
(совместить объявление переменных и инициализацию их значениями, разрешить рекурсию, чуть упростить запись end type MyType и других аналогичных выражений до простого end)

Потому что совсем простые ЯП, типа Бейсика или Лого не тянут на язык для студентов, в лучшем случае как язык для школьников 5-8-х классов.

Я когда-то своих обучал программированию в их 15 лет, показал язык что-то типа осовремененного Лого — им хватило разобраться и начать писать минут через 10, хотя до этого не вникали ни в один ЯП и вообще этой темой не интересовались. А тут полюбопытствовали.

В итоге, "потолок" языка был достигнут за 2 занятия:
https://www.contextfreeart.org/gallery/view.php?id=3143
https://www.contextfreeart.org/gallery/view.php?id=3144

Еще 3 занятия были уже что-то вроде агонии — чувствовалось, что тема выдохлась, уже просто развлечения ни о чём:
https://www.contextfreeart.org/gallery/view.php?id=3145
https://www.contextfreeart.org/gallery/view.php?id=3146
https://www.contextfreeart.org/gallery/view.php?id=3158

Так вот, я так и не сообразил, что им дать для самостоятельного копания далее.

В мою эпоху в старших классах на 8-битных компах можно было хотя бы в видеопамять сразу писать, т.е. хотя бы минимально-примитивные игры можно было писать сходу на коленке, даже можно было генерировать сразу же звук в цикле. А мне для своих пришлось сделать достаточно громоздкую заготовку бойлерплейт-кода ради маленького участка "пишите сюда процедуру рисования".

И особо оно не впечатлило, и после первых экспериментов любопытства и задора далее не вызвало.
Т.е. когда вокруг дохрена непонятного кода, который нужен для запуска небольшого кусочка понятного — это признак нездоровой какой-то херни, конечно.

А со звуком и вовсе уже на совсем другом уровне возились, когда уже в ВУЗ-е учились.
В плане непосредственного контакта со звуком современные архитектуры страшно далеки от народа.

В общем, с одной стороны, моща и удобство компов выросли, но, с другой стороны, комп и ПО для новичков всё более видятся вещами в себе, которые хрен его знает каким таким волшебным образом вообще работают. И куча непонятного бойлерплейт кода для любой примитивщины чуть сложнее "Привет, Мир!" наглухо отбивает позывы к любопытству!

Ну вот на МатЛабе немного повозились еще, но это тоже весчь слишком узкоспецифичная.

В общем, на простейших персоналках из 80-х понять целиком и полностью принцип работы компьютера было элементарно, просто взглянув на схему, прочитав 15 мин вводную и немного попрограммировав.
Сейчас аналогичная глубина понимания достигается за годы близкого общения с техникой.

Я со своими разбирал комп, показывал и на бумажках рисовал, что там вообще унутре происходит.
И что должно произойти, чтобы пиксель засветился или звук появился.

Но одновременно с этим схематично показывал и рассказывал, как оно было на компах моей эпохи, чтобы ответить на немой вопрос "чего так всё мудрёно-то?"
Т.е. вот так — сразу же необходимо было оправдывать неприспособленность современных компов для близкого общения и экспериментов. ))

Питон в этом смысле тут хорош лишь тем, что позволяет обходиться без бойлерплейта.
Но сам язык — полное Г, конечно, еще больше отдаляет студентов от понимания принципов работы техники и ПО на ней.