Скачать книги категории «Программирование»

Алгоритмы. Теория и практическое применение

Алгоритмы – это рецепты, которые делают возможным эффективное программирование. Их изучение позволяет усвоить общие подходы к решению задач и накапливать полезные методики для их решения.

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

– Численные алгоритмы: рандомизация, разложение на множители, простые числа и численное интегрирование.

– Методики работы с распространенными структурами данных: массивы, связные списки и сети.

– Более продвинутые структуры данных: кучи, деревья, сбалансированные деревья и B-деревья.

Алгоритмы. Разработка и применение

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

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

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

Алгоритмический анализ состоит из двух фундаментальных компонентов: выделения математически чистого ядра задачи и выявления методов проектирования подходящего алгоритма на основании структуры задачи. И чем лучше аналитик владеет полным арсеналом возможных методов проектирования, тем быстрее он начинает распознавать «чистые» формулировки, лежащие в основе запутанных задач реального мира.

Реактивные шаблоны проектирования

Реактивное программирование – совершенно новая и многообещающая парадигма, позволяющая эффективно решать задачи, связанные с созданием распределенных систем и программированием для JVM. Эта книга расскажет, как организовать поток задач, наладить обмен сообщениями между элементами программы, обеспечить параллельную и конкурентную обработку и создать надежные, отказоустойчивые и гибкие приложения. Перед вами – основополагающая работа по шаблонам проектирования (design patterns) этой парадигмы. Книга проиллюстрирована многочисленными примерами и ориентирована на опытных Java- и Scala-разработчиков.

Менеджер событий на языке C# в Unity3D: разработка, оценка удобства использования и производительности

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

Основной акцент сделан именно на удобство использования конечным программистом для разработки и передачи проекта другим разработчикам для дальнейшего развития проекта. Приводятся примеры архитектур событийно-ориентированных приложений, основанных на следующих методах: «события» платформы C#; менеджер событий, ведущий списки типов событий и их и издателей; статические списки событий с разграничением возможностей для издателей и подписчиков и интеграцией со средой разработки. Данные методы были протестированы авторами в популярной на сегодняшний день среде разработки Unity3D 4 версии, использующей старую и измененную Mono версии 2.0, совместимый с C#.et Framework 3.5. Также авторы оценили удобство использования различных методик, как стандартных, так и разработанных нами в ходе развития нашего проекта.

DirectX и Delphi. Искусство программирования

Рассмотрено использование популярной библиотеки DirectX при программировании графических эффектов в Delphi. Подробно описано применение основных методов и интерфейсов DirectX. Большое внимание уделено технологии использования вершинных и пиксельных шейдеров для создания реалистичных изображений. Показано, как эффективно программировать огонь, электрические разряды, зеркала и другие визуальные эффекты, используемые при разработке демонстрационных роликов (Demoscene).

Для программистов.

Применение и реализация онтологий при разработке приложений баз данных

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

Комплекс программ поддержки жизненного цикла трубопроводных систем нефтехимических предприятий

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

Имитационное моделирование системы обслуживания пассажиров вылетающих рейсов на примере аэропорта «Оренбург»

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

Head First. Изучаем Ruby

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

Как и все книги серии Head First, книга «Изучаем Ruby» использует активный подход к обучению, выходя за рамки сухих, абстрактных объяснений и справочников. Вас не только научат языку Ruby, но и помогут вашей программистской звезде ярко воссиять на небосклоне. Вы освоите основы языка и продвинутые возможности Ruby, такие как блоки, объекты, методы, классы и регулярные выражения. С улучшением ваших навыков задачи будут усложняться, и вы перейдете к таким темам, как обработка исключений, модули, подмешанные классы и метапрограммирование.

Программирование на C++ в примерах и задачах

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

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

Все примеры содержат подробные объяснения и готовы к использованию. Для закрепления материала, представленного в книге, вниманию читателя предлагаются задачи для самостоятельного решения.

Алгоритмы и программы на C++ Builder

В книге подробно рассмотрены синтаксис, семантика, техника процедурного и объектно-ориентированного программирования на C++ Builder. Язык C++ и базовые алгоритмы обработки данных всех типов изучаются параллельно с визуальным программированием. Книга будет также полезна тем, кто имеет определённый опыт в программировании, однако желает расширить и углубить свои знания. Она может служить надёжной платформой для изучения и других языков программирования, поскольку она основывается на парадигме разработки современных приложений, к которой специалисты продвигались более пяти десятилетий.

Издание предназначено для студентов, преподавателей, инженеров, научных сотрудников, лицеистов и старшеклассников, желающих самостоятельно изучить C++ Builder «с нуля».

Языки программирования. Концепции и принципы

Рассмотрены фундаментальные концепции и принципы, воплощенные в современных и перспективных языках программирования. Представлены разные стили программирования (операционный, ситуационный, функциональный, реляционный, параллельный, объектно-ориентированный). Базовые концепции и принципы рассмотрены с пяти различных позиций (технологической, авторской, математической, семиотической и реализаторской) и проиллюстрированы примерами из таких языков, как Паскаль, Симула-67, Смолток, Рефал, Ада, Модула-2, Оберон, Оккам-2, Турбо Паскаль, С++ и др.

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

Новые подходы применены при изложении известных фактов (пошаговая модификация нормальных алгоритмов Маркова сначала до Рефала, а затем до реляционных языков, сопоставление принципов «сундука» и «чемоданчика» при создании Ады, Модулы-2 и Оберона, развитие концепции наследуемости от модульности до объектной ориентации, систематическое сопоставление концепции параллелизма в Аде и Оккаме-2, и др.).

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

Технология CUDA в примерах. Введение в программирование графических процессоров

CUDA – вычислительная архитектура, разработанная компанией NVIDIA и предназначенная для разработки параллельных программ. В сочетании с развитой программной платформой архитектура CUDA позволяет программисту задействовать невероятную мощь графических процессоров для создания высокопроизводительных приложений, включая научные, инженерные и финансовые приложения.

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

Издание предназначено для программистов, а также будет полезно инженерам, научным работникам и студентам вузов.

14 занимательных эссе о языке Haskell и функциональном программировании

В книге представлено 14 статей автора, которые в разное время были опубликованы или подготовлены к публикации в научно-популярном журнале для школьников и учителей «Потенциал». Статьи расположены и связаны таким образом, чтобы они представляли собой логически последовательное повествование от начал к более сложным темам. Также в книге сделан упор на практические знания, предлагается решение многих прикладных задач при помощи языка функционального программирования Haskell.

Книга будет интересна всем, кто живо интересуется функциональным программированием, студентам технических ВУЗов, преподавателям информатики.

Python на практике. Создание качественных программ с использованием параллелизма, библиотек и паттернов

Если вы – опытный программист на Python, то после прочтения данной книги ваши программы станут более качественными, надежными, быстрыми, удобными для сопровождения и использования.

В центре внимания Марка Саммерфилда находятся четыре основных темы: повышение элегантности кода с помощью паттернов проектирования, повышения быстродействия с помощью распараллеливания и компиляции Python-программ (Cython), высокоуровневое сетевое программирование и графика. Он описывает паттерны, доказавшие свою полезность в Python, иллюстрирует их на примерах высококачественного кода и объясняет, почему некоторые из них не слишком существенны.

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

UML. Проектирование систем реального времени, распределенных и параллельных приложений

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

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

InterBase и Delphi. Клиент-серверные базы данных

Книга посвящена разработке клиент-серверных приложений баз данных (БД) на платформе системы управления базами данных InterBase (Firebird) и языка программирования Delphi. В ней представлено точное и полное описание инструментария разработчика, так необходимого для создания профессиональных проектов.

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

LLVM: инфраструктура для разработки компиляторов

LLVM – новейший фреймворк для разработки компиляторов. Благодаря простоте расширения и организации в виде множества библиотек, LLVM легко поддается освоению даже начинающими программистами, вопреки устоявшемуся мнению о сложности разработки компиляторов.

Сначала эта книга покажет, как настроить, собрать и установить библиотеки, инструменты и внешние проекты LLVM. Затем познакомит с архитектурой LLVM и особенностями работы всех компонентов компилятора: анализатора исходных текстов, генератора кода промежуточного представления, генератора выполняемого кода, механизма JIT-компиляции, возможностями кросс-компиляции и интерфейсом расширений. На множестве наглядных примеров и фрагментов исходного кода книга поможет вам войти в мир разработки компиляторов на основе LLVM.

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

OpenGL 4. Язык шейдеров. Книга рецептов

Язык шейдеров OpenGL (OpenGL Shading Language, GLSL) является фундаментальной основой программирования с использованием OpenGL. Его применение дает беспрецедентную гибкость и широту возможностей, позволяет использовать мощь графического процессора (GPU) для реализации улучшенных приемов отображения и даже для произвольных вычислений. Версия GLSL 4.x несет еще более широкие возможности, благодаря введению новых видов шейдеров: шейдеров тесселяции и вычислительных шейдеров.

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

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

Python и анализ данных

Книгу можно рассматривать как современное практическое введение в разработку научных приложений на Python, ориентированных на обработку данных. Описаны те части языка Python и библиотеки для него, которые необходимы для эффективного решения широкого круга аналитических задач: интерактивная оболочка IPython, библиотеки NumPy и pandas, библиотека для визуализации данных matplotlib и др.

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

Python. К вершинам мастерства

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

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

Unity 5.x. Программирование искусственного интеллекта в играх

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

Издание задумывалось как исчерпывающий справочник, помогающий расширить навыки программирования искусственного интеллекта в играх. Рассматриваются основные приемы работы с агентами, программирование перемещений и навигации в игровой среде, принятие решений и координации. Описание построено на практических примерах, в виде легко реализуемых «рецептов»

Введение в надежное и безопасное распределенное программирование

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

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

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

Введение в статистическое обучение с примерами на языке R

Книга представляет собой доступно изложенное введение в статистическое обучение – незаменимый набор инструментов, позволяющих извлечь полезную информацию из больших и сложных наборов данных, которые начали возникать в последние 20 лет в таких областях, как биология, экономика, маркетинг, физика и др. В этой книге описаны одни из наиболее важных методов моделирования и прогнозирования, а также примеры их практического применения. Рассмотренные темы включают линейную регрессию, классификацию, создание повторных выборок, регуляризацию, деревья решений, машины опорных векторов, кластеризацию и др. Описание этих методов сопровождается многочисленными иллюстрациями и практическими примерами. Поскольку цель этого учебника заключается в продвижении методов статистического обучения среди практикующих академических исследователей и промышленных аналитиков, каждая глава включает примеры практической реализации соответствующих методов с помощью R – чрезвычайно популярной среды статистических вычислений с открытым кодом.

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