суббота, 25 июня 2011 г.

Стили программирования одним словом

Процедурное = Как?

Большие куски кода, показывающие *как* это работает.

Объектное = Кто?

Декомпозиция логики до атомарных сущностей. Вся философия сводится к тому, чтобы определиться: "*Кто* ответственен за это действие?"

Функциональное = Вау!

Без комментариев. Вау, оно работает!

пятница, 24 июня 2011 г.

Расстояние до людей

Не люблю отношение полного линейного порядка. То есть когда объекты можно вытянуть в одну цепочку, и сказать что "какой-то лучше другого". Это значит, что что-то вы меряете по одному измерению, либо объекты у вас плоские/одномерные.

Несложно ввести ввести расстояние до родственников. На расстоянии 1 находятся мама/папа/брат/сестра/жены/дети (если есть). И далее по индукции. Тети и двоюродные братья на расстоянии 2. Двоюродные дядя на расстоянии 3. Остальные - дальние родственники.

Стоит ли вводить расстояние на людях? Это не географическое расстояние, это не разница в возрасте или весе. Люди не есть одномерные объекты. Поэтому они у меня разделены на классы, не совсем эквивалентности.

Примерно раз в неделю я вижусь в девушкой. Она мне улыбается, обычно задает два вопроса, на которые я отвечаю отрицательно. Она продолжает улыбаться и говорит "Спасибо!". Далее, я складываю мелочь в карман сумочки, беру продукты и иду домой. Там же я вижусь с охранником, но тут мы оба немногословны. И как им показать свой богатый внутренний духовный мир? Они ж меня держат за бездушного покупателя.

А примерно две недели назад у меня была минимальная переписка (4-5 писем) с неизвестным мне человеком. У тут ты понимаешь, что ты его понимаешь, и он тебя понимает. Хотя согласно всяким фейсбукам он уже кучу лет находится на другом континенте. Он пишет на русском языке, хотя некоторые слова уже приходится переводить с англо-русского на мой ломанный русский. Но главное, мы друг друга понимаем. (В итоге еще оказалось, что я был на него подписан в ЖЖ (itman) уже года 2, и буквально за два до переписки минимально участвовали в одной ветке обсуждения там же в ЖЖ. )

Получается, что расстояние до людей для меня выражается близостью понятийного аппарата. Можно каждый день видеть человека, произносить какие-то фразы на русском языке и не понимать друг друга. А можно говорить на разных естественных языках, никогда не видя собеседника (пусть даже он +30 по возрасту относительно тебя), и прекрасно понимать друг друга.

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

вторник, 21 июня 2011 г.

Очи черные

Или красные...

Еще в школе на улице встречал людей с красными глазами. Так что страшно. Прошли годы, теперь мне тоже страшно за то, что я теперь пугаю кого-то другого.

При условии, что на работе за монитором = 8..9 часов, а все остальное время опять же за монитором, но уже дома, или читаешь; бывают дни когда спишь 5 часов, а еще вчера вечером почесал глаз. С утра в зеркале отражается собирательный образ из современного кино: что-то среднее из вампира, терминатора и наркомана. По крайне мере этих чаще в фильмах показывают, чем программистов.

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

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

Вампиров в реальной жизни пока не встречал. Они не ездят в московском метро и нельзя быть понятым на квартире у вампира. Скорее всего, они бы приняли меня за своего. Осталось научиться кусаться и прыгать по стенам.

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

вторник, 14 июня 2011 г.

Самым важным из искусств для нас является ...

Не, не кино.

В среднем детстве (6-8) не любил читать. Видимо, телевизор/мультики были более активны. В чуть более позднем детстве (>16 .. \inf) читать интересное - это интересно. Тут есть субъективное понятие "интересное". Школьный курс из всяких Толстых и прочих не входит в понятие "интересное". Хотя в классе я занял второе место по чтению "Войны и мир", прочитав первые два тома. Там хоть какая-то движуха была.

Телевидение и радио перешло в раздел "лютой ненависти". Даже спортивные передачи: как можно высмотреть футбольный матч, пусть даже финал ЧМ? По мне лучше самому носиться по полю 2 часа, что я и делаю. На формуле-1 засыпаю на 5 круге, в болиде по-любому лучше сидеть - там не заснешь. Хотя в прошлом году показывали турнир по русскому бильярду, смотрели в рабочее время. Это единственное, что я даже качаю с торрентов.

И тут такой резкий переход к сюрреалистам. Внезапно, но они мне нравятся. Не все, но эти почти полностью: Эшер, Магритт, Гонсалвес, Родни Смит.

Конечно, есть еще куча сюрреалистов, и классиков, и современников. Но я зачем-то выделяю только четверку, об остальных или не знаю, или меня торкает он них меньше. Так же есть еще куча направлений: от натюрмортщиков до импресисонистов. Каких-нибудь геометрических абстаркционистов фиг поймешь - может, у меня племянница лучше рисует. А есть еще символисты - их вообще без пакета с клеем трудно понять, "что хотел то?"

У сюрреалистов четкая линия - противоречие. Ты четко видишь это противоречие, но как оно получилось - это уже тонкость/искусство. А выразить противоречие в картине...

Импрессионизм отпочковался и присутствует, пожалуй, только в кино. Сюр в музыке отсутствует, но зато есть в литературе и синематографе: опять же это выражается в противоречии, переходе/попытке_вырваться на абстрактный/следующий уровень (сон/рекурсия/вызов_функции). В литературе это похоже на Кэролла "Алиса *", Стругацкие (стандарт: "Пн", "3", "улитка"), Шекли(куча всего), и куча всего чего я пока не читал. В фильмах это стандартный ширпотреб из "Inception"/"Matrix"/"13 floor". Таки порекомендую посмотреть фильм "Экзистенция", вряд ли вы его видели.

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

В заключение: в кино/литературе/художестве мне нравится, ну вы уже знаете...

ЗЫ. Главное - не путать сюр с психоделикой. Там сплошные белые роботы, или синие. Я ж говорю, символизм.

пятница, 3 июня 2011 г.

call for recommendation

Отобрался на местный SSSEV2011

Главный вопрос: брать ли с собой противогаз?
Второй: что можно хорошего посетить в default city?

В принципе, этот вопрос я задавал за последний год, наверное, 10-15 людям. Статистика такова: те кто как-то связан с городом, по определению ничего не знают, ибо сами нигде кроме метро не были (я тоже про свой город абсолютно ничего не знаю. Кроме зоопарка и музея, где можно пострелять, ничего порекомендовать не смогу, да и то я там был на экскурсии совместно с москвичами :) ).

В прошлом году я дошел до стадии "работа гидом для иностранцев". Но шахматы для Штефана в центре так и не смогли найти. В ГУМ-е песец как дорого, даже для иностранца. А так по карте тыкались, дошли только до двух фитнесс-центров; на карте отображено как футбольный мячик, думали что-то со спортом связано. Почти.

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

В общем, интересуют нетривиальные места (во всех стандартных я уже был. Хотя не, вру, отделение милиции №5 ЦАО не посещал, и не планирую). Музеи, лесопарки с маньяками, пивные, массовые мероприятия не интересуют.

У меня осталась положительная ссылка на ботанический сад МГУ (к МГУ имеет малое отношение, географически где-то около Останкино). (update 14.06.11. явный косяк с названием. у самого универа есть такой сад, у останкино он назвается РАН, но мне говорили что-то связанное с Японией)

И есть отрицательная ссылка на бородинскую панораму. Надо куда-то далеко ехать, вход прикольный/платный: стоимость составляет 80 копеек (или 75, именно *копеек*). Проезд на метро = 26 рублей, а тебе еще и сдачу с рубля дадут. Говорят входишь в здание, а там всего одна панорама. Да, большая. А ты потратил кучу времени и 80 копеек и как-то разочарован. Походу, цена коррелирует с качеством.

Порекомендуйте что-нибудь, уровня :
city

Да, кстати. Я тут открыл комментарии на запись. За последнее время как минимум 4 человека пытались здесь что-то написать и у них не получилось. Я даже в последний раз открыл, но мне высказались напрямую. А потом неизвестный мне человек внезапно оставил каммент. Работает.

Поясню свою политику. Нет, я не боюсь спамеров, не троллю, не участвую в религиозных войнах уровня чай vs. кофе, с++ vs. pascal. Ответ в какой-либо системе обычно подразумевает обратную связь. Я зачем-то зашел в "одноклассники" и обнаружил сообщение двухлетней давности, где меня куда-то зовут в future in the past через 2 дня. Поэтому во всех системах я первым делом отключаю возможности написания, все уведомления и прочее.

У пары коллег на работе в миранде/аське, как к ним не подойдешь, идет сплошной поток сервисных сообщений уровня "пользователь зашел в сеть". Меня на моей машине это сильно коробит, поэтому везде выключены все звуки и всплывающие окна; хотя я часто промахиваюсь в контакт-листе и тыкаю не туда. По приоритетам, мне стоит говорить лично, или телефоном, или почтой. На втором слое идут skype/jabber. Все остальное я признаю ненадежным, ибо могу узнать только через 2 года, а могу и не узнать.

А теперь про первый абзац. Там будет сам Хоар (да, тот самый Хоар). В моем рейтинге крутизны он занимает второе место после Кнута. Третье место довольно расплывчатое, я бы отдал его Тарьяну.

За это я уважаю MSR. У них довольно много крутых людей. MSR это вам не MS.

По неофициальной информации основное будет в Крылатском, жилье от ВШЭ похоже в Одинцово (а это уже ближнее замкадье в 10 км), что несколько пугает. Предполагалось и жилье в Крылатском, но видимо решили, чтобы участники почувствовали себя москвичами и тратили как минимум час на дорогу ( . На сайте ВШЭ висит прикольное объявление для студентов, что стоимость общаги составляет 55 рублей в месяц (два проезда в метро).

Так как здесь стабильно читают только 2 человека, причем у одного я уже спрашивал, а второй не в теме... то если вы вдруг знаете что-то интересное в Москве (и это мне возможно тоже будет интересно), то напишите координаты. Не хочется 11 дней просидеть в Одинцово.

четверг, 2 июня 2011 г.

Чуть больше чем логарифм

Таки официально, я не логарифм и даже не линейная функция. Теперь у меня есть степень. Какая-то Там, на Н (ктн). Протокол № 20к/49. Второй квиточек еще не пришел, но со дня на день должен. Электронное подтверждающее сообщение с диссовета имеется.

Был некоторый геммор: ВАК-у не понравилась одна из справок (на выписке с моего вуза о семинаре не оказалось печати и сама бумага была на одной странице. Пришлось переделывать. Не очень приятно получать сообщение, что "рассмотрение вашего дела приостановлено". Хотя по срокам в мат.ожидании + сигма = 3 месяца 11 дней. Мне говорили, что мат. ожидание = 2..3 месяца).

Стоит описать некоторые мифы и как это было и бывает.

Что потребуется. Стандартная часть скорее всего вам известна: статьи, экзамены, семинары, кирпич(!) (без него никуда). Малоизвестная часть: в итоге в ВАК направляется 34 пункта (справки, выписки, копии, оригиналы). Для докторов нужно 35 = 34 + копия кандидатского диплома. Сложно сказать в одном предложении, насколько это является бюрократической частью. Хочется узнать, сколько надо справок, чтобы стать космонавтом.

Финансы. В принципе, все мое образование (начиная с дет. сада) было бесплатным (например, у меня даже никогда не было репетиторов). Единственное, что в крайний год пришлось потратиться на 2 неоплаченные поездки в мск (в тот момент не числился в универе, а спонсоров у меня нет), фуршет и проживание на защите. Ну и перед местными проставиться(тут аккуратнее надо, чуть не спился).

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

Правда, один как бы крутой факультет одного как бы крутого вуза был готов рассматривать работу у себя. Но на всякие организационные затраты они просят денег. Хотя сумма и детская (меньше средней московской зарплаты, но больше средней местной), но выглядит это как взятка; и (не я) решил с ними не связываться. Недавно узнал, что они приняли решение не поднимать стоимость обучения, на текущий момент на очном оно составляет 270 тыс. рублей (явно в год) :) .

В итоге я породнился с ИПУ РАН, знаком с большим количеством хороших людей.

Мелкие тонкости. Когда дается команда на рассылку автореферата, то требуется еще получить как минимум 5 отзывов на него. Так как из обязательного списка рассылки вам никто отвечать не будет, то надо побегать (и не забыть включить их в список рассылки). Если вы в столицах - то все просто, там много связей. Так у меня в провинции нашлось максимум две организации, способных дать отзыв, то пришлось остальные собирать в реальном времени за день уже в мск. А это риски и дополнительная работа.

Сроки: Предположим прошла защита. Подготовка еще 2 больших и важных документов. Потом в течение месяца все документы отдаются в ВАК. Еще пара недель, и они начинают свой бизнес-процесс. Посылается первый квиточек по почте. Процесс, как я уже говорил, длится 2-3 месяца (хотя говорят для гуманитариев и экономистов длится 6-8 месяцев). Итоговое решение (таки надеемся, что положительное. На сайте ВАК-а есть кучка отрицательных решений), второй квиточек. Диплом будет еще 3-4 месяца.

О совпадениях:
- итоговое утверждение ВАК-ом от 13.05.11 по специальности 05.13.11.
- я уже твитил, но повторимся. Жил в 13 квартире. Обратный билет был тоже 13. Как приехал и узнал номер квартиры, так сразу все понял, что все будет хорошо.
- в итоге трижды случайно пересекся с разными людьми, что несколько выбивается из терВера. Это надо будет в отдельный пост. Мир вообще маленький, что уж говорить про Москву.
- открываю книжку, стоящую на полке на работе. Смотрю - фамилия автора мне знакома. Офигеть, да это ж человек с дис.совета (Калянов Г. Н., ИПУ). Далее на первой странице он благодарит своего учителя. Да это ж мой рецензент (Сухомлин В. А., МГУ ВМК).

В итоге у меня было 6 командировок в 2010, активный довольно год получился. Настроимся на положительную производную.

update (10/06/11): таки, бумажная дошла. решение от 13.05, отправили по штампику 31.05 (тоже мое число), пришло 10.06. Теперь побегать и сделать военник, загран и получит какую-то премию в универе.

среда, 1 июня 2011 г.

Кубическая тема

Я не фанат Пикассо и кубизма, но у меня сейчас есть кубик Рубика на 3, на 4, и неокуб.

На 4 я еще не научился собирать, на 3 делаю в полуслепом режиме, необкуб - это куча намагниченных шариков и там цель несколько другая. В местных магазинах есть кубик на 5, но мне еще рановато. Подозреваю, что там тоже будет издевательская наклейка "от 3 лет".

Еще неделю назад съездил на выездное чгк в екб. Позитивно-неотрицательно. До этого весь мой опыт состоит из 2 невыездных чгк и пара свояков.

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

Первая - поиск в ширину, второе - поиск в глубину, третье - что-то среднее. Моя политика на текущий момент состоит в среднем между 2-3, по мне лучше быть бОльшим экспертом в некоторых областях. Почти Шерлок Холмс, но чуть более широкий.

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

На выезде было 3 местные команды (в т.ч. школьники 29). В итоге мы оказались в середине (30/68) по чгк (среди местных даже оказались чуть впереди). В остальных играх никуда не вышли из группы.

В последнее время перед отправкой резались в контакт. Это породило массу перлов:
- средство от поноса на "л" = лейкопластырь (оригинал - какое-то труднопроизносимое лекарство)
- в ней сидят на "ма" = мама (оригинал был малина)
- тюльпаны на "ма" = марихуана (ни фига себе ассоциация)

Оказывается, у них есть свой рейтинг по чгк. Странно, что не используется Эло... а какие-то арктангенсы. Среди топ-20 обнаружил, что Олег Богданович Х. - он же просто Олег - крут. Так же в топ-20 обнаружил еще одного, но уже одностороннего знакомого человека, Сергей Н. Сначала я видел его пару лекций по аукционам (привязка по фамилии и голосу за кадром), затем я как-то увидел по телевизору в элитарном чгк (привязка по лицу), а затем я где-то увидел одновременно и фамилию и фотографию (тут окончательно все связалось).

понедельник, 30 мая 2011 г.

Деревья

Буратино был тупой... (С)

А-а-а, везде деревья. Мне они уже снятся. Идешь утром в ванную чистить зубы - видишь дерево. Когда кушаешь - видишь дерево. Я уже боюсь ходить в туалет.

Интересно, много ли существует людей, таких как я, которые подходят к окну и говорят: "Бля, и тут дерево". Они не бинарные - они зеленые.

Мне говорили, что существует болезнь излишнего использования паттерна сиглетон - называется "Синглетонизм". Видимо, мой случай назовут "массивный дендризм".

По смыслу я везде должен видеть массивы, но смотря на все через логарифмические очки ( * log(n) диоптрий) везде вижу деревья.

Интересно, пойдет ли в зачет кубка Дерево/Дом/Сын такие деревья? Хотя на огороде есть несколько моих инстансов деревьев, да и домик я требую засчитать, с сыном надо осторожнее. Это вам не 2-3-дерево.

суббота, 28 мая 2011 г.

IT-образование

Много слов ни о чем... Конечно же, все написанное - это мое личное мнение. Все что я пишу - это всегда мое личное мнение. Иначе я ставлю кавычки и указываю источник - это называется цитирование.

Прежде всего сразу же стоит отметить проблему с русским названием. В русском есть понятие "комьютерщик" (абстрактный носитель свитера), "программирование", "информатика". Кто такой программист? Даже тут куча тонкостей, на что можно убить десятки килобайт.

Что такое программирование? В английском есть две крайности: CS и ЕЕ. Программирование - это посередине. Одно - теория, другое - практика (здесь я использую слово "разработка"). Хотя в штатах есть среднее понятие CE (computer engineer), но как я понял, оно ближе к EE. В общем, где-то между CS и CE - это и есть программирование.

Кто у нас в России учит программированию? Мой рейтинг таков:

1-2) ИТМО (КТ)
1-2) МГУ мехмат (некоторые кафедры мехмата)
3) СПбГУ матмех (некоторые кафедры матмеха)
3*) АФТУ

Детализация по кафедрам нужна, ибо на том же мехмате МГУ есть какая-нибудь кафедра гидромеханики, что к программированию имеет o(1). МГУ-шники - это все дискретные - логики и теории алгоритмов, алгебры, дискретной математики. СПбГУ - тереховская, у ИТМО - я знаю только про КТ.

АФТУ идет со звездочкой, потому что они только по магистрам, и там только 1-2 группы. Даже в Питере о них знают немногие (человек с АФТУ сильно удивился, что я знаю что это такое). Направление CS там довольно hardcore-ное, ибо люди с ПОМИ.

Это не значит, что если вы не с перечисленных организаций - то ничего не знаете. Да будь у вас даже красный диплом с ММ МГУ, то это ничего не значит. Если вы не с крутого вуза, то вы можете всего добиться сами, если с крутого - то есть шанс, что кто-то на парах рассказывал что-то путное. Другой вопрос, ходили ли вы туда, и был ли эффект. А то словосочетание "прослушал курс" можно понять двояко.

Есть большие вопросы: "Чему же обучать?"

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

Так повелось во всем мире, что на младших курсах дают общие предметы, а затем идет специализация по областям. Тут претензия, что необходимо делать упор на дискретных областях, а не на непрерывных.

Я не против матана и тервера, оно надо, но надо в другом качестве и количестве. Вот вам рассказали про диффуры в частных производных, ТФКП/функан, хардкорный тервер... Теперь вы можете одной левой брать диффуры и жать штангу. Причем одновременно и одной рукой. Круто. Но применительно к компьютерам это абсолютно бесполезно.

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

Я не пишу учебные планы, хотя симметрично знаком с человеком, который пишет (внезапно, это даже 19-ая специальности в моем вузе, и весь поток МГУ ВМК). Наши местные все ругали составителей планов. Как оказалось, составитель плана тоже кого-то ругает (дальше по цепочке идет минОбр), и в самом деле он ни в чем не виноват, его тоже сильно ограничивают сверху.

Когда бываю на всяких мероприятиях по стране для поддержания разговора я узнаю об обучении в городе собеседника. У меня сложилось устойчивое мнение, что в большинстве мест вот эта проблема: дискретной математики за исключением меры 0 нигде нет, зато везде есть непрерывная. Видимо стране больше нужны люди, которые знают вычислительную математику и способны запустить спутник в космос. Только что-то спутники назад возвращаются.

Не призываю сжечь Жанну Д'Арк кого-либо. Арнольд лет 10-12 назад писал про французское математическое образование. Там реально все страшно. Но была такая мысль, что образование работает как фильтр - умный человек и сам всего сможет достичь, а тупых фильтруют.

Хочется чтобы у нас образование помогало, а не фильтровало и не мешало. Но для этого нужны цели, и понимание что такое программирование и зачем оно надо. А тут даже у меня глухо.

четверг, 26 мая 2011 г.

Краткость

Тут недавно взяли на слабо. Задача почти стандартная, известная как K Problem + большая грамматика.

Далее "моя" реализация. "Моя" - потому что я заиспользовал комбинаторы.

Парсер комбинаторы - круто. Смотрим и писаем кипятком кончаем наслаждаемся.

Эта часть легко находится по подстроке "-- Carsten Schuermann: From: Monadic Parser Combinators [Hutton, Meijer]"


Тут пока некоторая магия, в которую за 5 минут не въехать. Далее должно быть понятнее.

AST - это или ссылка на ячейку, или число, или бинарный оператор из AST.
Вводим парсер для AST. Опишем стандартные арифметические операторы.

А теперь *барабанная дробь*



Собственно все, парсер (лексер + синтАнализатор) готов.
Запускаем и оно работает.



Где вы еще сможете в 3-4Кб уложится? Это вам не парсер-генератор, здесь все сделано вручную... Правда, исходя из этого - это LL. Бывает кое-что затруднительно выразить в LL, да еще и следить за левой рекурсией. LR вручную непросто реализовать, но мне местами такая грамматика больше нравится. Есть еще всякие PEG/Packrat, с не очень понятной теорией (трудно понять, выразима ли конкретная грамматика в них), и куча непрактичных но теоретических парсеров.

Далее опишем типы для "excel". Ячейка - есть строка, лист как коллекция пар из (ячейка, строковая формула) и так далее. В идеале надо бы абстрактный маппинг (словарь/функцию) из ячейки в формулу.



Простая вычислялка AST и вычислялка для строки.



Пара тривиальных вещей:



Несколько типов для вычислителя excel-я.
EvaluatedCellBuffer - это результат вычислений. Далее его как аккумулятор и будем вычислять.



Вся логика вычислений в следующем:



Далее очевидная вода:



Вычисление одной ячейки:


Тривиальный вычислитель



Пара утилитных функций



И вычисление всего листа



Примеры листов:



И примеры:


Еще можно добавить шапочку :)


В 8Кб имеет парсер, AST, вычислитель, и обход и расчет листа excel.
Несложно расширяемо на
- функции и несложную типизацию в встроенном языке
- отказаться от дву(3 ли 3.5 как в excel) мерности задачи и перейти к произвольной размерности.

У меня в текущем проекте есть нечто похожее, но это явно не 8Кб.

ЗЫ. Научиться бы здесь нормальное форматирование делать... В процессе.

пятница, 13 мая 2011 г.

Железотворительность

Подарил:
- кучку флешек, флеш-карточек
- две планки памяти
- видеокарточку
- устаревшие телефоны

Продал:
- два мертвых винта
- сломанный ЭЛТ-монитор
- потрохи от умершей машины (проц, блок, видео)

Разобрал на части:
- 3 cdrom-a

Агрегируем: все мне ненужное - дарю, все сломанное - или разбираю до винтиков, или продаю тем, кому нужны трупики.

Полтора ящика все равно забиты железным хламом. Хлам - это не мусор, его еще не выбросишь. Подарить что ль?

четверг, 12 мая 2011 г.

Идентификация

При рождении нам дают имя и фамилию. В тех случаях, когда отцовство установлено, тогда еще дают и отчество. Ну, или там ищут того, кого пропишут в свидетельстве о рождении (математики говорят: назовем данного человека "отцом").

Всякие извраты с индийским наименованием не рассматриваем. Из серии "А знаете ли вы что...?": некто Вишванатан Ананд - это не просто имя и фамилия крутого индийского шахматиста. Оказывается, Ананд - это имя, Вишванатан - имя отца, а фамилий в нашем понимании у них (него) нет. В крайнем случае каста и город. Сошлемся на википедию.

В древней Греции, как сейчас помню, к имени добавляли город. В связи с развитием интернета, к имени сейчас добавляется логин/ник. Далее несколько замечаний о никах.

Понятно, что есть требование к уникальности (нетривиальности). Если назваться избито "Alex"... Хотя в некоторых кругах ник "Petr" - это очень круто, это реально имя собственное.

Если вас тоже зовут Петр, а ник уже занят, то можно добавить суффикс, префикс, инфикс(?). Можно взять производную по имени, фамилии, профессии. Можно всякие "гламурные_кошечки", но это сложно указывать в реальных никах (почта, например).

Отсебятина. В старших классах, начале студенчества я выбрал в качестве ника число, длинной 8 знаков. Наверное, в этом сообщение оно где-то в заголовке должно промелькнуть. Психиатр может что-то сказать по этому поводу, но скажу другое.

Проблема в том, что:
- почти никто не может его запомнить с точностью до знака. Только я и Артем В.
- не везде он валиден. Хотя, насколько я помню, согласно RFC email может начинаться с цифры. Но конкретную систему не убедишь что ей стоит почитать RFC. Поэтому приходится добавлять префикс, или другое.
- увы, и даже это не уникально. По крайне мере #.blogspot.com занят китайцем, еще на каком-то ruBoard-e это тоже оказалось занято.

В окружении (друзья и знакомые) есть те, кто в качестве суффикса выбрали двузначное число. 10/13/52/etc. Причем никто не может обосновать выбор. Это не возраст, не год рождения, не квартира, и не школа. Если увидите ник *239, то это скорее всего с Питера(школа), если *57 - с мск, если 30/40/41 - хоть откуда.

Поэтому я перешел на фамилию. Тут есть тоже плюсы и минусы.

+ Почти уникальность. В городе не более 10 человек, во всех соцсетях порядка одной/двух сотен.
+ По алфавиту в начале.
+ В большом неотсортированном списке в глаза бросается, ибо вторая буква.

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

ЗЫ.
Сложнее противоположному полу: есть некоторые особенности с постоянством/временностью фамилии.

Кстати, есть предложение переходить от отчества к матриархальной сущности (мочество? матринство?). Ибо если рождается девочка, то родители могут сказать что "внуки точно их будут".

среда, 11 мая 2011 г.

Знаменитость

Однажды на матче еще неизвестного Аршавина присутствовал Диего Марадона. После матча Марадона подходит к Андрею и говорит: "Ты круто играешь. Можно твой автограф?". Аршавин офигел: "Конечно!" На следующее утро Аршавин проснулся знаменитым, но уже не в своей квартире, и без машины...
(С) анекдот.

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

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

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

пятница, 6 мая 2011 г.

Избыточность воспитания

Чуть ли не половина сообщений в скайпе/жаббере у меня составляют "подтверди/получил?/не получал". Началось где-то год назад, похоже когда поменял роутер. Старый вешался довольно часто, при 20 торрентах не мог протянуть и получаса.

Новый роутер держит все, но ИМ-чаты глючат. Сообщения иногда приходят с недельным опозданием, иногда не доходят. Если голосом общаться, то бывает тупо падает после получаса и пару минут не доступен.

Поэтому сообщение от меня в виде "подтверди" не стоит рассматривать как признак дурного воспитания. И если я не ответил на вопрос, то тут есть вероятность что я его не получал.

ЗЫ.
И в шахматы во "вконтакте" играть невозможно, после двух ходов соперник не отвечает. Хотя, единственное что там осталось - музыка, играет без проблем. Какие-то проблемы на уровне поддержки коннекта.

четверг, 5 мая 2011 г.

низкоуровневость

c++ такой...

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

Программирование - это то что по ночам, дома, когда посещает Муза. Муза может посещает немного чаще, но хрен знает как она выглядит, и сосчитать количество посещений довольно затруднительно. А факт программирования - коммиты в 2 ночи, нетривиальные вещи (для меня сильно не тривиальные), неделю/месяц/полгода думаешь и наконец-то собираешься и добиваешь - можно посчитать.

Выжимаю что могу, даже переписал на плюсах. На решетке (С#) пробил построение динамического суффиксного массива в 100кб/с (на первых ста килобайтах :) , дальше сказывается log^2(n)). Предыдущие алгоритмы жирноваты, там чуть ли не 3/4 времени вычисляю lcp (DRMQ). А сейчас даже lcp вычислять не обязательно, только добровольно. По константе раз 5-6 лучше.

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

Низкоуровневость и отсутствие инструментов бесит. Хотя я на это сознательно шел - это про первое. Приходится мыслить терминами "кусок памяти" и указатель. На чистый С не буду переходить, ибо у меня сплошные массивы деревья, их довольно много и объектность с виртуальностью позволяют это как-то целостно видеть. Иначе будет ад.

Дайте мне нормальную строку - мне много не надо, всего лишь: индексный доступ, возможность удаления/вставки/замены в любой позиции. Все за O(log(n)). (С) рекламный слоган. Вроде бы немного хочу, ан нету. Видимо, максимум что нужно остальным - это stringBuilder с потоковой записью в конец. А мне надо все и сразу и везде.

Год назад я "жаловался" на отсутствие простых массивов. Ну нету нигде нормальных. А нужно мне опять немого: индексный доступ, удаление/вставка/замена в любом месте и опять же за логарифм. Правда, еще нужно пару плюшек.

А везде массивы и строки - кусок памяти. Такое ощущение, что кусок чего-то такого густого и оно так на полу на кухне лежит. Даже трогать не хочется. Это блин, кусок памяти. Хочется чего-то гибкого и быстрого, а не кусок.

Конечно, воняет велосипедизмом. Но почему-то приходит осознание, что это круче велосипеда и местами на 4-5-6 и более колесах с термоядерным двигателем и крыльями - можно лишь подсматривать на другие транспортные средства.

Несколько дней избавлялся от ошибки. На маленьких строках все работает, на баааальших падает с полной фигней. Если бы в языке было понятие выхода за границы массива, или хотя бы что я не пишу в "получужую" память, то мне бы хватило и 5 минут. А так как выделение памяти для переменных/объектов есть кусок памяти, то случайный выход за границы можно уловить только через пару дней. Или я совсем не знаю ключей компиляции.

А если использовать всякие stl и прочее непонятное типа boost, то мы похоже ничего кардинального не выиграем. Ну, будет некоторая константа по скорости, но по всему остальному преимуществ уже не будет. Тогда стоит и переходить на более высокоуровневые инструменты.

Поэтому у меня всего один #include < string > , в одном не критичном месте, и никакого использования даже stl-я.