Русскоязычное программирование

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Русскоязычное программирование » система типов » Лямбды против всех


Лямбды против всех

Сообщений 1 страница 7 из 7

1

Уткин говорит, что лямбды это сахар, МихалНик говорит, что лямбды ненужные. Всё было не так!

AveNat написал(а):

Алонзо Чёрч - изобрёл λ-исчисление

AveNat написал(а):

в середине 60-х Питер Ландин не отметил, что сложный язык программирования проще изучать, сформулировав его ядро в виде небольшого базового исчисления, выражающего самые существенные механизмы языка и дополненного набором удобных производных форм, поведение которых можно выразить путем перевода на язык базового исчисления. В качестве такой основы Ландин использовал лямбда-исчисление Чёрча. (https://habrahabr.ru/post/215807/)

AveNat написал(а):

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

AveNat написал(а):

Булевы константы, оператор If (https://habrahabr.ru/post/215991/), числа Чёрча, сложение, умножение

в википедии ещё есть вычитание ("Вычитание придумал Клини, когда ему вырывали зуб мудрости").

Отредактировано Лис (2018-01-30 00:00:58)

0

2

Всё было не так!

Не важно как оно было. Важно как есть сейчас.

что сложный язык программирования проще изучать,

В результате народ отказался от сложных языков (не считая гиков типа хаскеловцев) и использует легкие. Поэтому такое усложнение не оправдано. Мало того что нужно знать программирование, всякие семантики, грамматики, так теперь еще и лямбда-исчисление. А для чего? Как всегда у Лиса конечная цель не ясна.

в википедии ещё есть вычитание

А синус? Хочу синус! А операцию определения числа символов в строке? А операцию остатка от деления нацело? Понимаете, в мое время недостижимыми мечтами были космос и компьютеры. Сейчас так устроено (блин ну как тут без политики?) в нашей стране, что у людей потеряны ориентиры. Вот Вы нашли свою романтику, а я хочу практической значимости инструмента. Не мечтать - ах, как элегантна запись в лямбдах! А практический результат от их применения. В практическом результате я жду упрощения написания языков программирования. Чтобы вот не парясь оперировать такими категориями, которые позволяли писать даже не программы, а информационные системы. То что Вы предлагаете это получить кандидатскую по вычислительной математике причем всем языкописателям. При этом я не вижу главной цели. Выработать аппарат - для чего? Для того чтобы было еще сложней? М-мм, в то время как у нас нет вообще в принципе своего языка, давайте как усложним процесс еще больше, ага. Очень удачное предложение практического характера.

Отредактировано utkin (2018-01-30 08:27:22)

0

3

За последние полгода обнаружено минимум три транспилятора из русскоязычного синтаксиса куда-нибудь (1Скрипт, Яр и ещё какой-то там с синтаксисом 1С, не вспомню с хода, но на этом форуме он упоминался).

Значит в целом русскоязычные программисты метод рекурсивного спуска освоили.
Теперь имеет смысл договариваться об общем промежуточном представлении
и делать один общий бэкэнд (по аналогии с llvm).

Отредактировано Лис (2018-01-30 09:18:42)

0

4

Зачем? Рекурсивный спуск это процесс построения и обхода дерева :). Зачем к нему нужны лямбды? Опять какой-то бесконечный процесс ради процесса. Где свет в конце тоннеля, где пустые обещания улучшения труда программистов? А давайте слону вместо хобота хвост от страуса пришьем! Ну круто же! А зачем? Да, погоди ты, вон какая красота!
Да и ответа по-прежнему нет, а дьявол кроется в деталях - хочу лямбда-синус! Вы говорите, что это перспективно (модное слово, означающее возможность, но не гарантирующее реальность проекта), хорошо, давайте аппарат целиком так сказать. Сгенерируйте синус в лямбда исчислении. А потом напишите инструкцию, которая позволяла бы не искать операции в инете, а самостоятельно из лямбд выводить описание этих всех кошерных вещей типа тригонометрии, строковых операций и вообще всего, что отличается от х + у. И чтобы эта инструкция была понятна хотя бы Уткину (как критерий порога вхождения - уже если я пойму, то другие точно поймут :) ), а не только профессору математических наук, практикующем где-нибудь в Оксофорде.

Отредактировано utkin (2018-01-30 09:31:51)

0

5

Лис написал(а):

МихалНик говорит, что лямбды ненужные. Всё было не так!

Именно. МихалНик говорил, что обозначения непригодные. Потому что сперва надо описывать структуру данных, а не терминологию, натянутую на несколько рандомно выбранных значков.
Ещё может добавить, что и неэффективные.
Возможно, Лис там же по ссылке не дочитал:

Они будут достаточно громоздкими, но, как уже говорилось, λ-исчисление предназначено не для написания программ, а для исследования и спецификации языков программирования и систем типов.

Т.е. вместо какого-нибудь Бякуса. Не для написания программ.

0

6

Булевы константы, оператор If (https://habrahabr.ru/post/215991/), числа Чёрча, сложение, умножение

Вот читаю я это и что же там вижу?

tru = λt.λf.t

Мы лямбде присваиваем имя. Ну и все - последнее для чего это было нужно (безымянность функции) убито напрочь.
Итого из минусов:
1) Невыражаемый синтаксис. Имеется ввиду на электронных устройствах, потому что для этого нужно нестандартные средства (вроде как клавиатуры для языка APL) как минимум ввода. Писать lambda (x, y) {x + y} вообще ничем не отличается от add (x, y) {x + y}
2) Матан требующий отдельного курса. Причем явно не школьного. При этом тот же критикуемый БНФ воспринимается лучше, чем лямбды.
3) Отсутствие простых и четких инструментов (кроме неокрепшего мозга испытуемого), позволяющих проводить работы с лямбдами.
4) Нестандартный синтаксис, неочевидный для большинства человекоподобных:

f = λx.λy.t

Это объявление функции. Если это лучше, чем стандартное f(x, y){t - тело цикла}, ну не знаю. Зачем вводить новые определения, когда успешно работают старые?

0

7

Алонзо Чёрч - изобрёл λ-исчисление

А его ровесник - Андрей Андреевич Марков:

И есть соответствующий ему Рефал, разработанный Турчиновым:

РЕФАЛ (РЕкурсивных Функций АЛгоритмический) — один из старейших функциональных языков программирования, ориентированный на символьные вычисления: обработку символьных строк (например, алгебраические выкладки); перевод с одного языка (искусственного или естественного) на другой;

Документация по-русски явно имеется и, скорее всего, даже описание качественнее.
Тогда почему мы должны ковыряться в блямбдах? Чем они лучше? Ну если формально разницы нет - то от Рефала, наверное, хотя бы можно добиться релевантных сслылок, академические связи, научные статьи, даже стипендии и награды не выходя из русскоязычной среды.

Отредактировано MihalNik (2018-01-30 21:30:52)

0


Вы здесь » Русскоязычное программирование » система типов » Лямбды против всех