Dmitry
они есть
Dmitry
мутабельность тоже есть
Anonymous
@scaredpepe в чате про C++ ты уже показал насколько ты осведомлен во всем этом. Не надо здесь рассказывать про свое не понимание.
Dmitry
суть хаскеля это, наверное, haskell language report
Dmitry
вы его читали?
Dmitry
не сомневался.
Dmitry
а чему оно равно?
Евгений
Программирование компьютера /= программированию машины тьюринга, дискасс
Dmitry
бгг
Евгений
Компьютер -- линейно-ограниченная машина тьюринга
Dmitry
так чему оно равно?
Евгений
=> Все иммутабельности и прочий тьюринг-фулл бред не нужны
Евгений
/дискасс
Dmitry
@scaredpepe которым обсуждаемый язык, по вашему утверждению, не соответствует. каковое утверждение противоречит и теории, и известным фактам. хочется понять ,почему вы так считаете, например
Dmitry
как осуществить что?
Dmitry
если не можете сформулировать, может быть примеры приведете?
Евгений
Ну вот. Как всегда. Элемир настолько истина в последней инстанции, что с ним даже не спорят
Евгений
ХОТЬ СПЕЦИАЛЬНО ОШИБАЙСЯ
Dmitry
@scaredpepe так вы ж одной фразой не понимаете. я попытался разбить на более простые короткие предложения. впрочем, пустое.
Dmitry
ну, выразимся иначе. хаскель - универсальный язык программирования. вполне практичный и применимый для широкого спектра задач.
Dmitry
как для прикладных, так и для системных.
Nekotari
Я прочитала, если что. Милый холивар, но мне тут кодить надо.
Anonymous
Та чкто ты будешь делать? сама читать книги, блоги, сайты... или напишеш код на руби, и попросиш здесь помощи в написании и объяснении?
Евгений
Ну так это ответ идиота, который не может даже последовательно свои аргументы сформулировать. Вы сами заметили, сто в компе КОНЕЧНОЕ число памяти. Из этого просто заключить, что множество реальных компьютеров и программ над ними лёгко моделируется линейно-ограниченной машиной тьюринга. А значит ЯП не нужны никакие иммутабельности и прочий бред. Даже хаскель излишен, можно всё на mltt хуярить
Dmitry
что бы написать крестики-нолики не нужно читать книги, блоги, сайты.
Dmitry
https://rosettacode.org/wiki/Tic-tac-toe#Haskell
Nekotari
Anonymous
никакие ставки не нужно делать. Не зная хаскел, я и сейчас бы мог написать. Но что толку, знания хаскела у меня от этого не появятся.
Anonymous
... понимание ФП тоеже непоявится (если его небыло бы).
Vasiliy
почему define "широкий" требуется, а define "программирование компьютера" вдруг можно и пропустить?
Dmitry
@scaredpepe любой ЯП является абстракцией над хардваром. большая часть мейнстримных языков еще и выполнятся на абстракции над хардваром
Vasiliy
ну так дай определение программированию компьютера, раз уж это такое узкое понятие
Dmitry
еще раз. основная реализация хаскеля (GHC) неприменима в условиях малого количества памяти и жесткого риалтайма.
Dmitry
нет такого вопроса
Anonymous
@aleksandrenko ну вот, ты будешь все сама делать, и что же ты выбрала для изучения языка?
Dmitry
я могу прямо указать, в каких условиях GHC неприменим и не стоит пытаться. указал выше
Dmitry
при этом, альтернативная реализация, например, AJHC в таких условиях применялась.
Anonymous
Эквивалентно, некоторые говорят.
Vasiliy
ну и почему написание программ для компьютеров на хаскеле не является программированием компьютеров?
Anonymous
Это не то место, где нужно рассказывать что такое программирование, иди в чат по пыху и там расскажи. Ну или в чат по лиспу :)
Nekotari
пока что читаю https://www.ohaskell.guide и http://learn.hfm.io
Dmitry
о. уже "может не подходить".
Vladislav
а какие языки подходят для программирования компьютера? Только asm/C/C++?
Dmitry
Так, ребята, вижу, бессмысленно вторгаться... Проверю чятик завтра, надеюсь увидеть побитие прошлого рекорда в 5000 сообщений. Pepe, не расслабляйся, жги!
Dmitry
ну конечно, может. например, если нет нормальной реализации бэкенда компилятора для нужной архитектуры, то он "может не походить"
Vladislav
эм
Dmitry
например, может не походить для MIPS
Anonymous
где это выяснилось?
Vladislav
где это выяснилось?
"британские ученые установили"
Anonymous
пых == PHP
Vladislav
всегда можно найти что-то, что "лучше подходит", даже асм обладает некоторым уровнем абстракции над машинными кодами
Vladislav
нужно просто балансировать уровень абстрагирования и требуемую производительность
Vasiliy
кстати, асм и машинные коды тоже не очень-то подходят для программирования компьютеров
Vasiliy
за ними не видно движения электронов по проводам
Dmitry
аллокации, кстати, видно
Dmitry
если хочется на них посмотреть
Dmitry
в хаскеле есть мутабельные структуры данных.
Vladislav
я тоже так считаю
Vladislav
в хаскеле есть мутабельные структуры данных.
есть, но язык задизайнен так, чтобы discourage (как это по-русски, кстати?) их использование
Dmitry
как и в любом другом языке, можно писать мутабельно или иммутабельно, в зависимости от того, что нужно в данный конкретный момент.
Dmitry
ну он их ровно в той же степени не поощряет, что и ввод-вывод. однако ввод-вывод постоянно используется и никаких особых проблем не создаёт
Vladislav
ну он их ровно в той же степени не поощряет, что и ввод-вывод. однако ввод-вывод постоянно используется и никаких особых проблем не создаёт
ну как минимум, код получется гораздо более громоздким, чем на императивном языке (или менее строго функциональным типа ML)
Vladislav
взять к примеру банальный quicksort
Anonymous
@aleksandrenko Здесь уже говорили про книгу Холомьева, я бы тоже ее посоветовал. Прочитаеш пару глав, и что-то на уровне крестиков-ноликов должно получаться. Но всеже это путь в никуда...
Dmitry
@isenbaev у меня нет такой уверенности, что непременно более громоздкий. мне случалось переписывать один-в-один код каких-то императивых алгоритмов, например, linear scan register allocation. код получался примерно таким же по объему, прямо если переписывать строка-в-строку. ну, а потом можно сделать его и более компактным, чем изначальный алгоритм, при желании
Dmitry
hof + infix operators + использование библиотек приводит к более компактному коду, как правило.
Dmitry
ну и всегда можно возразить, что а вот другие вещи выражаются компактнее в хаскеле, поэтому в среднем выходит точно не хуже.
Dmitry
ну и тут, конечно, нужны примеры
Dmitry
иначе это всё разговор вообще непонятно о чём.
Vladislav
ну и тут, конечно, нужны примеры
я привел пример - quicksort :)
Dmitry
https://stackoverflow.com/questions/7717691/why-is-the-minimalist-example-haskell-quicksort-not-a-true-quicksort
Dmitry
приводятся в итоге "true qsort implementations" которые не длиннее, чем.
Dmitry
например, import qualified Data.Vector.Generic as V import qualified Data.Vector.Generic.Mutable as M qsort :: (V.Vector v a, Ord a) => v a -> v a qsort = V.modify go where go xs | M.length xs < 2 = return () | otherwise = do p <- M.read xs (M.length xs `div` 2) j <- M.unstablePartition (< p) xs let (l, pr) = M.splitAt j xs k <- M.unstablePartition (== p) pr go l; go $ M.drop k pr
Dmitry
мутабельно. in-place.
Dmitry
ну и? там же приводятся примеры с in-place
Dmitry
ну наверное, in-place подразумевает мутабельность. и если использовать мутабельные структуры, то сразу и очевидно. если можешь написать хоть на чём-то, то можешь и на хаскелле.
Vasiliy
отличная фраза - неочевидно, как мутировать вектор, если не знаешь, как его мутировать
Dmitry
логично!