LINUX.ORG.RU

80 строк на Haskell уделывают в скорости работы сишную портянку

 , ,


2

3

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

Вот сам пост и сурсы:

https://github.com/ChrisPenner/wc



Последнее исправление: riki (всего исправлений: 1)

Многопоточный wc победил однопоточный? Эка невидаль

yoghurt ★★★★★
()

По мне так всё должно через stdin лететь, нафига этот функционал с чтением файла из cat дублировать в каждой корутилине не понятно. А со stdin-ом разницы ощутимой не будет, или Хаскель заметно соснёт. Вот и всё.

kostyarin_ ★★
()

А ещё ширина таба должна быть настраиваемой. Иначе незачёт всем.

kostyarin_ ★★
()
Ответ на: комментарий от RazrFalcon

Браузеры собираются только clang

Они стали настолько жирными, что gcc уже брезгует.

devl547 ★★★★★
()

Мне так никто и не показал пример, где хаскель или лисп эффективнее языка Си. Вот прям в разы чтобы эффективнее было. Если эффект меньше чем в полтора раза, то боюсь я скажу таким фонатегам досвидания. Променять адекватный синтаксис на уродское непойми что ради непонятного неизмеряемого профита??? А еще добавьте сюда отсутствие библиотек, которые никто не спишит писать или биндить под уродские языки...

Согласитесь, что «винда тоже это может», но тем не менее доказать и привести примеры где Linux в большинстве случае лучше оффтопа - возможно, но будет ли это критично для слушателя? Доказать преимущества лиспа-хаски почему то оказывается очень сложно для адептов, хотя понятно что некоторая мало кому нужна гибкость в этих языках есть, что и восхищает его приверженцев. Это я понимаю, но аргументом в пользу перехода на такой языке - не сработает.

Добавлю что мне доказали что есть немало примеров где Python эффективнее и удобнее. Для лиспа-хаски я такого не вижу от слова совсем.

/отбомбило

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 2)
Ответ на: комментарий от I-Love-Microsoft

Мне так никто и не показал пример, где хаскель... эффективнее языка Си...

А теперь давай немного изменим твою фразу (в противовес хаскелю):

Мне так никто и не показал пример, где Java или C++ эффективнее языка Си. Вот прям в разы чтобы эффективнее было. Если эффект меньше чем в полтора раза, то боюсь я скажу таким фонатегам досвидания. Променять адекватный синтаксис на уродское непойми что ради непонятного неизмеряемого профита??? А еще добавьте сюда отсутствие библиотек, которые никто не спишит писать или биндить под уродские языки

Как бы, уродский синтаксис и отсутствие библиотек - это вообще не проблема, стерпится-слюбится. Жава тоже была ужасна и тоже не имела библиотек, и ниче, язык подрихтовали чутка, библиотеки написали.

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

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

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

byko3y ★★★★
()

Конечно приятны! Не чаще чем раз в месяц какому-то фрику ценой титанических усилий удаётся уделать код на нормальном языке который даже не пытались оптимизировать. Это отлично демонстрирует всю суть академических недоязычков.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

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

Отличная история, но у меня есть вопрос: ты вообще читал исходники Си версии wc? Два разных цикла исполнения, буфера тебя не смущают, не?

byko3y ★★★★
()
Ответ на: комментарий от byko3y

Я вот кстати был приятно удивлен OCaml (и его припудреной для современного человек версией ReasonML - машинный код одинаков).

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

Быстрая компиляция и достаточно эффективный нативный код - приятный бонус. Я не очень люблю существующие JIT, вопреки нахваливанию WebAssembly выше. Они обычно просто плохо сделаны. Или сделаны в духе «не стреляйте в музыкантов, они играют как умеют, учитывая жир который мы уже вложили в язык». На wasm возлагаю надежды, потому что список требований хороший. Возвращаясь к OCaml - эффективный натив с нормальными императивными массивами и без тормозящей ленивости.

Не могу тоже не ассоциироват это с Go от функционального программирования. Мне уже поздно судить, но если не разбираться в ФП совсем, но может через OCaml - самый короткий путь. ФП уже конечно везде есть в разной мере.

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 3)
Ответ на: комментарий от vertexua

Я вот кстати был приятно удивлен OCaml (и его припудреной для современного человек версией ReasonML - машинный код одинаков).

Да много кто лежит между этими крайностями. Все варианты ML, тот же Elm, производный от хаскеля, или clojure, производная от лиспа, или упомянутый в соседнем треде Racket, в котором гибкость более упорядочена, чем в лиспе. Только наглухо отбитые создатели хаскеля решиил, что будет очень круто сделать ленивость по умолчанию - а это, по сути, гарантирует, что язык никогда не получит значительного прикладного применения. Грубо говоря, хаскель - это ML, доведенный до абсурда.

Не могу тоже не ассоциироват это с Go от функционального программирования. Мне уже поздно судить, но если не разбираться в ФП совсем, но может через OCaml - самый короткий путь. ФП уже конечно везде есть в разной мере.

Короткий путь куда? Грубо говоря, чем отличается окамль от какого-нибудь жавоскрипта? Наличием вывода типов и статической типизацией, более выраженным ограничением области видимости символов. Вот, собсна, и вcё отличие. Потому ReasonML так просто компилируется в JS. Так-то в JS нет никаких проблем в работе с функциями, частичном применении аргументов, создании замыканий.

byko3y ★★★★
()

Прошу прощения, что не совсем по теме. А кто-нибудь в курсе про «царя», ну там, сколько лет, где работает? Интересно, это правда профи из профи, или только писатель на форуме/блоге.

rumgot ★★★★★
()
Ответ на: комментарий от rumgot

Интересно, это правда профи из профи, или только писатель на форуме/блоге.

Я сомневаюсь, что профи из профи стал бы целыми днями сидеть и срать на лоре и хабре. Но с C/C++ он знаком, бесспорно.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

Некоторые всё успевают. На то он и царь :)

rupert ★★★★★
()
Ответ на: комментарий от fsb4000

Вопрос не в однопотоке, вопрос в оптимизации сишного кода под доисторическое железо. wc это не то место где многопоток сможет себя проявить.

cvv ★★★★★
()

Культ скорости имеет смысл в том случае, если у погромиста руки прямые. Если же нет - то и на асме можно тормоза склепать.

Zhbert ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.