Метка «c++» - 37

О шифровании с открытым ключом многие уже слышали и читали, и одним из самых популярных и известных является алгоритм RSA. Rivest, Shamir и Adleman в 1977 году опубликовали свою статью о данном алгоритме. Основывается он на факторизации простых довольно больших чисел. Пример реализации алгоритма описан Читать полностью »

Поддержка The Neverhood добавлена в ScummVM

Несколько дней назад, 15 мая, в ScummVM master была слита ветка кода с движком, который поддерживает классику квестового жанра, игру The Neverhood.

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

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

Профильная оптимизация это очень интересный способ оптимизации кода приложения в среде выполнения (в команде разработчиков Visual C этот метод называют POGO или PGO, от английского Profile Guided Optimization). Впервые профильная оптимизация была применена в конце 90-х исследовательскими группами в Visual C и Microsoft. Тогда она была рассчитана для архитектуры Itanium. Затем PGO была включена в состав Visual Studio C/C++ 2005. На сегодня это основной процесс оптимизации, значительно повышающий производительность приложений Microsoft и других разработчиков.
В этом посте будет рассказано, как создавать более быстрые и высокопроизводительные нативные приложения. Для начала, познакомимся ближе с PGO, а затем рассмотрим на примере (симуляция NBody), как с помощью нескольких простых шагов можно применить этот процесс оптимизации в ваших приложениях. Для работы используйте исходный код из примера. Для сборки проекта вам понадобится DirectX SDK.
Читать полностью »

Совсем недавно я опубликовал пост о моем небольшом проекте tengine. Для меня довольно неожиданным было то, что многие проявили интерес к его идеям и наработкам. А раз есть интерес – это повод продолжить публикации.

Предлагаемая вам статься является туториалом по созданию небольшой игры. Необходимость в нем очевидна: идеологически, создать что-либо в tengine без редактора уровней (MapEditor3, далее me3) фактически невозможно. Именно с помощью него ресурсы привязываются к объектам игры, генерируются файлы с константами-идентификаторами, создается сцена, звуковые схемы и т.д. И самое главное – me3 генерирует готовые бинарные файлы уровней, необходимые для работы логики tengine: файл с общими данными (o-файл), файлы с данными по каждому уровню (l[0..n]-файлы) и файлы с текстовыми тынными (t[0..n]-файлы)

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

В сети легко находится множество источников, где приводится современная статистика использования языков программирования в мире. Одним из самых известных индикаторов является TIOBE Programming Community Index. Однако все это в большинстве — общемировая статистика, а как обстоит дело в России? Отличается ли Россия от остального мира, и если да, то как?

Для того, чтобы оценить популярность того либо иного языка, необходима выборка, количественно показывающая использование одного языка сравнительно с другими. Для этого подходят, например:

  • продажи или наименования книг
  • предложения вакансий
  • проекты с открытым кодом в GitHub
  • группы и форумы

Основой для предлагаемой читателям оценки являются темы на сайтах вопросов и ответов по программированию универсальной направленности (независимо от языка или платформы) в мире и в России, а именно StackOverflow.com и HashCode.ru. Почему взяты именно эти сайты?

Stackoverflow.com — это оригинальный сайт, где на высоком профессиональном уровне спрашиваются и отвечаются вопросы, связанные с разработкой программного обеспечения. Сайт содержит более 2 миллионов вопросов, из них 81% отвечено (согласно критериям принятым на сайте).

HashCode.ru — это наиболее успешная попытка в России из известных автору (самый популярный сайт подобного рода) перенести оригинальную идею на местную почву: сайт содержит порядка 30 тысяч вопросов, из них 80% отвечено. На форуме общаются более 12 тысяч профессиональных программистов.

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

  1. Считается общее количество вопросов
  2. Считается количество вопросов по метке
  3. Считается удельный вес (доля) вопросов по ярлыку на сайте
  4. Языки ранжируются в соответствии с удельным весом на сайте

Полученная оценка будет отражать популярность языка программирования, в случае StackOverflow — в мире, в случае ХэшКода — в России. Эта оценка будет достаточно грубой, поскольку заранее неизвестно насколько статистически представительна взятая выборка (так же как трудно оценить результаты голосования в целом по стране, зная результаты выборов в отдельном поселке).
Читать полностью »

Приветствую всех, кому стало интересно узнать о моем небольшом проекте, которым занимаюсь в свободное от работы время, о своем долгоиграющем проекте под названием «tengine».

Какова же цель этого поста? Ответ простой — я ищу однодумцев. Я верю в то, что есть еще много людей, которым нравится славный и добрый олдскул. В этом и вся миссия — писать удовольствия ради что-то маленькое, но вполне функциональное, платформу для «приставочных» игрушек в стиле 8/16 бит.

Главная особенность, отличающая tengine от сотен подобных поделок — не совсем стандартная идеология:

  • архитектура проекта делает упор на минимизацию использования динамической памяти. Если память и выделяется, она выделяется исключительно на инициализации подсистем
  • использовать динамическую память нужно так, как будто не существует операционной системы, постоянно помнить о фрагментации. Удаление памяти происходит в строго обратном порядке создания (за этом следит простой механизм контроля удаляемых указателей)
  • использование сторонних библиотек сведено к минимуму и должно быть аргументировано, зачастую это потенциальный источник фрагментации памяти
  • игровая сцена представляет собою готовую для использования память, сгенерированная редактором уровней
  • работа с объектами сцены игры ведется исключительно через идентификаторы, динамически создать объект невозможно
  • использование fixed point вместо float
  • мультиплатформенность
  • официальный язык проекта — си

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

image

Доброго времени суток.

Так уж получилось, что довольно давно интересуюсь фотографией и астрономией. Звёздное небо снимать люблю. Так как света ночью мало, то для того, чтобы получить по-настоящему что-то красивое приходится делать довольно долгие экспозиции. Но тут всплывает другая проблема — из-за того что Земля вращается, звёзды на небе движутся. Соответственно при относительно долгих экспозициях звёзды перестают быть точками, и начинают прочерчивать дуги. Чтобы компенсировать это движение при фотографии/наблюдении deep-sky объектов существуют устройства — монтировки. К сожалению, на данный момент купить мониторвку нет возможности, поэтому я решил задаться вопросом – а можно ли реализовать подобный эффект программно и что из этого получится?

Под катом много фотографий. Все фотографии в посте мои,(почти все) кликабельны, и free-to-download.
Читать полностью »

Добрый день, %username%. Сегодня мы будем писать скриптовый язык программирования на C#, а точнее его интерпретатор.

Пролог

Я изучаю C# уже год, но никак не могу его нормально выучить. Подумав чуть-чуть я понял что нужно писать что-то более сложное, и в процессе этого получать опыт. Я решил написать интерпретатор Brainfuck. Написал его я минут за 5, но он так и остался без циклов. Затем я начал придумывать свой язык, писал кучу концептов синтаксиса и т.д.
Скорее под кат!
Читать полностью »

Посвящается тем 45% .NET разработчиков, что до сих пор сидят на фремворках 2.0-3.5.

Да, вы не ослышались. async и await во втором дотнете. Но всё по-порядку.

Зачем?

В какой-то момент мне надоело вручную возиться с написанием асинхронного кода. Async/awat выглядели слишком вкусными, чтобы не попробовать. Зная, что Microsoft при добавлении новых возможностей в язык и компилятор не привязывает их жёстко к фреймворку (так, extension-методы и LINQ отлично можно использовать во втором .NET, если где-нибудь объявить System.CompilerServices.ExtensionAttribute) и видя Async CTP, добавляющего возможность использования async/await в 2010-ую студию при использовании в качестве целевого фреймворка .NET 4.0, я подумал, а почему бы и нет?

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

Привет, коллеги.
Хочу в этом топике выложить инструкцию, как быстро прикрутить Thrift, к своим поделкам.
Thrift — технология для организации межпроцессного взаимодействия между компонентами системы. Была разработана где то в недрах Facebook. Посути это кросс-языковой фреймворк для создания RPC сервисов, на бинарном протоколе. С помощью этого решения можно «подружить» компоненты написанные на разных языках C#, C++, Delphi, Erlang, Go, Java, PHP, Python, Ruby, итд. Описание сигнатур сервисов и данных осуществляется с помощью специального IDL — языка. Технология, по своей сути, похожа на COM, но без всей этой обвязки с регистрацией компонент. Так же не будем забывать, что COM это технология только для Windows, в то время как Thrift — кросплатформенна.

Вобщем решил поэкспериментировать, попробовать вынести часть нагруженной-вычислительной логики из Java в С++, в надежде что нативный С++ код будет немного производительней, и за одно опробовать Thrift RPC, в надежде что это быстрее чем REST.
Как и положено, без бубнов и граблей не обошлось!
Читать полностью »


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