Здравствуйте, я автомобиль-русофоб, так сложилось исторически. В отличие от других концептов транспортных средств русофобской направленности, как, например, бугуртовоз "Святая Русь", я представляю собой успешный коммерческий продукт с растущей долей на мировом рынке. Сегодня я расскажу вам какие ключевые инженерные решения заложены в мою основу, и на какие компромиссы пришлось пойти моим создателям, чтобы достигнуть таких уровней русофобии, которых по-хорошему невозможно даже достичь.
Все потоки
- Новые
- Лучшие
- Все
- ≥0
- ≥10
- ≥25
- ≥50
- ≥100
Новости
Динамическая JIT компиляция С/С++ в LLVM с помощью Clang
При создании компилятора для собственного языка программирования я сделал его как транспайлер в исходный код на С++, вот только реализация сильно подкачала. Сначала приходится генерировать динамическую библиотеку с помощью вызова gcc, который и сам по себе не очень быстрый, так еще его может быть и не быть на целевой машине, особенно на другой платформе (например Windows). Конечно, для первых экспериментов и такой реализации было достаточно, но сейчас, когда я начал готовить код компилятора к публикации, стало понятно, что текущий вариант с фоновым запуском gcc никуда не годится.
Из-за этого, я решил не откладывать перевод компилятора на использование LLVM, который планировался когда нибудь в будущем, а решил сделать это уже сейчас. И для этого нужно было научиться запускать компиляцию C++ кода с помощью библиотек Clang, но тут вылезло сразу несколько проблем.
Оказывается, интерфейс Clang меняется от версии к версии и все найденные мной примеры были старыми и не запускались в актуальной версии (Сlang 12), а стабильный C-style интерфейс предназначен для парсинга и анализа исходников и с помощью которого сгенерировать исполняемые файлы не получится*.
Дополнительная проблемой оказалось, что Clang не может анализировать файл из памяти, даже если для этого есть соответствующие классы. Из объяснений выходило, что в экземпляре компилятора проверяется, является ли ввод файлом**.
А теперь публикую результат своих изысканий в виде рабочего примера динамической компиляции С++ кода с последующей его загрузкой и выполнением скомпилированных функций. Исходники адаптированны под актуальную версию Clang 12. Пояснения к коду я перевел и дополнил перед публикацией, а ссылки на исходные материалы приведены в конце статьи.
- *) Кажется в 14 версии планируется реализовать C интерфейс для генерации исполняемых файлов.
- **) На самом деле, Clang может (или теперь может) компилировать файлы из оперативной памяти, поэтому в исходники я добавил и эту возможность.
Изоляция модели предметной области
Эта статья является переводом материала «Domain model isolation».
Термин «изоляция модели предметной области» уже давно используется, но его значение может быть не таким очевидным, как многие думают. В этом посте автор оригинала попытается описать, что значит правильно изолировать модель предметной области и почему это важно.
Google не хватает химиков и школьников? (положительно/отрицательная рецензия с предложениями)
(Источник)
Про программирование таблицы Менделеева я уже писал ранее.
И вот читаю новость: “Google запустила интерактивную 3D-таблицу Менделеева”:
Распространение консольных приложений macOS до конечных пользователей
Начиная с macOS 10.15 Catalina разработчикам требуется заверять свои приложения и утилиты командной строки. Если с приложениями, распространяемыми через App Store все прозрачно, то распространение консольных утилит может вызвать сложности. В данной статье я покажу, как можно доставлять такие утилиты до конечных пользователей (будем проделывать все необходимые операции в терминале, а также автоматизируем эти действия двумя вариантами - через bash-скрипт и с помощью SPM executable).
Генерация документации с использованием JSDoc
JSDoc - это язык разметки, используемый для аннотирования исходного кода JavaScript с использованием комментариев. Аннотации обрабатывается различными инструментами для создания документации в доступных форматах, таких как HTML и Rich Text Format.
Почему у нас до сих пор нет роботов-каменщиков?
Как только начинаешь исследовать вопрос строительства, оказывается, что любые новые идеи, которые могут прийти в голову, кто-то уже не раз и не два испытывал – часто несколько десятилетий назад. Одной из таких новых, но на самом деле старых, идей является механический каменщик – машина для автоматизации кирпичной кладки стен.
Привлекательность этой идеи легко видеть: кладка кирпичей, кажется, идеально подходит для механизации. Это многократно повторяющаяся операция – для постройки кирпичного здания нужно уложить десятки или даже сотни тысяч кирпичей или блоков, большинство из которых совершенно одинаковы, причём кладутся они тоже одинаково. Кажется, что такая машина не должна будет совершать физических сложных движений – на каждый кирпич наносится слой строительного раствора, после чего он кладётся рядом с предыдущим. Все кирпичи одного размера, поэтому каждый следующий кирпич кладётся на одном и том же расстоянии от предыдущего.
Кроме того, работа каменщика, особенно при работе с кирпичами, одна из самых физически тяжёлых – она требует многочасового и многократного перемещения тяжёлых объектов. В целом кладка кирпичей кажется идеальным кандидатом на механизацию – и люди пытаются сделать это уже более 100 лет.
Как выглядят два не совсем обычных проигрывателя винила до 30 тысяч рублей от Pro-Ject и Rega
Мы уже обсудили [раз, два, три] «вертушки» в районе 20-15 тысяч рублей. Поэтому пришло время для примечательных моделей проигрывателей за чуть более существенные деньги. Сегодня показываем Pro-Ject VT-E и Rega Planar 1.
Записки владельца электромобиля «поневоле»
Вот уже, как три месяца, я являюсь владельцем электромобиля Nissan Leaf S 2021, о чем, в самом ближайшем прошлом, даже и не задумывался!
Я отнюдь не принадлежу к "электромобильным фанатам" (равно, как и к "автолюбителям" вообще: мне намного ближе "лозунг Остапа Бендера" - "Автомобиль не роскошь, а средство передвижения!"); притом я, скорее даже, антагонист EV, и всегда в интернет-спорах подчеркивал непрактичность и дороговизну электромобилей, в сравнении с обыкновенными автомобилями с ДВС. Одним из моих главных аргументов был: "Вот когда лиз EV будет дешевле, чем мой нынешний лиз "Альтимы", вот тогда и поговорим". Но судьбе было угодно поймать меня на слове!
Искусственный интеллект как инструмент для создания процессоров: Samsung показывает пример
Технологии искусственного интеллекта становятся все более востребованными. Все это уже не просто дань моде, а реально работающие проекты, которые помогают реализовывать самые разные идеи. Сейчас ИИ-технологии проникают и в производство и разработку электроники, включая самое ценное — процессоры.
Создавать современные чипы крайне сложно, это весьма долгий, многоэтапный процесс. Такие компании, как Intel, Samsung, Apple, AMD, китайские производители справляются (по крайней мере, пока). Но если можно оптимизировать и ускорить процесс — то почему бы и нет? И в этом случае как раз и приходит на помощь искусственный интеллект. Корпорация Samsung уже даже разработала первые коммерческие образцы чипов, созданных при помощи ИИ.
От веб-студии к SaaS сервису для автоматизации склада (часть первая)
Началось все в апреле 2010 года. Я только что успешно продал долю в довольно крупной веб-студии, на создание которой потратил более 10 лет своей жизни и задумался о бизнесе, которому я посвящу свои следующие годы.
CodeIgniter 4: Подготовка к PHPUnit. Устанавливаем Xdebug в XAMPP (Windows 32-разрядная (x86))
Благодарю за отклики
Получив разноплановые отклики в виде комментариев и «кармы» на свою первую статью на Хабре «Фреймворк на PHP: CodeIgniter 4. «Лёгкий пример» использования Database Migrations (миграций) и Seeding (посев)», особенно хочется отметить тех членов сообщества, которые разделили точку зрения автора и в своих комментариях нашли нужные слова, чтобы поддержать автора в его намерении поделиться впечатлениями, что CodeIgniter 4 — это актуально.
Какие открытые проекты развивает наша лаборатория мультиагентных систем в умных городах и Индустрии 4.0
Ранее мы рассказали о пяти тематических open source инструментах [тут, здесь и вот тут], которые разработали и развивают специалисты, магистры и аспиранты Университета ИТМО. Сегодня поделимся еще одним направлением — им занимаются в лаборатории мультиагентных систем в умных городах и Индустрии 4.0.
Искусственный интеллект в разработке: как используют сейчас, что его ждет в будущем и боятся ли ИИ программисты
Не так давно Microsoft выкатил в публичный доступ ИИ Copilot. Он обучен на базе GitHub и помогает разработчикам дополнять код в зависимости от контекста. С нуля пока ничего не создает, но некоторые функции может написать целиком без участия программиста. И возникает вопрос — а не близок ли тот день, когда искусственный интеллект полностью заменит разработчиков, и, например, заставит их переквалифицироваться в бизнес-аналитиков.
Мы побеседовали со специалистами по ИИ и Data Science, чтобы оценить реальные перспективы искусственного интеллекта. А еще спросили разработчиков, героев наших прошлых статей, что они думают об ИИ и не боятся ли потерять работу из-за технического прогресса. Приходите в комментарии и тоже делитесь своим мнением.
«От недр своя…» — история медицины Древней и Средневековой Руси
В этом очерке перед нами пройдут древнерусские «рудомёты» и «кровопуски», святые, обладавшие даром исцеления, и простые священники, думавшие, что таким даром обладают, знахари-неудачники и коновалы. Докторов мы тоже увидим, но чаще всего они будут скромно стоять на обочине русской истории и молча, недоумённо наблюдать за разворачивающейся драмой.
Как превратить книгу о Гарри Поттере в граф знаний
Обработка естественного языка — это не только нейронные сети, а данные — это не только строки, числа и перечисления. Область работы с данными простирается намного дальше. К старту флагманского курса по Data Science представляем вашему вниманию перевод из блога разработчиков графовой базы данных neo4j о том, как при помощи SpaCy и Selenium извлечь из книги граф взаимоотношений героев. Подробности и код, как всегда, под катом.
Передовые технологии на службе СЭД
В статье монографически раскрываются современные аспекты разработки документо-ориентированных систем основанных на собственном опыте. Все исследования и реализация технологий последовательно выполнены в ряде проектов на протяжении последних 3-х лет, где частично или полностью использовался представленный подход. Пошагово показан путь создания высоконагруженной СЭД и одновременно формирования в рамках полученной платформы многофункциональной CRM.
Стратегия разработки подчинена парадигме: если технологии позволяют не расширять инфраструктуру при допустимом ущербе качества с сохранением стабильности и доступности – инфраструктура не расширяется. Данная парадигма минимизирует вероятные точки отказа, уменьшает стоимость разработки проекта и всей инфраструктуры.
SSE, нотификации, Node.js и при чём тут C#?
Вписавшись в очередной провальный заранее стартап, мне прилетела задача: нужны уведомления на сайте. Ладно - сказал я себе. Открываю любимую IDE и начинаю писать очередной микросервис.
До этого я никогда не занимался уведомлениями, но был осведомлен, что есть для этого несколько путей: WebSocket, SSE и Long Polling.
31 июля 1981 года. Полное солнечное затмение
40 лет назад, но — как вчера
Это — продолжение рассказа. Начало — «Знать небо» — здесь.
31 июля 1981 года — эта дата, как
Заглянем в будущее Python
На конференции Russian Python Week 2020 мы пообщались с двумя людьми, от которых непосредственно зависит будущее Python.
На наши вопросы ответили Core-developer community on Google Cloud Дастин Инграм и Director at Python Software Foundation Кэрол Виллинг. Их ответы о том, чего не хватает языку и как он будет развиваться дальше, вы узнаете, заглянув под кат.