egorius: (Default)

Владимир Кричевский, «Идеальный дизайн»

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

Джо Селко, «Стиль программирования на SQL»

C одной стороны, любой труд, призывающий мыслить на SQL в терминах множеств, а не циклов, и обращающий внимание на важность типографики в программировании — безусловное благо.

C другой — слишком во многом мы расходимся с автором, чтобы безоговорочно рекомендовать эту книгу. Например, мне совершенно не близка мотивация писать переносимый код; здесь я принимаю сторону Тома Кайта: если уж заплатили за СУБД, глупо не пользоваться всеми ее возможностями. Тем более, что наезды автора на Оракл выдают в нем человека, с Ораклом не работавшего (а наезжает он и на другие коммерческие системы тоже).

В общем, читать можно, но осторожно.

Карл Левитин, «Прощание с Алголом» (1989)

Вот академик Андрей Петрович Ершов. Как же, каюсь, не любил я в детстве эту фамилию! Во-первых, из-за школьного алгоритмического языка. Не понимал тогда, да и сейчас не понимаю, зачем переводить Паскаль на русский язык. Были и до этого попытки, вот скажем Эль-76, автокод Эльбруса, тоже базируется на русском, но то были другие времена и нам было еще чем гордиться. Во-вторых, из-за информатики, с 1985 года усилиями Ершова введенной в школьную программу. Не понимал тогда, да и сейчас не понимаю, зачем понадобилось это слово. Вот передо мной три учебника информатики 1988–91 годов. Один объявляет, что компьютерная грамотность — это умение читать и писать, считать и рисовать, а также искать информацию, применяя для этого ЭВМ, после чего обрушивает на бедного школьника материал, по широте охвата не уступающий программе ВМК, от p-n-переходов до программирования на Прологе. Другой не мудрствует: вот блок-схемы, вот расчет на калькуляторе, а вот — на Бейсике. Третий пытается быть авторитетным и школьник узнает из него, что кэш-память — это разновидность стека, а Паскаль — Philips Automatic Sequence CALculator. Хаос, полный хаос царит в голове горе-информатиков. Они понимают, что уметь программировать нужно не всем, но что такое компьютерная грамотность без программирования — не понимают. А что понимают современные учителя информатики, это мне страшно даже представить.

Вот конференция «Диалог человек — ЭВМ», которая проводилась в 1983 году у нас в Протвино. А ведь у меня на полочке стоит сборник материалов, папа принес в свое время из Института. Кого только не было на этой конференции, не считая «компьютерщиков»: дизайнеры, социологи, биологи, психологи... Тихомиров из Универа: Существенным является разделение потребностей пользователя на предусмотренные разработчиком и непредусмотренные... Ко второму классу относятся многие разновидности потребностей в общении: потребность в соревновании с другими пользователями..., потребность в уважении коллег..., потребность быть членом социальной общности. Нынешние веб-разработки эксплуатируют это наблюдение по полной. Но ведь в целом концепция диалога с ЭВМ как обмена сообщениями на естественном языке полностью провалилась. Ершов предполагал, что удастся осилить хотя бы деловую переписку, канцелярит, но и это не удалось. Вместо этого диалог превратился в клацанье мышью — интересно, в Xerox PARC психологи тоже работали? Приведу еще цитату из книги Льва Николаевича Королева: Стремление упростить взаимоотношения пользователя с PC привело к созданию ... оболочки, в которой текстовое меню в основном заменено графическими символами... Вообще, наблюдающийся переход от текстов к иероглифам весьма симптоматичен и интересен с философской точки зрения.

Вот всплывают разные знакомые имена. В 1979 году в Узбекистане, на родине Аль-Хорезми, проводился симпозиум «Алгоритм в современной математике и ее приложениях». Инициатива принадлежит Ершову и... Дональду Кнуту — оказывается, они были знакомы. А на заре вычислительной техники к компьютерам Ершова привел Евгений Андреевич Жоголев — он вел у на курс технологий программирования. Или промелькнул Виктор Брябрин — а на полочке стоит его «Программное обеспечение персональных ЭВМ».

Казалось бы, небольшая старая книга, а какой пласт воспоминаний!

Из Ершова:

  • У меня есть одно существенное свойство — доводить дело до конца и стараться его исчерпать.
  • У меня обязательно бывает такой период времени, когда видимой цели работы нет. Мысли начинают растекаться... именно в это время рождаются непредвзятые идеи.
  • Сегодня оценка степени достоверности программы — личное дело каждого программиста. А нынешние правила приемки результатов их труда, при всей их кажущейся строгости, носят поверхностный характер, не затрагивающий существа самого программного продукта, да при этом еще постоянно выхолащиваются формальными требованиями соблюдения плановых сроков... — знакомо, да? Это 1983 год.
  • — Какова главная опасность нашего труда?
    — Потеря интереса к своему делу, ибо профессию программиста менять не на что.
  • Настоящий, врожденный, истинный программист — это тот, кто не сможет успокоиться, пока дело рук его не примет вполне завершенный вид. Контраст между почти сделанной и полностью сделанной работой для него непереносим чисто физически. Эта стопроцентная закономерность — источник трудности и в то же время глубочайшего удовлетворения...
  • Мне посчастливилось в жизни встретить нескольких программистов, обладающих поистине исключительным набором качеств. Это люди, как правило, резко выраженной индивидуальности и даже экстравагантности, но они вносили огромный вклад в общее дело, особенно в трудных ситуациях. Поэтому когда я слышу нередко раздающиеся призывы, что надо кончать с «примадоннами» в программировании, то никогда не поддерживаю эту ошибочную, на мой взгляд, точку зрения.
  • ...стоит ему [программисту] всерьез задуматься о философии своей профессии, как он сразу же начинает чувствовать себя мамонтом, которому грозит неизбежное, хотя, быть может, и не немедленное вымирание.

egorius: (Default)

Eric Redmond, Jim R. Wilson, «Seven Databases in Seven Weeks»

Купил для расширения горизонта сознания, а то некоторые астрологи считают, что будущее за NoSQL, а вот что это вообще такое? (Кстати, вышел русский перевод, но об этом я узнал уже после покупки.) В книге идет речь о разных СУБД: основные концепции, как осмысленно поиграться с базой, какая-нибудь клевая фича для интереса и куда копать дальше — вполне адекватный подход для быстрого знакомства с новой технологией.

Узелки на память:

  • PostgreSQL
    Тут все понятно, честная реляционка, рассматривается в качестве «единичного отрезка». Пара примеров показались странными — то ли из-за особенностей Оракла, то ли авторы намерено упрощали материал.
  • Raik
    Сильнораспределенное хранилище пар ключ-значение, построенное на простых равноправных узлах, без сложных настроек объединяющихся в отказоустойчивый кластер. Красиво настраивается баланс между скоростью, надежностью и согласованностью (на сколько узлов дублировать данные; от скольки узлов дождаться подтверждения записи; сколько узлов опросить при чтении): характерные варианты (N, 1, N) — согласованость при чтении, (N, N, 1) — согласованость при записи, (N, N/2, N/2) — кворумная согласованость. Позволяет выполнять mapreduce-запросы. При чтении можно получить несколько версий данных и разрешение конфликта лежит на клиенте.
    Технологии: REST, Erlang, JavaScript.
  • HBase
    Ориентация на распределенную обработку больших объемов, фича: произвольно большое число столбцов. Не понял, что тут принципиально несовместимо с SQL. Так 40 лет назад вручную программировали запросы, только теперь вместо Кобола предлагается делать это на модном JRuby.
    Технологии: JRuby, Ruby, Thrift, экосистема Apache (Hadoop, HDFS, Zookeeper, Whirr).
  • MongoDB
    В отличие_от, MongoDB понимает структуру хранимых JSON-документов и позволяет писать adhoc-запросы, вкючая агрегатные функции. Имеются индексы, explain plan, хранимые процедуры — все это несколько сближает MongoDB с традициями реляционных СУБД. При этом он остается распределенной документо-ориентированной СУБД с поддержкой mapreduce. Данные могут реплицироваться (replica sets, обеспечивается согласованность при записи) и распределяться (sharding) на несколько узлов, имеется встроенная распределенная файловая система.
    Технологии: JSON, JavaScript.
  • CouchDB
    Хранит JSON-документы, но, в отличие от MongoDB, не поддерживает adhoc-запросы. Вместо этого для доступа к данным предлагаются материализуемые, индексируемые и динамически обновляемые представления на основе mapreduce-функций. Имеется API для получения изменений в базе (polling). При обновлениях используется «оптимистическая блокировка»: если данные успели измениться, разрешение конфликта ложится на клиента. Репликация всех данных (без шардинга) между равноправными узлами, конфликты при репликации также разрешает клиент.
    Технологии: JSON, JavaScript, REST, Node.js, Erlang.
  • Neo4j
    База данных для хранения произвольных направленных графов; вершины и ребра могут содержать информацию в виде пар ключ-значение. Запросы по сути представляют собой обход графа. Есть индексы, но их надо явно указывать и учитывать — все это столь же коряво, как в древних навигационных БД. Впрочем, альтернативные языки Gremlin и Cypher придают запросам декларативность. Поддерживаются ACID-транзакции, но не при работе в кластере.
    Технологии: Java, Gremlin/Groovy, Cypher, REST, JSON, Lucene, Blueprint, Zookeeper.
  • Redis
    Очень быстрая база данных, предоставляющая не только хранение пар ключ-значение, но и реализацию стандартных структур данных (хэш-таблицы; списки, стеки и очереди; множества; отсортированные множества; битовые операции), псевдотранзакционность путем отложенного выполнения серии операций, механизм устаревания данных, подписку на события — мешанина свойств, из которых что-нибудь да окажется полезным. Вся БД хранится в ОЗУ и ограничена его объемом, но данные можно сбрасывать на диск — частота настраивается. Поддерживается репликация.

Авторы считают, что на смену реляционно-центрическим системам приходят объединения многих синхронизированных NoSQL-баз данных, каждая из которых используется в той области, в которой она сильна (они называют это выражением polyglot persistence). А для меня стало понятно, что NoSQL — это в первую очередь веб, это скорость в обмен на согласованность и надежность. Финансовым приложениям со стороны NoSQL ничего не угрожает.

Узнал про фильтры Блума. Оракл использует в механизме хэш-соединений штуку, которая почти, но все-таки не совсем непохожа_на.

Л. Н. Королев, «Архитектура ЭВМ»

Книга Льва Николаевича, завкафедрой ВМК и моего научного руководителя. Поэтому именно так, по-академически: Л. Н. Ну и книга сама тоже такая академически-заунывная. Жаль,что среди сухих фактов не нашлось места живым эмоциям. Все равно ведь в каждой главе тянет поговорить о БЭСМ-6, так почему нет? И черт бы со всеми этими интелами и спарками, про них и в других книгах почитать можно.

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

«Стив Джобс о бизнесе»

Понадергали цитат да и издали. Есть и хорошие, вот, например:

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

На каждом развороте вместе с переводом напечатал и оригинал; это интересно и хорошо.

Profile

egorius: (Default)
egorius

July 2025

M T W T F S S
  12 3 4 5 6
7891011 12 13
1415 1617181920
21222324252627
28293031   

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 16th, 2025 03:02 am
Powered by Dreamwidth Studios