Pull to refresh
203
0
Александр Гранин @graninas

Автор книг об архитектуре и дизайне ПО в ФП

Функциональное программирование: дурацкая игрушка, которая убивает производительность труда. Часть 1

Reading time 10 min
Views 87K
Возможно, вы уже слышали о так называемом «функциональном» программировании. Возможно, вы даже подумываете о том, что вам стоит его как-нибудь попробовать.

Ни в коем случае этого не делайте!



Функциональное программирование полно недочётов, оно не подходит для реальных проектов. Его применение приведёт к резкому падению производительности труда. Почему это так? Давайте выясним.

▍→ Часть 2
Читать дальше →
Total votes 168: ↑100 and ↓68 +32
Comments 403

Создание «искусственной жизни» на компьютере

Reading time 10 min
Views 108K
Всем привет. В статье хочу описать свой эксперимент по созданию «искусственной жизни» на компьютере.

Как это выглядит?

картинка кликабельна

На компьютере создаётся виртуальная среда со своими правилами и выпускается первая простейшая живность. Буду называть их ботами. Боты могут погибнуть или выжить и дать потомство. Потомок может слегка отличаться от предка.

Ну а дальше за работу принимается эволюция и естественный отбор.

А мне остаётся только наблюдать за развитием мира.

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

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

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

Внутреннее устройство кода — это самое интересное в проекте.

Код должен быть простым и выдерживать различные модификации (случайное изменение любого элемента в коде) над собой без синтаксических ошибок.
Читать дальше →
Total votes 214: ↑210 and ↓4 +206
Comments 393

Анатомия науки: преемственность, которой уже нет

Reading time 5 min
Views 1.6K
image


Данная статья опубликована мной по просьбе Hemdall, который в силу некоторых особенностей Хабра не может пока сделать это собственноручно. Но делаю я это не просто по доброте душевной — с изложенным ниже я лично согласен на 100%, за исключением того, что, на мой взгляд, выводы автор делает слишком оптимистичные. Впрочем — судить вам.

Доброго всем времени суток!

Жаркая дискуссия по поводу Как «Фобос-Грунт» строился со всей очевидностью показывает, что большинство читателей просто не понимает, как устроены передача и развитие знаний в науке и что из того следует. А поскольку большая часть Хабра, как я наблюдаю, очень молодые читатели, не обладающие в необходимом объёме пониманием, как все устроено, позволю небольшое напоминание.

Сначала опишу простые, но, как правило, не очень понятные многим условия в науке:
Читать дальше
Total votes 153: ↑144 and ↓9 +135
Comments 238

Р. Фейнман «Характер физических законов» (третья лекция)

Reading time 1 min
Views 2.5K
Представляю вашему вниманию третью лекцию из семи прочитанных лауреатом нобелевской премии профессором Ричардом Фейнманом в Корнелльском университете в 1964г, которая называлась «Великие законы сохранения».

image

На яндекс видео:
video.yandex.ru/users/ztarlitz/view/5

Список лекций:

Лекция 1 — ПРИМЕР ФИЗИЧЕСКОГО ЗАКОНА — ЗАКОН ТЯГОТЕНИЯ
Лекция 2 — СВЯЗЬ МАТЕМАТИКИ С ФИЗИКОЙ
Лекция 3 — ВЕЛИКИЕ ЗАКОНЫ СОХРАНЕНИЯ
Лекция 4 — СИММЕТРИЯ ФИЗИЧЕСКИХ ЗАКОНОВ
Лекция 5 — РАЗЛИЧИЕ ПРОШЛОГО И БУДУЩЕГО
Лекция 6 — ВЕРОЯТНОСТЬ И НЕОПРЕДЕЛЕННОСТЬ — КВАНТОВОМЕХАНИЧЕСКИЙ ВЗГЛЯД НА ПРИРОДУ
Лекция 7 — В ПОИСКАХ НОВЫХ ЗАКОНОВ


Читать дальше →
Total votes 71: ↑68 and ↓3 +65
Comments 18

Р. Фейнман «Характер физических законов» (вторая лекция)

Reading time 2 min
Views 7.3K
Представляю вашему вниманию вторую лекцию из семи прочитанных лауреатом нобелевской премии профессором Ричардом Фейнманом в Корнелльском университете в 1964г, которая называлась «Связь математики и физики».

image

Я убежден, что не существует популярной науки, есть только популярная ее интерпретация. И это не самый мною любимый жанр, сейчас я практически не читаю научно популярных книг, наука не заслуживает того чтобы скользить вечно по поверхности. Однако какие-то книги я все-таки читал и вам советую, много и восхитительно писали: Бор с Эйнштейном (любой популярный текст, особенно советую их переписку), Паули (переписка), Гейзенберг «Часть и целое» (это уже больше философия в стиле Витгенштейна), сам Витгенштейн, Куайн «Две догмы эмпиризма», Дэвид Дойч «Структура реальности» (с оговорками- совершенно замечательная вещь), по квантовой механике опять же Фейнман «КЭД — удивительное свойство света и вещества», по логике — Хофштадтер GEB (Гедель, Эшер, Бах) — книга моего детства, по биохимии Франк-Каменецкий «Самая главная молекула» — замечательная книга про ДНК, конечно советую Джеймса Уотсона «Двойная спираль. Воспоминания об открытии структуры ДНК».
И еще масса книг, которые я не вспомнил, от всех этих книг захватывает дух, но к сожалению на полках в книжных магазинах они растворились в бестолковом шуме какой-то сомнительной около научной литературы. И я не очень понимаю что собственно читают сейчас люди интересующиеся наукой.
Читать дальше →
Total votes 81: ↑77 and ↓4 +73
Comments 48

Как звучит Тау?

Reading time 1 min
Views 873
Возможно вы помните музыкальную интерпретацию числа Пи, которую Майкл Блэйк представил в этом году незадолго до Дня Пи.
И вот опять он нас удивляет своим видео, в котором наигрывает первые 126 нот константы Тау(равной произведению Пи на 2) на разных инструментах.

Читать дальше →
Total votes 60: ↑54 and ↓6 +48
Comments 39

Претендент на теорию всего — Е8 геометрия

Reading time 7 min
Views 6.2K

Единая геометрическая теория — часть 1


Теории объединения взаимодействий


В самом деле вопрос о теории всего или теории объединения всех фундаментальных взаимодействий (электромагнитное, слабое, сильное, гравитационное, кстати первые три поддаются нынешним теориям объединения) в единую теорию является наверное одним из основных вопросов современной теоретической физики. В этой статье пойдет речь о кандидате на решение данного вопроса, а именно о единой геометрической теории E8. Что же это такое?
Читать дальше →
Total votes 57: ↑56 and ↓1 +55
Comments 21

SICP теперь по-русски

Reading time 1 min
Views 63K
image

Удивительно, что до сих пор никому еще не пришла в голову идея перевести эти легендарные лекции на русский язык.

В качестве эксперимента выкладываю перевод первой из 20 лекций. Если это получит должный отклик, буду переводить дальше.
Читать дальше →
Total votes 97: ↑92 and ↓5 +87
Comments 61

Лучший друг айтишника

Reading time 1 min
Views 3.5K
День рожденья только раз в году

Всем известно (а кому неизвестно — сообщаю), что лучший друг айтишника — не клава, и не мышка, а кошка. Ну или кот.

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

Этим нашим помощникам по жизни я и посвящаю сей топик.

UPD: Под катом ОГРОМНЕЙШЕЕ количество кототрафика! (более 50 мегабайт фоток. Мой ФФ просто умирает от этой простыни...)
Читать дальше →
Total votes 523: ↑373 and ↓150 +223
Comments 997

История Linux. Вкратце о главном

Reading time 11 min
Views 61K
Корни Linux прослеживаются ещё с 70-х годов 20-го века. Точкой отсчёта можно считать появление операционной системы Unix в 1969-м году в США в фирме Bell Laboratories, дочернем подразделении компании AT&T. Unix стала основной для большого количества операционных систем промышленного класса. Самые основные из них отображены на этой временной шкале:


Читать дальше →
Total votes 355: ↑327 and ↓28 +299
Comments 202

Baldur's Gate на Android: эмулятор GemRB в действии

Reading time 3 min
Views 51K
Hamsters and rangers everywhere, rejoice!!!

Необязательное предисловие о личном

На рубеже веков все прогрессивное человечество вовсю рассекало по Побережью Мечей: от Кэндлкипа до самых Врат Балдура. А я — я отыгрывал правого хавбека во дворовой команде и проц мой был 386-й, а монитор черно-белый. Приобщился к искусству ролевых игр лишь через 9 лет. И легендарная Baldur's Gate мне не покорилась. Мышкой камеру крутить нельзя — неудобно!..

Так и жил бы, стыдясь своей попсовости, кабы не добрые люди — создатели GemRB, свободно распространяемой реализации Bioware Infinity Engine с открытым исходным кодом.

Матчасть

Стараниями петербургского разработчика Дмитрия Матвеева aka Beholder GemRB портирован на Android. Позволяет запускать игры серии Baldur's Gate, а также — с некоторыми ограничениями — Icewind Dale и Planescape: Torment. Требует:
  • Android >= 1.6;
  • VGA, WVGA, HVGA или большее разрешение;
  • 150 мб RAM;
  • наличие ресурсов оригинальной игры и места под них на смартфоне/планшете.

Читать дальше →
Total votes 77: ↑69 and ↓8 +61
Comments 62

Как не быть обманутым злыми буратинами

Reading time 8 min
Views 12K

Уж сколько раз твердили миру,
Что лесть гнусна, вредна; но только все не впрок,
И в сердце льстец всегда отыщет уголок.
«Ворона и Лисица» (1807) И. А. Крылов
1807 год, вдумайтесь! 1807, 200 лет назад!F

Небольшие инструкции по материальным взаимоотношениям.


Для всех обиженных опсосами, банками, сервис центрами и прочими злыми буратинами.
Читать дальше →
Total votes 210: ↑201 and ↓9 +192
Comments 210

Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в степень

Reading time 20 min
Views 83K
Пусть мы хотим вычислить десятимиллионное число Фибоначчи программой на Python. Функция, использующая тривиальный алгоритм, на моём компьютере будет производить вычисления более 25 минут. Но если применить к функции специальный оптимизирующий декоратор, функция вычислит ответ всего за 18 секунд (в 85 раз быстрее):


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

Эта статья расскажет о том, в каких случаях и каким образом декоратору удаётся делать подобные оптимизации. Также вы сможете сами скачать и протестировать библиотеку cpmoptimize, содержащую данный декоратор.
Читать дальше →
Total votes 216: ↑213 and ↓3 +210
Comments 43

Кооперативные потоки с нуля в 33 строках на Хаскеле

Reading time 6 min
Views 12K
Хаскель отличает себя от большинства функциональных языков тем, что имеет глубокие культурные корни из области математики и информатики, которые дают обманчивое впечатление, что Хаскель плохо подходит для решения практических задач. Однако, чем больше вы знаете Хаскель, тем больше вы цените то, что теория часто является наиболее практическим решением многих общих проблем программирования. Этой статьёй хочется подчеркнуть эту точку зрения тем, что мы смешаем имеющиеся в наличии теоретические основы и создадим чистую пользовательскую систему потоков.

Читать дальше →
Total votes 44: ↑38 and ↓6 +32
Comments 7

Пару слов о распознавании образов

Reading time 13 min
Views 309K
Давно хотел написать общую статью, содержащую в себе самые основы Image Recognition, некий гайд по базовым методам, рассказывающий, когда их применять, какие задачи они решают, что возможно сделать вечером на коленке, а о чём лучше и не думать, не имея команды человек в 20.
image

Какие-то статьи по Optical Recognition я пишу давненько, так что пару раз в месяц мне пишут различные люди с вопросами по этой тематике. Иногда создаётся ощущение, что живёшь с ними в разных мирах. С одной стороны понимаешь, что человек скорее всего профессионал в смежной теме, но в методах оптического распознавания знает очень мало. И самое обидное, что он пытается применить метод из близрасположенной области знаний, который логичен, но в Image Recognition полностью не работает, но не понимает этого и сильно обижается, если ему начать рассказывать что-нибудь с самых основ. А учитывая, что рассказывать с основ — много времени, которого часто нет, становится всё ещё печальнее.
Распознать
Total votes 130: ↑129 and ↓1 +128
Comments 52

Алгоритм Х или что общего между деревянной головоломкой и танцующим Линком?

Reading time 5 min
Views 67K


Предисловие


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

Не можешь сам — заставь компьютер. Сказано — сделано. В результате написанному по наитию алгоритму пришлось работать всю ночь, чтобы найти все 4 уникальных решения. В процессе гугления решений для сравнения, я нашёл программу Burr Tools, которая справилась с этой задачей за 3 минуты на моём ноутбуке.

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

Так как же решается эта задача и ещё целый класс подобных?
Total votes 145: ↑141 and ↓4 +137
Comments 14

Qt Build System: спасательный круг для сборки

Reading time 10 min
Views 47K

Примечание(17.06.2013): синтаксис примеров в статье не соответствует последним версиям. Сверяйтесь с документацией. Также в марте был выпущен Qt Creator 2.7 с поддержкой QBS.
Не так давно команда разработчиков Qt представила новую систему сборки — QBS. Разумеется, основной реакцией было «Да чем вас QMAKE не устраивал», «Просто адаптируйте CMAKE», «Ещё одна система сборки [xkcd, стандарты]». Обещанные преимущества новой системы: гибкость, понятный синтаксис для всех разработчиков (QML — javascript-подобный декларативный язык), скорость билдов (чистых и инкрементальных), а также лёгкая расширяемость.
Всё это мы где-то уже слышали, поэтому в данной статье мы попытаемся разобраться, как разработчики пришли к этой системе, рассмотрим простейшие примеры, изучим основные конструкции и посмотрим, какая поддержка на уровне IDE присутствует на настоящий момент.
Let's go!
Total votes 47: ↑47 and ↓0 +47
Comments 49

Еще раз про skiplist…

Reading time 6 min
Views 33K

… или как я получил «Аленку» за консольное приложение


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

Представьте, что ваш коллега-нытик пришел рассказать о своей непростой задаче — ему нужно не просто упорядочить по возрастанию набор целых чисел, а выдать все элементы упорядоченного набора с L-го по R-й включительно!
Вы заявили, что это элементарная задача и, чтобы написать решение на языке C#, вам нужно десять минут. Ну, или час. Или два. Или шоколадка «Алёнка»

Предполагается, что в наборе допускаются дубликаты, и количество элементов будет не больше, чем 10^6.

К оценке решения есть несколько комментариев:

Ваш код будут оценивать и тестировать три программиста:
  • Билл будет запускать ваше решение на тестах размером не больше 10Кб.
  • В тестах Стивена количество запросов будет не больше 10^5, при этом количество запросов на добавление будет не больше 100.
  • В тестах Марка количество запросов будет не больше 10^5.
Решение может быть очень интересным, поэтому я посчитал нужным его описать.
Читать дальше →
Total votes 53: ↑49 and ↓4 +45
Comments 27

Кластеризация точек на основе регулярной сети

Reading time 4 min
Views 16K

В данной статье я рассмотрю два алгоритма, первый — непосредственно кластеризация, второй — построение контура кластера в виде выпуклого многоугольника, прикладная задача для улучшеного восприятия полученного результата.

Читать дальше →
Total votes 34: ↑33 and ↓1 +32
Comments 39

Точное вычисление геометрических предикатов

Reading time 7 min
Views 9.8K
Доброго вам дня, коллеги. Предлагаю вам прочитать статью о базовом аспекте вычислительной геометрии — точном вычислении предикатов.

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

В этой статье я расскажу, как избавиться от недостатков вычислений с плавающей точкой практически без ущерба для эффективности. План статьи:
  • геометрический предикат «поворот»;
  • противоречивость «наивной» реализации поворота;
  • применение интервальной арифметики для упрощения расчета предикатов;
  • длинная арифметика и несколько альтернативных способов вычислений предикатов;
  • расчет погрешности вычисления поворота в числах с плавающей точкой.

Итак, если вы хотите знать, почему вычислительная геометрия не является «наукой о подборе эпсилонов» и как можно корректно и эффективно реализовать геометрический алгоритм, жмите
Читать дальше →
Total votes 51: ↑50 and ↓1 +49
Comments 14

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity