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

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-12 18:33 (ссылка)
Was ist "FP"?

Я знаю, "/" следует читать как "или": возможно как что-нибудь одно, так и оба.

Главное — линейный порядок, какой интерфейс — вопрос реалий. Лично я общался только с двусвязными списками (и предпочитал динамические массивы, когда надо вставлять только в конец; при этом сталкивался с проблемами управления памятью [динамический массив полностью контролируется компилятором: он необязательно расположен сплошной областью, но всё равно Delphi 7 у меня не справлялась]).

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


[info]polytheme
2007-07-12 18:35 (ссылка)
FP is a 'functional programming'
но вообще односвязные списки естественно и просто реализуются в контексте lambda-calculus

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


[info]ppkk
2007-07-12 18:42 (ссылка)
Какие-то книжки, выложенные [info]kouzdra я скачал, но нескоро прочитаю (с компа не хочется, наладонника нет, ибо не знаю, удобно ли, да и зарплата маленькая).

[Язык статьи про что-то .net или как-то так — обычный (http://lj.rossia.org/users/kouzdra/275598.html?nc=9), на общем курсе на матмехе изучается вместе с рекурсивными функциями и т.п. (задачник Лавров, Максимова "Задачи по теории множеств, математической логике и теории алгоритмов").]

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


[info]polytheme
2007-07-12 18:43 (ссылка)
как говорят знающие товарищи, с наладонника pdf и djvu читать невозможно.
я тоже очень такое хочу, но, кажется, единственный вариант - это sony reader

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


[info]ppkk
2007-07-12 19:19 (ссылка)
Ясно.

У меня, кстати, проблемы с управлением памятью возникали в программе, которая перелопачивала pdf: уже на 25 Мб файле (без картинок: структур много, формат pdf вообще рассчитан на 10^10 объектов, там, естественно, намного меньше, но сотни тысяч) вылет управления памятью (Delphi 7).

К "досадным техническим ограничениям" относятся кнопки, пролистывающие книгу вперед или назад на одну десятую объема, при этом перейти на страницу по номеру или выполнить поиск по слову нельзя вообще, а также раздражающая 1-секундная пауза при перелистывании страниц. Наш вердикт в отношении Reader неутешителен: продолжайте читать обычные бумажные книги (уничтожая тропические леса) и надейтесь, что следующее поколение e-Book окажется более адекватным. http://mobiledevice.ru/Reader-Sony-E-Book-obzor-elektronnoi-knigi.aspx

PDF файлы не изготовленные специально под его экран, читать трудно - очень мелко в полно-страничном режиме. Дело несколько улучшает перевод ридера в горизонтальный режим. http://www.habrahabr.ru/blog/columns/6839.html

Ненавижу низкое разрешение (дома стоит 2048*1536, а в офисе 1280*1024 :( ).

И купить его в Ленинграде непросто, как я понял (цена 15500 — дикость, если в США он 299$ стоит!).

lbook: 4 градации серого, 800*600 на 15 см, 9500 р.
sony reader: уроды, хрен узнаешь характеристики, сайт sony — тоже отстой (особенно sony.com, а на sony.ru я устройства не нашёл)
4 ?535*?402 15 см, 15500 р.
iRex Iliad: 4 1024*768 20 см, 34500 р.

Симпатичнее выглядит lbook (хотя проблемы со сложными pdf документами обещаны, рекомендует конвертировать всё в свой формат). 34500 я вряд ли потрачу на такое дело.

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


[info]polytheme
2007-07-12 19:30 (ссылка)
http://www.habrahabr.ru/blog/columns/6839.html
вот более хвалебный отзыв :)
конечно, нужно заказывать в америке или просить знакомых привезти, это факт

вы меня заинтересовали, кстати : можно подробнее про разбор pdf ?
ищу практическую задачу для практики на Haskell (заодно и нагрузочный тест будет);
OCaml я выучил более-менее прилично, только когда написал на
нем программу-переводчик (с парсером словаря на OCamlYacc)

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


[info]ppkk
2007-07-12 20:02 (ссылка)
Там проблема не в разборе pdf, который хорошо официально документирован и вот-вот станет "открытым", а в том, что управление памятью фиговое.

Я об этом написал в связи с упоминанием слова "pdf" и предыдущим моим замечанием о глюках.

То есть: в качестве практической задачи можно, например, преобразовать pdf в текстовый файл (выкинув графику и сложные штуки).

Он устроен примерно так: есть несколько базовых (примерно число, строка, истина/ложь и ещё немного) и составных (примерно "массив", словарь, поток; элементами составных могут быть составные) типов. По разным соображениям есть ещё тип "неявный объект". "Н. объ." употребляются в виде ссылок (они пронумерованы). Значение н.объ. узнаётся через оглавление. Собственно, файл следует читать с конца. Это ещё чуть-чуть запутано ради возможности исправления файла путём чисто дописывания в конец чего-то (и это можно делать неоднократно), а в последних версиях используется более компактное хранение оглавления н.объ. и объектов вообще (изначально сжимались только "тела" потоков, теперь — многое).

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

Если есть подробности, то можно подробнее про программу-переводчик? Она "игрушечная" или практичная?

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


[info]polytheme
2007-07-13 11:37 (ссылка)
переводчик - это я сильно сказал, обертка словаря, на самом деле.

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

мне был нужен переводчик, ищущий рег. выр.

на C++ я бы писал это несколько дольше, наверное.

надо посмотреть спецификацию pdf, интересно.

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


[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 - практически идеальный, но с закрытыми исходниками.

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


[info]polytheme
2007-07-12 19:36 (ссылка)
ко всему, он вроде бы под линуксом.
с некоторой вероятностью переход и поиск все-таки можно устроить
если можно драйвера кнопок менять

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


[info]ppkk
2007-07-12 20:44 (ссылка)
Об lbook можно подумать, но пока есть непрочитанные бумажные книги (особенно нормального формата, а не 15 см по диагонали), думать неприятно.

Про sony reader я наврал, видимо: разрешение скорее 800*600. Не разобрался, как они считают "точки на дюйм" и вообще ступил (лучше бы считали весь экран в килопикселях!), не люблю неметрические системы.

Пока мы тормозим, китайцы выпустят цветную модель, а я выучу китайский:)

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


[info]polytheme
2007-07-13 12:21 (ссылка)
китайцы, кстати, молодцы.
http://www.jinke.com.cn/Compagesql/English/embedpro/prodetail.asp?id=20
уже вполне пристойный девайс

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


[info]ppkk
2007-07-13 16:11 (ссылка)
Это более интересно, и, как я и писал, доступно (в Москве: в Ленинграде какой-то магазинчик официальный есть, но в сайте я не разобрался, а покупка ещё не планируется, ибо хватает бумажных книг, которые лучше по размерам) за 9500 р.

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


[info]polytheme
2007-07-13 11:43 (ссылка)
соньку можно заказать из-за бугра, могу кинуть ссылку.
обойдется в сумме в районе 10000

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


[info]ppkk
2007-07-13 16:10 (ссылка)
Ну её нафиг: она мне совершенно не понравилась, текстовых файлов даже не читает! (Правда, китайцы только юникод понимают…)

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


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