Обновить
481.66

C++ *

Типизированный язык программирования

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

Многообразие функциональных обёрток

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели731

В далёком 2002-ом комитет по стандартизации C++ посетил пропозал, предлагавший ввести шаблонный класс, некий обобщенный «указатель на функцию», способный работать как с простыми указателями на функции, указателями на методы классов, так и с произвольными функциональными объектами [1].

В качестве мотивации к принятию он приводил несколько весомых юзкейсов: колбэки и функции высших порядков.

Кто же знал, что его окажется недостаточно, а один из его юзкейсов — вовсе не его юзкейс?

Читать далее

Нельзя писать безопасный код на C++ без санитайзеров

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели1.1K

С++ видится мне огромным франкенштейном: очень уж много разнообразных способов описать свои намерения. В добавок к этому язык пропагандирует политику zero-cost abstractions, из которой следует (помимо прочего), что программист в ответе за все свои действия. Однако, работая с большими кодовыми базами, становится крайне тяжело держать в уме различные тонкости языка, которые держать в уме нужно — иначе Undefined Behavior.

В данной статье хочу рассказать о трех интересных случаях UB, с которыми столкнулся при разработке на С++. Не думаю, что опытным разработчикам примеры из статьи будут полезны, но, полагаю, что начинающим разработчикам смогу показать на своем примере, как не стоит писать код на C++.

Читать далее

ESPspectrum V1.1 + версия для проектов

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели5.3K

ESPspectrum третья статья. Версия 1.1. Доработка первого экземпляра. Создание ESPspectrum for projects. Схемы и описание.

Читать далее

Зимняя школа по RISC-V — актуальные знания по перспективной открытой архитектуре от экспертов

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели4.1K

С 2 по 8 февраля пройдет Зимняя школа «Программирование для RISC-V» — недельный интенсив от YADRO и ННГУ им. Н.И. Лобачевского. Программа состоит из двух частей: онлайн-лектория и очной проектной работы.

На бесплатных онлайн-лекциях все желающие познакомятся с основами разработки на основе открытой архитектуры RISC-V — перспективной технологии, предназначенной для создания процессоров, микроконтроллеров и разработки ПО. Лекции позволят вам выстроить полноценное представление об архитектуре и ее особенностях: вы начнете с азов, а закончите изучением векторных расширений RISC-V и ее возможностей для высокопроизводительных вычислений. Информация подойдет и новичкам в теме, и тем, кто знает теорию и хочет делать первые практические шаги в разработке под новую архитектуру. 

А студенты очной формы обучения смогут решить реальную задачу, связанную с RISC-V, под руководством преподавателей Университета Лобачевского и разработчиков YADRO на базе вуза в Нижнем Новгороде. 

Подробнее о лекциях и проектах, а также о том, как стать участником школы, читайте под катом.

Узнать больше →

Что нам недодали в C++

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели1.6K

C++ последний десяток с лишним лет стремительно развивается. Тем не менее в наших кодовых базах все еще присутствуют многочисленные helper-файлы и классы, которые помогают восполнить пробелы в стандартной библиотеке языка. Как же так вышло, что там в этих ваших helper-файлах, и когда это закончится?

Читать далее

Про сортировку чисел и SIMD или как я обогнал STL в 16 раз

Уровень сложностиСложный
Время на прочтение13 мин
Охват и читатели14K

Cитуация, когда недостаток производительности пытаются покрыть новым железом, не редка. Важно понимать, однако, что железо, которое мы использовали и используем сегодня, содержит в себе множество механизмов, способных актуализировать наш код на года вперед. В моем понимании программист, умеющий грамотно оперировать этими механизмами(в частности в терминах бизнес процессов, требующих 'Здесь и Сейчас', терминах поиска золотой середины между Скоростью и Дизайном) - профессионал. В этой статье речь пойдет про довольно изъезженную и, казалось бы, понятную тему - тему сортировок, но с одним небольшим дополнением - SIMD. Эту тему я выбрал не случайно: в процессе решения довольно важной для индустрии задачи возникла следующая подзадача: есть входное множество целых чисел. Каждому множеству сопоставлено свое уникальное значение. При этом множества элементов, которые отличаются между собой только порядком следования элементов, а не их значениями, считаются одинаковыми и должны возвращать одно и тоже значение. Одно из решений - посортировать множества, а затем использовать результат как ключ в Хеш Таблице. Одно из важных ограничений - количество элементов в множестве не превышает 128 элементов. Под катом рассказываю о том, как сортировать такие множества быстро.

Читать далее

#Net

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели3.5K
image

Oчень добрый день. Меня зовут Тимур и я программист.

В прошлой своей статье я вкратце описал как можно внести минорные правки в код хромиума, собрать его и подтянуть в собственную сборку электрона. Статья имела оглушительный успех и вызвала бурные дебаты (34 комментария знаете ли) и, как только головокружение от успеха прошло, я немедленно бросился писать следующую. Собственно не прошло и трех лет (всего два так то) и вот она готова. Давайте взглянем.
Читать дальше →

Малоизвестные и интересные особенности C и C++

Уровень сложностиСредний
Время на прочтение43 мин
Охват и читатели62K

В C и C++ есть особенности, о которых вас вряд ли спросят на собеседовании (вернее, не спросили бы до этого момента). Почему не спросят? Потому что такие аспекты имеют мало практического значения в повседневной работе или попросту малоизвестны.

Целью статьи является не освещение какой-то конкретной особенности языка или подготовка к собеседованиям, и уж тем более нет цели рассказать все потайные смыслы языка, т. к. для этого не хватит одной статьи и даже книги. Напротив, статья нужна для того, чтобы показать малоизвестные и странные решения, принятые в языках C и C++. Своего рода солянка из фактов. Вопрос “что делать с этими знаниями?” я оставляю читателю.

Если вы, как и я, любите и интересуетесь C/C++, и эти языки являются неотъемлемой частью вашей жизни, в том числе и его углубленного изучения, то эта статья для вас. По большей части я надеюсь, что эта статья сможет развлечь и заставить поработать головой. И если получится, рассказать что-то, чего вы, возможно, еще не знали.

Читать далее

Оптимизируя неоптимизируемое: ускорение компиляции C++

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели9.8K

В этой статье речь пойдёт о повышении скорости компиляции библиотеки {fmt} до уровня библиотеки ввода-вывода Cи stdio.

Дня начала немного теории. {fmt} – это популярная открытая библиотека С++, представляющая более эффективную альтернативу С++ библиотеке iostreams и библиотеке Си stdio. Последнюю она обошла по целому ряду аспектов:

  • Безопасность типов с проверками форматирующих строк во время компиляции. Эти проверки включены по умолчанию начиная с С++ 20, и присутствуют в качестве дополнения для С++ 14/17. Форматирующие строки среды выполнения в {fmt} также оказываются безопасными, чего невозможно достичь в printf.
  • Расширяемость. Определяемый пользователем тип можно сделать форматируемым. При этом большинство типов стандартных библиотек, например, контейнеры и пакеты для обработки даты и времени, предлагают возможность форматирования изначально.
  • Производительность. {fmt} намного быстрее любой распространённой реализации printf, порой на несколько порядков (например, в форматировании чисел с плавающей запятой).
  • Возможность переноса поддержки Unicode.

Тем не менее одной из областей, в которой stdio по-прежнему опережала {fmt}, являлось время компиляции.
Читать дальше →

Строительные кирпичики в языках программирования

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели288


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


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


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

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

Connection pool для pqxx

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели5.1K

В процессе изучения бекэнда, как нового для меня направления в программировании, я столкнулся с необходимостью оптимизации управления соединениями. Поискав в интернете существующие решения для библиотеки pqxx (C++ API для PostgreSQL), я обнаружил, что хотя они и выполняют свою задачу, ни одно из них не соответствовало моим требованиям.

Это побудило меня разработать собственную реализацию пула соединений, которая была бы не только эффективной и масштабируемой, но и предоставляла бы удобный API для работы с транзакциями. Моя цель - создать решение, которое могло бы быть легко интегрировано в любой проект, использующий pqxx, обеспечивая при этом более высокую производительность и стабильность.

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

Читать далее

Как я поднял свой сервер без возможности выставить для него статический IP адрес

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели43K

Родился я в одном городе, позже переехал жить в другой. В родном городе остался ПК, который стоит без дела. В один прекрасный день решил я из него сделать многофункциональную удаленную машину: чтобы и кодить, и файлы хранить, и сайты/ботов хостить. Идея мне понравилась, я накатил на машину линукс, поставил все валявшиеся без дела диски и начал все это проверять. Но тут оказалось, что в родительском доме интернет тариф не поддерживает возможность установки статического IP адреса по умолчанию - адрес выдается провайдером в случайные моменты времени. Это означало, что я не мог, например, хостить какой-нибудь сервер на этой машине. Более того, я даже банально не мог к ней по SSH подключиться после смены ее адреса.

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

Читать далее

ESPspectrum прошивка

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели521

ESPspectrum - проект на основе компьютера ZX spectrum, с собственной простой операционной системой.

Это вторая статья проекта ESPspectrum. В данной статье описывается программный код OC. Есть возможность открывать, редактировать, создавать и удалять файлы. Есть калькулятор с историей запросов, также я сделал режим свободной печати, как для определения адреса клавиш, так и для теста клавиатуры. В последней версии добавлены игры.

Читать далее

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

Как я создавал автокликер для приложения «ДругВокруг»

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели806

Социальные сети и мессенджеры последнее время завоевали большую популярность среди пользователей интернета. Одной из таких соцсетей было приложение «ДругВокруг». Точнее, было в моём обиходе. Стояло оно у меня на компьютере с Windows XP в 2016 году. В то время у меня возникла идея сделать одну интересную программу для работы с этим приложением...

Читать далее

Разработка под Symbian: SDK

Время на прочтение2 мин
Охват и читатели457
Речь пойдет о платформе Series 60, позже переименованной в S^1.

Это обзорная статья, если немного сумбурная — извините. Только-только исправил все ошибки в postinker elf2e32, её описание и ссылка на гитхаб — в конце статьи.
image
Читать дальше →

Еще один год из жизни ReactOS

Время на прочтение6 мин
Охват и читатели18K

Здравствуйте, дорогие друзья!

Вот и заканчивается 2023 год. В этой статье я хочу продолжить начатую в 2021 году традицию вспоминания наиболее важных событий из жизни ReactOS за год. То что статьи не появляются на Хабре, не значит что система мертва. Медленно, но верно, в ReactOS реализуются разные фичи и исправляются баги. И в данной статье мы рассмотрим что произошло в жизни системы в 2023 году.

Читать далее

Электроника для самых маленьких: или еще один UV излучатель для активации фотополимера

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели9.4K

Однажды в своих запасах я наткнулся на пакет с микроконтроллерами ATtiny2313A, которые были куплены по акции лет шесть назад на всем известном китайском маркетплейсе и успешно заброшены в дальний угол. Эта неожиданная находка побудила меня создать простое и компактное устройство, которое имеет важное значение для производства прототипов печатных плат в домашних условиях. И что из этого получилось — об этом далее.
Читать дальше →

Быстрый парсинг 8-битных целых чисел

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели477

Допустим, вам нужно быстро распарсить 8-битные целые числа (0, 1, 2, …, 254, 255) из строки ASCII/UTF-8. Задача взята из проекта simdzone под руководством Йероена Коеккоека (NLnet Labs). Дана строка и её длина: например, ’22’ и длина 2. Наивное решение на C может выглядеть так:

Читать далее

ESPspectrum

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели17K

ESPspectrum - проект на основе компьютера ZX spectrum, с собственной простой операционной системой. Есть возможность открывать, редактировать, создавать и удалять файлы. Есть калькулятор с историей запросов, также я сделал режим свободной печати, как для определения адреса клавиш, так и для теста клавиатуры. Устройство компактное, всего 6 на 10 см.

Читать далее

Полезные материалы для С++ разработчика: о новом стандарте, висячих ссылках и технических собеседованиях

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели11K

Привет, Хабр! Принесли материалы с недавнего митапа по С++ — сохраняйте в закладки, чтобы посмотреть на новогодних каникулах. Что интересного ждет в подборке? 

Дискуссия о технических собеседованиях, из которой вы узнаете, какие красные флаги кандидатов отмечает Константин Владимиров, как Елена Степанова относится к алгоритмическим задачам и почему Илья Шишкову важны софткиллы. 

Обзор приятных и неприятных фич С++ 23 с точки зрения практикующего программиста, который опробовал новый стандарт на реальных проектах.

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

Читать далее