Классификация языков программирования: Критерии выбора среды и языка разработки программ
Содержание:
Введение
Язы́к программи́рования — формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под её управлением.
Цель курсовой работы: Классификация языков программирования. Критерии выбора среды и языка разработки программ.
Задачи работы:
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++
Данные языки программирования можно различать:
- по структуре программы
Структура программ на Delphi и C++ похожа, в особенности еще и потому, что использовала я продукты одной и той же компании Borland: программа разделяется на заголовочную часть, раздел описаний и тело программы, состоящее из функций. В C++ нет четкого разделения на заголовочную часть и раздел описаний, т.к. переменные можно объявлять, в отличие от Delphi, прямо в теле программы, что является, бесспорно, плюсом, хотя и небольшим. Кроме того, в С++ нет четкого разделения на функции и процедуры, как в Паскале, т.к. любая процедура представляется как функция, которая не возвращает никакого значения.
- по типам данных и их описанию
Как уже было сказано, в С++ переменные можно объявлять, в отличие от Delphi, прямо в теле программы, что упрощает процесс понимания исходного кода, а также добавляет удобства программисту. Типы данных в С++ и Delphi похожи, в большей степени зависят от версии компилятора. Фирма Borland старается как можно более унифицировать типы данных в компиляторе С++ и Delphi Оба языка являются объектно-ориентированными (опять же, это зависит от компилятора). Оба языка поддерживают большие объемы данных, например, массивы с большим количеством элементов.
- по описанию основных операторов
Если взять, например операторы ввода-вывода на экран, то мы уже тут увидим принципиальное различие между этими двумя языками. В Паскале ввод-вывод максимально упрощается, предлагая программисту основные операции (чтение-вывод строки, чисел и т.д.). В Си же операции ввода-вывода являются скорее универсальным, чем удобным инструментом, ориентированным скорее на профессионала, чем на новичка.
- по технологии создания программ
Учитывая то, что оба языка предоставляют сравнимые фундаментальные возможности (объектно-ориентированный подход, работа с большими объемами данных, возможность низкоуровневого программирования), то к ним применимы одинаковые технологии создания программ: структурное программирование, объектно-ориентированное программирование.
1.4 Сравнение отдельных элементов языков
1.4.1 Файлы и потоки в C++
Файлом называют способ хранения информации на физическом устройстве. Файл — это понятие, которое применимо ко всему — от файла на диске до терминала.
В C++ отсутствуют операторы для работы с файлами. Все необходимые действия выполняются с помощью функций, включенных в стандартную библиотеку. Они позволяют работать с различными устройствами, такими, как диски, принтер, коммуникационные каналы и т.д. Эти устройства сильно отличаются друг от друга. Однако файловая система преобразует их в единое абстрактное логическое устройство, называемое потоком.
Текстовый поток — это последовательность символов. При передаче символов из потока на экран, часть из них не выводится (например, символ возврата каретки, перевода строки).
Двоичный поток — это последовательность байтов, которые однозначно соответствуют тому, что находится на внешнем устройстве.
Организация работы с файлами средствами C
Объявление файла: FILE *идентификатор;
Открытие файла: fopen(имя физического файла, режим доступа)
Режим доступа — строка, указывающая режим открытия файла файла и тип файла
Типы файла: бинарный (b); текстовый (t)
r Файл открывается только для чтения
w Файл открывается только для записи. Если соответствующий физический файл существует, он будет перезаписан
a Файл открывается для записи в конец (для дозаписи) или создается, если не существует
r+ Файл открывается для чтения и записи.
w+ Файл открывается для записи и чтения. Если соответствующий физический файл существует, он будет перезаписан
a+ Файл открывается для записи в конец (для дозаписи) или создается, если не существует
Неформатированные файловый ввод-вывод:
Запись в файл: 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 реализовано несколько способов работы с файлами. Познакомимся со классическим способом, связанным с использованием файловых переменных. Файловая переменная вводится для указания на файл. Делается это с помощью ключевого слова File:
Описанная таким образом файловая переменная считается нетипизированной, и позволяет работать с файлами с неизвестной структурой. Данные считываются и записываются побайтно блоками, размер которых указывается при открытии файла, вплоть от 1 байт.
Но чаще используются файлы, состоящие из последовательности одинаковых записей. Для описания такого файла к предыдущему описанию добавляется указание типа записи:
В качестве типа могут использоваться базовае типы, или создаваться свои. Важно только, чтобы для типа был точно известен фиксированный размер в байтах, поэтому, например, тип 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 поможет объект 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 предоставляет широкие возможности по продаже компьютерных игр по всему миру.
Разрабатываемые нами игры ориентированы на широкий круг потребителей:
- людей ищущих новые переживания, ощущения и эмоции;
- любителей дарк-фэнтези;
- геймеров.
В настоящий момент на игровом рынке произошел взрыв популярности «олдскульных» RPG. С выходом таких относительно крупных проектов, как Pillars of Eternity в 2015 г., интерес игроков к классической школе ролевых игр начала 21-го века и конца 20-го сильно возрос.
Основными конкурентами, использующими аналогичный движок, являются:
- To The Moon / На Луну (2011) – средние продажи в месяц – 22 631 копий.
- A Bird Story / История птицы (2014) – средние продажи в месяц – 12 468 копий.
- Eternal Senia (2015) - средние продажи в месяц – 25 489 копий.
Косвенные конкуренты представляют собой игры в жанре RPG с классическими элементами RPG старой школы:
- Pillars of Eternity (2015) – средние продажи в месяц 43 835 копий.
- Tyranny (2016) – средние продажи в месяц 23 236 копий.
- Divinity Original Sin (2014) – средние продажи в месяц 39 638 копий.
- 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 руб.). Данная статья расходов является основной для проекта.
Отчисления:
- УСН – 6% от доходов (также банковские проценты по депозитам).
- Комиссия краудфандингового сервиса «Indiegogo» – 8%.
- Комиссия Steam – 30% от суммы продаж.
Анализ проектных рисков
Данный проект подвержен следующим рискам:
- Внешние:
- взлом игры и ее нелегальное распространение;
- формирование негативной реакции пользователей Steam и, как следствие, их низких оценок.
- Внутренние:
- упущение некоторых багов;
- более поздний релиз игры.
Взлом игры хакерами – это возможный вариант событий. Однако стоит отметить, что инди-игры такого масштаба редко подвергаются взлому и нелегальному распространению.
Предотвращение негативных рецензий на игру будет достигнуто с помощью устранения максимально возможного количества багов. Игры будут выпущены в бета-тест в г. Якутске, а также среди пользователей, достигших заданной отметки в «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.
- Понятие, признаки и правовое регулирование несостоятельности (Понятие банкротства)
- ПОНЯТИЕ И ОСНОВАНИЯ ГРАЖДАНСКО-ПРАВОВОЙ ОТВЕТСТВЕННОСТИ ПРЕДПРИНИМАТЕЛЯ
- Управление товарооборотом и товарными запасами на предприятии с целью повышения эффективности коммерческой деятельности предприятия
- Понятие и значение приватизации (Понятие приватизации)
- Общая совместная собственность супругов (Понятие и объекты общей совместной собственности супругов)
- Понятие, признаки и правовое регулирование несостоятельности "банкротства"
- Субъекты предпринимательского права (Понятие и виды субъектов предпринимательского права и предпринимательской деятельности)
- Юридические лица как субъекты предпринимательского права .
- История возникновения и развития коммерции и предпринимательства за рубежом и в России (Основы предпринимательской и коммерческой деятельности)
- Правовое регулирование рекламной деятельности: Понятие рекламной деятельности
- Ответственность юридического лица (Теоретические аспекты ответственности юридических лиц в Российской Федерации)
- Разработка конфигурации «Складской учет» в среде 1C: Предприятие