- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания Цифровой журнал «Компьютерра» № 219 - Коллектив Авторов
Шрифт:
Интервал:
Закладка:
Сейчас компания готовится наладить к лету выпуск роботов URB1 стоимостью $35 тыс. Обладая всего одним захватом, они смогут выполнять разные рутинные действия, а система компьютерного зрения поможет им оставаться безопасными для людей поблизости.
Ближе всех к созданию универсальных гуманоидных роботов пока подошла компания Rethink Robotics, создавшая универсальную модель Baxter. Благодаря возможности переобучения и набору сменных манипуляторов такими машинами действительно можно заменить часть рабочих на конвейере.
Современные попытки сделать роботов дешевле и практичнее также связаны с тем, что их стараются приспособить уже не только для выполнения специфических задач, но и для широкого повседневного использования. Иными словами, из редких футуристических созданий они превращаются в бытовые устройства.
Первыми этот путь проделали роботы-пылесосы. Им не требуется быть гуманоидными, чтобы выполнять качественную уборку, но хотя бы одна рука очень пригодилась бы для повышения самостоятельности. Компания Roomba (выпускающая пылесосы iRobot) работает совместно с Гарвардским и Йельским университетами над созданием трёхпалого манипулятора. Его главным свойством будет возможность универсального применения в быту — от удержания крупных предметов до поднятия упавшей связки ключей.
К оглавлению
Ода красивому коду
Евгений Золотов
Опубликовано 04 апреля 2014
0 Какой красивый код!
10 Пусть тот, кто устал от этой фразы, первым бросит в меня камень. Это редкая и наверное самая ценная похвала, какой только может удостоиться программист. Деньги? Деньги платят за функционал. Но красоту программы способен оценить лишь человек, понимающий, как она работает, чего стоило её написать. Неуловимое, вечно ускользающее, всегда желанное для автора качество. Так нельзя ли его формализовать? Чтобы отныне и впредь наверняка писать только красивый код?
20 Красота — понятие размытое. Мы применяем его направо и налево, к живому и неживому, ухитряемся даже сравнивать на конкурсах, но не желаем, а может, и боимся признаться себе, что до конца не понимаем значение этого понятия — быть красивым. «Википедия» определяет красоту как способность объекта вызывать у наблюдателя эстетическое (в смысле — не привязанное к практической пользе) наслаждение. Проблема в том, что в любых двух точках пространственно-временно массива каноны красоты разнятся.
30 Уже древние греки расходились в вопросе, понимать ли красоту непосредственно — визуально, измеряя математически — или считать категорией более высокого, нравственного порядка. И с тех пор «стандарт» переписывали несчётное число раз, добавляя одно и отвергая другое: симметрия, целостность, чистота и так далее, и так далее. Классическим образчиком того, насколько изменчиво понимание красоты, служат эталоны красоты женской: поставьте рядом одну из палеолитических Венер и сегодняшнюю манекенщицу!
40 Короче говоря, определиться даже с пониманием женской красоты мы оказались не в силах. Когда же дошло до машинного кода — субстанции, с которой человек никогда ранее дел не имел (программы для ткацких станков не в счёт), — можно было гарантированно начинать с чистого листа. Опыт цивилизации в этом отношении нулевой. Даже всезнающая «Википедия» молчит и самое близкое, что предлагает, — статью на тему что-токрасоты в математике (откуда мы кое-что почерпнём). Вот так и получается, что наиболее надёжный способ сформулировать критерии красивого кода — спросить людей, которые его пишут. За последние десять лет этот вопрос периодически звучал на просторах Сети то там, то здесь, так что я попытался обобщить — и вот что получилось (дополните или исправьте, если упустил).
50 В первом приближении красота кода — это внешняя эстетика текста программы: хорошо организованная структура, выровненные строки, сгруппированные по смыслу элементы, пригнанные к формату комментарии. Но это вульгарное понимание, родственное попытке приравнять красоту к функциональности. Копните чуть глубже — и выяснится, что ключевую роль здесь играет простота. Похоже, красивый код должен быть максимально простым — таким, чтобы в нём не осталось ничего лишнего, но при этом он решал бы задачу, ради которой написан. Простоты, как правило, никто не требует, зато движение с ориентиром на неё даёт целый букет полезных свойств.
60 Простота способствуют скорейшему пониманию программы читающим её. Она гарантирует, что в коде будет минимум ошибок и слабых мест. С высокой вероятностью делает код минимальным по размеру, наименее требовательным к системным ресурсам и максимально быстрым. Наконец, простота почти наверняка означает, что проект не «рос по ходу дела», а был тщательно продуман, спроектирован ещё до того, как автор коснулся клавиатуры. Такая программа сравнительно легко может быть расширена, когда понадобится добавить в неё новый функционал.
70 Не скажу за всех, но лично для меня эталоном простоты, моей «киберпалеолитической Венерой», навсегда останется короткий отрывок на ассемблере Intel 8080. Всего одна команда. Вот она:
XOR A
Надеюсь, те, кто программировал в восьмибитную эпоху, пережили сейчас несколько приятных секунд. Смысл этой операции — в обнулении регистра A. Того же можно достичь прямо, присвоением (MVI A,0), но «исключающее ИЛИ» позволяет сделать это короче, сэкономив один байт. Совсем не лишнее, когда вся оперативная память умещается в 64-килобайтную страницу! Впрочем, только ли из экономии так писали? XOR A была как удачно угаданная нота в музыкальной гамме: она дарила то самое эстетическое наслаждение!
80 Из этого примера очевидна и ещё одна важная вещь: простота и читабельность кода — не синонимы. Хорошо читаемый код получается не только благодаря изящной реализации алгоритма, но и наглядной визуальной структуре текста программы и, главное, хорошим комментариям. Словно лёгкий макияж, который не скрывает, а подчёркивает, помогает оценить красоту естественных черт, комментарии и структура делают замысел творца понятным с первого взгляда.
90 Читабельность — это резко возросшие шансы, что красоту программы оценит кто-то ещё, кроме вас. И даже что вообще код может быть сочтён красивым. Ведь не все согласны, что реальный код может быть красив: одно дело — чистая «математика», реализация алгоритма в чистом виде, другое — реальный мир, повседневные задачи, где приходится иметь дело с безобразными, плохо предсказуемыми вещами вроде орфографических ошибок, ненадёжных электрических контактов, невнимательных пользователей.
100 Кстати, самое время вспомнить и о ранее упомянутой красоте математических построений. Так вот: математики сходятся во мнении, что красота матобъекта обратно пропорциональна затраченным на его понимание усилиям. В точку! После такого можно даже согласиться с навязшим на зубах стереотипом, что программированию нужно учить параллельно с математикой!
110 Но давайте подведём итог. Что мы выяснили? Прежде всего — красота кода не зависит от языка. Программа может быть красивой на ассемблере и Malbolge — нашёлся бы человек, желающий и способный её оценить!
120 Далее, красота отнюдь не бессмысленна с практической точки зрения. Программы, как и рукописи, не горят. И через какое-то время с написанным вами кодом почти неизбежно придётся иметь дело кому-нибудь ещё (возможно, и вам самому). Поэтому лучше сразу постараться писать красиво, облегчить труд того, кто примет ваше детище.
130 Наконец, третий и, возможно, самый приятный для программистской братии вывод: «наведение» красоты, её достижение — отнюдь не чисто механический процесс. Красивый код нельзя получить решейпингом, ренумерацией, оптимизацией. Для этого обязательно понадобится голова! И это в некотором смысле дарит нам надежду. Ведь роботы, которые уже подминают под себя фастфуд и журналистику, однажды доберутся и до программирования (доберутся-доберутся, вспомните комментарии к «Ошибке в автомобильном софте»!) — но и тогда, похоже, местечко для нас, человеков, всё-таки останется.
К оглавлению
Гея и (как бы) хозяин природы: ждёт ли Чили новое Великое землетрясение?
Евгений Золотов
Опубликовано 03 апреля 2014
Природа непредсказуема. Никто не смог назвать заранее час падения Челябинского метеорита, не предвидел высоту волны, залившей Фукусиму. И десятки, сотни стихийных бедствий в прошлом обрушились на человека так же неожиданно. Но одно дело — говорить о трудностях прогнозирования, когда всё уже в прошлом, другое — обсуждать их, когда события продолжают развиваться и точка ещё не поставлена. Такова текущая ситуация в Чили и прилегающих районах Тихого океана. Поздним вечером 1 апреля там случилось сильное землетрясение. И главный вопрос — увы, повисший в воздухе! — стоит ли ожидать в ближайшем времени ещё более жестокого удара.