Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет kouzdra ([info]kouzdra)
@ 2007-07-12 16:02:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Entry tags:Компутерщина

О предрассудках:
Из старого треда:

Список, насколько моя знать, это объект, удовлетворяющий следующему индуктивному определению:

1) Пустой список есть список.
2) Если L - список, а t - объект, могущий быть элементом списка рассматриваемого вида, то результат "приписывания" t к L - тоже список.

Суть этого определения в том, что любой "реальный" список можно эффективно "раздеть" до пустого


Утверждение про "раздеть" кажется интуитивно абсолютно очевидным. Я тоже на несколько секунд купился. Тем более, что определение списка дано верно. Тем не менее утверждение про "раздевание" абсолютно неверно - в реальности там совершенно жуткий зверинец, более всего напоминающий по структуре что-то фрактальное или из области бесконечных счетных ординалов (возможно просто им и соотвествущее 1 в 1).

При том, что речь идет о реальных списках в реальных языках программирования.

PS: Еще очень забавная вещь происходит, если на отношение равенства списков посмотреть с точки зрения принципа тождества неразличимых (в компьютерном варианте) - там очень странные вещи начинают происходить - например из того, что B /= C, не следует,
что A++B /= A++C (++ - конкатенация) - во многих примерах они реально будут различны, но способов обнаружить этот факт не будет.

Забавная на самом деле вещь - "интуитивная очевидность конструктивной математики" :)



(Читать комментарии) - (Добавить комментарий)


[info]ppkk
2007-07-13 16:29 (ссылка)
Ну да. Уже с регулярными выражениями у разных языков отношения совершенно несопоставимые.

Штука полезная, но нишевая: обычная публика с регулярными выражениями заморачиваться не захочет.

Есть на сайте adobe. 30+ мегабайт, тормозит при просмотре у меня, 1300 страниц. Но там, естественно, не только базовая структура описана:)
Конкретно: http://www.adobe.com/devnet/acrobat/pdfs/pdf_reference_1-7.pdf

А это более новый вариант, я его не читал: http://www.adobe.com/devnet/acrobat/pdfs/pdf_reference.pdf

(Ссылки искать — действие. Там в первую очередь всё-таки про SDK пишут.)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polytheme
2007-07-13 20:45 (ссылка)
спасибо, будем посмотреть.
regexps для C++ я мог бы из boost взять, это не проблема.
скорее весь процесс разработки быстрее - память не течет,
программа работает правильно сразу, если скомпилировалась, и не падает.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ppkk
2007-07-13 20:55 (ссылка)
Это я слышал и про Яву, и про Паскаль, и про C++ (иногда с поучительной оговоркой, что писать надо правильно, и это, типа, дисциплинирует, а утечек нет и работает сразу, когда пишут правильно).

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polytheme
2007-07-14 13:37 (ссылка)
вроде бы ни в Паскале, ни в C++ garbage collection не есть. в Java - да,
но до 4 версии включительно они не собирали циклические ссылки. что сейчас - не знаю.
кстати,
http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all
функциональные языки - это Clean, OCaml, Haskell, SML
Clean - коммерческая разработка
но основное - это ускорение разработки существенное. словарь я написал быстро именно потому, что на OCaml ошибок делаешь намного меньше

с другой стороны, на работе я пишу на VW Smalltalk, там ошибок делается полно, но из-за удобства системы они быстро (в идеале - заранее) зажимаются в Unit-тесты и исправляются.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ppkk
2007-07-16 14:54 (ссылка)
А что за работа-то? Я от [info]kouzdra не добился, зачем на работе могут быть нужны функциональные языки.

Рейтинг я многократно видел. У FreePascal-я небольшой минус из-за неразберихи: в состав дистрибутива включен убогий (неполноценный, возможно даже глючный) модуль регулярных выражений, а договорённостью, например, с автором какого-нибудь TRegExpr, чтобы включить в дистрибутив его движок, почему-то не очень занимаются (я им несколько раз это предлагал: вначале думал сам написать движок, но не вижу смысла при наличии столь проработанного тратить на это время). Так что у FP (FreePascal) есть неиспользованный потенциал (программа должна использовать движок из дистрибутива, а не самостоятельно всё реализовывать).

Smalltalk когда-то видел, но не особо изучал, зачем он нужен на практике тоже интересно было бы узнать.

Ещё о языках: Scala разве не более ли менее ли функциональный?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kouzdra
2007-07-16 15:01 (ссылка)
Scala - более или менее. Это именно попытка скрестить FP с .NET и JVM. Относительно удачная, вроде, хотя объектность там сильно прет.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ppkk
2007-07-16 15:12 (ссылка)
Да, и в упомянутом рейтинге на ней-таки всё работает (кто-то озаботился написать, разработчики не поленились включить библиотеки в дистрибутив).

(Ответить) (Уровень выше)


[info]ppkk
2007-07-16 15:04 (ссылка)
Да, симпатичнее всех выглядит по рейтингу D Digital Mars (все тесты есть). То, что в Haskell тоже все тесты есть, могло повлиять (кроме наличия книг) на заказ мной книги именно про Haskell.

О рейтинге ещё можно заметить: на практике многим нужны драйверы (быстрые!), даже фирма, где я работаю, с этим сталкивалась. Да и в реальной программе частичная независимость кода от окружения может цениться (не надо скачивать последнюю Java или .net, о многоплатформенности не пишу). Но как есть рейтинг, конечно, лучше, чем с упомянутыми "опущениями".

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polytheme
2007-07-17 11:38 (ссылка)
OCaml и Haskell многоплатформенны и компилируются в нативный код.
драйверы, разумеется, пишутся на C. вообще у ФЯ обычно приличный
foreign function interface, позволяющий сишные функции вызывать.
D - хороший язык, действительно, но быстрый код делает dmd с закрытыми
исходниками, а gdc, кажется, существенно медленнее. и всегда,
конечно, стоит проблема отсутствия обратной совместимости -
люди будут продолжать писать на C/C++.

Haskell очень хороший, но немного игрушечный (из-за медленности).
OCaml - быстрый и практический, но частично императивный.
Clean - практически идеальный, но с закрытыми исходниками.

(Ответить) (Уровень выше)


(Читать комментарии) -