Рубрика «c++» - 2

Меня зовут Самир, мне 16 и я хотел бы поделиться с вами одним из моих текущих проектов: Veo ( https://github.com/SamirShef/veolang ). Veo это системный язык программирования. Я хочу использовать его для написания своих программ в будущем. А ещё я разрабатываю его потому что мне интересны комплияторы и потому что мне нечего делать.

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

Всем привет! Недавно я написал свою систему сборки - Take (C++17, без внешних зависимостей если не считать один header only TOML‑парсер). Идея простая: взять привычную модель Make (именованные цели, зависимости между ними, шелл команды), но выкинуть табы, $@/$< и прочую магию синтаксиса Makefile, а вместо этого настраивать всё через обычный .toml‑файл.

Получилось вот так:

default = "build"

[vars]
CXX   = "gcc"
FLAGS = "-O2 -Wall -Wextra"
OUT   = "msin"

[build]
desc = "Build msin"
run  = [  "${CXX} ${FLAGS} -Iinclude src/main.c src/functions.c -o ${OUT}",
]

[install]
desc = "Install msin (sudo or su)"
run  = [  "install -d /usr/local/bin",  "install -m 755 ${OUT} /usr/local/bin/msin",
]

[clean]
desc = "Clean build"
run  = ["rm -f ${OUT}"]

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

Небольшая предыстория

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

Через пару месяцев я вернулся к этой части системы и обнаружил, что вместо адаптации существующего решения появился классический Ctrl+C → Ctrl+V. В качестве сообщений использовался огромный std::variant, который передавался между потоками через Читать полностью »

Интерактивная версия доступна в оригинале статьи

Интерактивная версия доступна в оригинале статьи

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

Всем привет, недавно я написал симулятор логических гейтов или вентилей на С++ (sfml для графики + sol2 для интеграции луа скриптов), которые можно программировать на луа таким образом: ```

local gate = {}

gate.inputCount = 2
gate.outputCount = 1

function gate.update(inputs)
    local a = inputs[1] or false
    local b = inputs[2] or false

    local result = a and b
    
    return { result }
end

return gate

Этот код отвечает за гейт и (Когда 2 входа активны выход равняется true, если хоть один не активен то равен false.). И так-же бинды гейтов к клавишам:

```

local binds = {
    ["Num1"] = "scripts/gates/and.lua",
    ["Num2"] = "scripts/gates/or.lua",
    ["Num3"] = "scripts/gates/xor.lua",
    ["Num4"] = "scripts/gates/not.lua",
    ["Num5"] = "scripts/gates/halfadder.lua"
}

return binds

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

Введение

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

Существовало два варианта реализации проекта: с интерфейсом на Qt либо в виде решения, которое можно использовать в backend-разработке. Я выбрал второй вариант и реализовал небольшую библиотеку.

В ходе разработки мне пришлось ответить на следующие вопросы:

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

Двоичный интерфейс приложений, чаще именуемый просто ABI — это концепция, которая кажется знакомой и незнакомой одновременно. В каком смысле знакомой? Об ABI часто говорят в контексте устранения неисправностей, упоминают в статьях. Иногда даже приходится решать проблемы с совместимостью, которые провоцирует этот интерфейс. А в каком смысле незнакомый? Дело в том, что, если кто-то попросит вас описать, что такое ABI — то вы обнаружите, что понимаете, о чём речь, но чётко сформулировать ответ на этот вопрос сложновато. В конце концов, можно ограничиться формулировкой, Читать полностью »

Начну издалека. Пару недель назад мы с моим другом решили сделать один очень крутой проект, на мою долю выпала часть аэродинамических подсчетов. Я стал углубляться в эту тему и понял, что на самом деле все не так уж и просто. В зависимости от угла атаки (угла между вектором скорости и нормали), а также от формы тела меняются многие параметры, которые влияют не только непосредственно на тело, но и на окружающий воздух, его давление, температуру, скорость и 'очень много всего еще', Читать полностью »

Привет!

Наконец нашёл немного времени для написания статьи. Это моя первая статья на хабре, так что, извиняйте если что...

Цель статьи — показать проблемы при разработке SDK и найти попробовать архитектуру, которая минимизирует проблемы управления памятью, упрощает биндинги для разных языков и сохраняет производительность.

В этой статье мы порассуждаем о поиске некоего «универсального» SDK (Software Development Kit), который бы всем нравился, как новогодняя ёлка.

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


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