Рубрика «Блог компании TIMEWEB» - 3

«Москвич»… Как много в этом звуке!

Разумеется, сейчас мы поведём речь не о коренном жителе столицы, а об автомобиле, ныне практически ушедшем в историю. Первый «Москвич» сошёл с конвейера МЗМА (Московский завод малолитражных автомобилей) в начале декабря 1946 года. Строго говоря, он был почти точной копией немецкого «Опель-Кадета», снятого с производства ещё в 1940 году. Впрочем, немцы ликвидировали легковое производство не от хорошей жизни: фронту нужны были авиадвигатели, а не эти ваши малолитражки!

Зато после войны к воссозданию весьма удачной машины были привлечены эксперты самых разных фирм, включая некогда популярные «AutoUnion» (привет, «Аudi»!) и DKW. Сами заводы Opel лежали в руинах. То, что сохранилось, подлежало вывозу в СССР, даже из западных зон оккупации. Вот только после бомбардировок союзников оставалось там не шибко много.

Таким образом, конструкцию автомобиля, да и весь производственный цикл, пришлось создавать практически заново. Вот что вызвало некоторые небольшие, но такие заметные отличия в конструкции «Москвича-400» от довоенного «Опеля». Это, а заодно — попытка адаптировать «нежную» немецкую конструкцию под суровый быт советского автовладельца.

Праворульный «Москвич» - 1
Экспортный Москвич/Scaldia 408
Читать полностью »

Противостояние защиты и нападения, чьим частным случаем является знаменитая борьба снаряда и брони, появилось одновременно с первым оружием, позже распространившись на гораздо более широкие сферы. Обычно такое сводится к банальным «вот у нас есть меч» и «а вот у нас есть щит, который не пробивается мечом» или Ахт-Ахт не мог пробить броню ИС-3, поэтому ИС-3 – «имба». Но в реальности такие противостояния редко сводятся к простому превосходству характеристик защиты над атакой, всё же мы живём не в РПГ. Во время Второй мировой войны началось такое противостояние между РЛС и комплексами по их глушению. Эта незримая борьба оказала значительное влияние на ход войны, но широкой общественности она почти неизвестна.

Время исправить это упущение.

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

Одно из самых заметных отличий украинского языка от русского — гласный [і] на месте дореволюционного ятя и в тех словах, где в русском [о]: двір, дім, сіль, радість и т. п. Это отличие настолько характерно, что стереотипным «плохим украинским» в юморесках стал русский с заменой [о] на [і]: «кровосісі» и т. п. При этом в других, внешне похожих словах — русскому [о] соответствует [о] и в украинском: кров, рот, сон, голос, ворон и т. п. В чём же разница между этими двумя группами слов? Статья Читать полностью »

Динамическая JIT компиляция С-С++ в LLVM с помощью Clang - 1

При создании компилятора для собственного языка программирования я сделал его как транспайлер в исходный код на С++, вот только реализация сильно подкачала. Сначала приходится генерировать динамическую библиотеку с помощью вызова gcc, который и сам по себе не очень быстрый, так еще его может и не быть на целевой машине, особенно на другой платформе (например Windows). Конечно, для первых экспериментов и такой реализации было достаточно, но сейчас, когда я начал готовить код компилятора к публикации, стало понятно, что текущий вариант с фоновым запуском gcc никуда не годится.

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

Оказывается, интерфейс Clang меняется от версии к версии и все найденные мной примеры были старыми и не запускались в актуальной версии (Сlang 12), а стабильный C-style интерфейс предназначен для парсинга и анализа исходников и с помощью которого сгенерировать исполняемые файлы не получится*.

Дополнительная проблемой оказалось, что Clang не может анализировать файл из памяти, даже если для этого есть соответствующие классы. Из объяснений выходило, что в экземпляре компилятора проверяется, является ли ввод файлом**.

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

  • *) Кажется в 14 версии планируется реализовать C интерфейс для генерации исполняемых файлов.
  • **) На самом деле, Clang может (или теперь может) компилировать файлы из оперативной памяти, поэтому в исходники я добавил и эту возможность.

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

Хочу поделиться с вами несколькими малоизвестными историями про серию игр Civilization, которые рассказал Сид Мейер в автобиографической книге «Жизнь в мире компьютерных игр».

Если бы я попыталась просто привести все самые интересные фрагменты книги, то мне пришлось бы просто процитировать около 85% текста. Так что я поделюсь только фактами, связанными с самой знаменитой игрой Сида Мейера. Под катом несколько фактов из истории создания Civilization, ошибки, фичи, от которых отказались в процессе создания игры, появление читов и объяснение мифа про «ядерного Ганди» от Сида Мейера.

Civilization Сида Мейера: баг «ядерного Ганди» в том, что его не было - 1
Читать полностью »

В предыдущих частях я прошёлся по металлическим составляющим патрона — гильзе и пуле, сегодня же разговор пойдёт о химии, без которой ни один уважающий себя патрон работать не будет. Конечно же это порох. Касаться седой старины с открытием его китайцами и монахом-алхимиком Бертольдом Шварцем не будем, сразу перейдём к концу XIX века. Время это интересно тем, что как раз тогда активно шёл процесс перехода от дымного пороха к бездымному. У такого перехода был вполне очевидный плюс — отсутствие облака дыма, вырывающегося из ствола после выстрела. С одной стороны, самим стрелкам не приходилось чувствовать себя ёжиками в тумане и делать перерывы для восстановления видимости, а с другой — резкое уменьшение демаскирующего фактора выстрела. Но всё это меркло на фоне плюса неочевидного — бездымные пороха давали гораздо большее давление газов при сгорании, позволяя поднять скорость пули, а значит, и увеличить её энергию. А там уже и дальность полёта пули больше, и настильность лучше, и калибр можно уменьшить, и патрончики сделать поменьше, чтобы носить их побольше, а заодно и стволы винтовкам укоротить. В общем, плюсов множество, и это далеко не полный список. Проблемой было только укротить тот самый бездымный порох, с чем химикам пришлось конкретно так повозиться.

Его величество Порох - 1
Читать полностью »

Автор: Александр Иванов

Пример для подражания у японских школьников, или Первые в мире кооперативы - 1

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

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

Под катом лайфхаки для гиков в государственном масштабе.

ЦРУ против советских РЛС: как найти иголку в стоге сена с помощью Луны - 1
РЛС советского комплекса ПВО С-75 — «рабочая лошадка» на момент описываемых событий
Читать полностью »


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