Re: Как закодировать?
- From
- Pavel P ()
- To
- Andrew Ezhguroff
- Date
- 2002-10-10T07:06:44Z
- Area
- RU.ALGORITHMS
<ao2fd4$dik$1@host.talk.ru>
From: "Pavel P" <vprin@indiainfo.com>
"Andrew Ezhguroff" <eandr@com2com.ru> wrote in message
news:ao2fd4$dik$1@host.talk.ru...
> Привет! "Pavel P" <vprin@indiainfo.com> сообщил(а):
>
> >> А где ты до этого у меня слова о длине программы видел? Но если так
> PP> желаешь,
> PP> Зачем писать больше если можно меньше и понятнее? (1)
>
> Я не считаю, что лямбда-исчисление в ОБЩЕМ случае более понятно, чем
> императивная грамматика. Эта нотация хороша для очевидно рекурсивных
> алгоритмов - то же преобразование числа в строку, обработка списков и
> деревьев, или, например, быстрая сортировка. Но вот насколько она хороша
для
> пирамидальной сортировки, или сортировки слиянием?
Еще для организации циклов. А подавляющее большиство задач
к этому и сводиться: циклы, преобразования, обработка списков
и деревьев. К тому же лямбда лямбде рознь. Грамматика лиспа
страшнее чем С на мой взгляд.
Насчет сортировки надо смотреть.
[....]
> >> Заглянул сейчас на http://haskell.org - он имеет как компиляторы, так
и
> >> интерпретаторы. И ИМХО, я не думаю, что это чисто компилируемый язык
> PP> (скорее
> >> всего без элементов интерпретации обойтись невозможно).
> PP> Есть чисто. ghc например.
>
> Предположим... Но обеспечивает-ли он скорость, соизмеримую со скоростью
Си?
> Цитата, на которую я наткнулся, когда разыскивал информацию о Haskell:
Си не всегда интерпретаторы то догоняет. Perl со строками
быстрее чем С работает в области регулярных выражений.
> =========Beginning of the citation==============
> Примеры энергичных языков: Objective CaML, Standard ML (SML). Ленивые
языки:
> Haskell, Miranda. Языки указаны в порядке распространенности. За
информацией
> по ленивым языкам мы отсылаем читателя на сайт языка Haskell:
> http://www.haskell.org/. В научных исследованиях и теоретических работах
> предпочитают использовать языки с ленивой семантикой, практические
> разработки ведутся, главным образом, на энергичных языках. Это связано с
> более высокой эффективностью получаемого кода и значительно большей
> скоростью работы компилятора.
> =========The end of the citation================
У ленивости свои плюсы :)
[...]
> PP> gcc - делает вид что мусор убирает.
>
> Т.к. в C/C++ сборки мусора вообще нет, то и "делать вид" не имеет смысла.
Имеллся ввиду тот пример который тестировался
[....]
> Ага... Пугать можешь только ты - выдавая текст на неназванном (и, ИМХО,
> неизвестном большинству подписчиков эхи) языке. :-)
Тем не менее он более подходит для записи _алгоритмов_ :) Я б
его даже избрал оффциальным языком эхи :) Жаль мало кто поддержит,
хотя языком года его уже избрали :))
> PP> Ты вообще можешь гарантировать что любой из твоих примеров со static
> PP> char - thread safe? Боюсь нет :)
>
> В смысле? Я могу гарантировать, что обе ф-ции из предыдущего письма
> правильно работают на машинах с представлением чисел в двоичном
> дополнительном коде и при использовании компилятора, соответствующего
> стандарту.
>
> PP> 1) где у тебя терминирущий '\0' в строке? Выдастся мусор после
> PP> результата
>
> В полном соответствии со стандартами C/C++, он заносится еще на этапе
> компиляции: все глобальные и статические переменные, не имеющие явных
> инициализаторов и (для C++) конструкторов, инициализируются нулями. Я
> заполняю статический буфер справа налево, начиная с ПРЕДПОСЛЕДНЕГО
элемента.
> Так что последний элемент Buf - ВСЕГДА ноль.
То что с предпоследного это понятно. Но статик ведет к тому
что при вызове этой функции из двух паралельных thread'ов
с большой вероятностью получишь не то что ждешь.
> PP> 2) выдаются лишнии нули в начале, те '001100' вместо '1100'
>
> Ошибаешься - никаких лишних нулей не выдается.
Каюсь грешен - просмотрел :(
[....]
> Краткость - это только для ленивых.
>
> Прозрачность - это скорее для статей и учебников. В реальном
> программировании "прозрачность" в значительной степени обеспечивается
> комментариями (что автоматически снимает требование "краткости").
И то и другое незаменимо при поддержке и развитии большого
проекта.
> Я уже упоминал выше пирамидальную сортировку и сортировку слиянием.
> Насколько кратко и прозрачно их можно записать на Haskell? Насколько
кратко
> и прозрачно можно закодировать "движок" генетического алгоритма?
Хороший вопрос. Когдато я простенкий движок на изучал Delphi писал.
Надо посмотреть. Но думаю, что не сложно ибо это насколько я помню это
бесконечная рекурсия с разными параметрами, до требуемого результата.
Сортировка та же рекурсия, но конечная :)
B.R.
Pavel
--- ifmail v.2.15dev5
* Origin: Demos online service (2:5020/400)