Как стать автором
Обновить
222.14

C++ *

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

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

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

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров6.6K


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


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


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

Читать дальше →
Всего голосов 5: ↑2 и ↓3+2
Комментарии35

Пишем свой QTableView (продолжение: кастомные стили)

Уровень сложностиСложный
Время на прочтение1 мин
Количество просмотров3.9K

Создаем свой кастомный стиль для QTableView без css стилей и переопределения ролей модели данных. Занимаемся отрисовкой напрямую.

Читать далее
Всего голосов 6: ↑4 и ↓2+2
Комментарии7

Летадло, предисловие

Уровень сложностиСложный
Время на прочтение28 мин
Количество просмотров3.9K

Эта статья, мой конспект, сигнальный флаг, или очередная тренировка изложения своих мыслей? В силу обстоятельства, прикоснулся к unreal, замечательный инструмент в "умелых руках", много од написано сему творению человеческой мысли, так что взаимодействие с ним большая честь для разработчика. Создание игр, визуализация, исследования, много всего интересного заложено в этот проект с многолетней историей развития. Открытость и большое сообщество, существенно понижает порог вхождения, конечно тривиальность писать такое, каждый второй инструмент с такими характеристиками, но это говорит о общей высокой планке нынешних инструментов для реализации любых техно извращённых фантазий. Невероятное стечение обстоятельств, получаю деньги за то что учусь взаимодействовать с этим инструментом.

Читать далее
Всего голосов 3: ↑2 и ↓1+2
Комментарии2

Базовый набор для решения задач на LeetCode/Codeforces, ч.3 Адаптивные Контейнеры C++

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

Это будет наиболее короткая и понятная статья, на LeetCode довольно много задач, которые гораздо проще и лучше получится решать с использованием обоих этих классов, не уверен что обоих сразу, но по-отдельности получается отлично.

Статья получится очень короткой, если я просто перечислю pop, top, front поэтому добавлю по-небольшому разбору некоторых задач с LeetCode.

Почему адаптивные контейнеры?
Дело в том, что любой из этих классов довольно просто повторить при помощи любого последовательного(VECTOR, LIST, DEQUE). Из этого и термин адаптивный контейнер - он подстраивает под себя некоторый функционал классов контейнеров, что в определенной комбинации решает задачи максимально красиво и быстро.

Читать далее
Всего голосов 2: ↑1 и ↓1+2
Комментарии0

Истории

Работа с «Ягодой» для новичков: подключение пяти микроконтроллеров ESP32 к микрокомпьютеру Raspberry Pi 4 Model B по SPI

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

Данная статья создана с ознакомительной целью и служит рекомендацией по работе с Raspberry Pi 4 Model B ("Ягода"), WEMOS WiFi & Bluetooth ESP32 ("ESP32") при настройки Serial Peripheral Interface (SPI).

Читать далее
Всего голосов 6: ↑4 и ↓2+2
Комментарии4

Что такое пир-ревью и зачем оно нужно вашей команде

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

Меня зовут Савва Лебедев, я наставник и ревьюер курса «Разработчик C++», а до этого сам прошёл путь от обычного до старшего студента. На курсе есть задание на пир-ревью, и эта практика здорово прокачивает и хард-, и софтскилы. Именно поэтому хочу рассказать о пир-ревью и с позиции учащегося, и с позиции человека, который отвечает за качество обучения и профессиональное развитие студентов.

Спойлер: в конце статьи вы найдете код, на который можно дать пир-ревью для тренировки.

Читать далее
Всего голосов 12: ↑6 и ↓6+2
Комментарии7

Разбираемся с использованием неблокируещего ввода-вывода в ОС Linux. Пишем пример сервера на голых системных вызовах

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

Как обычно пишут сервер, если не особо заботиться производительности? Программа запускается, затем начинает принимать входящие соединения от клиентов и для каждого клиента запускает новый поток, который занимается обслуживанием этого клиента. Если вы используете какой-нибудь, прости господи, Spring или Flask или там Poco, то он что-такое внутри себя и делает - разве что потоки можно переиспользовать, то есть брать из некого пула. Это всё довольно удобно, но не слишком эффективно. Скорее всего, ваши потоки, обслуживающие клиентов, живут недолго и большую часть времени ожидают либо получения данных от клиента, либо отправки их клиенту - то есть ждут возвращения системных вызовов. Создание потока ОС - довольно дорогая операция, как и переключение контекста между потоками ОС. Если вы хотите уметь обслуживать много клиентов эффективно, надо придумать что-то другое. Например, коллбеки. Но это довольно неудобно.

Читать далее
Всего голосов 8: ↑4 и ↓4+2
Комментарии16

Сборка OpenCV с поддержкой OpenVINO

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров3.2K

В статье мы соберём OpenCV с поддержкой OpenVINO, а также узнаем отличия в скорости инференса модели машинного зрения на C++ и Python при прочих равных.

Читать далее
Всего голосов 6: ↑4 и ↓2+2
Комментарии1

Пчела на работе, разработка игр на SFML C++

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

Предыдущая тема

В этой статье рассмотрены следующие темы:

1) написание класса плеер;

2) интеграция класса плеер в игровой проект.

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии1

C/C++ из Python (Kivy, ctypes) на iOS

Уровень сложностиСложный
Время на прочтение11 мин
Количество просмотров2.7K
main

Ранее я писал статьи C/C++ из Python (ctypes), C/C++ из Python (Kivy, ctypes) на Android. В них описывается процесс запуска на Linux и Android. Теперь поговорим как тоже самое сделать на iOS. В этой статье речь пойдет о сборке, необходимых инструментах, механизмах отладки и установки.

Читать дальше →
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Пчела на работе, разработка игр на SFML C++

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

Предыдущая тема

Обзор игры на SFML С++. Как клонировать репозиторий и собрать проект с помощью СMake. Обзор классов игры "Пчела на работе".

Читать далее
Всего голосов 3: ↑2 и ↓1+2
Комментарии0

Размышление об Active Object в контексте Qt6. Часть 2.6

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

В предыдущей части цикла я описал способ вызова слота посредством очереди обработки сигнально-слотовых соединений Qt (она же очередь событий). Но совсем забыл про такую штуку, как QMetaObject::invokeMethod. А ведь эта штука позволяет добиться такого же эффекта (вызов метода в потоке-владельце QObject), но без необходимости создания сигнала.

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии2

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

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
26 октября
ProIT Network Fest
Санкт-Петербург
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

Кастомный аллокатор для закрытого 3rd

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

Существует ряд ситуаций, когда это имеет смысл. От полного контроля памяти, до вынужденной необходимости. К примеру, одна из возможных ситуаций:
1. Мы используем alignment аллокаторы.
2. Мы перегружаем какой-то класс и данные от нашей 3rd зависимости.
3. 3rd зависимость не использует alignment аллокаторы.

Читать далее
Всего голосов 4: ↑3 и ↓1+2
Комментарии3

Еще один пересказ «туториала» Джека Креншоу

Время на прочтение5 мин
Количество просмотров3.7K
Иногда более-менее не тривиальную задачку приятно решить с чувством легкого базиса под ногами. Базис как бы уже есть, и мы как нечто среднее между художником и архитектором, ловим себя (в данный момент времени) на перекладывании пустого в порожнее, готовя нечто яркое и крепкое (почти как красное полусухое ?. Яркое — потому что без йоты красоты легко сойти на полпути, а крепкое — профессия обязывает. Чтобы было еще ярче, призовем в помощь замечательные серии Jack Crenshaw compilers.iecc.com/crenshaw (non-technical introduction to compiler construction) и начнем, пожалуй, с построения маленького, но вполне достойного линтера en.wikipedia.org/wiki/Lint_(software) (Честно говоря, так как ниже будет имплементен разбор яваскрипт кода, вполне допустимо, но только временно, переименовать линтер в парсер и думать дальше в новых терминах)

Сначала хотелось продекларировать базис как есть, но подумав немного, можно неутешительно прийти к выводу — что четко определенный базис не будет иметь всякого смысла, так как находясь в данной точке пространства, в данный момент времени будущее, как и прошлое, весьма туманны.
Читать дальше →
Всего голосов 4: ↑3 и ↓1+2
Комментарии1

Релиз языка программирования NewLang 0.2

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

image


NewLang — это язык программирования высокого уровня в котором можно сочетать стандартные алгоритмические конструкции с декларативным программированием и тензорными вычислениями для задач машинного обучения.


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


NewLang находится в процессе активного развития и это второй публичный релиз в котором добавлены существенные новые возможности и произошли некоторые изменения по сравнению с предыдущей версией.

Читать дальше →
Всего голосов 9: ↑4 и ↓5+2
Комментарии22

Межмодульный анализ C и C++ проектов в деталях. Часть 2

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

В первой части статьи мы рассматривали основы теории компиляции C и C++ проектов, в частности особое внимание уделили алгоритмам компоновки и оптимизациям. Во второй части мы погрузимся глубже и покажем ещё одно применение межмодульного анализа. Но в этот раз не для оптимизаций исходного кода, а для улучшения качества статического анализа на примере PVS-Studio.

Читать далее
Всего голосов 4: ↑2 и ↓2+2
Комментарии12

Пишем внешнюю компоненту для 1С, NativeAPI на С++, для ОС Linux, с использованием Qt Creator

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

Аннотация

В статье рассмотрен процесс создания внешней компоненты для 1С в среде Qt Creator для операционной системы Linux (ubuntu, debian, mint и им подобных). На примере компоненты для сбора данных от внешней аппаратуры и сохранение их в базе, посредством 1С. В качестве внешней аппаратуры в данном примере будем использовать Arduino UNO.

Для создания внешней компоненты понадобятся

Читать далее
Всего голосов 6: ↑4 и ↓2+2
Комментарии4

Flutter каналы платформы

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

Перевод статьи одного из инженеров команды Flutter, посвященной каналам платформы, и иже с ним.

Читать далее
Всего голосов 3: ↑2 и ↓1+2
Комментарии0

Судьба баг-репорта

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

Довольно частый (и логичный) вопрос к нашим статьям с проверкой открытых проектов: отправляются ли разработчикам баг-репорты? Так вот, ответ – да. Более того, мы на этом не останавливаемся и иногда отслеживаем прогресс. Сегодня хотелось бы рассказать об одном из случаев, где именно эта педантичность предотвратила фиктивное исправление бага.


0921_destiny_of_a_bug_report_ru/image1.png

Читать дальше →
Всего голосов 6: ↑3 и ↓3+2
Комментарии5

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

Работа

QT разработчик
12 вакансий
Программист C++
150 вакансий