Макстон — отличная вещь, не надо.
Сам пользуюсь много лет.
99% сайтов у меня отображается отлично (может, ценой бессонных ночей дизайнеров, но это их проблемы а не мои), кроме того, Макстон будет без проблем использовать движок IE8, как дойдёт до этого дело.
Довольно трудно сформулировать кратко :) Но попробую.
Для начала: мы пишем что-то вроде «конструктора» для создания систем искусственного интеллекта. По существующим спецификациям интерфейса пользователь должен написать свои собственные модули, потом система интегрируется в одно целое. Кроме того, мы поддерживаем инструментарий для отладки и анализа систем, а также выступаем в роли «пользователей», то есть сами пишем интеллектуальные агенты используя свой «конструктор».
Проблемы:
1) cложность и нечёткость предметной области. Если бы я писал библиотеку функций с понятным чётким поведением (тригонометрия, линейная алгебра) вопросов бы не было.
2) (редко, но бывает) ветвистость алгоритмов. Иногда у нас возникает куча кейсов типа «если-то», причём по отдельности каждый кейс выглядит довольно простым. Сочинять для такого тесты, честно говоря, ломает, потому что каждый случай тривиален, а чтобы покрыть большинство вариантов, уходит много кода. Покрыть же небольшую часть смысла мало, т.к. тогда тест становится не очень полезным.
3) в целом не очень большая польза от атомарных тестов в ИИ :) в большинстве случаев откомпилировать программу и заставить её работать по спецификации не очень трудно. Но оказывается, что работает интеллект плохо :) Приходится изменять параметры, влияющие на поведение, добавлять новые анализируемые факторы и т.п. То есть основной «дебаг» заключается в дополнительном анализе предметной области, а не в сверке со спецификацией.
4) (самый важный технический трабл). Наш «конструктор» можно представить себе ещё так. Есть инфраструктура с «дырками», для которой надо написать модули, затыкающие эти «дырки». Друг без друга ничего не работает. Чтобы запустить систему, нужны все модули (хотя бы в виде заглушек). Соответственно, чтобы тестировать инфраструктуру, нужны все модули (пусть хотя бы mock objects). А чтобы тестировать модули, нужна инфраструктура (впрочем, это уже не очень страшно). При этом всё развивается, иногда приходится менять слегка инфраструктуру под конкретный проект или добавлять в модули то, чего там быть не должно. В результате получается, что полноценный тестовый комплект может быть очень велик, включая в себя mock object едва ли не для любой сущности системы. Я склоняюсь к тому, чтобы рано или поздно стиснуть зубы и сделать эту работу. Но пока никак :)
5) (ерунда, но всё-таки) GUI-инструменты так тестировать вообще не получается.
В результате мы сейчас пользуемся в основном «feature-тестами». Собираем всю систему — от начала до конца, вначале состоящую из заглушек. Потом даём ей простые задания (это ведь интеллект, он должен выполнять какую-то работу в каких-то условиях). Если очередной модуль, который мы пишем, справляется со своей работой, то задание выполняется. Если не выполняется, ищем ошибку в модуле.
И так раскручиваем систему. Для готовой системы у нас есть непростые «задачки», для которых известен вход и выход, а также понятно, какой модуль реально должен эту задачу решить. Стало быть, если не решает, мы можем предположить, где именно баг…
По-моему, это всё пиар. То есть, конечно, очень (а) мило, что Гугл забоится об экологии, и (б) понятно, что эта забота ещё и выгодна с экономической точки зрения — меньше за электричество платить.
Но эти сравнения с чайниками и десктопными компьютерами не показательны. Их цель — чтобы человек сказал wow, а не чтобы адекватно оценил ситуацию.
Гугл обслуживает сотни миллионов человек ежедневно, глобальный сервис глобальных масштабов.
Я думаю, что было бы правильнее сравнивать не с чайником, а, скажем, с выхлопами автомобилей в каком-нибудь небольшом государстве. И наверняка окажется, что все автомобили, допустим, Эстонии производят больше гадости, чем глобально-всемирный Гугл. И субъективная оценка проблемы будет совсем иной…
А хз, может быть, это увольнение и некрасивое, но совершенно законное действие в Штатах? В конце концов, в Штатах законы более либеральны. Скажем, уволить человека там куда проще, чем в Европе.
Хоть Штаты и Европа явно движутся в сторону друг друга (Штаты к социализации, а Европа к либерализации), всё-таки фраза «you are fired!» больше известна по американским фильмам. У них действительно можно сказать «ты уволен — немедленно очистить помещение!», насколько понимаю.
Это я понимаю. У меня у самого научный руководитель занимается алгоритмами обработки строк. Сравнение, нечёткое сравнение, поиск подстрок, сравнение строк, сжатых архиватором (без распаковки), онлайн-поиск (когда строки поступают постепенно по каналу связи, и конец ещё недоступен). Он так и говорил, что применение в генетике очевидно.
Но это верхушка айсберга, это лежит на поверхности, и любой, кто чисто теоретически знает, что нуклеотиды можно кодировать буквами, чисто теоретически может предположить пользу строковых алгоритмов.
Немного в сторону. Я года четыре назад был в одной больнице у знакомого доктора, видел их жизнь изнутри. Вроде у них и компы везде стоят, и как бы автоматизировано-компьютеризовано. Но для меня это выглядело почти так, как будто бы они компьютерами гвозди забивают. То есть мне бы знать их врачебную специфику, я бы им workflow так наладил, как им и не снилось.
То есть мне кажется (и это касается не только геномики и биологии вообще, а чуть ли не любых двух специальностей X и Y), проблема в том, что специалист в X не знает, что может пригодиться специалисту в области Y. А специалист из Y не знает, чем хотя бы теоретически ему может быть полезны знания спеца из X.
Другой впечатливший меня пример. Пару лет назад одна преподавательница усиленно продвигала метод обучения, весьма упрощённо описывающийся как «сначала даём задачи решать, а потом уже теорию, нужную для решения этих задач». Какие-то статьи писала, экспериментировала. А потом появился на горизонте некий инженер-математик, который пожал плечами и сказал, что всё это очевидно, что получается система с положительной обратной связью, и что он может легко формально доказать, что всё это работает :)
Но ведь преподавательнице и в голову бы не пришло спросить математиков-инженеров про их формальные методы!
Эх, огромен мир вокруг… вот пару часов назад узнал, что есть такие Лера и Ранетки (дай бог им здоровья, а мне — никогда про них больше не слышать :) ).
А сейчас читаю про то, что кто-то покупает на фирме красавицу-плазмиду (!) и инсталлирует туда гены (!!). Здорово. Ощущения смешанные. С одной стороны, это всё безумно круто и интересно. А с другой стороны, как же каждый из нас далёк едва ли не от всего остального… Если бы тут появился человек, который бы рассказывал про ремонт электровозов, и там бы нашлось куча всего интересного, наверно.
Мне вот что реально интересно. Разные области науки-техники ведь могут быть очень полезны друг другу. Понятно, что то же программирование в той же биологии может весьма помочь. Но как много специалистов с двойным образованием, которые на практике сумеют заполнить промежутки между направлениями в науке-технике?..
> Писать книги я не умею, да и опыта мало, но поделиться некоторыми аспектами использования unit тестов я могу
Точно не интересно попробовать формат пошире? Хотя книги по TDD есть, я думаю, тут ещё об очень многих аспектах можно порассуждать.
По крайней мере, я сам в повседневной практике усиленно пытаюсь внедрить TDD, но что-то всё время мешает. Сам я объясняю себе это сложностью и спецификой предметной области, но любой спец, скорее всего, легко раскритикует и объяснит как надо. Так что бы от хорошей книжки не отказался ;)
У меня было несколько попыток экспериментировать на эту тему (родственная задача — выявление плагиата в текстах). Похоже (мой вывод на данный момент, не более того!), что вычленить и использовать вот эти индивидуальные особенности очень трудно. У кого-то они ярки, а у кого-то гораздо тоньше, даже человеку трудно различить.
Более перспективен поиск по «штаммам», как вирусы ищут на компьютере. То есть собрать коллекцию сообщений от такого персонажа, а затем сравнивать новые сообщения с готовой базой. Писать каждый раз новое, совсем не повторяясь, — невозможно!
Этот сценарий неправдоподобен и не только потому, что он апокалиптичен :)
Для начала — немного о конце. Рассуждения насчёт «довольствования малым» и «помощи друг другу» особенно забавно звучат. Насколько помнится, в какое-нибудь Средневековье, когда жизнь была куда тяжелее, никто особенно не думал о благе ближнего и об умеренности. Кушали сколько можно было съесть и лупили соседей направо и налево. Плохая жизнь вовсе не способствует развитию нравственности. Скорее, наоборот (см. пирамиду потребностей).
Теперь о начале. Нам сразу же объявляют, что кризис системный, но я как-то нашёл мало доводов в пользу именно этой версии (т.е. почему он системный?) Да, доллар может упасть или там золото ничего не обеспечивает.
Но причём тут золото и доллары? Доллары — это всего лишь бумажки, а золото — металл. И первое, и второе кушать нельзя, и согреться им тоже нельзя. Преимущество «реального» золота перед бумажным долларом эфемерно. Люди, держащие золото, исходят из соображения, что завтра можно обменять золото на еду, но в условиях глобального краха никому золото не нужно, всем нужна еда.
Так же все россказни на тему краха доллара и последующей ломки всей мировой торговли — это басни. До ХХ века как-то ведь торговали? Вот если предположить, что завтра действительно США рухнет (хотя это чепуха), что реально произойдёт? Да, все кредиторы потеряют возможность вернуть долги. Обидно. Но ведь и сейчас они как-то выживают без этих денег.
Пустота заполнится чем-нибудь другим. Окей, у нас довала газа, а у немцев есть автомобили. Газ нужен им, автомобили — нам. Конечно, бартером торговать неудобно, но это куда лучше, чем не продавать газ никому (пусть сидит под землёй себе) и ходить на своих двоих.
Мне просто кажется, что в условиях тотального краха (опять же) никто не захочет голодать и отказывать себе во всём в то время как заводы могут производить машины, вышки качать нефть, а программисты писать софт. Ну да, временный кризис, нехватка меновой единицы. Но мы это уже проходили — в России тоже была зарплата гробами и унитазами. Но в итоге система устаканилась лет за пять полностью.
Спасибо за обзор!
Да, девайс интересный. Впрочем, меня уже то смущает, что клавиатура прямоугольная. По-моему, изогнутые модели (а-ля Microsoft Natural) гораздо удобнее.
По поводу тачскрина — мне кажется, что лучше всего сделать единый блок-дисплей под прозрачными клавишами, а клавиши всё-таки сохранить. Механическое ощущение кнопок очень удобно, особенно при слепой печати. Мне трудно представить, как можно барабанить по совершенно гладкой поверхности :)
Сам пользуюсь много лет.
99% сайтов у меня отображается отлично (может, ценой бессонных ночей дизайнеров, но это их проблемы а не мои), кроме того, Макстон будет без проблем использовать движок IE8, как дойдёт до этого дело.
у них есть иконки «интернет», «почта», «компьютер», «музыка»
а как надо? WheekyGeeky CoolGear v 1.50b?
И пусть юзер сам думает, что это такое и для чего оно надо?
Нормальному человеку (не компьютерщику) нужно не шашечки, а ехать. Ему нужен интернет, а не название какой-то софтины.
абсолютно верно
попробуйте удалить следующий комментарий и ничего не напортить:
// для поиска подстроки используется алгоритм Кнута-Морриса-Пратта
// см. en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm
int KMP(string s, string w) {… }
комменты нужны для высокоуровневых пояснений, не выразимых средствами языка
Для начала: мы пишем что-то вроде «конструктора» для создания систем искусственного интеллекта. По существующим спецификациям интерфейса пользователь должен написать свои собственные модули, потом система интегрируется в одно целое. Кроме того, мы поддерживаем инструментарий для отладки и анализа систем, а также выступаем в роли «пользователей», то есть сами пишем интеллектуальные агенты используя свой «конструктор».
Проблемы:
1) cложность и нечёткость предметной области. Если бы я писал библиотеку функций с понятным чётким поведением (тригонометрия, линейная алгебра) вопросов бы не было.
2) (редко, но бывает) ветвистость алгоритмов. Иногда у нас возникает куча кейсов типа «если-то», причём по отдельности каждый кейс выглядит довольно простым. Сочинять для такого тесты, честно говоря, ломает, потому что каждый случай тривиален, а чтобы покрыть большинство вариантов, уходит много кода. Покрыть же небольшую часть смысла мало, т.к. тогда тест становится не очень полезным.
3) в целом не очень большая польза от атомарных тестов в ИИ :) в большинстве случаев откомпилировать программу и заставить её работать по спецификации не очень трудно. Но оказывается, что работает интеллект плохо :) Приходится изменять параметры, влияющие на поведение, добавлять новые анализируемые факторы и т.п. То есть основной «дебаг» заключается в дополнительном анализе предметной области, а не в сверке со спецификацией.
4) (самый важный технический трабл). Наш «конструктор» можно представить себе ещё так. Есть инфраструктура с «дырками», для которой надо написать модули, затыкающие эти «дырки». Друг без друга ничего не работает. Чтобы запустить систему, нужны все модули (хотя бы в виде заглушек). Соответственно, чтобы тестировать инфраструктуру, нужны все модули (пусть хотя бы mock objects). А чтобы тестировать модули, нужна инфраструктура (впрочем, это уже не очень страшно). При этом всё развивается, иногда приходится менять слегка инфраструктуру под конкретный проект или добавлять в модули то, чего там быть не должно. В результате получается, что полноценный тестовый комплект может быть очень велик, включая в себя mock object едва ли не для любой сущности системы. Я склоняюсь к тому, чтобы рано или поздно стиснуть зубы и сделать эту работу. Но пока никак :)
5) (ерунда, но всё-таки) GUI-инструменты так тестировать вообще не получается.
В результате мы сейчас пользуемся в основном «feature-тестами». Собираем всю систему — от начала до конца, вначале состоящую из заглушек. Потом даём ей простые задания (это ведь интеллект, он должен выполнять какую-то работу в каких-то условиях). Если очередной модуль, который мы пишем, справляется со своей работой, то задание выполняется. Если не выполняется, ищем ошибку в модуле.
И так раскручиваем систему. Для готовой системы у нас есть непростые «задачки», для которых известен вход и выход, а также понятно, какой модуль реально должен эту задачу решить. Стало быть, если не решает, мы можем предположить, где именно баг…
В общем, сложно это всё, но интересно :)
Но эти сравнения с чайниками и десктопными компьютерами не показательны. Их цель — чтобы человек сказал wow, а не чтобы адекватно оценил ситуацию.
Гугл обслуживает сотни миллионов человек ежедневно, глобальный сервис глобальных масштабов.
Я думаю, что было бы правильнее сравнивать не с чайником, а, скажем, с выхлопами автомобилей в каком-нибудь небольшом государстве. И наверняка окажется, что все автомобили, допустим, Эстонии производят больше гадости, чем глобально-всемирный Гугл. И субъективная оценка проблемы будет совсем иной…
Хоть Штаты и Европа явно движутся в сторону друг друга (Штаты к социализации, а Европа к либерализации), всё-таки фраза «you are fired!» больше известна по американским фильмам. У них действительно можно сказать «ты уволен — немедленно очистить помещение!», насколько понимаю.
Но это верхушка айсберга, это лежит на поверхности, и любой, кто чисто теоретически знает, что нуклеотиды можно кодировать буквами, чисто теоретически может предположить пользу строковых алгоритмов.
Немного в сторону. Я года четыре назад был в одной больнице у знакомого доктора, видел их жизнь изнутри. Вроде у них и компы везде стоят, и как бы автоматизировано-компьютеризовано. Но для меня это выглядело почти так, как будто бы они компьютерами гвозди забивают. То есть мне бы знать их врачебную специфику, я бы им workflow так наладил, как им и не снилось.
То есть мне кажется (и это касается не только геномики и биологии вообще, а чуть ли не любых двух специальностей X и Y), проблема в том, что специалист в X не знает, что может пригодиться специалисту в области Y. А специалист из Y не знает, чем хотя бы теоретически ему может быть полезны знания спеца из X.
Другой впечатливший меня пример. Пару лет назад одна преподавательница усиленно продвигала метод обучения, весьма упрощённо описывающийся как «сначала даём задачи решать, а потом уже теорию, нужную для решения этих задач». Какие-то статьи писала, экспериментировала. А потом появился на горизонте некий инженер-математик, который пожал плечами и сказал, что всё это очевидно, что получается система с положительной обратной связью, и что он может легко формально доказать, что всё это работает :)
Но ведь преподавательнице и в голову бы не пришло спросить математиков-инженеров про их формальные методы!
А сейчас читаю про то, что кто-то покупает на фирме красавицу-плазмиду (!) и инсталлирует туда гены (!!). Здорово. Ощущения смешанные. С одной стороны, это всё безумно круто и интересно. А с другой стороны, как же каждый из нас далёк едва ли не от всего остального… Если бы тут появился человек, который бы рассказывал про ремонт электровозов, и там бы нашлось куча всего интересного, наверно.
Мне вот что реально интересно. Разные области науки-техники ведь могут быть очень полезны друг другу. Понятно, что то же программирование в той же биологии может весьма помочь. Но как много специалистов с двойным образованием, которые на практике сумеют заполнить промежутки между направлениями в науке-технике?..
Точно не интересно попробовать формат пошире? Хотя книги по TDD есть, я думаю, тут ещё об очень многих аспектах можно порассуждать.
По крайней мере, я сам в повседневной практике усиленно пытаюсь внедрить TDD, но что-то всё время мешает. Сам я объясняю себе это сложностью и спецификой предметной области, но любой спец, скорее всего, легко раскритикует и объяснит как надо. Так что бы от хорошей книжки не отказался ;)
Более перспективен поиск по «штаммам», как вирусы ищут на компьютере. То есть собрать коллекцию сообщений от такого персонажа, а затем сравнивать новые сообщения с готовой базой. Писать каждый раз новое, совсем не повторяясь, — невозможно!
И тем, и другим нужно дедуктивное мышление (из общих законов выводим действия в данной конкретной ситуации).
А в науке нужно мышление индуктивное (от фактов к теории).
Вы думаете, я никогда не печатал на обычной клавиатуре?
Если бы это было «определённо нет», то определённо Microsoft, Logitech и прочие производители изогнутых клавиатур давно сняли бы их с производства.
Кстати, интересны клавиатуры MALTRON (http://www.maltron.com/)
Вроде бы это ещё лучше, но я сам не пробовал.
Для начала — немного о конце. Рассуждения насчёт «довольствования малым» и «помощи друг другу» особенно забавно звучат. Насколько помнится, в какое-нибудь Средневековье, когда жизнь была куда тяжелее, никто особенно не думал о благе ближнего и об умеренности. Кушали сколько можно было съесть и лупили соседей направо и налево. Плохая жизнь вовсе не способствует развитию нравственности. Скорее, наоборот (см. пирамиду потребностей).
Теперь о начале. Нам сразу же объявляют, что кризис системный, но я как-то нашёл мало доводов в пользу именно этой версии (т.е. почему он системный?) Да, доллар может упасть или там золото ничего не обеспечивает.
Но причём тут золото и доллары? Доллары — это всего лишь бумажки, а золото — металл. И первое, и второе кушать нельзя, и согреться им тоже нельзя. Преимущество «реального» золота перед бумажным долларом эфемерно. Люди, держащие золото, исходят из соображения, что завтра можно обменять золото на еду, но в условиях глобального краха никому золото не нужно, всем нужна еда.
Так же все россказни на тему краха доллара и последующей ломки всей мировой торговли — это басни. До ХХ века как-то ведь торговали? Вот если предположить, что завтра действительно США рухнет (хотя это чепуха), что реально произойдёт? Да, все кредиторы потеряют возможность вернуть долги. Обидно. Но ведь и сейчас они как-то выживают без этих денег.
Пустота заполнится чем-нибудь другим. Окей, у нас довала газа, а у немцев есть автомобили. Газ нужен им, автомобили — нам. Конечно, бартером торговать неудобно, но это куда лучше, чем не продавать газ никому (пусть сидит под землёй себе) и ходить на своих двоих.
Мне просто кажется, что в условиях тотального краха (опять же) никто не захочет голодать и отказывать себе во всём в то время как заводы могут производить машины, вышки качать нефть, а программисты писать софт. Ну да, временный кризис, нехватка меновой единицы. Но мы это уже проходили — в России тоже была зарплата гробами и унитазами. Но в итоге система устаканилась лет за пять полностью.
Да, девайс интересный. Впрочем, меня уже то смущает, что клавиатура прямоугольная. По-моему, изогнутые модели (а-ля Microsoft Natural) гораздо удобнее.
По поводу тачскрина — мне кажется, что лучше всего сделать единый блок-дисплей под прозрачными клавишами, а клавиши всё-таки сохранить. Механическое ощущение кнопок очень удобно, особенно при слепой печати. Мне трудно представить, как можно барабанить по совершенно гладкой поверхности :)
А по-моему, это куда более смехотворный аргумент. Меня вполне устраивает «р.» и я не знаю, почему кого-то это в принципе может не устраивать.