Home

Advertisement

Dec. 16th, 2009

  • 12:59 AM
yay, a new cmos battery was all it took to get my old (and not in the best of shape) laptop back running so I can read facebook from my parents house even if I don't bring my computer home with me. Had to come home tonight because I have a dentist appointment bright and way too early tomorrow morning before work... And then we have the work christmas party all afternoon at work!

Dec. 12th, 2009

  • 5:18 PM
Paul and I went to go look at apartments again today. This time we found one I actually really liked :) Unlike the last ones in Sunnyvale for about the same price, this one is in Palo Alto, and it's sunny and has a beautiful view of one of the city parks...so we're working on the paperwork for the place so we'll have a place to live lined up :)

Dec. 7th, 2009

  • 7:49 PM
Wedding planning is a busy time. This weekend we went to go look at an apartment (that I didn't end up being all that keen on), went to pleasanton to meet with the pastor, and then a potential photographer, who seemed really good, so we decided to go with her. And we worked on invitations. Lots and lots of invitations. Folding, stuffing, addressing...I've done all the addressing because apparently I'm the only one with neat enough handwriting to make it look pretty enough with calligraphy lettering and stuff--not that my calligraphy is perfect (far from it) but even sloppy calligraphy looks better than messy printing. This week we still need to finish off all the lingering invitations--all the ones we haven't tracked down addresses for yet and whatnot...
Если вы делаете какую-то программерскую библиотеку, то у вас есть проблема — документация.
Когда этой проблемы нет, есть другая — актуальность этой документации.

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

Что такое документация для библиотеки?
1. Это общие слова — концепция проекта, которая меняется очень редко. Ее придется написать ручками.
2. Объяснение того, какой цели служит каждая сущность библиотеки (метод / класс).
3. Это примеры кода, ...
4. ...с объяснением того, как поведет себя эта библиотека в указанном примере.
5. Возможно, какие-то связующие слова, которые придется опять написать ручками.

Информацию для п.2 можно брать прямиком из XML-комментариев. XML-комментарии близки к коду и устареют с меньшей вероятностью. Кроме того, по ним можно сгенерить reference, которым будет пользоваться VS для контекстных подсказок при использовании библиотеки — тоже полезно.

Для п.3 можно использовать код автоматизированных тестов — они всегда будут актуальны и работоспособны. Ах, у вас нет автоматизированных тестов на вашу библиотеку? Тогда вы можете вздохнуть свободно. Действительно, а зачем документация библиотеке, которая не работает? ;-) В любом случае, тесты писать полезнее и веселее, чем документацию.

Для п.4 можно использовать встроенную в библиотеку подсистему логгирования, которая ясно и недвусмысленно должна показывать, что происходит у ней внутре. Ах, у вас нет логгирования в библиотеке? Это плохо — исправляйтесь. Ах, она есть, но не подходит для документации? Там все непонятно и нет ключевых вещей? Значит у вас хреновая подсистема логгирования в библиотеке — марш ее переделывать!

Осталось это все аккуратно собрать вместе...
Книга, кстати, хороша! Да, я не согласен с автором. Да, он не смог меня переубедить. Но готов ее рекомендовать всем.

Мозг — сложная штука. Внутри происходит много очень сложных и, возможно, недетерминированных процессов. Следовательно полностью скопировать мозг машиной Тьюринга мы, скорее всего, не можем. Но это можно сказать вообще про любой процесс реального мира. Классическая точка зрения такая: Будем надеяться, что можно пожертвовать деталями, сохранив лишь существенное, смоделировать мозг и получить поведение, в котором будут признавать интеллект.

Встает вопрос о том, как интеллект (мозг) решает новые задачи? Все ведь знают, что алгоритмы не умеют решать новые задачи. Они умеют решать те задачи, которые имелись в виду, при создании алгоритма. Весь дальнейший пост — есть попытка ответить на этот вопрос.

В голове у нас сидит большая ассоциативная машина. Одна ассоциация цепляется за другую, та за следующую — так течет мысль. Ассоциации возникают с тем, что мы видим, чувствуем, вспоминаем. Ассоциации — это основной способ рождения мысли. Например, если организационная структура компании со всеми своими проблемами, ассоциируется у вас с архитектурой вашего кода, то вы можете попробовать предсказать, какие проблемы будут у кода. Если случай из жизни вдруг вспомнился "к месту", то у вас есть шанс в этот раз поступить удачнее, чем "в тот раз". Увидели условие из теоремы — получили доказательство. Увидели длинные волосы в зеркале — вспомнили про парикмахерскую. Нами постоянно движут ассоциации.

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

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

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

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

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

Итого: Пока что я считаю, что именно богатый внешний мир, подкидывающий ассоциации является причиной по которой человеческий алгоритм может решать нестандартные задачи. Вот.

Tags:

Latest Month

November 2009
S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     

Tags

Powered by LiveJournal.com
Designed by Tiffany Chow