Size: a a a

Compiler Development

2019 September 29

МБ

Михаил Бахтерев in Compiler Development
Peter Sovietov
В embedded, конечно, есть реализации ФЯ, но погоды это не делает. Мне кажется, в какой-то момент полезно перейти от уровня парадигм программирования к формализмам и моделям из предметной области. При этом не вижу особой пользы в привязывании этих моделей и формализмов к конкретным ООП и ФП. Зачем ставить эти самые ФП и Ко во главу угла при формализации практических задач? Это часто затеняет, усложняет изначально простые понятия и подходы.

Раз уж речь пошла о встраиваемых системах, давайте откроем один из солидных учебников -- Embedded System Design Питера Марведеля. Там есть очень хороший раздел на тему спецификаций и моделей. Никакого ФП нет просто потому, что речь идет о конкретной предметной области. Реплика в духе "а в ФП тоже можно" -- специалистов из этой области совершенно не удовлетворит :)
Потому что функции - это естественный язык для математики, то есть, для формализации. Я же говорю, что программировать можно хоть на ассемблере. Дело в том, как описывать систему.
источник

AT

Alexander Tchitchigin in Compiler Development
Andrei Kurosh
кстати говоря об абстракциях - а разве ФП-языки могут обходиться без сборщика мусора?
Судя по мейнстримным ООП языкам - они тоже не могут... 😉
источник

PS

Peter Sovietov in Compiler Development
Михаил Бахтерев
Потому что функции - это естественный язык для математики, то есть, для формализации. Я же говорю, что программировать можно хоть на ассемблере. Дело в том, как описывать систему.
Графы — тоже язык математики. Сети Петри, SDF-процессы и проч. — тоже математика.
источник

AT

Alexander Tchitchigin in Compiler Development
Помню, один из конкурсантов одного из конкурсов журнала ПФП прислал решение на Common Lisp, основанное на макросах, которые разворачивались в tight loops без аллокаций в куче - всё работало без GC, соответственно.
источник

МБ

Михаил Бахтерев in Compiler Development
Peter Sovietov
Графы — тоже язык математики. Сети Петри, SDF-процессы и проч. — тоже математика.
Да, но это всё описывается функциями.
источник

AK

Andrei Kurosh in Compiler Development
При большом желании можно описать функциями абсолютно все
источник

PS

Peter Sovietov in Compiler Development
Михаил Бахтерев
Да, но это всё описывается функциями.
А множества еще фундаментальнее :)
источник

AT

Alexander Tchitchigin in Compiler Development
Peter Sovietov
Графы — тоже язык математики. Сети Петри, SDF-процессы и проч. — тоже математика.
Тут ещё одно условие требуется - чтобы перенести модель на компьютер без реинжениринга, модель должна обладать вычислительной семантикой. У большинства перечисленных моделей с этим не очень хорошо.
источник

МБ

Михаил Бахтерев in Compiler Development
Peter Sovietov
А множества еще фундаментальнее :)
До сих пор спорят, что фундаментальнее. Но особенность в том, что с функциями мы можем более менее адекватно программировать, а со множествами - не очень.
источник

AT

Alexander Tchitchigin in Compiler Development
Peter Sovietov
А множества еще фундаментальнее :)
Современные специалисты по основаниям математики с Вами не согласятся. 😉
источник

PS

Peter Sovietov in Compiler Development
Alexander Tchitchigin
Тут ещё одно условие требуется - чтобы перенести модель на компьютер без реинжениринга, модель должна обладать вычислительной семантикой. У большинства перечисленных моделей с этим не очень хорошо.
А как же тогда работают синхронные языки? :)
источник

AT

Alexander Tchitchigin in Compiler Development
Peter Sovietov
А как же тогда работают синхронные языки? :)
Я не знаю, что такое "синхронные языки". 😊
источник

PS

Peter Sovietov in Compiler Development
Михаил Бахтерев
До сих пор спорят, что фундаментальнее. Но особенность в том, что с функциями мы можем более менее адекватно программировать, а со множествами - не очень.
Особенность как раз в том, что создания программно-аппаратной системы, которая работает в реальном времени, ни то, ни другое не является адекватным формализмом. Есть же колоссальная разница между можно описать и — нужно. И разница эта ощущается именно при практической деятельности, при конструировании систем.
источник

МБ

Михаил Бахтерев in Compiler Development
Peter Sovietov
Особенность как раз в том, что создания программно-аппаратной системы, которая работает в реальном времени, ни то, ни другое не является адекватным формализмом. Есть же колоссальная разница между можно описать и — нужно. И разница эта ощущается именно при практической деятельности, при конструировании систем.
Ну, для этого нужны процессы. Но часть концепции процесса - это функциональное изменение состояние. Однако, чем меньше процессов в системе, тем лучше, мне кажется. Процессы вносят хаос.
источник

AT

Alexander Tchitchigin in Compiler Development
Peter Sovietov
Особенность как раз в том, что создания программно-аппаратной системы, которая работает в реальном времени, ни то, ни другое не является адекватным формализмом. Есть же колоссальная разница между можно описать и — нужно. И разница эта ощущается именно при практической деятельности, при конструировании систем.
В таком обобщённом виде Ваш аргумент можно использовать и для пропаганды ФП: то что всё можно описать на Ассемблере не значит, что так и нужно делать! Haskell намного лучше! 😉
источник

PS

Peter Sovietov in Compiler Development
Михаил Бахтерев
Ну, для этого нужны процессы. Но часть концепции процесса - это функциональное изменение состояние. Однако, чем меньше процессов в системе, тем лучше, мне кажется. Процессы вносят хаос.
Я просто еще раз предлагаю посмотреть, что пишут в соотв. учебниках по electronic/embedded system level design. С этим можно не соглашаться, но именно так сейчас создают спецификации и модели для hw/sw систем.
источник

МБ

Михаил Бахтерев in Compiler Development
Haskell хуже ассемблера! В ассемблере всё понятно. А в Haskell полиморфизм с неявными параметрами. :)
источник

МБ

Михаил Бахтерев in Compiler Development
Peter Sovietov
Я просто еще раз предлагаю посмотреть, что пишут в соотв. учебниках по electronic/embedded system level design. С этим можно не соглашаться, но именно так сейчас создают спецификации и модели для hw/sw систем.
Так я и смотрю. Они пишут о процессах. RTL какое-нибудь - это в чистом виде процессы. Но для математического описания процесса, нужны функции. Машина состояний - это функция.
источник

AG

Alex Gryzlov in Compiler Development
функция но непрозрачная
источник

AG

Alex Gryzlov in Compiler Development
теряется композабельность
источник