Category: наука

Бритоголовый и С1-97

Программирование: теоремы и задачи

Вот кстати, хочется рассказать о неплохой книжке по алгоритмам и структурам данных – “Программирование: теоремы и задачи” А. Х. Шеня (свободно распространяется в электронном виде, на бумаге несколько раз издавалась МЦНМО). Вот все знают книжки, скажем, Кнута (но мало кто их читал), Кормена (тут ситуация немного получше), Дасгупты или Скиены – а я хочу сказать, что эта брошюрка (320 страниц, на фоне среднего “айтишного” учебника в тысячу-полторы – это ни о чем) по глубине изложенного материала не уступает как минимум двум последним.

Особенность книжки – в изложении материала. Это не столько учебник/справочник, сколько задачник, построенный по логике “системы задач на листочках”. Эта система применяется, скажем, во многих московских матшколах и состоит примерно в следующем – на каждую тему выдается список задач (”листочек” – обычно они помещаются на лист формата A4), часть задач может иметь и самостоятельную ценность (как полноценные теоремы; иногда содержательные утверждения разбиваются на несколько подряд идущих задач). Сложность задач возрастает, для перехода к последующим листочкам надо либо решить текущий целиком, либо решить большую часть задач (в этом случае листочки могут содержать и нерешаемые задачи). Часть задач может разбираться “у доски” (прежде всего что-то основополагающее), остальные предназначены для самостоятельного решения.

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

PS Издание 90-х годов сопровождалось совершенно шикарным текстом – “Не покупайте эту книгу!” (кликабельно):

dont-buy-this-book

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Про ценообразование на электронные самоделки

Вот попался на глаза такой комментарий на хабре:

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

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

Как думаете так ли это или я в чем-то не прав? (это я говорю как человек, который может простенький шилд со светодиодами для ардуино нарисовать и заказать у китайцев. = ) )

https://habr.com/ru/post/462451/#comment_20472413

Речь идет о векторных анализаторах и анализаторах спектра производства российской фирмы “Крокс”. Не буду комментировать наглость автора, желающего “спросить прошивку и файлы для производства платы” (а лучше ключ от квартиры, где деньги лежат), хочу немного прокомментировать ценообразование на такого рода “полулюбительскую” измериловку. В статье о разработке подобного прибора озвучивается бюджет в 200 евро:

Since I can’t afford even a used VNA I decided to make one myself with a budget of 200€, tenth of what they cost used and about 1/100 of what they cost new. Of course it isn’t going to be as accurate as commercial VNAs, but I don’t need that high accuracy and it’s a good learning experience anyway.

http://hforsten.com/cheap-homemade-30-mhz-6-ghz-vector-network-analyzer.html

В принципе, довольно похоже на себестоимость кроксовского прибора (в статье на хабре есть гифки с фотографиями плат с двух сторон). А теперь – подсмотренный на eevblog совет:

There is an often thrown around figure of 2.5 times for hardware products. This is the Cost Multiplier. And 2.5 is not bad number to work from as a baseline as you’ll see shortly. Generally you’d want a good reason to go below this number. If something costs you $50 in true cost to manufacture, you’ll likely want to sell it for 2.5 times that, or $125. Why? Well, read on…

https://www.eevblog.com/2014/05/28/the-economics-of-selling-your-hardware-project/

Мне, конечно, больше нравится коэффициент, равный числу пи – 3,1415926…, а во всяких высоконаучных применениях – пи в квадрате, 9,8696044… – но умножив 200 евро на 2,5 – получим 500 евро, что довольно близко к розничной стоимости кроксовского анализатора.

Что интересно – это правило работает для очень многих мелкосерийных приборов, в том числе – и для недавно мной купленных НВ-14 и UMDK-ENERGYMON. В общем, прикинув стоимость деталей устройства, прежде чем орать “а че так дорого” – умножьте ее хотя бы на 2,5.

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

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

2019 год, чуваки впервые увидели сканер

А вот некая мадам (точнее, Elena Pierazzo, профессор университета Гренобля) рассказывает нам о том, как компьютерные технологии меняют методологию гуманитарных наук:

Оказывается, если не заказывать какой-нибудь документ в архиве или библиотеке, а смотреть его на экране компьютера – то можно think out of the page – “думать за пределами страницы”.

Что могу сказать? Ребята, если появление планшетного сканера в корне меняет методологию вашей науки – у меня для вас плохие новости.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Про науку

Чуваки, а с каких пор всякие деятели, получившие степень PhD (примерно соответствует отечественному “кандидату наук”) где-то за бугром, начинают именовать себя по-русски “доктор каких-то там наук”?

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Википедия и урбанистика

Слово “урбанистика” мне никогда не нравилось. Ну не находит англоязычный гугл названия науки “Urbanistics” – за исключением нескольких явных заимствований из немецкого и робких попыток употребления. С русскоязычной “урбанистикой” все гораздо лучше – слово это удостоено целой статьи в Википедии, разумеется, дурацкой. В “преамбуле” урбанистика объявляется разделом экономической географии, в разделе “история” приводится история городского планирования, а все перечисленные затем “научные центры” находятся в нашем богоспасаемом Отечестве.

Довольно интересна и история самой статьи – “заготовка” была написана одним человеком в 2008 году, основная часть – “история урбанистики” – другим в 2011 (примерно тогда же это слово стало внезапно модным). Остальные правки – это чистейшая “викификация”, то есть редакторско-корректорская работа. Уверен, что если эту статью “каланизировать“, то придется признать, что написан полный бред, причем написан двумя дилетантами. Почему? Потому что никакой урбанистики на самом деле не существует. Есть городское планирование (которому посвящена большая часть статьи). Есть то, что англоамериканцы называют Urban Geography, “городская география” – раздел экономической географии, изучающий города (кстати, посмотрите ссылки на другие языковые разделы Википедии – там как раз идет речь об этой дисциплине). Есть Urban Sociology, да и вообще – к большинству общественных наук можно приклеить ярлычок “городской” (другое дело, что иногда он излишний).

Возможно, имеет смысл признать, что слово “урбанистика” – это очередной хипстерский buzzword, в одном ряду с “коворкингом” и “лофтом”. Но это было бы нормально, если бы на статью в Википедии не было бы ссылок. А они есть. Частично – из статей про ученых, занимающихся экономической географией, а частично – из “хипстерских”. Кроме того, есть несколько ссылок из разряда “не пришей кобыле хвост” – из статьи про какой-то литовский райцентр, со слов “памятник городского зодчества Литвы” и из статьи про поэта Брюсова. Да, есть определение “поэт-урбанист” – но к “разделу экономической географии” он отношения не имеет.

А откуда я вылез в эту статью, если ни литовские райцентры, ни поэты Серебряного века меня не интересуют? Из статьи о своих любимых “Городских проектах“, разумеется. Статья про них могла бы служить примером для раздела “чем не является Википедия”. Если бы не хипстерские СМИ, моментально рекламировавшие каждую инициативу фонда – то статью моментально удалили бы за саморекламу – потому что больше в ней ничего нет. А так – в декабре 2012 года ссылку на статью даже вывесили в разделе “Знаете ли вы?” на главной странице, да еще и с совершенно бредовым текстом.

В принципе, статью про “Городские проекты” можно и нужно рассматривать, как пример саморекламы в Википедии – или инструкцию по “саморекламированию”. Кстати, интересно, что и написал статью, и номинировал ее в раздел “Знаете ли вы?” один и тот же участник. Нет ли здесь какой-то “вневикипедической” заинтересованности?

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Business Objects: Re-Engineering for Re-Use, или кому не хватает ООП

По наводке [info]ailev ознакомился с книжкой Криса Партриджа “Business Objects: Re-Engineering for Re-Use”. Прекрасное чтение после какого-нибудь руководства по “мейнстримному” объектно-ориентированному проектированию с использованием UML, а главное – в любимом мной жанре “прикладной философии”.

Как и полагается в книгах такого типа, где предлагается какой-то фундаментально новый подход, не обошлось без вступления в духе “вы все пидоры, а я Д’Артаньян”. Утверждается, что “стандартный” подход к проектированию информационных систем, который автор назвал “сущностным” (entity), несмотря на все заявления его авторов, не позволяет строить сколь-либо сложные модели реальных систем, и не позволяет прямо соотнести возникающие сущности с реальностью. Это подтверждается примером из статьи Стива Кука и Джона Дениэлса “Object-Oriented Methods and the Great Object Myth”, в котором “миф” о том, что мир состоит из объектов и операций (взаимно-однозначно соответствующих объектам и операциям в модели) разрушается простым примером – когда мы пьем чай, мы не вызываем операцию “пить”, принадлежащую объекту “чашка” – и вообще, представить это простое действие с помощью “объектно-ориентированной” модели очень сложно.

Для нового, единственно верного и всячески правильного подхода к проектированию предлагается сменить парадигму – то есть смотреть на мир, не как на состоящий из сущностей (entity, это общепринятый термин, например, в так называемой ER-модели) или субстанций (substance, это более высокий уровень абстракции и общепринятый философский термин), а составленный из более сложных для представления “объектов”. То, что называется “объектами” в учебниках по ООП – это, в терминологии книги, “сущности” либо “субстанции”. Картина мира, использующая “сущности”, неявно существует и в “бумажных” информационных системах. Взаимно-однозначное соответствие между терминами из теории реляционных БД, “бумажных” картотек и “сущностной” парадигмы – не просто совпадение, а подтверждение единой картины мира, представляемой тремя способами.

В любой предметной области можно выделить четыре “рода” вещей (kinds of things) – конкретные вещи (”белый ВАЗ-2101 с проколотыми колесами, ржавеющий в моем дворе”), типы вещей (”все автомобили «Жигули»”), отношения между вещами (”Иван Иваныч – владелец белого ВАЗ-2101 и далее по тексту”) и изменения, происходящие с этими вещами (вышеупомянутым “Жигулям” выбили стекло, вытащили все сиденья и насрали внутри). Оказывается, что модель мира, состоящего из “сущностей” или “субстанций” не вполне адекватно позволяет описывать все это. Например, “сущности” убивает классический пример из все той же греческой философии – “корабль Тесея”. Жители Афин поставили корабль, на котором Тесей вернулся с Крита, победив Минотавра, на “вечную стоянку” – как крейсер “Аврора”. При этом они его постоянно ремонтировали (как крейсер “Аврора”), и наконец, настал момент, когда все досочки и гвоздики были поменяны (ну точно “Аврора”). Можно, конечно, ввести дополнительную сущность – например, ПТС, где отражать все замены номерных агрегатов – но древние греки до этого не дошли, и более-менее приемлемо парадокс разрешил Аристотель, рассматривая “субстанции” – грубо говоря то, что остается от предмета, если его лишить всех свойств. “Субстанция” нематериальна, и с точки зрения Аристотеля, сохраняется даже при замене всех “материальных” частей.

Так или иначе, но современное ООП предлагает смотреть на мир, как на множество объектов-субстанций, которые имеют изменяющиеся со временем свойства. В аристотелевскую картину мира укладывается и понятие наследования вместе с “общими” категориями объектов – как существование более общих, “вторичных” субстанций и свойств – но не все гладко с отношениями – для них приходится вводить дополнительные свойства объектов (например, у автомобиля есть свойство “владелец”) – и с изменениями – фактически предложенное Аристотелем решение предлагает учитывать изменения, как какие-то новые “частицы” в картине мира.

Если непонятно про Аристотеля – то вот более “жизненный” пример. Используемая в проектировании баз данных модель “сущность-связь” (entity-relationship, или ER-модель) возникает как раз при использовании “сущностей” или “субстанций”. Отношения (или “связи”) в ней предлагается представлять в виде дополнительных атрибутов объектов или же (в случае отношения “многие-ко-многим”) – строить “фиктивную” таблицу, представляющую отношения. Эти решения точно так же вводят в картину мира новые “элементарные частицы”, которые существуют наравне с “настоящими”, но ничего “реального” не представляют.

В книге предлагается принятую в современном ООП аристотелевскую модель последовательно перестраивать, приводя ее к “истинно объектному”, по мнению автора, виду – в отличие от понимания “объектов” в современном ООП. Как один из “промежуточных” шагов рассматривается “логическая” модель. Вместо атрибутов предлагается рассматривать принадлежность к классам (не в смысле “обычного” ООП) – например, вышеупомянутые “Жигули” Ивана Ивановича можно отнести к классам “автомобили”, “все белое”, “все ржавое” и так далее. Для того, чтобы представлять отношения, в картине мира появляются “кортежи” (tuple), которые, как и индивидуальные предметы, могут входить в какие-то классы. Например, пара <Иван Иваныч, ржавые Жигули> входит в класс, который можно назвать “владеет” – равно как и пара <Иван Иваныч, участок в 6 соток за 101 километром>. Точно так же можно представлять отношения из многих элементов – например, “Иван Иваныч выписал любимому внуку доверенность на “Жигули”" можно представить тройкой <Иван Иваныч, любимый внук, Жигули>, входящей в класс “кто-то выписал кому-то доверенность на что-то”. Всякий же объект оказывается представителем универсальной категории “логических объектов”.

Важное новшество в этой модели – возможность рассматривать “классы объектов” с позиции теории множеств. “Класс” – это множество объектов, которое само может являться подмножеством другого класса. Примером такого взаимоотношения между классами можно назвать цвета – класс “все раскрашенное” содержит классы “все белое” и “все красное” как подмножества. Это позволяет рассматривать иерархии классов, более точно отражающие реальный мир, чем в случае других моделей. Некоторой сложностью в главе про логическую модель оказывается понимание автором теории множеств. Например, если множество “всех красных” объектов – это объекты A и B, а “всех белых” – Y и Z, то описанный выше класс “всего раскрашенного” будет содержать не два описанных класса, а четыре объекта A, B, Y и Z. При этом автор использует термин “member of” – то есть описывает множество {{A, B}, {Y, Z}} вместо {A, B, Y, Z}.

Кстати, с помощью логической модели можно проектировать реляционные базы данных. Да, они получаются сложнее, чем в книжке “PHP и MySQL для чайников” – но понимание того, что таблица БД – это список кортежей, входящих в какое-то отношение (поэтому БД и “реляционная”), а не “записей об объектах”, позволяет представлять многие вещи куда эффективнее. Фактически это обобщение принципов, заложенных в ER-модель на отношения с количеством членов, большим двух.

Логическая модель снимает сложности с отношениями, но проблема представления изменений остается. Для ее решения предлагается ввести “четвертое измерение” – время, и вместо локализованных во времени “логических объектов” рассматривать объекты на протяжении всего их жизненного цикла. Фактически, это замена значения функции на саму функцию или ее график, то есть некоторую кривую – очень плодотворная идея в математике и, как ни странно, в науке о представлении окружающего мира. Эту модель автор называет “объектной” – в очередной раз вворачивая модное слово и совершенно смущая читателя – особенно того, который обнаружил в главе о “субстанциальной” модели все понятия современного ООП.

Кстати, в книге очень сложная и непривычная на первый взгляд терминология. Например, “объектами” называют совсем не то, что понимается под словом “объект” в книжках “по UML”, а с первого раза понять слово “substance” вообще невозможно. Про странное понимание терминов теории множеств я уже упоминал. Оно только запутывает читателя, хорошо знакомого с этими терминами.

После последовательного построения “объектной” (в терминологии автора) модели она применяется к нескольким примерам, разумеется, весьма успешно. Построенная методология преобразования “сущностных” моделей в “объектные” называется красивыми словами REV-ENG™ (да-да, именно со значком trade mark), предлагается автором в качестве абсолютно универсальной и везде-везде применимой. Насчет абсолютной ее применимости не знаю – хотя очень похожий метод лежит в основе стандарта обмена данными ISO 15926, и по утверждениям все того же [info]ailev, это “наше все” и вообще, будущее человечества. Во всяком случае, книжка круто “расширяет сознание” и заставляет по-новому взглянуть на привычные вещи.

PS Несмотря на то, что я поставил тег “программирование”, в книге нет ни единой строчки кода ни на одном из языков программирования. Читать можно всем без исключения, хотя очень желательно понимание существующих методов работы с разнообразными данными – хотя бы в рамках UML и того, что называется “теорией баз данных”.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Радиокубики

Прислали ссылочку на описание радиоконструктора Gakken EX-150.

Gakken_EX150

И вспомнилось мне, что где-то я такое уже видел. На сайте Валерия Харченко “Радиотехника XX века” нашелся советский конструктор ЭКОН-1 – но появившийся на 10 лет позже Gakken и при этом очень на него похожий. Могу предположить, что скопирован был Gakken EX-30, как раз на 30 конструкций.

ekon01

Казалось бы, все ясно, совки сперли игрушку у японцев, да еще и опоздали на 10 лет? Так вот, дальнейший поиск по сайту Харченко принес более интересные ссылки. Например, в 1978 году выпускалась “Радиоэлектронная мозаика” – тоже кубики с радиодеталями, но не вставлявшиеся в “базовый модуль”, а соединявшиеся друг с другом перемычками:

radiomozaika

В 1977 году – конструктор МРК-2 (40 различных схем):

mrk2

Думаете, что отстали мы всего на 5 лет? Нет, иначе я и не стал бы писать про советские конструкторы.

Если был МРК-2 – то несомненно, был и МРК-1. О его существовании ни я, ни Валерий Харченко не знаем. В 1971 году в приложении к “Юному технику” была опубликована статья В. Мацкевича “Электронный конструктор”, где юным техникам предлагалось “сделать пластмассовые кубики размером 3,5х3,5 см и вмонтировать в каждый 3…4 магнита, притягивающие кубики друг к другу и прижимающие при этом латунные или посеребренные контактные пластинки, укрепленные на кубиках.” Кроме того, сообщалось, что “электронный конструктор в скором времени будет выпускаться промышленностью”. Кроме того, было описано 19 несложных схем. Брошюра в формате DJVU отсканирована, так что можно с ней ознакомиться.

Википедия сообщает нам, что производство наборов “радиокубиков” под маркой Gakken началось в 1972 году. Может, байки про японцев, читающих “Маленькие хитрости” в журнале “Наука и жизнь” не лишены оснований?

UPD А вот кстати на Милитера нашлась изложенная автором история создания этих кубиков. Работая на Чкаловской станции юных техников, в конце 60-х он и придумал эти самые “кубики”. В 1969 году в Японии на выстаке “Экспо-70″ демонстрировался в том числе и собранный юными техниками робот. Его электронная “начинка” была собрана именно этим способом.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Фоменко-style

Карманный историк готовится к экзамену по истории стран Азии и Африки. В одном из билетов сочетаются вопросы про реформы Мухаммеда Али и восстание боксеров. Интересно, что будет за альтернативный ответ в стиле академика Фоменко, благо он так и напрашивается?

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).