Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Классификация языков программирования. Критерии выбора среды и языка разработки программ

Содержание:

Введение

Язы́к программи́рования — формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под её управлением.

Цель курсовой работы: Классификация языков программирования. Критерии выбора среды и языка разработки программ.

Задачи работы:

1) организация диалоговой программы и закрепление в процессе ее создания всех основных элементов программирования на языке Паскаль и Си (Delphi, C++ Builder).

2) закрепление навыков представления информации в программах на языках высокого уровня;

3) демонстрация полученных в ходе изучение дисциплины знаний, умений и навыков;

4) приобретение профессиональных компетенций.

Объект исследования – языки программирования как особый математический феномен.

Предмет исследования – особенности выбора и применения среды программирования.

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

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

Глава 1. Основные языки программирования современности

1.1 Определение языка программирования С++

Бьерн Страуструп высвободил объектно-ориентированный потенциал С путем перенесения возможностей классов Simula 67 в С. Первоначально новый язык носил имя "С с классами" и только потом стал называться C++. Язык C++ достиг популярности, будучи разработанным в Bell Labs, позже он был перенесен в другие индустрии и корпорации. Сегодня это один из наиболее популярных языков программирования в мире. C++ наследует как хорошие, так и плохие стороны С.

Бьерн Страуструп: "Я придумал C++, записал его первоначальное определение и выполнил первую реализацию. Я выбрал и сформулировал критерии проектирования C++, разработал его основные возможности и отвечал за судьбу предложений по расширению языка в комитете по стандартизации C++, - пишет автор самого популярного языка программирования. - Язык C++ многим обязан языку C, и язык C остается подмножеством языка C++ (но в C++ устранены несколько серьезных брешей системы типов C). Я также сохранил средства C, которые являются достаточно низкоуровневыми, чтобы справляться с самыми критическими системными задачами. Язык C, в свою очередь многим обязан своему предшественнику, BCPL; кстати, стиль комментариев // был взят в C++ из BCPL. Другим основным источником вдохновения был язык Simula67. Концепция классов (с производными классами и виртуальными функциями) была позаимствована из него. Средства перегрузки операторов и возможность помещения объявлений в любом месте, где может быть записана инструкция, напоминает Algol68.

Название C++ придумал Рик Масситти. Название указывает на эволюционную природу перехода к нему от C. "++" - это операция приращения в C. Чуть более короткое имя C+ является синтаксической ошибкой; кроме того, оно уже было использовано как имя совсем другого языка. Знатоки семантики C находят, что C++ хуже, чем ++C. Названия D язык не получил, поскольку он является расширением C и в нем не делается попыток исцеляться от проблем путем выбрасывания различных особенностей... Изначально C++ был разработан, чтобы автору и его друзьям не приходилось программировать на ассемблере, C или других современных языках высокого уровня. Основным его предназначением было сделать написание хороших программ более простым и приятным для отдельного программиста. Плана разработки C++ на бумаге никогда не было; проект, документация и реализация двигались одновременно. Разумеется, внешний интерфейс C++ был написан на C++. Никогда не существовало "Проекта C++" и "Комитета по разработке C++". Поэтому C++ развивался и продолжает развиваться во всех направлениях, чтобы справляться со сложностями, с которыми сталкиваются пользователи, а также в процессе дискуссий автора с его друзьями и коллегами".

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

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

C++ в настоящее время считается господствующим языком, используемым для разработки коммерческих продуктов, 90% игр пишутся на С++ с прменением DirectX.

1.2 Определение языка программирования Delphi

Delphi (Дельфи) — Среда программирования, использующая язык Object Pascal, разработанный фирмой Borland и изначально реализованный в её пакете Borland Delphi, от которого и получил в 2003 году своё нынешнее название. По сути является наследником языка Pascal с объектно-ориентированными расширениями.Свою историю язык Object Pascal ведет с первых Turbo Pascal`ей разработанных Никлаусом Виртом.

Язык Pascal, полностью процедурный язык, был предложен Н. Виртом в конце 70-х годов как хорошо структурированный учебный язык. Расширения, привнесенные в язык компанией Borland, преследовали две основные цели:

1) упрощение обработки в языке структур, представляющих наиболее распространенные типы данных строки и файлы (например, в язык был внесен новый тип данных string);

2) реализация в языке основных возможностей объектно-ориентированных языков программирования.

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

Pascal был уникальным в своём роде - он имел самый быстрый компилятор в мире, да и в нем впервые была разработана технология создания платформенно независимых программ, которая нашла широкое применение в таком языке, как Java. Своё имя он получил в честь великого французкого физика Паскаля. Позднее, разработкой Pascal`ей занялась компания Borland, с помощью которой Pascal встал на серийное производство. надо заметить, что кроме Turbo Pascal компанией выпускался Borland Pascal, который выходил в свет несколько позднее, чем Turbo Pascal, но в отличие от него обладал большими способностями, как то различные режимы компиляции программы, более расширенный набор функций. Так, версия за версией было выпущенно семь Turbo и Borland Pascal`ей.

С появлением Windows у Pascal`я появилась новая разновидность - Turbo и Borland Pascal for Windows. Данная программа была не чуть не лучше обыкновенного блокнота, разве что только цифры отображала синим. Но время шло, требования к качеству оформления программ росли, а языки программиравания оставались всё теми же - Dos`овскими. И вот, наконец, компанией Microsoft был совершен переворот в области прикладного программирования - ими впервые была создана визуальная система разработки прикладных программ, которую они реализовали в Visual Basic. К новому стандарту стали приобщать все языки программирования, не избежал своей участи и Pascal. В тот момент, когда разработчики Pascal`я в компании Borland наконец добрались до него - находился он довольно в запущенном состоянии. Было пересмотрено и переработано множество функций, добавленно, а вернее сказать создано, многое. И в итоге внесения оказались столь колоссальными, что разработчики создали, можно сказать, новый язык программирования. Своё имя новая система (Delphi) получила в честь древнегреческого города Дельфы. Название было выбрано не спроста: город Дельфы связан с именем бога мудрости и покровителем искусств Аполона. Согласно легенде главное святилище Аполона находилось именно в этом городе. Его жрицы-сивиллы изрекали пророчества желающим узнать свою судьбу. Вот что отметил руководитель исследовательной группы по разработке системы Delphi Чак Язджевски: "Имя Delphi было предложено Денни Торпом во время одной мозговой атаки. Мы хотели, чтобы в имени системы отразились уникальные способности продукта к работе с базами данных, и Delphi как нельзя лучше перекликается с таким заслуженным именем в этой области, как Oracle, по крайней мере для тех, кому сочетание "Дельфийский Оракл" о чем-то говорит".

Так каждый год появлялась новая версия Delphi, но после пятой что-то случилось и новая версия не появилась в срок. Оказалось, что параллельно с разработкой новой версии Delphi, велась разработка нового, Delphi-подобного языка программирования для Linux. Новый продукт получил название Kylix. Delphi оказал огромное влияние на создание концепции языка C# для платформы .NET. Многие его элементы и концептуальные решения вошли в состав С#. Одной из причин называют переход Андерса Хейлсберга, одного из ведущих разработчиков Дельфи, из компании Borland Ltd. в Microsoft Corp. Версия 1 была предназначена для разработки под 16-ти разрядную платформу Win16; Версии со второй компилируют программы под 32-х разрядную платформу Win32; Вместе с 6-й версией Delphi вышла совместимая с ним по языку и библиотекам среда Kylix, предназначенная для компиляции программ под операционную систему Linux; Версия 8 способна генерировать байт-код исключительно для платформы .NET. Это первая среда, ориентированная на разработку мультиязычных приложений (лишь для платформы .NET); Последующие версии (обозначаемые годами выхода, а не порядковыми номерами, как это было ранее) могут создавать как приложения Win32, так и байт-код для платформы .NET; Delphi for .NET — среда разработки Delphi, а так же язык Delphi (Object Pascal), ориентированные на разработку приложений для .NET. Первая версия полноценной среды разработки Delphi для .NET — Delphi 8. Она позволяла писать приложения только для .NET.

В настоящее время, в Delphi 2006, можно писать приложения для .NET используя стандартную библиотеку классов .NET, VCL для .NET. Среда также позволяет писать NET-приложения на C# и Win32-приложения на C++. Delphi 2006 содержит функции для написания обычных приложений с использованием билиотек VCL и CLX. Delphi 2006 поддерживает технологию MDA с помощью ECO (Enterprise Core Objects) версии 3.0. В марте 2006 года компания Borland приняла решение о прекращении дальнейшего совершенствования интегрированных сред разработки JBuilder, Delphi и C++Builder по причине убыточности этого направления. Планируется продажа IDE-сектора компании. Группа сторонников свободного программного обеспечения организовала сбор средств для покупки у Borland прав на среду разработки и компилятор Однако в ноябре того же года было принято решение отказаться от продажи IDE бизнеса. Тем не менее, разработкой IDE продуктов теперь будет заниматься новая компания — CodeGear, которая будет финансово полностью подконтрольна Borland. Borland продолжил развитие IDE систем под именем Turbo: Turbo Delphi, Turbo Delphi for .NET, Turbo C#, Turbo C++. А в марте 2007 года CodeGear порадовала пользователей обновленной линейкой продуктов Delphi 2007 for Win32 и выходом совершенно нового продукта Delphi 2007 for PHP. В России Borland Delphi появляется в конце 1993 г. и сразу же завоевывает широкую популярность. Новые версии выходят практически каждый год. В них реализуются все новые мастера, компоненты и технологии программирования. Действительно, процесс разработки в Delphi предельно упрощен. В первую очередь это относится к созданию интерфейса, на который уходит 80% времени разработки программы. Вы просто помещаете нужные компоненты на поверхность Windows-окна (в Delphi оно называется формой) и настраиваете их свойства с помощью специального инструмента (Object Inspector). С его помощью можно связать события этих компонентов (нажатие на кнопку, выбор мышью элемента в списке и т.д.) с кодом его обработки - и вот простое приложение готово. Причем разработчик получает в свое распоряжение мощные средства отладки (вплоть до пошагового выполнения команд процессора), удобную контекстную справочную систему (в том числе и по Microsoft API), средства коллективной работы над проектом, всего просто не перечислить. Вы можете создавать компоненты ActiveX без использования Microsoft IDL, расширять возможности web-сервера (скрипты на стороне сервера), практически ничего не зная об HTML, XML или ASP. Можно создавать распределенные приложения на базе СОМ и CORBA, Интернет- и intranet-приложения, используя для доступа к данным Borland DataBase Engine, ODBC-драйверы или Microsoft ADO. Появившаяся, начиная с Delphi 3, поддержка многозвенной технологии (multi-tiered) доступа к данным позволяет создавать масштабируемые приложения (относительно слабо зависящие от сервера БД) за счет перенесения методов обработки информации (бизнес-правил) на среднее звено.

Как уже говорилось ранее, в Delphi используется язык Object Pascal, который постоянно расширяется и дополняется Borland. Язык в полной мере поддерживает все требования, предъявляемые к объектно-ориентированному языку программирования. Как и положено строго типизированному языку, классы поддерживают только простое наследование, но зато интерфейсы могут иметь сразу несколько предков. К числу особенностей языка следует отнести поддержку обработки исключительных ситуаций (exceptions), а также перегрузку методов и подпрограмм (overload) в стиле C++.

К числу удачных, на взгляд автора, относится также поддержка длинных строк в формате WideChar и AnsiChar. Последний тип (AnsiString) позволяет использовать все прелести динамического размещения информации в памяти без всяких забот о ее выделении и сборке мусора Delphi делает это автоматически. Для поклонников свободного стиля программирования имеются открытые массивы, варианты и вариантные массивы, позволяющие размещать в памяти все, что душе угодно и смешивать типы данных. Вы можете создавать свои собственные компоненты, импортировать ОСХ-компоненты, создавать шаблоны проектов и мастеров, создающих заготовки проектов. Мало того, Delphi предоставляет разработчику интерфейс для связи ваших приложений (или внешних программ) с интегрированной оболочкой Delphi (IDE). Таким образом, вы можете использовать Delphi для создания как самых простых приложений, на разработку которых требуется 2-3 часа, так и серьезных корпоративных проектов, предназначенных для работы десятков и сотен пользователей. Причем для этого можно использовать самые последние веяния в мире компьютерных технологий с минимальными затратами времени и сил.

Одна из самых последних новостей от Inprise обещает, что в ближайшем будущем вы сможете переносить приложения, разработанные в Delphi, на платформу Linux.

1.3 Сравнительная характеристика языков Delphi и C++

Данные языки программирования можно различать:

  1. по структуре программы

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

  1. по типам данных и их описанию

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

  1. по описанию основных операторов

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

  1. по технологии создания программ

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

1.4 Сравнение отдельных элементов языков

1.4.1 Файлы и потоки в C++

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

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

Текстовый поток — это последовательность символов. При передаче символов из потока на экран, часть из них не выводится (например, символ возврата каретки, перевода строки).

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

Организация работы с файлами средствами C

Объявление файла: FILE *идентификатор;

Пример: FILE *f;

Открытие файла: fopen(имя физического файла, режим доступа)

Режим доступа — строка, указывающая режим открытия файла файла и тип файла

Типы файла: бинарный (b); текстовый (t)

Значения и описания:

r Файл открывается только для чтения

w Файл открывается только для записи. Если соответствующий физический файл существует, он будет перезаписан

a Файл открывается для записи в конец (для дозаписи) или создается, если не существует

r+ Файл открывается для чтения и записи.

w+ Файл открывается для записи и чтения. Если соответствующий физический файл существует, он будет перезаписан

a+ Файл открывается для записи в конец (для дозаписи) или создается, если не существует

Например

f = fopen(s, "wb");

k = fopen("h:\ex.dat", "rb");

Неформатированные файловый ввод-вывод:

Запись в файл: fwrite(адрес записываемой величины, размер одного экземпляра, количество записываемых величин, имя логического файла);

Например: fwrite(&dat, sizeof(int), 1, f);

Чтение из файла : fread(адрес величины, размер одного экземпляра, количество считываемых величин, имя логического файла);

Например: fread(&dat, sizeof(int), 1, f);

Закрытие файла: fclose(имя логического файла);

Форматированный файловый ввод-вывод

1) Функции fgetc() и fputc() позволяют соттветственно осуществить ввод-вывод символа.

2) Функции fgets() и fputs() позволяют соттветственно осуществить ввод-вывод строки.

3) Функции fscanf() и fprintf() позволяют соттветственно осуществить форматированный ввод-вывод и аналогичный соответствующим функиям форматированного ввода-вывода, только делают это применительно к файлу.

Файловый ввод-вывод с использованием потоков

Библиотека потокового ввода-вывода: fstream

Связь файла с потоком вывода: ofstream имя логического файла;

Связь файла с потоком ввода: ifstream имя логического файла;

Открытие файла: имя логического файла.open(имя физического файла);

Закрытие файла: имя логического файла.close();

1.4.2 Файлы и потоки в Delphi

Работа с файлами в Delphi.

Технология работы с файлами в системе Delphi требует определённого порядка действий:

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

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

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

В Delphi реализовано несколько способов работы с файлами. Познакомимся со классическим способом, связанным с использованием файловых переменных. Файловая переменная вводится для указания на файл. Делается это с помощью ключевого слова File:

var F: File;

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

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

var F: File of тип_записи;

В качестве типа могут использоваться базовае типы, или создаваться свои. Важно только, чтобы для типа был точно известен фиксированный размер в байтах, поэтому, например, тип String в чистом виде применяться не может, а только в виде String[N].

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

Для текстовых файлов тип файловой переменной в этом случае TextFile, а тип обычной - String.

Для открытия файла нужно указать, где он расположен. Для этого файловая переменная должна быть ассоциирована с нужным файлом, который определяется его адресом. Адрес файла может быть абсолютным, с указанием диска и каталогов ('C:\Мои документы\Мои рисунки\FileName.ini'), или относительным, тогда он создаётся в папке с .exe файлом программы. Для задания относительного адреса достаточно указать имя файла с нужным расширением. Делается это оператором AssignFile :

AssignFile(SaveF, 'C:\Мои документы\Мои рисунки\FileName.ini');

AssignFile(SaveF, 'FileName.ini');

Теперь файл должен быть открыт.

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

Открытие файла оператором Reset откроет существующий файл к считыванию или записи данных, и его указатель будет установлен на начало файла :

Rewrite(SaveF);

Reset(SaveF);

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

Rewrite(SaveF, 1);

Reset(SaveF, 1);

Чтение файла производится оператором Read :

Read(SaveF, SaveV);

Запись в файл производится оператором Write :

Write(SaveF, SaveV);

При этом чтение и запись производится с текущей позиции указателя, затем указатель устанавливается на следующую запись. Можно проверить, существует ли нужный файл, оператором FileExists :

if FileExists('FileName.ini')

then Read(SaveF, SaveV);

Принудительно установить указатель на нужную запись можно оператором Seek(SaveF, N), где N - номер нужной записи, который, как и почти всё в программировании, отсчитывается от нуля:

Seek(SaveF, 49); - установка указателя на 50-ю запись.

При последовательном чтении из файла рано или поздно будет достигнут конец файла, и при дальнейшем чтении произойдёт ошибка. Проверить, не достигнут ли конец файла, можно оператором EOF (аббревиатура End Of File), который равен true, если прочитана последняя запись и указатель находится в конце файла:

while (not EOF(SaveF)) do

Read(SaveF, SaveV);

Для текстовых файлов вместо Read и Write используются операторы Readln и Writeln, умеющие определять конец строки. В коментариях приведена процедура чтения текстового файла.

Оператор Truncate(SaveF) позволяет отсечь (стереть или, если хотите, удалить) все записи файла, начиная от текущей позиции указателя, и до конца файла.

В конце работы с файлом его необходимо закрыть. Это делается оператором CloseFile(SaveF);

Потоки в Delphi

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

Создать дополнительный поток в Delphi поможет объект TThread.

1. Мастер создания дополнительного потока в Delphi создаёт отдельный модуль, в рамках которого выполняется поток.

File -> New -> Other...

В результате будет создан модуль, содержащий заготовку кода, реализующего дополнительный поток Delphi.

Глава 2. Практические аспекты выбора среды программирования

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

Резюме проекта

Наименование предприятия

ООО «Nord-development»

Направление деятельности организации

Создание компьютерных игр

Стоимость инвестиционного проекта, тыс. руб.

3 900

Срок окупаемости

Местонахождение проекта

Российская Федерация, Республика Саха (Якутия), г. Якутск

Количество дополнительно создаваемых новых рабочих мест в рамках проекта

4

Наименование игр, которые планируется создать

«The Last Sword», «Mischief»

Модель распространения

Pay-to-play

Описание проекта

Суть проекта заключается в создании компании-производителя инди-игр для персональных компьютеров с операционной системой Windows.

Бизнес-план охватывает первые пять лет деятельности компании, за время которых планируется выпустить две игры с использованием «RPG Maker MV Engine» издательства «Kadokawa Shoten Publishing Co., Ltd». Игры будут выпущены на сервисе цифровой дистрибуции Steam на двух языках: русском и английском.

Модель распространения игр – Pay to Play (P2P).

Основным источником финансирования будут являться собственные вложения главы проекта, но для того, чтобы проект был реализован в полной мере, ему понадобятся дополнительные источники финансирования в виде средств краудфандингового сервиса «Indiegogo» и инвестиций частного венчурного (высокорискового) инвестиционного фонда «Nord Venture».

Общее описание компании

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

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

Проект включает в себя четырех участников:

1. Глава проекта, главный сценарист и режиссер;

2. Гейм-дизайнер, программист;

3. Художник;

4. Звукооператор.

В обязанности главы проекта входит:

  • контроль над созданием игры;
  • написание сценария и большинства внутриигровых диалогов;
  • тестирование геймплея и поиск багов;
  • помощь гейм-дизайнеру в установке триггеров.

Должность гейм-дизайнера включает в себя программирование отдельных аспектов игрового процесса. В его обязанности сходит:

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

Художник должен:

  • нарисовать аватары игровых персонажей;
  • нарисовать их игровые модели;
  • нарисовать различные элементы интерфейса игры.

В обязанности звукооператора входит:

  • работа со звуковым сопровождением игры;
  • поиск подходящих звуковых эффектов с бесплатного сервиса звуковых ресурсов - http://www.freesound.org;
  • создание основных мелодий игры в стиле 8-bit.

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

Описание продукта

За первые пять лет деятельности компании планируется выпустить две игры в стиле классических jRPG.

«The Last Sword» - будет представлять собой комбинацию экшена, квеста, RPG и игр-головоломок, и будет выполнена в стиле дарк-фэнтези.

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

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

Вторая игра студии – «Mischief». Она геймплейно будет схожа с предыдущей игрой, однако ее основным отличием будет являться большая свобода выбора и ужесточение последствий принимаемых игроком решений.

Обе игры будут разработаны с использованием «RPG Maker MV Engine» издательства «Kadokawa Shoten Publishing Co., Ltd». Они будут выпущена на сервисе цифровой дистрибуции Steam на двух языках: русском и английском. Это позволит значительно расширить аудиторию продукта.

Движок «RPG Maker MV Engine» обладает широкой изначальной базой шаблонов, однако в данных играх будут использованы рисунки и модели художника проекта.

Звуки будут взяты с бесплатного сервиса звуковых ресурсов - http://www.freesound.org. Озвучки внутриигровых диалогов не будет.

Анализ рынка

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

Среднее количество пользователей онлайн в Steam составляет порядка 12 млн. Максимальное количество достигало отметки 17 492 608 одновременных пользователей. Количество активных учетных записей Steam превышает 125 млн.

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

Таким образом, сервис Steam предоставляет широкие возможности по продаже компьютерных игр по всему миру.

Разрабатываемые нами игры ориентированы на широкий круг потребителей:

  1. людей ищущих новые переживания, ощущения и эмоции;
  2. любителей дарк-фэнтези;
  3. геймеров.

В настоящий момент на игровом рынке произошел взрыв популярности «олдскульных» RPG. С выходом таких относительно крупных проектов, как Pillars of Eternity в 2015 г., интерес игроков к классической школе ролевых игр начала 21-го века и конца 20-го сильно возрос.

Основными конкурентами, использующими аналогичный движок, являются:

  1. To The Moon / На Луну (2011) – средние продажи в месяц – 22 631 копий.
  2. A Bird Story / История птицы (2014) – средние продажи в месяц – 12 468 копий.
  3. Eternal Senia (2015) - средние продажи в месяц – 25 489 копий.

Косвенные конкуренты представляют собой игры в жанре RPG с классическими элементами RPG старой школы:

  1. Pillars of Eternity (2015) – средние продажи в месяц 43 835 копий.
  2. Tyranny (2016) – средние продажи в месяц 23 236 копий.
  3. Divinity Original Sin (2014) – средние продажи в месяц 39 638 копий.
  4. Torment: Tides of Numenera (2017) – средние продажи в месяц 15 115 копий.

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

Организационный план

Организационно-правовая форма – Общество с ограниченной ответственностью.

Организационная структура представлена на рисунке 1.

Рисунок 1 – Организационная структура

Численность работников составляет 4 человека.

Режим работы – полный рабочий день.

Для производственных нужд планируется снять в аренду однокомнатную квартиру в г. Якутске, оборудовать ее и заключить договор по подключению услуг интернет-соединения с компанией «ТТК».

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

Календарный план представлен в таблице 1.

Таблица 1 – Календарный план проекта

Этап проекта

Начало

Длительность, дн.

Конец

Начальный

01.01.2018

31

31.01.2018

Разработка общего концепта игры "The Last Sword"

10.01.2018

31

09.02.2018

Разработка сценария игры "The Last Sword"

12.01.2018

210

09.08.2018

Разработка игры "The Last Sword"

10.02.2018

506

30.06.2019

Бета-тестирование игры "The Last Sword"

15.05.2019

20

03.06.2019

Исправление ошибок игры "The Last Sword"

15.05.2019

112

03.09.2019

Разработка общего концепта игры "Mischief"

01.07.2019

31

31.07.2019

Разработка сценария игры "Mischief"

10.07.2019

365

08.07.2020

Разработка игры "Mischief"

01.08.2019

519

31.12.2020

Бета-тестирование игры "Mischief"

01.11.2020

20

20.11.2020

Исправление ошибок игры "Mischief"

01.11.2020

151

31.03.2021

Разработка новой игры

01.01.2021

365

31.12.2021

Представим данную информацию в виде диаграммы Ганта.

Рисунок 1 – Диаграмма Ганта

Разработка игры «The Last Sword» займет 1,5 года. Из них 31 день будет потрачен на разработку общего концепта игры, 210 дней на написание сценария. Игра выйдет в неоплачиваемый бета-тест в г. Якутске 10 февраля 2018 г. и будет длиться 20 дней.

Разработка игры «Mischief» также займет 1,5 года и начнется 1 июля 2019 г., после релиза «The Last Sword». В бета-тест игра выйдет 1 ноября 2020 г.

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

План продаж и стратегия маркетинга

Предполагаемые продажи представлены в таблице 2.

Таблица 2 – План продаж, в ед.

Игра

Продажи

2019 г.

2020 г.

2021 г.

Инди-игра "Last Sword"

в России

1350

2010

870

в мире

3400

5970

2945

Инди-игра "Mischief"

в России

-

-

1560

в мире

-

-

4305

Возможные варианты продаж рассчитаны на таблице 3.

Таблица 3 – Сценарии плана продаж, в ед.

Игра

Продажи

Хороший сценарий

Предполагаемый сценарий

Плохой сценарий

2019 г.

2020 г.

2021 г.

2019 г.

2020 г.

2021 г.

2019 г.

2020 г.

2021 г.

Инди-игра "Last Sword"

в России

2025

3015

1305

1350

2010

870

675

1005

435

в мире

5100

8955

4417,5

3400

5970

2945

1700

2985

1472,5

Инди-игра "Mischief"

в России

-

-

2340

-

-

1560

-

-

780

в мире

-

-

6457,5

-

-

4305

-

-

2152,5

Рисунок 2 – Сценарии продаж

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

Финансовый план

Для осуществления проекта необходимо 3,9 млн. руб.

Финансирование будет осуществляться за счет собственных инвестиций главы проекта, средств краудфандинга «Indiegogo». 25%ная доля уставного капитала будет продана частному венчурному (высокорисковому) инвестиционному фонду «Nord Venture».

За первый год деятельности планируется изыскать 2 млн. руб., посредством выхода на краудфандинговую арену «Indiegogo». Начало сбора средств планируется на второе полугодие 2018 г. Оно будет длиться в течение 3 месяцев. В качестве модели сбора средств будет использована «Pay-to-reward», то есть каждому донору будет представлена система наград за участие в пожертвованиях.

Она будет выглядеть следующим образом:

1) более 15 долларов – бесплатная копия игры, после ее релиза, и обои для рабочего стола, выполненные в стиле «The Last Sword»;

2) более 30 долларов – доступ к саундтрекам из игры;

3) более 60 долларов – набор стикеров;

4) более 120 долларов – доступ к бета-тесту;

5) более 400 долларов – создание аватара донора в игре в качестве NPC.

Награды за общий пул:

1) более 10 000 долларов – возможность кастомизации главного героя;

2) более 20 000 долларов – создание уникальных текстур для игры;

3) более 30 000 долларов – создание крафтового режима;

4) более 40 000 долларов – возможность заточки снаряжения, больший выбор пресетов для кастомизации героя, а также введение системы кармы.

Инвестиционный план представлен в приложении 1.

Стоимость «RPG Maker MV» на сервисе цифровой дистрибуции Steam – 1349 руб. на одну платформу.

Публикация через Steam Direct стоит 100 долларов. После продаж игры на сумму, превышающую 1000 долларов, этот первоначальный взнос возвращается.

Зарплата одного сотрудника в месяц составляет 30 000 руб. Социальные взносы 12 857,14 руб. на одного сотрудника в месяц (всего 42 857,14 руб.). Данная статья расходов является основной для проекта.

Отчисления:

  1. УСН – 6% от доходов (также банковские проценты по депозитам).
  2. Комиссия краудфандингового сервиса «Indiegogo» – 8%.
  3. Комиссия Steam – 30% от суммы продаж.

Анализ проектных рисков

Данный проект подвержен следующим рискам:

  1. Внешние:
  • взлом игры и ее нелегальное распространение;
  • формирование негативной реакции пользователей Steam и, как следствие, их низких оценок.
  1. Внутренние:
  • упущение некоторых багов;
  • более поздний релиз игры.

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

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

Заключение

Язык С (читается "Си") создан в начале 70-х годов, когда Кен Томпсон и Дэннис Ритчи из Bell Labs разрабатывали операционную систему UNDC Сначала они создали часть компилятора С, затем использовали се для компиляции остальной части компилятора С и, наконец, применили полученный в результате компилятор для компиляции UNIX. Операционная система UNIX первоначально распространялась в исходных кодах на С среди университетов и лабораторий, а получатель мог откомпилировать исходный код на С в машинный код с помощью подходящего компилятора С.

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

По сравнению с более ранним языком — BCPL, С был улучшен путем добавления типов данных определенной длины. Например, тип данных int мог применяться для создания переменной с определенным числом битов (обычно 16), в то время как тип данных long мог использоваться для создания целой переменной с большим числом битов (обычно 32). В отличие от других языков высокого уровня, С мог работать с адресами памяти напрямую с помощью указателей и ссылок. Поскольку С сохранил способность прямого доступа к аппаратному обеспечению, его часто относят к языкам среднего уровня или в шутку называют "мобильным языком ассемблера".

Что касается грамматики и синтаксиса, то С является структурным языком программирования. В то время как многие современные программисты мыслят в категориях классов и объектов, программисты на С думают в категориях процедур и функций. В С можно определить собственные абстрактные типы данных, используя ключевое слово struct. Аналогично можно описывать собственные целые типы (перечисления) и давать другие названия существующим типам данных при помощи ключевого слова typedef. В этом смысле С является структурным языком с зародышами объектно-ориентированного программирования. Широкое распространение языка C на различных типах компьютеров (иногда называемых аппаратными платформами) привело, к сожалению, ко многим вариациям языка. Они были похожи, но несовместимы друг с другом. Это было серьезной проблемой для разработчиков программ, нуждавшихся в написании совместимых программ, которые можно было бы выполнять на нескольких платформах. Стало ясно, что необходима стандартная версия C. В 1983г. ANSI (Американский Национальный Комитет Стандартов) сформировал технический комитет X3J11 для создания стандарта языка C (чтобы "обеспечить недвусмысленное и машинно-независимое определение языка"). В 1989 стандарт был утвержден. ANSI скооперировался с ISO (Международной Организацией Стандартов), чтобы стандартизовать C в международном масштабе; совместный стандарт был опубликован в 1990 году и назван ANSI/ISO 9899:1990. Этот стандарт усовершенствуется до сих пор и поддерживается большинством фирм разработчиков компиляторов.

Список литературы

1. Голицына О.Л. Языки программирования: учеб. пособие. Издательство: "ИНФРА-М, Форум", 2010.

2. Программирование на С++/ В.П. Аверкин, А.И. Бобровский, В.В. Веснич и др.; Под ред. А.Д. Хомоненко . – СПб.: Корона принт, 1999. – 252 с.

3. C++Builder 5: Рук. разработчика: [В 2 т.: Пер. с англ.] / Джарод Холингвэрт, Дэн Баттерфилд, Боб Сворт и др. – М.: Вильямс, 2001. – 824 с.

4. Архангельский А.Я. Программирование в С++Builder 6 / А.Я. Архангельский . – М.: Бином, 2012. – 1151 с.

5. Елманова Н.З. Введение в Borland C++ Builder / Н.З. Елманова, С.П. Кошель – М.: Диалог-МИФИ, 2007. – 272 с.

6. Паппас Крис Программирование на С и С++: [Учеб. пособие: Пер. с англ.] / Крис Паппас, Уильям Мюррей . – Киев: Ирина, 2009. – 318 с.

7. Павловская Т.А. C/C++: Программирование на языке высокого уровня: Учебник для вузов, Питер, 2012.