Size: a a a

Compiler Development

2020 February 21

p

polunin.ai in Compiler Development
Кстати а откуда Ава взята?
источник

FO

FORTRAN ONE LOVE in Compiler Development
Михаил Бахтерев
А... Я лихорадочно вспоминал протоколы обмена :) Пищалок, думаю, нет. Там какая-то плотная серверная упаковка этих нодов. Да и толку-то от пищалок, когда от вентиляции ничего не слышно
А вот если их много...))))
Ну ладно. Я просто думаю, где бы потестить мультинодовый аудиоплеер на mpi :)
источник

МБ

Михаил Бахтерев in Compiler Development
FORTRAN ONE LOVE
А вот если их много...))))
Ну ладно. Я просто думаю, где бы потестить мультинодовый аудиоплеер на mpi :)
Можно кластерочек собрать из ROCK64.

https://www.picocluster.com/
источник
2020 February 22

VK

Vladimir Kazanov in Compiler Development
Andrew Rudenko
LISP — это про синтаксис. Про reader + macroses VS parsers. Все. LISP, действительно, очень мощный, но относительно *синтаксиса*. Синтаксическая мощность никак (кроме как с точки зрения синтаксиса, конечно) не помогает тебе в имплементации ООП. Вот и все, а дальше языки с LISP синтаксисом имеют совершенно разные ограничения.

В LFE — мутабельность возможна только в рамках эктора (ООП в чистом виде, к слову), clojure тоже возводит вопрос иммутабельности в абсолют и разрешает ее только в рамках atom и STM, scheme и CL пытаются дать мощность не только синтаксическую, но и рантаймовую, но это не про LISP на самом деле.
В смысле? Вы терминологию не путаете? Самые развитые системы ООП были именно в рамках лиспов. И именно свободно меняемая семантика, а не дубовый скобочный синтаксис, делают лиспам популярность в среде языковедов.
источник

VK

Vladimir Kazanov in Compiler Development
Peter Sovietov
Мне кажется, автор слишком сгустил краски. Да, тут типичный случай "сектантского" ЯП, и та же ситуация, например, имеет место в Форте. При этом и сам язык ведь влияет на поведение разработчиков, действительно провоцирует поведение "фрика". Никто бы не стал возиться в очередной раз с бесконечными реализациями ООП, ПМ или ленивыми вычислениями, если бы эти реализации были тривиальными, в этом ведь нет спортивного интереса.

Но самое лучшее, что случилось с Лиспом -- появление Scheme. И дело не конкретно в Scheme, а в том, что Стил и другие авторы показали путь развития Лиспа -- с помощью переосмысления прошлого и на основе создания новых, более изящных и выразительных лисп-подобных языков. Без Scheme не было бы упора метаязыковую абстракцию, языково-ориентированное программирование, не было бы компиляторной школы Стила, Дибвига и других, не было бы Nanopass и PLT Redex. Все это, утрируя, сделали отнюдь не ретрограды -- любители лисп-машин, любители писать все исключительно в S-expr, любители Common Lisp и Emacs.
А я вот одновременно и люблю лисп как программист, и терпеть не могу лисп как читатель чужого кода :-)

Петр, вы иногда меня прям удивляете :-) ну то есть я люблю лиспы, и особенно схему, и особенно работу Дибвига, но то я, у меня от емакса руки и мозг  давно сломались!
источник

VK

Vladimir Kazanov in Compiler Development
Они же все используют CPS и совершенно дикие варианты распределения регистров!
источник

DF

Dollar Føølish in Compiler Development
А какие это варианты?
источник

PS

Peter Sovietov in Compiler Development
Vladimir Kazanov
А я вот одновременно и люблю лисп как программист, и терпеть не могу лисп как читатель чужого кода :-)

Петр, вы иногда меня прям удивляете :-) ну то есть я люблю лиспы, и особенно схему, и особенно работу Дибвига, но то я, у меня от емакса руки и мозг  давно сломались!
А что я такого сказал? :) Не вижу пока что предмета спора :)
источник

MM

Mikhail Maltsev in Compiler Development
Vladimir Kazanov
В смысле? Вы терминологию не путаете? Самые развитые системы ООП были именно в рамках лиспов. И именно свободно меняемая семантика, а не дубовый скобочный синтаксис, делают лиспам популярность в среде языковедов.
По поводу синтаксиса: думаю речь о том, что дубовый скобочный синтаксис позволяет работать лисповым макросам: ведь это фактически AST- преобразовали, а когда исходный код программы и AST - считай одно и тоже, писать такие преобразователи просто. К примеру в Java и или C# нужно знать API для reflection. В Scala макросы это вообще пользовательские callback-и, которые  вызываются компилятом. А вот в lisp для написания макроса достаточно знания того что такое s-expression, ну и сам lisp.
источник

DP

Dmitry Ponyatov in Compiler Development
Михаил Бахтерев
Ну... Это вообще особое искусство. Да ладно... Чего уж там. Нам вон притащили новые узлы в кластер, так там через MPI и Infiniband память копируется быстрее, чем через memcpy. И как с этим жить?
там подстановка страниц в разные адреса, и copy-on-write через DMA работает?
источник

МБ

Михаил Бахтерев in Compiler Development
Dmitry Ponyatov
там подстановка страниц в разные адреса, и copy-on-write через DMA работает?
Не знаю. Я не разбирался. CoW вполне возможен
источник

AT

Alexander Tchitchigin in Compiler Development
источник

DP

Dmitry Ponyatov in Compiler Development
а для FPGA акселераторов или внешних железок кто-то HLS-компиляторы пилит? может публикации есть какие почитать?
источник

VK

Vladimir Kazanov in Compiler Development
Peter Sovietov
А что я такого сказал? :) Не вижу пока что предмета спора :)
да я просто удивляюсь, что вы всех их знаете 😊 Ну, Стил еще куда ни шло...
источник

МБ

Михаил Бахтерев in Compiler Development
Mikhail Maltsev
По поводу синтаксиса: думаю речь о том, что дубовый скобочный синтаксис позволяет работать лисповым макросам: ведь это фактически AST- преобразовали, а когда исходный код программы и AST - считай одно и тоже, писать такие преобразователи просто. К примеру в Java и или C# нужно знать API для reflection. В Scala макросы это вообще пользовательские callback-и, которые  вызываются компилятом. А вот в lisp для написания макроса достаточно знания того что такое s-expression, ну и сам lisp.
Дело не только в макросах, а в том, что практически произвольная семантическая конструкция легко вписывается в синтаксис (точнее в его отсутствие). Чтобы воткнуть конструкцию в Scala надо очень крепко задуматься о том, как она будет взаимодействовать с другим синтаксисом, а в Lisp это делается, "не приходя в сознание".

Плохо это или хорошо - не знаю. Мы платим за это скобками. Но это точно быстро и эффективно во многих случаях.
источник

VK

Vladimir Kazanov in Compiler Development
Михаил Бахтерев
Дело не только в макросах, а в том, что практически произвольная семантическая конструкция легко вписывается в синтаксис (точнее в его отсутствие). Чтобы воткнуть конструкцию в Scala надо очень крепко задуматься о том, как она будет взаимодействовать с другим синтаксисом, а в Lisp это делается, "не приходя в сознание".

Плохо это или хорошо - не знаю. Мы платим за это скобками. Но это точно быстро и эффективно во многих случаях.
Я о том и говорю  что синтаксис в лиспах простейший, а семантика гибкая, за что их и любят (и ненавидят) :-)
источник

AT

Alexander Tchitchigin in Compiler Development
Vladimir Kazanov
Я о том и говорю  что синтаксис в лиспах простейший, а семантика гибкая, за что их и любят (и ненавидят) :-)
В широких пределах, семантику можно гнуть подобным же образом почти во всех динамических языках, отчего и говорят про "Python/Ruby/etc. is a viable Lisp" (про Python ляпнул Норвиг).
Проблема в том, что только очень малое подмножество возможных семантик делает что-то полезное и понятное, да ещё и так чтобы не ломать уже имеющуюся семантику. Поэтому расширять язык реально новыми семантическими кострукциями реально сложно. Если это сделать легко (в смысле "approachable" что не уменьшает внутренней сложности вопроса) - это приводит только к повсеместному распространению неудачных расширений. На что, по сути, и жаловался автор упомянутого блог-поста.
источник

AT

Alexander Tchitchigin in Compiler Development
В этой связи забавно было прочитать его характеристику системы типов Qi как более мощной, чем у Haskell, поскольку она Тьюринг-полная. Эта самая "толпа академиков", разрабатывающих Haskell тем и занимается, чтобы придумывать как бы не сделать систему типов Тьюринг-полной. 😃
Оно, конечно, широко известно, что с задачей они не справились, но это говорит о сложности задаче, а не о недостатке квалификации "академиков". 😂
источник

VK

Vladimir Kazanov in Compiler Development
Alexander Tchitchigin
В широких пределах, семантику можно гнуть подобным же образом почти во всех динамических языках, отчего и говорят про "Python/Ruby/etc. is a viable Lisp" (про Python ляпнул Норвиг).
Проблема в том, что только очень малое подмножество возможных семантик делает что-то полезное и понятное, да ещё и так чтобы не ломать уже имеющуюся семантику. Поэтому расширять язык реально новыми семантическими кострукциями реально сложно. Если это сделать легко (в смысле "approachable" что не уменьшает внутренней сложности вопроса) - это приводит только к повсеместному распространению неудачных расширений. На что, по сути, и жаловался автор упомянутого блог-поста.
Не понимаю про "гнуть". Питон и руби вообще сколь угодно строгой семантикой вроде не обладают. Для схемы же сто лет в обед как все есть :-)

Если же говорить про лёгкость внесения новых конструкций, удачных или нет, то проблема ж не в удачности, а в том, что разные программы, в сущности, пишутся на разных языках, и чисто по-программистски тяжело так работать.
источник

VK

Vladimir Kazanov in Compiler Development
Alexander Tchitchigin
В этой связи забавно было прочитать его характеристику системы типов Qi как более мощной, чем у Haskell, поскольку она Тьюринг-полная. Эта самая "толпа академиков", разрабатывающих Haskell тем и занимается, чтобы придумывать как бы не сделать систему типов Тьюринг-полной. 😃
Оно, конечно, широко известно, что с задачей они не справились, но это говорит о сложности задаче, а не о недостатке квалификации "академиков". 😂
Я тут с вами согласен. Полагаю, проблемы здесь те же самые, что и с лиспами и их гибкостью
источник