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

В этой статье мы поговорим о новом предложенном расширении языка С++ — метаклассах. Герб Саттер с коллегами работал над этим предложением около 2 лет и, наконец, этим летом представил его общественности.

Итак, что же такое «метакласс» с точки зрения Герба Саттера? Давайте вспомним наш С++ — самый прекрасный в мире язык программирования, в котором, однако, веками десятилетиями существуют примерно одни и те же сущности: переменные, функции, классы. Добавление чего-то фундаментально нового (вроде enum classes) занимает очень много времени и рассчитывать дождаться включения чего-то нужного вам здесь и сейчас в стандарт — не приходится. А ведь кое-чего и правда не хватает. Например, у нас всё ещё нет (да, наверное, и не будет) интерфейсов как таковых (приходится эмулировать их абстрактными классами с чисто виртуальными методами). Нет properties в полном их понимании, нет даже value-типов (чего-то такого, что можно было бы определить как набор переменных простых типов и сразу использовать во всяких там контейнерах/сортировках/словарях без определения для них разных там операций сравнения, копирования и хеширования). Да и вообще постоянно чего-то кому-то не хватает. Разработчикам Qt вот не хватает метаданных и кодогенерации, что заставляет их использовать moc. Разработчикам C++/CLI и C++/CX не хватило способов взаимодействия со сборщиком мусора и своими системами типов. Ну и т.д.

А давайте на секунду представим, что мы сами можем вводить в язык новые сущности. Ну или пусть не прямо «сущности», а правила проверки и модификации классов.
Читать полностью »

На днях завершился Яндекс.Алгоритм 2017 — наш чемпионат по спортивному программированию. В финальном раунде 25 финалистам нужно было за два с половиной часа решить шесть задач. Первое место вновь завоевал Геннадий Короткевич из питерского ИТМО — это уже четвёртая его победа после состязаний 2013, 2014 и 2015 года. Никола Йокич из Швейцарской высшей технической школы Цюриха и выпускник Университета Токио Макото Соэдзима стали вторым и третьим, повторив свои прошлогодние результаты. Вот как распределились денежные призы: победа — 300 тысяч рублей, второе место — 150 тысяч, третье — 90 тысяч.

Разбор задач финала Яндекс.Алгоритма 2017 - 1

Заявки на участие в Алгоритме 2017 подали 4840 человек. Более 60% из них — россияне. На втором месте по количеству заявок — Беларусь, далее следуют Украина, Индия и Китай. В общей сложности на чемпионат зарегистрировались жители нескольких десятков стран, включая Сингапур, Камерун, Венесуэлу и Перу.

Мы по традиции публикуем формулировки и разобранные решения задач финала.Читать полностью »

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

image

То ли программирование — это легко, то ли я просто ничего не понимаю. MemeGenerator.net

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

Кодинг, программирование и стучание по клавишам

Большую часть времени на своей первой работе в сфере технологий я посвящал HTML, CSS и JavaScript. Я делал так, чтобы элементы вели себя тем или иным образом или плел с их помощью визуальные сюжеты. В то время я не думал о себе как о программисте, да и не хотел им тогда становиться. Лишь некоторое время спустя, когда я понял как делать другие вещи в NodeJS, PHP и MySQL, я начал рассматривать себя в этом качестве. Мешая в голове мысли о всем великом, что есть в программировании, я получил свою первую работу с «программистским» названием «инженер-разработчик ПО», в рамках которой я ежедневно и активно решал те или иные задачи.
Читать полностью »

CalculiX — довольно известный в узких кругах пре/постпроцессор и решатель для задач механики деформируемого твёрдого тела и задач механики жидкостей и газов. Основной код полностью написан коллективом из двух человек — их имена «в вольной русской транскрипции» Гидо Донт (решатель), Клаус Виттиг (пре/пост). Дополнительно к основному коду можно найти удобный функциональный графический Launcher для подготовки расчётного файла. Чуть более подробная информация есть в русской Вики, несколько лет назад вбитая мною и ещё парой неравнодушных пользователей (ETCartman и Пруль, привет! К слову, могу подозревать, что ETCartman написал CalculiX Launcher, но это история, покрытая тайнами никнейнов).

С точки зрения рядового российского инженера, CalculiX не столь важное и необходимое в повседневной работе ПО, чтобы обращать на него внимание. Совсем иначе на CalculiX могут взглянуть научные сотрудники, ранее проводившие вычислительные эксперименты в Abaqus — CalculiX фактически является открытым клоном Abaqus, поскольку родоначальник у них один — Гидо Донт.

Большие два плюса CalculiX — кроссплатформенность и открытость исходников. Большие два минуса — практически полная неизвестность среди инженеров в СНГ и несколько меньший функционал по сравнению с Abaqus. Тем не менее, я решился сделать небольшую заметку о том, как получить бинарник CalculiX с поддержкой решателя на CUDA, в слабой надежде, что кому-нибудь на просторах СНГ данная информация пригодится.
Читать полностью »

При решении задач электроники все методы хороши, если они устраивают ТЗ, бюджет и разработчика. Linux был мне неизвестен, но вместе с задачами, которые решаешь, растешь и сам. Этот пост расскажет о том, как применить компьютер с Ubuntu для связи большого компьютера с контроллером в соответствии со схемой:

Взгляд снизу вверх или Ubuntu Server для разработчика электроники. Часть 1 - 1

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

Картинка для привлечения внимания
Картинка для привлечения внимания

На днях появилась подработка, поступил заказ записать скетч на ардуино. Простенький, но объёмный. С повторяющимися блоками. Нужно было управлять каждым портом Arduino Mega отдельно, при получении команды по Uart. Отправляешь символ — и светодиод (к примеру) загорается на определенное время. Написал скетч на 2 команды, скинул заказчику для тестов, получил предоплату. Дальше, нужно было масштабировать на все порты.

Для начала я честно попробовал руками. Написав первые 26 #define, энтузиазм иссяк. Я пошел подышать свежим воздухом, и вспомнил, что у меня на ПК (Win 7 x64), уже установлен Python 3.6 из дистрибутива Anaconda. Кстати, это наиболее удобный способ установки Python`а на Windows, т.к. всё уже включено и настроено по умолчанию, и есть пакетный менеджер.

Итак, приступим.

Создаем папку, в ней пустой файл, я назвал его «arduino_gen.py» и bat файл «start_py.bat» со следующим содержимым:

python.exe arduino_gen.py > code_out.txt
@pause

Этот файл нам потребуется, для запуска программы на Python`е
Теперь мы напишем программку, которая сгенерирует нам необходимый код для Arduino.
Читать полностью »

В конце мая я оказался среди слушателей конференции Scala Days в Копенгагене. Одним из ключевых спикеров был создатель языка Scala Мартин Одерский. Он рассказал о развитии языка и, в частности, о разработке компилятора, названного Dotty. Планируется, что на основе Dotty будет разработан новый компилятор для версии 3.0.

Мартин не раз выступал на эту тему, и я бы хотел собрать здесь всю актуальную информацию о Dotty – новые ключевые возможности и элементы, удаленные за ненадобностью.

Dotty – будущее языка Scala - 1
Мартин Одерский. План развития Scala на ближайшие несколько лет

Этот пост будет полезен и знатокам, и совсем новичкам, для которых разговор о Dotty я предваряю рассказом об особенностях Scala, а также о том, что лежит в его математической основе.
Читать полностью »

Оригинал статьи: https://github.com/blu/ascii_pruner
Автор: Мартин Кръстев

Один мой друг обратил мое внимание на интересную статью на habrahabr.ru — русский перевод статьи Дэниела Лемира Быстрое удаление пробелов из строк на процессорах ARM. Эта статья заинтриговала меня по двум причинам: во-первых, кто-то на самом деле потратил время и усилия по поиску оптимального решения общей проблемы на не-x86 архитектуре (ура!), а во-вторых, результаты автор дал в конце статьи немного озадачили меня: порядка 6-ти кратное преимущество для Intel? Автор сделал однозначный вывод, что ARM-у ну очень далеко по соотношению «эффективность на такт» до «большого железа» от Интела в этой простой задаче.

Вызов принят!

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

Как контролировать семейный бюджет?

image

У меня всегда были сложности точно следовать бюджету, особенно сейчас, когда все покупки проходят по кредитной карте. Причина проста — перед глазами нет пачки денег, которая постепенно сокращается, и в какой-то момент ты понимаешь, что тратить больше нечего. Если большая часть покупок оплачивается кредитной картой, то единственный способ узнать, сколько cредств осталось или сколько потрачено, это зайти в Интернет-банк или мобильный банк, или же использовать финансовые агрегаторы, например Mint, в которые тоже надо заходить и проверять баланс. Это возможно, но на это требуется дисциплина, а когда с той же карточки платишь не только ты, то установить её сложно.

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

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

Тестирование в Badoo «с высоты птичьего полёта» - 1

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

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


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