Все потоки
Поиск
Написать публикацию
Обновить
1005.69

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Как проектируют ненастоящие программисты

Время на прочтение8 мин
Количество просмотров71K
Настоящие программисты — это облака, big data, high load… А у нас — практически DIY. 2 установки — уже тиражирование, 100 штук — производство… Но зато атомные ледоколы, маневровые локомотивы, трактора, шлюзы, мосты, опускающиеся вниз от лишнего асфальта, беспилотники размером в дом, 50 человек персонала на цех длиной больше двух километров… и надежность, надежность, надежность… И пяток гендиректоров в костюмах прямо на поле при демонстрации системы на тракторе…

image
Обычное окончание отладки — убираем антенны с путеправильной машины

Итак… пришла просьба от коллег — написать ТКП (технико-коммерческое предложение) на хитрый GPS-трекер. И комментарии, что большие и настоящие делать отказались.
Читать дальше →

История участия (и почти победы) в ежегодном соревновании Russian AI Cup 2016

Время на прочтение25 мин
Количество просмотров25K
Привет, Хабр! Меня зовут Дичковский Алексей, и я хочу вам рассказать о том, как я потратил полтора месяца своей жизни на написание бота для упрощённой версии DotA.

Ежегодно компания Mail.ru проводит онлайн-чемпионат по программированию игровых стратегий (Russian AI Cup 2016). Я принимал участие в данном соревновании в 2012 году (СodeTanks) и, совсем немного, в 2013 (СodeTroopers). В этом году, изрядно наевшись веб разработкой, я решил попробовать принять участие ещё раз. Я изначально не надеялся (но, конечно же, очень хотел) занять какое-либо призовое место и в целом для меня это был скорее тест, насколько я ещё могу реализовать нечто интересное. О том, что из этого получилось, можно прочитать под катом.


Читать дальше →

К вопросу о «потерянном времени»

Время на прочтение13 мин
Количество просмотров11K

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


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

Итак, мы начинаем.
Читать дальше →

Может ли рассуждать ваш код?

Время на прочтение9 мин
Количество просмотров7.9K

Когда мы думаем о рассуждениях (reasoning) в программировании, первое, что приходит в голову — это логическое программирование и подход базируемый на правилах (rule-based), экспертные системы и системы управления бизнес-правилами (business rule management systems, BRMS).


Общераспространенные мультипарадигмальные языки практически не включают эти подходы, хотя и работают с ними посредством библиотек и интерфейсов. Почему? Потому что эти языки не могут включать себя формы, которые в некотором смысле противоречат их сути. Популярные языки программирования обычно работают с детерминизмом (ожидаемые данные, сценарии использования, и т.п.), в то время как подходы, использующие рассуждения, обычно работают с неопределенностью (непредсказуемые данные, сценарии использования, и т.п.). Рассуждения (reasoning) будет различным в обеих случаях тоже. В первом, рассуждает архитектор или разработчик, во втором же рассуждает машина вывода/правил (reasoning/rule engine).


Читать дальше →

Второе пришествие ГОСТ 28147-89: Честные тесты

Время на прочтение6 мин
Количество просмотров12K
Около десяти лет тому назад симметричная криптография, основанная на ГОСТ 28147-89, перестала удовлетворять потребностям аппаратных платформ по скоростным параметрам. Скорости криптопреобразований, обеспечиваемые алгоритмами реализованными на регистрах общего назначения процессоров, не успевали за скоростями обмена информацией в сетях и на дисковых накопителях.

С другой стороны (американской), появился AES-256, который показывал гораздо лучшие скоростные параметры при той же степени криптостойкости.

В этой ситуации 8 центр ФСБ начал работы над новым блочным шифром, который получил в последствии название «Кузнечик» от начальных букв фамилий авторов.

Изначально это была бесперспективная затея, поскольку повторялась логика шифра AES, но если тот был ускорен аппаратно в процессорах Интел и АМД, то у Кузнечика такого аппаратного ускорения на этих процессорах конечно быть не могло.

Так что Кузнечик, это классический пример выброшенных на ветер бюджетных денег и не малых…
Читать дальше →

Как 10 лет назад начинался проект PVS-Studio

Время на прочтение25 мин
Количество просмотров13K
Единорог

Десять лет назад мы создали простенькую утилиту под названием Viva64, предназначенную для выявления некоторых проблем в 64-битном коде. Так было заложено начало статического анализатора кода PVS-Studio. Хотя с того момента прошло 10 лет, что-то более-менее у нас, как у компании, стало получаться только несколько лет назад. Эта статья — не история успеха, так как мы считаем, что всё интересное только начинается. Однако, 10 лет — это повод подвести промежуточные итоги и рассказать нашим читателям как все начиналось, какие нас ждали ошибки, и что на данный момент у нас получилось. Местами я, возможно, буду не совсем хронологически точен при описании событий. Моя память не идеальна, а 10 лет — это длительный промежуток времени. Желаю всем приятного чтения.
Читать дальше →

Ада Лавлейс. Первая в мире программа и взгляд в будущее

Время на прочтение4 мин
Количество просмотров35K
image

Ада Лавлейс

10 декабря 1815 года на свет появилась Ада Лавлейс, большинству из нас известная как самый первый в мире программист. Так уж получилось, что это звание принадлежит представительнице прекрасного пола. Сегодня исполняется двести один год со дня рождения этого человека. И в этом посте я бы хотел немного рассказать о самых интересных моментах из ее жизни, не отделываясь обрывочными фразами, но и не слишком уж углубляясь в детали. Материал можно найти, где угодно, имея под рукой Интернет. Однако мало кто полезет искать его просто ради интереса. Поэтому кому интересно, добро пожаловать под кат.
Читать дальше →

Велосипед для извлечения данных

Время на прочтение4 мин
Количество просмотров7.4K

Извлечение данных


Каждому кто занимается промышленной разработкой кровавым энтерпрайзом не раз приходилось сталкиваться с написанием слоя работы с базой данных. С этим столкнулись и мы.


Наш проект построен на финском фреймворке Vaadin и чистым JDBC в основе слоя работы с базой данных. Без опыта работы с JDBC мы нагородили достаточно большой слой спагетти кода, а потом доблестно с ним разобрались.


О том как мы с этим боролись и какой велосипед изобрели под катом.


Читать дальше →

Итоги года: Большой предновогодний дайджест Университета ИТМО

Время на прочтение6 мин
Количество просмотров6.9K
Накануне новогодних праздников мы решили поделиться с вами подборкой самых интересных материалов, которые вышли в блоге Университета ИТМО (и не только) в уходящем году: от научных публикаций до рассказов о предпринимателях и от робототехники до биоинформатики.

Читать дальше →

Отладочная плата ПЛИС — Франкенштейн. Контроллер елочных гирлянд

Время на прочтение5 мин
Количество просмотров8.1K

Очередная серия про ПЛИС и отладочную плату Френки. Предыдущие серии 1, 2, 3.


Сделать контроллер елочных гирлянд не просто, а очень просто! Hello World на ПЛИС — это помигать светодиодом. А "С новым годом" на ПЛИС — это помигать несколькими светодиодами. Принцип прост, как и в предыдущих статьях: создаем счетчик, который делит частоту тактового генератора, выбираем биты из слова счетчика, для получения нужной скорости. Несколько бит из этого слова дадут нам определенный шаг отображения (в зависимости от количества выбранных бит 1, 2, 4, 8 и т.д. шагов). В зависимости от номера шага задаем значения для N светодиодов.


Для управления реальной гирляндой, можно взять какой-нибудь shield с электромагнитным реле. У меня оказался вот такой, на 8 реле. Схема подключения. Принципиальная схема.


Дальше

Маршрутизация ортогональных соединений в редакторах диаграмм

Время на прочтение9 мин
Количество просмотров7.5K

Маршрутизация ортогональных соединений в редакторах диаграмм


В данной статье я покажу, как решить проблему маршрутизации соединений в редакторе диаграмм типа MS Visio. Здесь будет минимум теории и максимум практики. Если вам нужно быстро реализовать маршрутизацию соединений в двумерной сцене, и вы первый раз сталкиваетесь с подобной проблемой — то эта статья для вас.



Проблематика


К данной проблеме я пришел в процессе разработки своего хобби-проекта ultra_outliner. Грубо говоря, в нем есть двумерная сцена, в которой находится много прямоугольных карточек, которые могут быть связаны между собой. И соединений может быть довольно много — а значит их нужно маршрутизировать, чтобы сегменты не накладывались, не пересекали карточки и др.


Многие из вас работали с Microsoft Visio, и конечно же оценили, как красиво автоматически маршрутизируются стрелочки. Конечно, и Visio не всегда справляется, и для таких случаев есть возможность ручной подгонки. Но тем не менее, не рассматривая крайние ситуации — мне захотелось это повторить. Действительно, ведь там все этим проблемы достаточно неплохо решены.


Читать дальше →

Превращаем свой смартфон в IoT датчик при помощи Bluemix. Пример разработки приложения

Время на прочтение7 мин
Количество просмотров10K


Bluemix — мощная платформа, которая позволяет быстро и без проблем создавать, разворачивать и администрировать приложения в облаке. Bluemix — это реализация архитектуры IBM Open Cloud Architecture на основе открытого ПО Cloud Foundry, работающего по принципу «платформа как услуга» (Platform as a Service – PaaS).

При помощи этой платформы и службы IBM Watson IoT Paltform можно разработать Bluemix-приложение, которое позволит обрабатывать, визуализировать и сохранять данные, полученные со смартфона. В этой статье показано, как обычный смартфон можно превратить в надежный датчик, подключенный к сети.
Читать дальше →

Вспоминаем 2016-й: наши лучшие посты года

Время на прочтение12 мин
Количество просмотров21K


Новый год всё ближе, остались считанные дни. Пора подвести итоги. Всего за этот год мы опубликовали почти 200 постов (этот — 198-й) с суммарным рейтингом 6912, получили 6245 комментариев, 21835 добавлений в избранное и почти 3 миллиона просмотров! Мы сели и с умилением и ностальгией вспомнили лучшие посты в нашем блоге за 2016 год. Присоединяйтесь!
Читать дальше →

Ближайшие события

11 советов, которые помогут сэкономить время при отладке программ

Время на прочтение9 мин
Количество просмотров24K
Программирование — это не только когда пишешь код, запускаешь его и удовлетворенно наблюдаешь за его безупречной работой, ведь зачастую он работает совсем не так, как мы рассчитываем! Возникает необходимость в эффективной отладке приложений, а это, оказывается, целое искусство! В данной статье я привожу свой собственный список советов, которые, как я надеюсь, помогут вам в отладке нативного кода.



Оригинальная статья была написана Bartlomiej Filipek и опубликована в его блоге.

Вспомогательные средства


Каждый программист должен знать, как запускать отладчик, устанавливать контрольные точки, возобновлять исполнение кода, выполнять вход и выход из функций (используя клавиатуру!). Вот несколько простейших советов по облегчению процесса отладки на основе базовых приемов.
Читать дальше →

Компиляция Java программ и разрешение зависимостей в runtime

Время на прочтение5 мин
Количество просмотров13K
Как можно совместить некоторые достоинства динамических языков со строгой типизацией в обычном Java коде?
Читать дальше →

Сложнейшая проблема компьютерных наук

Время на прочтение12 мин
Количество просмотров19K
… это, конечно же, именование сущностей. И я говорю не только об именах переменных или новых технологий, нет. Мы не можем договориться даже о самых базовых терминах.

Тысяча диалектов


Знаете ли вы, что спецификация языка программирования С часто упоминает термин «объект»? Нет, это не объект в том понимании, как он описывается в ООП — объект в С определяется как «блок данных в среде выполнения, содержимое которого может представлять некоторое значение». В этом понимании объекта имеет смысл говорить о, например, «объекте типа char».

Термин «метод» достаточно распространён, но вы можете встретить программистов, которые будут говорить исключительно «функция-член класса». Язык программирования Java, поэтому, то ли имеет, то ли не имеет функций, в зависимости от того, кого вы об этом спросите. Термины «процедура» и «подпрограмма» иногда используются как аналог «функции», но в некоторых языках программирования (например, Pascal) процедура это совершенно не то же самое, что функция.

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

Intel Software Guard Extensions, учебное руководство. Часть 4, устройство анклава

Время на прочтение16 мин
Количество просмотров4.3K
В четвертой части серии учебных материалов, посвященных расширениям Intel Software Guard Extensions (Intel SGX), мы займемся созданием анклава и его интерфейса. Мы рассмотрим границы анклава, определенные в третьей части, и определим необходимые функции моста, рассмотрим влияние функций моста на объектную модель и создадим инфраструктуру проекта, необходимую для интеграции анклава в наше приложение. Вместо ECALL анклава мы пока используем заглушки; к полной интеграции анклава мы перейдем в пятой части этой серии.


Читать дальше →

Отладочная плата ПЛИС — Франкенштейн. Звуки и музыка

Время на прочтение8 мин
Количество просмотров9K

Сегодня у нас самая предновогодняя серия про ПЛИС и отладочную плату Френки. Предыдущие серии 1, 2.


Мы уже передавали тоновые сигналы по радио с помощью нашей платы Франкенштейн. Теперь попробуем воспроизводить звуки и музыку.


Для этого подключим к ПЛИС обычный динамик. К Френки подключен генератор на 25.175 МГц. Если поделить эту частоту до диапазона слышимых частот и подать на вывод ПЛИС, то мы можем услышать звук. Меня частоту мы можем получить разные звуки.


Тестировать качество звучания будет самый лучший слухач в доме — Маша. Диапазон частот в 60 КГц — это вам не шутки! )))


Разовьем эту идею

JetBrains Night в Москве. Видео. Применение ReSharper в командах .NET-разработчиков

Время на прочтение1 мин
Количество просмотров5K
29 сентября в Москве прошла мини-конференция JetBrains Night: 7 часов разработчики из JetBrains рассказывали о том, что компания делает, зачем, и что будет делать дальше, а потом отвечали на вопросы, обсуждали общие проблемы и слушали, как разработчики из других компаний рассказывают им о том, что они делают и почему им удобно или пока еще не очень удобно делать это с помощью того, что делает JetBrains.

На Хабре мы публикуем видео всех докладов, чтобы можно было в комментариях обсудить то, что не успели обсудить на JetBrains Night, особенно с теми, кто не смог приехать лично.

Предыдущие доклады можно посмотреть в прошлых публикациях, а сегодня мы публикуем видео доклада Размика Сейсяна об использовании ReSharper для того, чтобы разрабатывать на C# в командах. Итак, лучшие практики настройки Resharper для команд:

Как стать первым в спортивном программировании: Университет ИТМО делится опытом. Часть 2

Время на прочтение8 мин
Количество просмотров13K
Мы продолжаем рассказывать о курсе «How to Win Coding Competitions: Secrets of Champions», который Университет ИТМО запустил на платформе edX в этом году (первую часть материала читайте здесь).

Во второй части нашей беседы с авторами и инструкторами курса — Максимом Буздаловым и Павлом Кротковым, чемпионами ACM ICPC, и Дарьей Яковлевой, призером Google Code Jam for Women, речь пойдет о том, важен ли победителям олимпиад правильный настрой, как развить навык поиска креативных решений и кому будет полезен курс от чемпионов Университета ИТМО.

Читать дальше →

Вклад авторов