Рубрика «Программирование» - 917

Уже начинают появляться первые новости с выставки CES 2014. Так, например, Pebbe в своей трансляции(можно посмотреть запись) представили версию своих часов в металлическом корпусе — Pebble Steel.
image

Читать полностью »

imageОднажды я столкнулся с задачей генерации 128-битных случайных чисел для реализации генетического алгоритма. Из-за большой размерности задачи алгоритм гонялся долго, поэтому были повышенные требования к скорости работы. Я решил написать свой генератор специально для поставленной задачи.

В этом посте речь пойдет о применении линейного конгруэнтного метода для получения псевдослучайных чисел разрядности 64 и 128 бит с пояснением принципа работы и подбора параметров.

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

Читать полностью »

От переводчика: это перевод статьи Кристиана Глобмайера The Ten Rules of a Zen Programmer. Статья мне понравилась, решил сделать перевод, после окончания перевода загуглил название, нашел вариант перевода: 10 принципов дзен программиста. Отличается от моего, поэтому решил свой вариант перевода все-таки запостить.

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

Одним дождливым утром я сидел за своим столом и думал о эффективной работе. До того, как я начал работать фрилансером, у меня бывало, что я работал много, но никогда не был доволен результатом. Я начал практиковать Дзен в 2006 году. То, что мне пришло в голову через довольно большое время — старые мастера Дзен уже знали сотни лет назад, как сегодняшние программисты должны работать. Хотя я не люблю посты «как быть лучшим программистом», я хочу рассказать о некоторых моих мыслях с того времени. Этот пост будет служить мне напоминанием, но если у вас есть идеи, не стесняйтесь оставлять комментарии.
Читать полностью »

Друзья! Мы все очень любим (или не любим) поговорить о шаблонах проектирования. Лично я их сильно недолюбливаю, т.к. большинство из них достаточно очевидны для более или менее опытного разработчика, а шаблонность мышления еще никому в жизни не помогала.

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

В повседневной жизни я стараюсь не употреблять слово «программист». Оно для меня несет негативный оттенок и сразу вспоминаются 90-е, когда кого только программистами не называли. Они и картриджи у принтеров меняли и бабушкам-бухгалтерам помогали их первый комп осваивать. Помните это нетленное «Ты же программист!»? В общем дискредитировало себя это слово.

Я как-то привык своих людей называть разработчиками (developers) и для меня программист — это эдакий антипод разработчика. Ну и с годами опыта я познал большое количество антипаттернов для хорошего разработчика, пользоваться которыми он должен как можно реже. Чем реже я их слышу, тем я счастливее. Итак, приступаем.

001. А у меня на компе работает

Эта фраза знакома всем, кто хотя бы несколько месяцев работает в индустрии и просто должна быть исключена из лексикона любого разработчика. Чувак, если ты отправляешь на тестирование код, который не работает у тебя на компе, то тебе не место в профессии! По определению у тебя на компе код всегда работает. Разве может быть иначе? А не работает он у тестировщика, клиента, да кого угодно, потому, что ты не учел какие-то нюансы, различия в окружении, данных, погоде на Марсе и твоя задача выяснить, что именно и исправить, а не пытаться сразу откосить и доказать свою невиновность. Нет ничего страшного в том, что ты чего-то не учел. В моей практике бывали случаи учесть которые мог бы только… Да никто не мог бы!

Читать полностью »

Доброго времени чтения, уважаемые участники habrahabr.ru

Многоуровневая система, предложенная в предыдущем посте (http://habrahabr.ru/post/203770/), как выяснилось, нуждается в иллюстрации. Одним из прикладных вариантов может являться формат компьютерной игры, аналогичной игре «Цивилизация», но охватывающей доиндустриальный период развития Вселенной.

Надеюсь, что в форме сценария предлагаемый набор уровней будет более интересен для проверки правильности. Сценарий является рамочным (на уровне идеи), любые реализации приветствуются, так как будут повторять программу средней школы.
Читать полностью »

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

(Впрочем, и связь с недавно вышедшей статьей Метаклассы в Objective-C отрицать не буду.)
Читать полностью »

Из опыта (и интуиции тоже) обучение программированию хочется надежно отнести поближе к отметке 14+.

Почему 14 с плюсом?

Потому, что: раньше — не значит вовремя. На самом деле 12, но в целом лучше c 14-ти…
Да, можно раньше. Но не нужно. Программирование в основном занимается анализом, обработкой и структурированием информации. Как эффективные, осознаваемые механизмы восприятия и взаимодействия с миром – эти качества складываются (созревают) в человеке к 12-14 годам. Вот тогда, изучение программирования становиться естественным и логичным продолжением дальнейшего развития. Не для всех, но для тех, кому оно видится интересным.

Как это оценить? Никак.
В 12-14 лет у человека уже достаточно для этого опыта. Он сделает это самостоятельно (надо только предложить). Программирование – объемная и не самая простая область знаний. Без настоящего (самостоятельного) интереса к нему, программирование быстро становится каторгой. Ещё одной, в дополнение ко всем тем необязательным дисциплинам, которые были скорее навязаны заранее, чем предложены вовремя.

image

То, что информатика (тень программирования) есть в школьной программе начиная с первого класса – лишь следствие крайне буквального применения и без того неуравновешенного, догматического посыла: что «чем раньше, тем лучше».Читать полностью »

Мне приходится читать много кода. Разного. Начиная от ассемблерных простыней на много тысяч строк, заканчивая прикладными программами на DSL, про которые никто за границами предметной области не слышал. А найти и настроить себе читалку на все случаи жизни почему-то оказалось задачей нетривиальной. Одна не понимает cp866, другая не умеет подсвечивать файлы с неправильным расширением, третья всем хороша, но на двадцатой тысяче строк начинает неприятно подтормаживать.

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

image
Читать полностью »

image
По традиции уже второй год первым поздравляю всех читательов с Новым Годом из Владивостока:)а
Уходящий год был не самым простым, но, судя по результатам, и не самый тяжелым. Впереди Новый Год лошади, а это значит — год бешеного ритма, неотложных дел, трудных, но решаемых задач, с которыми нам всем предстоит столкнуться и, главное, справиться! Будьте упрямы и целеустремленны — эти качества, уверен, очень пригодятся в ближайшем будущем :)
Читать полностью »

Уже началось 31е, совсем скоро Новый год. Спать еще не хочется, хочется ощущения праздника. И тут взгляд падает на моего пыльного Arduino-робота, до которого уже пару месяцев не доходят руки. Что же новогоднее может сделать робот? Конечно же сыграть Jingle bells! Два часа усилий, борьба с отсутсвием музыкального слуха, и вот он — результат:

Всех с наступающим!

Под катом код, и немного комментариев

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js