Обновить
277.33

C++ *

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

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

Как анализировать C и C++ код без привязки к сборочной системе на Windows

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

Иногда бывает так, что появляется целый "зоопарк" самописных скриптов сборки, а его последний "смотритель" уволился ещё в прошлом году (играет Гражданская Оборона — "Зоопарк").

Хотелось бы всё равно как-то анализировать такой код без необходимости разбираться в хрупкой и непонятной системе сборки. Что же делать?

На самом деле, решение есть! Смысл взаимодействия анализатора со сборочной системой состоит в том, чтобы получить необходимую для анализа информацию. Но получить её можно и другим способом: из запущенного процесса компиляции.

В новой статье посмотрим, как воспользоваться этим механизмом для ОС Windows в анализаторе PVS-Studio, и  как сделать его использование в процессе разработки удобным.

Теги:
+4
Комментарии0

Модули C++20 в существующий проект: легкая прогулка или прыжок в бездну?

Старший инженер-программист С++ в компании «Криптонит» Сергей Чеботарев расскажет о миграции на модули C++20 на System Level Meetup в Москве 22 ноября в 12:00.

Зарегистрироваться на митап онлайн и/или офлайн можно по этой ссылке.

Наши программисты столкнулись с проблемой медленной сборки проектов и рассматривали Precompiled Headers как возможное решение.

Но отсутствие гарантий ускорения компиляции и поддержки со стороны стандарта заставило их обратить внимание на модули C++20, которые представились как «усовершенствованные PCH» — стандартизированные и более надежные.

Сергей расскажет о стратегии внедрения и первых проблемах, практических сложностях (отказе от import std и последствиях), рассмотрит реорганизацию системы сборки по концепции «метацелей».

В конце доклада — выводы и дорожная карта: стоит ли овчинка выделки?

Теги:
+1
Комментарии0

«Там, где критична скорость, но не требуется оптимизация»: как и зачем МойОфис вышел в OpenSource

На Хабре опубликовано первое большое интервью нашего CTO Тамары Щепалкиной — и оно стоит прочтения, потому что это:

  1. «Не форк с косметикой, а оригинальная инженерия»

    Компилятор tsnative прошёл проверку на безопасность, получил документацию, Docker-образ и демо, чтобы любой разработчик мог сразу попробовать его в работе.

    «...tsnative — это не «форк с косметическими изменениями», а продукт, в основе которого лежит оригинальная инженерная работа. Именно поэтому мы и приняли решение вывести его в open source: у проекта есть собственная ценность и потенциал для развития, который может быть интересен и полезен гораздо шире, чем внутри одной компании…»

    2. Open source как часть стратегии.

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

    3. «Где критична скорость, но не требуется оптимизация».

    tsnative создавался как инструмент, который помогает веб- и C++-разработчикам ускорять работу и выходить за рамки привычных сценариев. В основе компилятора — открытые библиотеки и собственная инженерия, без компромиссов по производительности.

    4. От ядра к экосистеме.

    Сначала — компилятор, но потенциально — UI-фреймворк и целая экосистема open source-проектов.

    5. Сообщество в центре.
    Telegram-чат поддержки уже работает, а впереди — расширение комьюнити и совместное развитие открытых технологий.

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

    В статье Тамара рассказывает, как и зачем МойОфис выходит на уровень open source-разработки, какие цели ставит и какие шаги уже сделаны.

    Если вас интересует развитие стратегия открытого кода и сотрудничество с сообществом — обязательно загляните.

    Читать интервью

Теги:
+12
Комментарии2

Представлена открытая библиотека Reduino, которая поможет программировать микроконтроллеры на Python. Знания сложного и запутанного C++ не нужны, разбираться в нюансах Arduino больше не надо. Можно легко запрограммировать RGB-ленты, датчики, сенсоры и другие девайсы на простом Python. Ресурс помогает использовать все синтаксические структуры без кучи манипуляций с памятью: условия, циклы, массивы, кортежи и понятное ООП. Библиотека преобразует код в C++.

Теги:
+4
Комментарии6

Ускоренный найм для инженеров C/C++: оффер за 3 дня

Телеком-команда YADRO создает решения для мобильных сетей нового поколения: базовые станции GSM и LTE, а также весь программный стек — от низкоуровневых протоколов до систем управления. Сейчас в команде открылись вакансии инженеров, отбор на которые можно пройти гораздо быстрее, чем обычно.

SPRINT OFFER — это формат ускоренного найма: все этапы отбора проходят всего за три дня. Чтобы попасть в программу, достаточно подать заявку до 19 октября.

Software Engineer (телеком-платформа)

Вам предстоит разрабатывать платформенное решение для телеком-систем. На его основе строятся современные узлы сотовых сетей LTE- и GSM-стандартов — например, базовые станции и системы управления. В это роли вы будете: 

  • Развивать платформу, обеспечивающую middleware-сервисы, высокую доступность и управление узлами для приложений, входящих в состав базовой станции LTE/GSM.

  • Разрабатывать компоненты платформы в технологическом стеке C++/Linux.

  • Собирать и анализировать метрики для оценки производительности продукта.

  • Создавать и оптимизировать высокопроизводительные каналы коммуникации между компонентами, а также работать с подсистемами временной синхронизации, управления конфигурацией инфраструктуры и компонентов.

  • Поддерживать средства развертывания и обновления приложений.

  • Разрабатывать API для взаимодействия с аппаратным обеспечением и операционной системой при конфигурации и управлении инфраструктурой.

  • Обеспечивать качество продукта: исправлять дефекты, писать unit-тесты, проводить код-ревью, разрабатывать техническую документацию.

  • Создавать инструменты, упрощающие работу других разработчиков.

  • Участвовать в диагностике и анализе проблем работы системы в тестовых и полевых сценариях.

Подать заявку по ссылке →

Software Engineer C/C++ (LTE/GSM)

Создавайте высоконагруженные системы, которые обеспечивают стандарты связи разных поколений. Работа охватывает три уровня. L1 — низкоуровневое программирование, работа с радиоканалом и сигналами, близкая к железу. L2 — логика, работа с алгоритмами и математическими моделями. L3 — высокоуровневое программирование, бизнес-логика. В этой роли вы будете: 

  • Разрабатывать решения совместно с командой — от этапа исследования и прототипирования до коммерческого внедрения пакетного ядра сети 5 поколения (5G).

  • Создавать программное обеспечение для базовых станций LTE, реализуя полный стек протоколов 3GPP.

  • Разрабатывать спецификации и дизайн программного обеспечения.

  • Интегрировать решения с другими компонентами системы — как программными, так и аппаратными.

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

  • Исследовать и устранять проблемы, влияющие на надежность, производительность и масштабируемость системы.

Узнать больше и подать заявку по ссылке →

Теги:
Всего голосов 6: ↑6 и ↓0+8
Комментарии0

Опубликован исходный код игры "Русская рулетка 2: закрытые планеты".

2 сентября 2025 года исходники были выложены на Internet Archive, архив включает в себя тексты программ на языках C++/Asm (Требуются Turbo Assembler и Watcom C/C++), дополнительные утилиты для сборки и набор игровых данных для версий игры на разных языках (русский, английский, немецкий, итальянский).

Исходный код был предоставлен одним из разработчиков игры, Святославом "Suavik" Образцовым, под лицензией правообладателя:

Все оригинальные файлы разработаны и предоставлены компанией Logos.

Лицензия позволяет публикацию и использование исходных текстов программ и данных с любыми изменениями при обязательном указании, что оригинальные файлы были разработаны компанией Logos.

All original files are developed and provided by Logos.

The license allows publication and use of source code of programs and data with any changes, provided that the original files were developed by Logos.

Ссылка на оригинальные исходники: https://archive.org/details/license_202509

Репозиторий Github с кодом: https://github.com/Marisa-Chan/rr2nw

Теги:
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

2ГИС зовёт на хакатон: https://hackathon.2gis.ru

4–5 октября, офлайн, Москва. Два дня, чтобы общаться, фигачить, вдохновляться и повлиять на городские сервисы!

Три трека: городские данные с ЦОДД, инклюзия с фондами «Антон тут рядом», «Продвижение», «ЛизаАлерт» и носимые устройства — часы, браслеты, AR и другие гаджеты. Будут онлайн-встречи, чтобы больше узнать про реальные задачи.

Призовой фонд: 1 000 000 рублей и шанс, что проект попадёт прямо в 2ГИС🔥

Регистрироваться можно с командой от 3 до 6 человек или самостоятельно — поможем найти команду в чате!

Теги:
Рейтинг0
Комментарии0

Мы выбрали 10 топ-хабрастатей за 10 лет, а вы выберите лучший HR-бренд

Будем краткими: в этом году блогу МойОфис на Хабре исполнилось 10 лет!
Мы собрали юбилейную подборку — выбрали по одной ключевой статье на каждый год. Это тексты, без которых, как говорится, нас невозможно представить, еще труднее – понять!

А вас просим оценить нас в ежегодном опросе Хабр/ЭКОПСИ. Это займёт всего 5–7 минут. Мы соберём важную обратную связь, а индустрия получит объективную картину IT-брендов в 2025 году.

Теги:
Всего голосов 17: ↑16 и ↓1+15
Комментарии0

В прошлом году я помог Дмитрию Свиридкину подготовить и опубликовать цикл из 12 статей "Путеводитель C++ программиста по неопределённому поведению". Теперь этот расширенный, доработанный и обобщённый материал доступен в виде печатной книги:

Экскурс в неопределенное поведение C++ / Д. О. Свиридкин, А. Н. Карпов, – СПб.: БХВ-Петербург, 2025. – 384 с. – (Профессиональное программирование)

ISBN 978-5-9775-2073-7

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

Книгу можно найти в offline и online магазинах.

Ещё какое-то количество книг я и коллеги раздадим в качестве сувениров и призов на различных мероприятиях, таких как:

Приятного и вдумчивого чтения!

Теги:
Всего голосов 19: ↑18 и ↓1+28
Комментарии3

TypeScript и C++ в одном бинаре. Первый open source-проект от МойОфис

Команда МойОфис выложила в open source собственную разработку — компилятор tsnative. Это кроссплатформенный инструмент, который объединяет удобство TypeScript с производительностью C++ в одном приложении. Исходники — на GitHub под лицензией Apache 2.0.

Компилятор tsnative — это первая и ключевая часть более масштабного проекта под названием AntiQ, в котором мы переосмысляем подход к кроссплатформенной разработке без тяжёлых фреймворков.

AntiQ разделен на два самостоятельных компонента. Сейчас в open source опубликован только tsnative — главный модуль, в котором сосредоточена основная логика и заложены архитектурные принципы всей платформы.

Зачем это нужно?

tsnative — это кроссплатформенный компилятор, преобразующий TypeScript в нативный машинный код. Он обеспечивает бесшовную интеграцию с C++ без glue-кода или JavaScript-движков, объединяя удобство высокоуровневой разработки с производительностью системного кода. В результате вы получаете один бинарник, собранный из двух языков.

Как это работает:

  • C++-функции помечаются TS_EXPORT;

  • генерируются .d.ts-декларации для TS;

  • TypeScript- и C++-код собираются через LLVM;

  • на выходе — один исполняемый файл, без обёрток.

// math.cpp
#include "TS.h"
TS_EXPORT int add(int a, int b) {
return a + b;
}
// index.ts
console.log(add(2, 3)); // -> 5
// index.ts
console.log(add(2, 3)); // -> 5

Проект может быть интересен тем, кто:

  • делает нативные приложения, но хочет писать часть логики на TS;

  • ищет замену закрытым коммерческим компиляторам;

  • любит ковыряться в сборке, кросс-компиляции и низкоуровневом коде.

Открытый код — не просто «выложили и забыли». Мы хотим, чтобы проектом пользовались, коммитили, обсуждали. Поэтому будем рады pull request’ам, issue и звёздочкам. Всё как обычно :)

Исходники на GitHub

Если у вас есть вопросы или комментарии, вы можете задать их в чате проекта: https://t.me/antiqmyoffice

Теги:
Всего голосов 33: ↑33 и ↓0+36
Комментарии12

Что ты сделал для хип-хопа IT-инфраструктуры в свои годы? Писал UEFI и BMC для высоконагруженного оборудования 

В YADRO есть распределенная команда, которая разрабатывает и сопровождает собственные программные реализации UEFI (BIOS) и BMC. Для самого разного оборудования — от серверов до телеком- и клиентского оборудования. 

Что делают BIOS и BMC в продуктах
Что делают BIOS и BMC в продуктах

Познакомиться с командой → 

Какие задачи выполняют в команде BIOS/BMC: 

  • Реализуют программную поддержку новых аппаратных продуктов компании, определяют протоколы и методы взаимодействия между программными и аппаратными компонентами продуктов YADRO.

  • Проводят верификацию микрокода и выполняют проверку прошивок микросхем всех продуктов компании. Выстраивают стратегию тестирования.

  • Исследуют новые программные и аппаратные технологии для применения в продуктах. Рефакторят код для повышения производительности.

  • Придумывают методы безопасного обновления прошивок BIOS и BMC, чтобы обеспечить минимальный или нулевой даунтайм.

  • Добавляют новые фичи и меняют существующие — от WebUI до политик управления аппаратными компонентами.

Команде нужно больше инженеров — разработчиков на С/C++, тестировщиков, автоматизаторов и техлидов. Знакомься с вакансиями на сайте и вовлекайся в трушные инженерные задачи на современном технологическом стеке. 

Теги:
Всего голосов 8: ↑8 и ↓0+9
Комментарии0

Есть для альтернатива Delphi в 2025 году для простых кроссплатформенных приложений?

Навеяно обсуждением статьи про Дельфи в 2025.

Q1: Если сейчас есть задача по-быстрому сбацать что то с формами под винду - какая есть альтернатива дельфи?

Q2: А если так же быстро накидать, только кроссплатформенное приложение и без зависимостей?

И мой ответ

A: Не находишь, что 3000$ за кроссплатформенный дизайнер форм слишком дорого? Даже за хороший.

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

Все может использоваться бесплатно и без особых претензий на функциональность. Единственное, иногда бывает нужно еще нарисовать какой то чарт/график и загрузить/записать данные в БД/XML/JSON - с этим могут быть нюансы с конкретным вариантом.

С чем то я работал, с чем то нет, актуальные версии вживую не проверял.

  1. GNOME Builder (ex.Anjuta). GTK multilang IDE

  2. Cambalache (ex.Glade) - GTK form builder

  3. Qt Creator

  4. FLUID for FLTK

  5. wxFormBuilder for wxWidgets 

  6. Projucer for JUCE

  7. Ultimate++ 

  8. NetBeans GUI design tool for Java Swing 

  9. TKproE (TCL/TK Programming Environment)

  10. Lazarus

  11. MSEide+MSEgui Pascal

  12. GTK# Visual Designer MonoDevelop (retired)

  13. Xamarin.Forms GTK Backend (discontinued for NET MAUI)

  14. JavaFX Scene Builder

  15. Pygubu Tkinter a GUI for Python

    Может еще что и забыл, либо не попалось на глаза.

Теги:
Всего голосов 8: ↑4 и ↓40
Комментарии15

Из чего состоит MeyerSAN — решение для имитации ошибок в СХД

Проект MeyerSAN — это программно-аппаратный комплекс на основе сервера VEGMAN. Комплекс имитирует неисправность SAS HDD и SSD и позволяет автоматически тестировать реакцию системы хранения данных на ошибки. Решение необходимо для тестирования и валидации работы подсистем, которые находятся в составе СХД и определяют проблемные диски. 

Как это работает: 

  1. Мы подключаем сервер к системе хранения данных. 

  2. С помощью ПО и драйверов заставляем СХД видеть сервер как диск или несколько дисков.

  3. Вносим отклонения в поведение диска. Например, имитируем ситуацию, когда пользователь записал данные в диск, а прочитать их не смог.

Задача MeyerSAN — эмулировать проблемы с дисками: задержки, ошибки, порчу данных и метаданных.

Архитектура MeyerSAN состоит из трех больших блоков: 

  1. REST, так называемый MRSNMGMT. Позволяет конфигурировать систему в соответствии с пожеланиями.

  2. MRSNLib. Cодержит бизнес-логику приложения: обработку и модификацию команд.

  3. Драйверы низкого уровня. Они предоставляют нам механизмы транспорта и позволяют соответствовать всем протоколам.

Средний компонент, MRSNLib, команда разработчиков написала на современном С++ 23. Как именно инженерам удалось интегрировать новейший стандарт, а также паттерны объектно-ориентированного программирования в проект MeyerSAN, рассказывает один из создателей проекта Константин Крюков в новой статье.

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

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

Когда я был в 9 классе в 1985 году, в Киеве поставили заведовать компьютеризацией школьного образования человека по фамилии Долина, бывшего полковника танковых войск из Донецка. Сейчас я понимаю что Долина был голова. Он временно поставил компьютеры MSX Yamaha в физматшколу номер 145, а через неделю их забрал. Ясень пень, что десятки физматшкольников потянулись в его контору, которая располагалась через дорогу.

Долина фильтовал школьников простым и эффективным способом: во-первых, каждый должен был написать инструкцию по началу работы с языком программирования Бейсик. Шариковой ручкой разумеется - на работу с текстовым редактором еще надо было получить право. Во-вторых, он должен был вымыть пол в конторе.

Если с мытием полов у всех было еще более-менее, то инструкции обламывались писать 95% пришедших. Осталось всего 4 человека - один из 145-й (это я), два из физмат-интерната (у них были свои Ямахи, но с монохромным экраном и ограниченным доступом) и еще один школьник из третьей физматшколы (забыл номер). Долина предоставил нам безлимитный доступ ко всем компьютерам, тонне софтвера и посодействовал посылке двоих из нас в Новосибирскую Летнюю Школу Юных программистов.

На Ямахах помимо Бейсика был MSX-DOS, три компилятора Си, два компилятора Паскаля (включая ранний Turbo Pascal), Z80 процессор, ассемблер и отладчики (в командной строке и оконный), видеопроцессор со спрайтами, интерпретатор Lisp, Nevada Fortran, интерпретатор подмножества Пролога и даже перенесенный из CP/M подмножество Ada.

Мы писали для Долины программы типа записи действий футболистов на стадионе в реальном времени, а также графические мультики на Бейсике, которые он показывал людям из киевской киностудии мультфильмов. Он также был популярен у нанятой им секретарши которая подходила к нему сзади и обнимала его за плечи, на что он говорил "ты создана чтобы любить мужчин". Короче один из ролевых фигур моего взросления.

После Долины я в 10 классе пошел в Киевский Институт Кибернетики, но это уже была другая история.

Теги:
Всего голосов 32: ↑30 и ↓2+33
Комментарии28

Cataclysm: Dark Days Ahead (2025) — как живёт и развивается roguelike, который до сих пор учит выживать

Игра без маркетинга. Без издателя. Без бюджета. Но с кодом, который живёт дольше многих ААА-проектов. Почему Cataclysm DDA всё ещё актуальна — и что из неё может почерпнуть разработчик?

📌 Что это вообще за игра?

Cataclysm: Dark Days Ahead (или просто CDDA) — roguelike-выживалка с открытым исходным кодом. Изначально создана в 2010-х, проект уже давно перерос статус инди-хобби. Вокруг игры сформировалась уникальная архитектура разработки, напоминающая open-source проекты вроде Godot или Blender.

При этом CDDA — это не просто «рогалик». Это огромный симулятор выживания, в котором учитывается всё: климат, диета, микроорганизмы, ткани, генетика, сила удара, источник света, запах, химия топлива, рефлексы NPC…
Она не для всех — но от неё сложно оторваться.

🧬 Почему она до сих пор развивается?

Проект жив благодаря:

  • Cообществу разработчиков, регулярно вносящих правки на GitHub

  • Модульной архитектуре — почти всё, кроме движка, вынесено в JSON

  • Открытому патч-процессу: pull-request может отправить любой желающий

  • Строгому CI — игра проверяется на стабильность при каждом изменении

CDDA — это не Unity и не Unreal. Но это отличный пример того, как жить без них. Игра написана на C++ с минимальной внешней зависимостью и на удивление гибкой логикой.

🧠 Архитектура и интересные решения

  • 📁 JSON Everywhere: почти все предметы, существа, профессии, здания, сценарии, книги, мутанты и их поведение — вынесены в конфиги. Даже атакующие свойства NPC настраиваются без перекомпиляции.

  • 🧪 Эволюция и симуляция: монстры «видят» запах, запоминают игрока, боятся огня, ищут пищу, воспринимают звуки и реагируют на источник света.

  • 🔧 Модификации на лету: моддинг работает в реальном времени. Можно изменить структуру мутанта или добавить новую машину, не трогая движок.

  • 🛠 Технический долг признан открыто: разработчики не скрывают костыли. В issues открыто обсуждаются недоработки, устаревшие решения и предложения по рефакторингу.

🎮 Почему стоит попробовать?

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

🤔 А если хочется поучаствовать?

  • Репозиторий: github.com/CleverRaven/Cataclysm-DDA

  • Discord-разработка: discord.gg/cataclysmdda

  • Редактировать можно всё: от предметов и диалогов — до поведения монстров

  • Написать мод — можно за вечер

💬 И всё же...

Что делает старый roguelike привлекательным даже в 2025 году?
Что заставляет людей править JSON-файлы, компилить на локальной машине, и устраивать «чистки баланса» спустя 10 лет после релиза?

Возможно, потому что эта игра живёт, а не просто запускается.

Мой обзор на YouTube: https://www.youtube.com/live/B_IGiKw2BuQ
Дубликат на RuTube: https://rutube.ru/video/a91c9c71da3808af7381b87e10e5daca/

Теги:
Всего голосов 4: ↑4 и ↓0+5
Комментарии5

Давно не виделись! Надо исправлять. А поскольку у нас с вами лето, нельзя просто так взять и собраться — устраиваем митап для всех, кто связал свою жизнь с С++. Программа плотная:

18:00-19:00 Сбор гостей и welcome-кофе

19:00-19:30 Использование С++ библиотек при разработке прикладных решений в Astra Linux

19:45-20:15 C++ как производительный runtime для микросервисов: обсудим подход, при котором C++ усиливает Node.js, а Node.js ускоряет интерфейсную часть C++-систем.

20:15-20:45 Брейк на обсуждения

20:45-21:15 «Дайджест по нейросетям и их применению в IT» 

21:15-22:00 Холиварный сейшен с экспертами: С++ мертв или нет. Обсуждаем эффективные практики и методы использования С++ в задачах разработки и интеграции.

Встречаемся на Бауманская ул., 11, стр. 8 — около 10 минут от м. Бауманская или м. Красносельская.

Подробности и регистрация тут

Теги:
Всего голосов 3: ↑3 и ↓0+4
Комментарии1

Привет Хабр! Это мой первый пост, и я просто хотелось спросить, стоит ли уходить в Go? У меня есть небольшая база в программировании, делал сайты на реакт и ларавел, реализовывал бэкенд с Солид и паттернами, писал на нативном пхп файловые обменники и апи. Не много знаю базы данных соответственно, гит, докер. Сейчас засматриваюсь на Go, где то вычитал что мол крутая штука для бигтехов в России, а сам я студент и пока сижу на шее у родителей, но в следующем году я окончу к курс, и хочу где то месяца за 4-5 изучить все нужное в го и во всех других сопутствующих технологиях для разработки высоконагруженных приложений и микросервисов и всякого подобного. Стоит ли сворачивать на этот путь, или добить стек ларавел плюс вью? Немного боюсь, так как слышал что в го нужны уже 25 летние синьоры со стажем работы минимум в 20 лет, но и не хочется проторчать всю жизнь в челябинской галере на фуллстеке за 70 деревянных на руки.

Теги:
Всего голосов 7: ↑1 и ↓6-4
Комментарии20

Как нам обустроить С++

Помните старый анекдот? Учительница спрашивает: дети назовите слово на букву Ж. Вскакивает Вовочка и кричит: жоп@. Учительница говорит: Вовочка нет такого слова. Вовочка: как же так? жоп@ есть, а слова нет?

Программист С++ сейчас находится в положении Вовочки. Когда создать вложенный класс есть возможность

struct Foo {
	struct Bar {
	};
};

А написать опережающее описание мы не можем.

struct Foo;
struct Foo::Bar; // error: use of undefined type 'Foo'

Слова нет-с.

И этот "кассовый" разрыв длится с 1998 года. Больше чем некоторым С++ программистам лет. Очевидно, что такая скорость разработки языка никуда не годится. А причина этого в том, что С++ разрабатывается комитетом по старому доброму принципу, лебедь, рак и щука. При этом со стороны комитета идут возражения, что мол все надо тщательно обдумать, но при этом кривые решения внедряются регулярно.

Поэтому единственный способ спасти С++ это создание форка языка и разработка этого форка непосредственно разработчиком компилятора. Это устранит эффект лебедя-рака-щуки, ускорит выход новых фич и исправления ошибок. Ну и новые баги будут проявляться чаще, но можно хотя бы надеяться на их быстрое исправление. Комитет же в этом плане безнадежен.

Я же со своей стороны тоже хочу внести посильный вклад и предлагаю название:

С❤︎❤︎
Теги:
Всего голосов 6: ↑3 и ↓3+3
Комментарии18

Привет хабр! Что-то долго я не писал статей здесь... Надеюсь вы прощаете меня.

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

Благодарю за внимание!

Теги:
Всего голосов 16: ↑0 и ↓16-16
Комментарии2

LLVM IR: что это такое?

Главной особенностью LLVM является промежуточное представление кода (англ. Intermediate Representation, IR), форма, которую использует LLVM для представления кода в компиляторе. LLVM IR был разработан для выполнения функций промежуточного анализа и преобразований внутри оптимизатора компилятора. Ее создание имело целью решение множества специализированных задач, включая поддержку легковесных оптимизаций среды выполнения, кроссфункциональные и межпроцедурные оптимизации, полный анализ программы и агрессивные реструктурирующие преобразования. Промежуточное представление кода определено как язык первого порядка с четкой семантикой.

IR (Intermediate Representation) в контексте LLVM — это промежуточное представление кода. Это низкоуровневое, независимое от платформы и типобезопасное представление программного кода, которое используется в качестве промежуточного языка между интерфейсной частью и серверной частью компилятора.

define i32 @add1(i32 %a, i32 %b) {
entry:
  %tmp1 = add i32 %a, %b
  ret i32 %tmp1
}

define i32 @add2(i32 %a, i32 %b) {
entry:
  %tmp1 = icmp eq i32 %a, 0
  br i1 %tmp1, label %done, label %recurse

recurse:
  %tmp2 = sub i32 %a, 1
  %tmp3 = add i32 %b, 1
  %tmp4 = call i32 @add2(i32 %tmp2, i32 %tmp3)
  ret i32 %tmp4

done:
  ret i32 %b
}

Этот код LLVM IR соответствует следующему коду на языке C, обеспечивающему возможность сложения целых чисел двумя разными способами:

unsigned add1(unsigned a, unsigned b) {
  return a+b;

}
// возможно не самый лучший способ сложения двух чисел
unsigned add2(unsigned a, unsigned b) {
  if (a == 0) return b;
  return add2(a-1, b+1);
}

Как видно из этого примера, LLVM IR — низкоуровневый RISC-подобный набор виртуальных инструкций. Как и настоящий набор инструкций RISC, он поддерживает линейные последовательности простых инструкций (сложение, вычитание, сравнение и ветвление). Эти инструкции имеют трехадресную форму. Это значит, что они берут некоторое количество входных данных и вычисляют результат в другом регистре. LLVM IR поддерживает метки и в целом выглядит как необычная форма языка ассемблера.

Строго говоря, промежуточное представление LLVM является четко определенным и единственным интерфейсом оптимизатора. Это означает, что всё, что необходимо знать, чтобы писать фронтенды для LLVM, это: что такое LLVM IR, как он работает и какие инварианты ему необходимы. Так как LLVM IR имеет текстовую форму, то имеет смысл создавать фронтенд, который выводит LLVM IR в виде текста, а затем отправляет его на оптимизатор и необходимый генератор кода при помощи каналов Unix.

Теги:
Всего голосов 5: ↑3 и ↓2+3
Комментарии0

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