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

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

Содержание:

ВВЕДЕНИЕ

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

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

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

Цель работы. Осуществить классификацию языков программирования. Также в подробной форме определить критерии выбора среды и языка разработки программ.

Для достижения поставленной цели необходимо решить следующие задачи:

  1. Проанализировать предметную область.
  2. Выделить основные виды систем программирования.
  3. Классификация языков программирования.
  4. Сравнительный анализ языков программирования.
  5. Сформировать критерии выбора среды и языка разработки программ.

1. Анализ предметной области

1.1 Основы программирования

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

Программное обеспечение (ПО) (software) - общий термин для обозначения «неосязаемых» (в отличие от физических) составных частей вычислительной системы. В большинстве случаев он относится к программам, выполняемым вычислительной системой, чтобы подчеркнуть их отличие от аппаратных средств той же системы. Этот термин охватывает как программы в символической записи, так и исполняемые формы этих программ. Все существующее ПО можно разделить на следующие классы:

• системное: операционные системы; драйверы устройств; различные утилиты;

• для разработчиков: среды программирования; трансляторы и интерпретаторы; CASE-средства; библиотеки программ;

• для конечных пользователей: текстовые процессоры; электронные таблицы;

графические редакторы; решатели математических задач; обучающие и контролирующие системы; компьютерные игры; прикладные программы.

Прикладная программа (application program) - любая программа, способствующая выполнению задачи, возложенной на ЭВМ в пределах данной организации, и вносящая прямой вклад в реализацию этой задачи.[1]

Например, там, где на ЭВМ возложена задача контроля финансовой деятельности какой-либо фирмы, прикладной программой будет программа подготовки платежных ведомостей. В противоположность этому операционная система не является прикладной программой, так как не вносит прямого вклада в удовлетворение конечных потребностей пользователя. Программная система представляет собой набор решений множества различных, но связанных между собой задач (ОС, СУБД). Более узкоспециализированные программы не называют системами (редактор текстов, компилятор и т. п.)

Известно, что первым программистом была женщина − леди Ада Лавлейс, дочь лорда Байрона. Она разрабатывала программы для одного из первых механических компьютеров, созданного в начале XIX века английским ученым Чарльзом Беббиджом[2]. Однако настоящее программирование в современном понимании началось с момента создания первой электронной вычислительной машины. Но теме не менее, имя этой замечательной женщины - Ada - присвоено одному из самых мощных современных ЯП, который является базовым для министерства обороны США.

Первые ЭВМ, созданные человеком, имели небольшой набор команд и встроенных типов данных, но позволяли выполнять программы на машинном языке. Машинный язык (МЯ)[3] - единственный язык, понятный ЭВМ. Он реализуется аппаратно: каждую команду выполняет некоторое электронное устройство. Программа на машинном языке представляет собой последовательность команд и данных, заданных в цифровом виде. Например, команда вида 1А12 в 16-ричном виде или 0001101000010010 в двоичном виде означает операцию сложения (1А) содержимого регистров 1 и 2[4].

Стремление программистов оперировать [5]не цифрами, а символами, привело к созданию мнемонического языка программирования, который называют ассемблером, мнемокодом, автокодом. Этот язык имеет определенный синтаксис записи программ, в котором, в частности, цифровой код операции заменен мнемоническим кодом. Например, команда сложения записывается в виде AR 1,2 и означает сложение (Addition) типа регистр-регистр (Register) для регистров 1 и 2. Теперь программа имеет более удобочитаемую форму, но ее не понимает ЭВМ. [6] Поэтому понадобилось создать специальную программу транслятор, который преобразует программу с языка ассемблера на машинном языке. Эта проблема потребовала, в свою очередь, глубоких научных исследований и разработки различных теорий, например теорию формальных языков, которые легли в основу создания трансляторов. Практически любой класс ЭВМ имеет свой язык ассемблера. На сегодняшний день язык ассемблера используется для создания системных программ, использующих специфические аппаратные возможности данного класса ЭВМ.

Следующий этап характеризуется созданием языков высокого уровня (ЯВУ)[7].Эти языки являются универсальными (на них можно создавать любые прикладные программы) и алгоритмически полными, имеют более широкий спектр типов данных и операций, поддерживают технологии программирования. На этих языках создается неисчислимое множество различных прикладных программ.

Принципиальными отличиями ЯВУ [8]от языков низкого уровня являются:

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

С усложнением языков программирования усложняются и трансляторы для них. Теперь в набор инструментов программиста, кроме транслятора, входит текстовый редактор для ввода текста программ[9], отладчик для устранения ошибок, библиотекарь для создания библиотек программных модулей и множество других служебных программ. Все вместе это называется системой программирования. Наиболее яркими представителями языков программирования высокого уровня являются FORTRAN, PL/1, Pascal, C, Basic, Ada.

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

Одновременно с развитием универсальных языков высокого уровня стали развиваться проблемно-ориентированные языки программирования, которые решали экономические задачи (COBOL), задачи реального времени (Modula-2, Ada), [10]символьной обработки ( Snobol), моделирования (GPSS, Simula, SmallTalk), численно-аналитические задачи (Analitic) и другие. Эти специализированные языки позволяли более адекватно описывать объекты и явления реального мира, приближая язык программирования к языку специалиста в проблемной области. [11]

Другим направлением развития языков программирования является создание языков сверхвысокого уровня. На языке высокого уровня программист задает процедуру (алгоритм) получения результата по известным исходным данным, поэтому они называются процедурными языками программирования. На языках программирования сверхвысокого уровня программист задает отношения между объектами в программе, например систему линейных уравнений, и определяет, что нужно найти, но не задает, как получить результат. Такие языки еще называют непроцедурными, т.к. сама процедура поиска решения встроена в язык (в его интерпретатор). Такие языки используются, например, для решения задач искусственного интеллекта (Lisp, Prolog, Matlab) [12]и позволяют моделировать мыслительную деятельность человека в процессе поиска решений.

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

1.2 Структуры управления и подпрограммы

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

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

• узлы принятия решения - изображаются в виде ромбов с одной входящей дутой и двумя выходящими (истина и ложь). Эти узлы представляют предикаты, и управление из узла принятия решения передается дальше либо по ветви истина, либо по ветви ложь;

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

Любая блок-схема состоит только из этих трех компонентов.

Правильная программа — блок-схема, являющаяся некоторой формальной моделью структуры управления, которая имеет: одну входящую дугу; одну выходящую дугу; путь от входящей дуги к любому узлу и из любого узла - к выходящей дуге.[13] Первичная программа является правильной программой, которую нельзя разделить на более мелкие правильные программы. Исключением из этого правила является последовательность функциональных узлов, которая считается одной первичной программой.

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

Ни один из этих вариантов первичных программ не представляет эффективной структуры управления в программе. Многие из описанных выше наборов управляющих структур были включены в существующие языки программирования. Эти структуры представляют собой первичные программы с небольшим количеством узлов и просты для понимания.[14]

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

Операторы выбора используются для выбора одного из нескольких возможных путей, по которому должно выполняться вычисление. Обобщенный оператор выбора называется case- оператором (switch-оператор в языке С). Условный оператор является частным случаем case- или switch-оператора, в котором выражение имеет булев тип.

Так как булевы типы имеют только два допустимых значения, условный оператор делает выбор между двумя возможными путями. Конструкция для двух альтернатив на Паскале имеет следующий вид: if L then begin {Действие при L-True} end; else begin {Действие при L=False} end; здесь L-логическое выражение.

Вариант конструкции для нескольких альтернатив имеет вид: Switch

: = 0; L1 : = . . . L2 : = . . . L3 : = . . . if L1 then Swich : = 1; if L2 then Swich : = 2;

if L3 then Swich : = 3; case Swich of 1: begin {Действие при L1=True} end;

2 : begin {Действие при L2=True} end; 3:begin {Действие при L3=Тrие} end; else begin {Вывод сообщения об ошибочном кодировании модуля} end;

end; {End of Case}

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

Цикл while-do Цикл repeat-until {Подготовка}{Подготовка} While L do repeat begin {тело цикла} {тело цикла}until L; end; здесь L -логическое выражение, которое при значении True является условием продолжения выполнения while-do или условием окончания выполнения repeat-until. Подготовка и тело цикла являются цепочками функциональных узлов.[15] Тело цикла выполняется столько раз, сколько и весь цикл. При равноценности, из двух конструкций выбирают ту, запись которой короче. Операторы цикла наиболее трудны: в них легко сделать ошибку, особенно на границах цикла.

Очень часто количество итераций цикла известно заранее: это либо константа, известная при написании программы, либо значение, вычисляемое перед началом цикла. Цикл со счетчиком можно запрограммировать следующим образом: for := to do ; здесь for, to, do — зарезервированные слова; — переменная любого перечисляемого типа. Цикл выполняется для каждого из значений от и до . 2.4. Операторы перехода. Оператор безусловного перехода имеет следующий вид: goto, здесь goto — зарезервированное слово: — метка. Метка - это произвольный идентификатор, позволяющий именовать некоторый оператор программы и таким образом ссылаться на него.

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

1) в заголовке функции помимо описания формальных параметров обязательно указывается тип возвращаемого ею результата;

2) для возврата функцией значения в точку вызова среди ее операторов должен быть хотя бы один, в котором имени функции или переменной Result присваивается значение результата;

3) вызов процедуры выполняется отдельным оператором; 4)вызов функци образуют оператор ее вызова. Механизм замены формальных параметров на фактические позволяет нужным образом настроить алгоритм, реализованный в подпрограмме. Компилятор обычно следит за тем, чтобы количество и тип формальных параметров строго соответствовали количеству и типам фактических параметров в момент обращения к подпрограмме.

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

Формальные параметры подпрограммы могут быть трех видов:

• параметры-значения;

• параметры-переменные;

• параметры-константы.

Например, procedure MyProc (A: Real; var В: Real; const С: String); здесь А - параметр-значение, в - параметр-переменная, С - параметр-константа. Способ определения формального параметра очень важен для вызывающей программы. Если формальный параметр объявлен как параметр-значение или параметр-константа, то при вызове ему может соответствовать произвольное выражение. Если формальный параметр объявлен как параметр-переменная, то при вызове подпрограммы ему должен соответствовать фактический параметр в виде переменной нужного типа.

Чтобы понять, в каких случаях использовать тот или иной тип параметров, нужно знать, как осуществляется замена формальных параметров на фактические в момент обращения к подпрограмме. Если параметр определен как параметр-значение, то перед вызовом подпрограммы это значение вычисляется, полученный результат копируется во временную память и передается подпрограмме.[16]

Одним из свойств языка Object Pascal является возможность использования нетипизированных параметров. Параметр считается нетипизированным, если тип формального параметра-переменной в заголовке подпрограммы не указан, при этом соответствующий ему фактический параметр может быть переменной любого типа. Нетипизированными могут быть только параметры- переменные: procedure MyProc(var aParametr); Нетипизированные параметры обычно используются в случае, когда тип данных несуществен. Такие ситуации чаще всего возникают при разного рода копированиях одной области памяти в другую, например, с помощью процедур BlockRead, BlockWrite, MoveMemory и т. п.

Процедурные типы. Основное назначение процедурных типов — дать программисту гибкие средства передачи функций и процедур в качестве фактических параметров обращения к другим процедурам и функциям. Для объявления процедурного типа используется заголовок процедуры (функции), в котором опускается ее имя, например: type Prod = procedure (a, b, с: Real; var d: Real); РгосЗ == procedure; Fund = function: String; Func2 = function (var s: String): Real; В программе могут быть объявлены переменные процедурных типов, например: var p1 : Proc1; fl, f2: Func2; ар: array [1. . N] of Prod;

2. Классификация языков программирования

Языки программирования образуют три его составляющие: алфавит, синтаксис и семантика.[17]

Алфавит – это фиксированный для данного языка набор основных

символов, т. е. «букв», из которых должен состоять любой текст на этом

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

Синтаксис – это правила построения фраз, позволяющие определить,

правильно или неправильно написана та или иная фраза.

Семантика определяет смысловое значение предложений языка.

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

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

1. По степени ориентации на специфические возможности ЭВМ языки программирования делятся на:

  • машинно-зависимые (Автокоды, Assembler, MSIL);
  • машинно-независимые (C++,C#,Java, PHP, Python и д.р.).

К машинно-зависимым языкам программирования относятся машинные языки, ассемблеры и автокоды, которые в основном используются в системном программировании. Программный код на машинно-зависимом языке программирования может выполняться только на ЭВМ данного типа.

Для них в большинстве случаев характерны[18]:

    • высокое качество создаваемых программ с точки зрения их компактности и скорости выполнения. Они работают на прямую с процессором, что способствует быстрому выполнению программ.
    • возможность прямого использования конкретных аппаратных ресурсов;
    • учет особенностей функционирования данной ЭВМ;
    • трудоемкость процесса составления программ;
    • низкая скорость программирования;
    • невозможность непосредственного использования программ, составленных на этих языках, на ЭВМ других типов[19].

Программа на машинно-независимом языке программирования после трансляции на машинный язык становится машинно-зависимой. Этот признак языка программирования определяет мобильность получаемых программ (возможность переноса на ЭВМ другого типа).

2. По степени детализации алгоритма получения результата языки программирования делятся на:

  • языки низкого уровня (Assemler);
  • языки высокого уровня (Fortran, Basic,VB, C/C++,C#,Java, PHP и т.д);
  • языки сверхвысокого уровня (Ruby,Python, Icon, Haskell, Perl).

3. По степени ориентации на решение определенного класса задач: [20]

  • проблемно-ориентированные. Эти языки, языки ориентированные на решение определенных проблем, должны обеспечить программиста средствами, позволяющими коротко и четко формулировать задачу и получать результаты в требуемой форме(Lisp, Prolog)[21];
  • универсальные. Данные языки были созданы для широкого круга задач: коммерческих, научных, моделирования и т.д. Первый универсальный язык был разработан фирмой IBM, ставший в последовательности языков Пл/1. Второй по мощности универсальный язык называется Алгол-68. Он позволяет работать с символами, разрядами, числами с фиксированной и плавающей запятой. Пл/1 имеет развитую систему операторов для управления форматами, для работы с полями переменной длины, с данными организованными в сложные структуры, и для эффективного использования каналов связи. Язык учитывает включенные во многие машины возможности прерывания и имеет соответствующие операторы. Предусмотрена возможность параллельного выполнения участков программ (C,C++,C#, Java, Delphi,).

4. По возможности дополнения новыми типами данных и операциями:

  • расширяемые (Nemerle, C#, C++,Delphi);
  • нерасширяемые (Basic).

5. По возможности управления реальными объектами и процессами:

  • языки систем реального времени (Ada, Java, Modula-2);
  • языки систем условного времени.

6. По способу получения результата:

  • процедурные. ко способом получения его при помощи некоторой процедуры, которая представляет собой определенную последовательность действий. Среди процедурных языков выделяют структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т.д.; в операционных языках для этого используются несколько операций. Широко распространены следующие структурные языки: Паскаль, Си, Ада, ПЛ/1. Среди операционных –Фортран, Бейсик, Фокал.
  • непроцедурные. Непроцедурное (декларативное) программирование появилось в начале 70-х гг. XX в. К непроцедурному программированию относятся функциональные и логические языки. В функциональных языках программа описывает вычисление некоторой функции. Обычно эта функция за- дается как композиция других, более простых, те, в свою очередь, делятся на еще более простые задачи и т.д. Один из основных элементов функциональных языков это рекурсия. Оператора присваивания и циклов в классических функциональных языках нет. В логических языках программа вообще не описывает действий. Она задает данные и соотношения между ними. После этого системе можно задавать вопросы. Машина перебирает известные и заданные в программе данные и находит ответ на вопрос. Порядок перебора не описывается в программе, а неявно задается самим языком. Классическим языком логического программирования считается Пролог. [22]Программа на Прологе содержит, набор предикатов-утверждений, которые образуют проблемно-ориентированную базу данных и правила, имеющие вид условий

7.По типу решаемых задач:

  • языки системного программирования (Assembler, MSIL);
  • языки прикладного программирования.

8. Непроцедурные языки по типу встроенной процедуры поиска решений делятся на:

  • реляционные. Это языки программирования, оперирующие с данными как с множествами, применяя к ним основные операции теории множеств, примером является язык SQL[23];
  • функциональные. Функциональное программирование предполагает обходиться вычислением результатов функций от исходных данных и результатов других функций, и не предполагает явного хранения состояния программы. Соответственно, не предполагает оно и изменяемость этого состояния (в отличие от императивного, где одной из базовых концепций является переменная, хранящая своё значение и позволяющая менять его по мере выполнения алгоритма)[24];
  • логические. Логическая программа состоит из предикатов, представляющими собой функции, вырабатывающие логические значения – любой предикат содержит вычисления, которые могут быть либо истинными, либо ложными. При этом результаты вычисления предикат возвращает, только если вычисления истинны.[25]

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

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

3. Критерии выбора среды и языка разработки программ

Когда необходимо создать большую программную систему или составить программы для решения какой-либо частной задачи, в том числе при создании компьютерных игр, встает вопрос, какой выбрать для этой цели подходящий язык программирования.[26] Такой выбор делается на основании очень простых «земных» факторов: наличии того или иного транслятора и умения писать программы на данном языке. Но если в распоряжении пользователя несколько языков программирования и нужно создать, например, игру для мобильного, то необходимо учитывать следующие обстоятельства[27]:

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

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

3.1 Средства разработки мобильных приложений

В связи с тем, что на данный момент наиболее популярной операционной системой для мобильных устройств является ОС Android, целесообразно рассмотреть каким средствами разрабатываются приложения на устройства с данной операционной системой.[28]

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

История Android началась в далеком 2002 году, когда корпорация Google заинтересовались наработками Энди Рубина и решила сделать из этого большой проект. И в 2007 году Google решил организовать большой альянс разработчиков мобильных устройств с целью продвигать Android, как операционную систему для телефонов. Как мы видим на сегодняшний день это у них отлично получилось. По итогам 2014 года Android занимает лидирующую позицию на рынке операционных систем и доля его составляет 48,8 %. Прогнозы относительно данной платформы положительные. Немаловажными аспектами роста динамики явились такие характеристики как, открытость системы, возможность вносить изменения в основные приложения, возможность быстрой и легкой разработки. Поэтому выбор разработки приложения для Android является очень актуальным.

Разработчику работающего с платформой Android дается возможность писать код на Java абстрагируясь от ядра. [29]У данной операционной системы имеются такие плюсы как: фреймворк, имеющий широкий набор API для созданий разнообразных видов приложений и дающий возможность повторного использования и замены компонентов, предлагаемые платформой и другими приложениями. А также наличие виртуальной машины Dalvik, обеспечивающий запуск приложений. Кроме того инструментами Android являются база данных SQLite, 2D и 3D графика, Media Player, коммуникации, протоколы обмена и различные библиотеки.

Если необходимо создать приложение на Java для открытой платформы Android первое, что необходимо, это Java Development Kit от Oracle[30].

Java Development Kit –это кроссплатформенный интерактивный пакет созданный для разработчиков работающих на языке Java. Комплект состоит из нескольких компонентов таких как компилятор java, стандартные библиотеки, примеры и шаблоны, также утилиты необходимые для работы.

Android Studio — удобная среда разработки приложений для устройств, работающих под управлением операционной системы Android. Программа обладает большим набором инструментов, благодаря чему разработчики с её помощью могут создавать приложения для android любого уровня сложности. Интерфейс среды разработки для мобильных платформ под ОС Android представлен на рисунке 1.[31]

http://news.laptop.bg/wp-content/uploads/2013/05/Android-Studio.png

Рисунок 1 – Интерфейс среды разработки Android Studio

Данная среда разработки появилась сравнительно недавно, но уже завоевала немалую популярность и множество положительных отзывов разработчиков, и с каждым днём желающих программу Android Studio скачать становится всё больше и больше. Android Studio будет очень полезной для разработчиков, имеющих опыт в создании приложения для Android. Для тех пользователей, которые только начинают осваивать азы создания приложений, данная программа станет отличным инструментов для обучения.[32]

В приложении также реализована функция Google Cloud Messaging, благодаря чему можно через облако пересылать данные с сервера прямо на устройства. Есть в программе и функция локализации приложений. Многофункциональная среда разработки Android Studio обладает полным набором всех необходимых инструментов и функций, благодаря которым даже такое трудоемкое и сложное дело, как создание приложения для андроид становится простым и интересным. При этом программа работает надежно и стабильно, проста в освоении и отлично подходит как для профессиональных разработчиков, так и для новичков в программировании приложений для ОС Android.

Дополненная реальность полностью меняет восприятие обычных приложений и игр. Технология AR в мобильных приложениях в 2018 году получит новый импульс. Например, Microsoft обещает взорвать массовый рынок своими AR-приложения. Ждем с нетерпением!

Блокчейн.

Хочется назвать блокчейн технологией, но скорее это новый подход к безопасности. И его популярность набирает обороты. Блокчейн позволяет многократно укрепить систему защиты. Следовательно, вызывает доверие и лояльность пользователей. Конечно, в первую очередь это касается финансовых платформ. Но посмотрим, что будет дальше.

Искусственный интеллект.

Apple разрешила разработчикам интегрировать Siri в свои приложения только в 2017 году. Скоро искусственный интеллект будет встроен в самые разные области. Пока только крупные компании могут позволить себе развитие искусственного интеллекта в мобильных приложениях. Но 2018 год должен все изменить.

Боты.

Разве не классно оптимизировать бизнес-процессы, все упрощать, и увеличивать прибыль? Будь вы в хоть в B2C, хоть в B2B, боты станут для вас незаменимыми. Подобно промышленной революции XIX века, боты перевернут мобайл и сделают эту отрасль лучше.

Интернет вещей.

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

Безопасность и защита данных пользователей приложений.

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

Электронная и мобильная коммерция.

Быстро развивающийся рынок. Мобильные платежи, криптовалютные кошельки и интернет-банкинг уже переосмыслены. Остается подождать до середины 2018 года, чтобы посмотреть на результаты.

Игры.

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

Бонус-трек.

Топовые языки программирования в 2018:

Kotlin

Kotlin был недавно представлен Google в качестве альтернативы старой Java для Android-разработки. Язык быстро набирает популярность. Разработчиков привлекает упрощенный синтаксис и фокус исключительно на мобильной разработке.

Swift

Крепко стоит на рынке и не сдаст позиций на протяжении всего 2018 года.

JavaScript

Сейчас почти все может быть разработано с помощью Javascript. Когда у вас ограниченный бюджет, но список функций чрезвычайно велик, возможен только вариант разработки гибридных приложений. Javascript является ядром всей гибридной разработки на Ionic, React Native, но не Xamarin . Последний использует .NET-технологии.

Objective-C

Хоть Swift и завоевала сердца разработчиков iOS, тем не менее ветеран Objective-C все еще жив . Почему? Чрезвычайно мощный язык, который предпочитают разработчики с большим опытом. Полезен не только для мобильных разработок, но и для macOS.

3.2 Средства разработки веб-приложений

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

Но прежде необходимо понять разницу между языком веб-программирования и фреймворком. Язык программирования содержит базисный синтаксис, зачастую обладает стандартной библиотекой. Фрейворк представляет разработчику различные библиотеки. Некоторые языки и фреворки представляют собой одно целое, например JSP или ASP.NET. Другие языки используются без фреворка – PHP или Perl.[33]

Языки веб-программирования и фреймворки классифицируются на:

Клиентские – используют для написания программ на стороне клиента. К ним относятся такие языки и фреймворки, как JavaScript, SilverLight, AdobeFlash.

Серверные – применяются для написания программ на сервере. Наиболее популярными из них являются PHP, JSP (Java), ASP.NET, Perl, Ruby.

Среди клиентских языков необходимо выделить JavaScript.

JavaScript - это язык управления сценариями просмотра гипертекстовых страниц Web на стороне клиента. Если быть более точным, то JavaScript - это не только язык программирования на стороне клиента. Liveware, прародитель JavaScript, является средством подстановок на стороне сервера Netscape. Однако наибольшую популярность JavaScriptобеспечило программирование на стороне клиента.[34]

JavaScript стандартизован ECMA (European Computer Manufacturers Association - Ассоциация европейских производителей компьютеров). Соответствующие стандарты носят названия ECMA-262 и ISO-16262. Этими стандартами определяется язык ECMA Script, который примерно эквивалентен JavaScript 1.1. Отметим, что не все реализации JavaScript на сегодня полностью соответствуют стандарту ECMA. В рамках данного курса мы во всех случаях будем использовать название JavaScript.

Название «JavaScript» является собственностью Netscape. Реализация языка, осуществленная разработчиками Microsoft, официально называется Javascript. Версии JavaScript совместимы с соответствующими версиями JavaScript, т.е. JavaScript является подмножеством языка JavaScript.

Основная идея JavaScript состоит в возможности изменения значений атрибутов HTML-контейнеров и свойств среды отображения в процессе просмотра HTML-страницы пользователем. При этом перезагрузки страницы не происходит.

На практике это выражается в том, что можно, например, изменить цвет фона страницы или интегрированную в документ картинку, открыть новое окно или выдать предупреждение.[35]

Язык программирования JavaScript разработан фирмой Netscape для создания интерактивных HTML-документов. Это объектно-ориентированный язык разработки встраиваемых приложений, выполняющих как на стороне клиента, так и на стороне сервера. Многие люди считают, что JavaScript - это то же самое, что и Java, лишь потому, что эти языки имеют схожие названия. На самом деле это не так. Клиентские приложения выполняются браузером просмотра Web-документов на машине пользователя, серверные приложения выполняются на сервере.

При разработке обоих типов приложений используется общий компонент языка, называемый ядром и включающий определения стандартных объектов и конструкций (переменные, функции, основные объекты и средство Live Connect взаимодействия с Java-апплетами), и соответствующие компоненты дополнений языка, содержащие специфические для каждого типа приложений определения объектов.

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

Основные области использования языка JavaScript при создании интерактивных HTML-страниц:

  • динамическое создание документа с помощью сценария;
  • оперативная проверка достоверности заполняемых пользователем полей форм HTMLдо передачи их на сервер;
  • создание динамических HTML-страниц совместно с каскадными таблицами стилей и объектной моделью документа;
  • взаимодействие с пользователем при решении «локальных» задач, решаемых приложением JavaScript, встроенном в HTML страницу.[36]

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

Что касается платформы Windows, то здесь властвует технология ASP.NET, разработанная Microsoft. Плюсом этой технологии является возможность создавать сайты любой сложности и проходимости, начиная от самых простых, заканчивая ресурсами, которые могут обрабатывать несколько миллионов запросов в день. Все сайты компании Microsoft созданы по технологии ASP.NET. Сегодня ASP.NET пользуется небывалой популярностью, но особо революционной технологией уже больше не является. И хотя базовые функциональные возможности, лежащие в основе ASP.NET, на удивление, выглядят точно так же, как и десять лет назад, разработчики из Microsoft добавили к ним еще кое-какие дополнительные средства и абстракции кодирования более высокого уровня. Также появилось и еще как минимум одно новое направление, составляющее конкуренцию традиционному программированию с использованием ASP.NET, которое получило название ASP.NET MVC. [37]

Когда платформа ASP.NET была выпущена впервые, от предыдущих продуктов Microsoft и конкурирующих платформ ее отличали семь ключевых фактов. Тем, кто перешел на ASP.NET с какой-то другой платформы для разработки веб-приложений, или еще никогда не программировал в .NET приложений для веб-сети, материал следующих разделов позволит быстро получить общее представление об ASP.NET. ASP.NET интегрируется с .NET Framework.

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

То, как организована предлагаемая в .NET Framework обширная коллекция функциональности, программистам традиционных Windows-приложений, несомненно, покажется замечательным улучшением. Каждый из тысяч доступных в .NET Framework классов размещен в логическом иерархическом контейнере, который называется пространством имен (namespace).

Хотя в .NET предлагаются ориентированные специально на Windows- и на веб-приложения классы для построения пользовательских интерфейсов, большинство возможностей .NET Framework (начиная с получения доступа к базам данных и закачивания поддержкой многопоточной обработки) допускается использовать в приложениях любого типа. Другими словами, в .NET разработчикам веб-приложений предлагаются те же самые инструменты, что и разработчикам многофункциональных клиентских приложений.[38]

Другими словами, PHP – это препроцессор гипертекста, что и отражено в его названии. Препроцессор потому что окончательной обработке гипертекст подвергается уже на стороне клиента, результат которой мы видим в окне браузера (процессором гипертекста является уже сам браузер).

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

  • обработка и извлечение параметров http запросов GET и POST;
  • формирование и отправка http заголовков;
  • инфраструктура для хранения данных сеанса;
  • программные сервисы для работы с cookies.
  • работа с файлами по FTP протоколу;
  • работа с базами данных посредствам SQL запросов;
  • поддержка регулярных выражений;
  • поддержка HTTP авторизации;
  • обмен сообщениями по электронной почте и многое другое.

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

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

Все является объектом. Любые данные в Ruby могут иметь собственные properties и actions. То есть таким образом мы можем присвоить какие-то методы даже обычному числу или любому другому примитиву.

Расширяемость базовых возможностей. Ruby изо всех сил старается не ограничивать разработчика вообще ни в чем. К примеру, базовый класс Numeric имеет оператор + для сложения, но мы можем добавить свой собственный, к примеру plus. Exception handling. Наравне с другими популярными языками вроде JavaScript или Python, Ruby также имеет встроенную поддержку exception handling для удобства работы с ошибками.

Независимость от платформы. Ruby не только запускается на любой системе, включая древний MS-DOS, но и дает возможность использовать multithreading вне зависимости от того, поддерживает система эту опцию или нет. Как видно, Ruby – очень амбициозный и достаточно мощный инструмент, который, к слову, применяется очень многими разработчиками, причем и desktop-приложений тоже. К примеру, его частенько используют в качестве внутреннего скриптового языка для комплексных приложений.

3.3 Интегрированные среды разработки

Среды разработки ПО (Программного обеспечения) являются объединением программных средств, которые предназначены для написания (создания) программных продуктов. Среда разработки включает в свое содержание: компилятор, интерпретатор, отладчик, средства автоматизации сборки, а также редактор текста.

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

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

Обычно среда разработки ПО предназначена для разработки только на одном языке программирования. А такая среда разработки как интегрированная, предоставляет право выбрать создателю программы язык программирования для разработки, удобный разработчику (из языков поддерживаемых данной средой). Примером тому служат: Visual Studio, Komodo, Geany, Kylix, NetBeans, Eclipse.

Рассмотрим каждую среду разработки по отдельности

Microsoft Visual Studio – одна из интегрированных сред разработки, разработана на С++ и С#, поддерживается Windows OS. Данная среда разработки переведена на десять языков (также и на русский язык). В Visual Studio создатель может вести разработку вебсайтов, веб-служб, писать консольные приложения, а также приложения с графическим интерфейсом. Также VS поддерживает разного рода дополнений.[40] Самые знаменитые дополнения – это Re Sharper (выполняет поиск ошибок в коде во время написания кода программы разработчиком, до компиляции); Visual Assist (в отличии от Re Sharper поддерживает также и С++); AnkhSVN (использует в Visual Studio систему контроля версий, которая носит название Subversion).

Интерфейс VS представлен на рисунке 2

http://www.rapidqualitysystems.com/Content/Screenshots/New/VisualStudioVisualBasic.png

Рисунок 2 – Интерфейс среды разработки Visual Studio

Достоинства: [41]

  • Быстрая интерпретация кода Новый редактор кода позволяет изменять размер шрифта кода, выделять места использования методов и добавлять собственные мощные элементы визуализации.
  • Создание насыщенного пользовательского интерфейса Предлагаются новые визуальные дизайнеры Windows Presentation Foundation и Silverlight для разработки приложений для Windows 7 и Веб.
  • Масштабируемость с Windows Azure Интегрированные шаблоны проектов, отладка и публикация упрощают развертывание приложений в Windows Azure.
  • Новые возможности Используя интегрированную поддержку разработки многопоточных приложений, добавляйте новые возможности в свое приложение, если оно выполняется на компьютере с многоядерным процессором.
  • Настройка Visual Studio соответственно собственному стилю Основное улучшение IDE - включение поддержки для множества мониторов и повышение четкости текста делает привычную среду еще более продуктивной.
  • Применение разработки через тестирование Visual Studio формирует весь код заглушек, необходимый для выполнения модульного тестирования, позволяя разработчикам сосредоточиться на логике приложения.
  • Применение имеющихся навыков Используйте Visual Studio 2010 Professional для разработки SharePoint решений - включая инструментарий для Веб-частей, списков, рабочих процессов, событий и многого другого - и создавайте замечательные новые инструменты координации совместной деятельности для своей компании.
  • Меньше времени на отладку Встроенная иерархия вызовов позволяет быстро прослеживать поток выполнения программы без вызова отладчика. Также для упрощения отладки можно использовать метки для точек останова.
  • Интегрированная система контроля версий, отслеживание дефектов и автоматизация сборки Visual Studio 2010 Professional с MSDN включает Team Foundation Server 2010, который является идеальной системой контроля версий, отслеживания дефектов и автоматизации сборки для пользователей Visual Studio. Базовая установка Team Foundation Server превосходно подходит для использования на настольных компьютерах и для начинающих пользователей, до этого работавших с Microsoft Visual SourceSafe.[42]
  • Включена подписка MSDN Подписки MSDN предоставляют простую модель лицензирования и обширный источник информации высокого качества, что обеспечивает максимальную экономическую эффективность разработки приложений на платформе Microsoft.

Недостатки: Сложно для начинающих программистов.

Среда особенно распространена в англоговорящих странах, России, Китае, Германии, Франции, Португалии, Италии, Японии, Испании и Корее.

Geany это также интегрированная среда разработки ПО. Поддерживается на ОС Linux, а также на Mac Os и на Windows. Работает с тридцатью двумя языками (также и с русским языком). В составе Geany отсутствует компилятор. Компилятор можно установить как дополнение. Поддерживает достаточно много языков программирования, среди которых присутствуют классический С. С++ и С#.

Интерфейс среды разработки Geany представлен на рисунке 3.

https://zinka.files.wordpress.com/2014/11/1-geany-ide.png

Рисунок 3 – Интерфейс среды разработки Geany

Достоинства:

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

Недостатки: Не включает в свой состав компилятор.

Среда распространена во многих странах (Более чем в тридцати).

Komodo или ActiveStateKomodo – была написана на JavaScript, XUL, Python. Интерфейс данной среды только на aнглийском языке. Рaботает нa теx жe опeрационных систeмах как Geany: на Os Linux, Windоws и Mac Os.

Поддерживает десять языков программирования, среди которые присутствуют: PHP, Ruby, HTML5.

Интерфейс среды разработки Komodo представлен на рисунке 4.

http://cdn.toptenreviews.com/rev/scrn/large/48865-komodo-ide3.jpg

Рисунок 4 – Интерфейс среды разработки Komodo

Достоинства:

  • дополнение Code Explorer позволяет просматривать объектное дерево скрипта или библиотеки;
  • среда является кроссплатформенной;
  • удобный отладчик с возможностью удаленной отладки;
  • возможность настроить интерфейс среды «под себя».

Недостатки: Высокая стоимость, поддерживает мало языков программирования, сильно загружает компьютер (а именно оперативную память), является сложным для понимания.

Распространена в основном в англоговорящих странах.

Kylix – интегрированная среда. Функционирует на OS Linux. Работает с С, С++ и ObjectPascal.[43]

В данной среде есть возможность писать приложения веб-служб.

Kylix выпускался в трёх пакетах. Эти пакеты: Enterprise Edition – включал в себя сто девяносто компонентов (являлся самым большим и самим дорогим пакетом программы); Professional Edition (более дешевый вариант, который включал в себя около 165 компонентов); Open Edition – бесплатный пакет программы, содержащий в себе 75 компонентов, в нём отсутствует средства для работы с базами данных.

Обновленная версия Kylix 2, в отличии от Kylix работала гораздо быстрее. Например, Kylix 1 осуществлял сортировку пузырьком массива из 115 элементов полторы минуты, Kylix 2 – одну секунду.

В 2002 году данную среду разработки прекратил поддерживать разработчик.

Достоинства: Удобен в переносе написанного с одной операционной системы на другую.

Недостатки: Данная среда больше не поддерживается разработчиком.

Распространена в основном в Европейских странах и США, из-за того что разработчик (Borland) перестал поддерживать Kylix – становится всё менее популярной и не востребованной.

Netbeans – интегрированная среда разработки ПО. Была реализована на программном языке Java. Эта среда разработки высокого качества. Умеет работать на нескольких операционных системах, то есть является кроссплатформенной. Работает более чем с пятью программными языками.[44]

Интерфейс среды разработки NetBeans представлен на рисунке 5.

https://upload.wikimedia.org/wikipedia/commons/9/9b/NetBeans_IDE_6.0_on_Linux.png

Рисунок 5 – Интерфейс среды разработки NetBeans

Достоинства: является бесплатной, присутствует система контроля версий, подсветка синтаксиса, возможно переименовывать переменную/класс одним кликом, в том случае если вручную переименовывать слишком долго (автоматизированное переименование), имеется возможность форматирования кода по CodeStyle, разработчиком среда постоянно совершенствуется, улучшается.[45]

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

Распространена во многих странах, в силу того что является удобной и бесплатной.

Eclipse – ещё одна интегрированная среда разработки ПО. Написана на языке Java в две тысячи третьем году. Также является кроссплатформенной. За счёт присоединяемых к этой среде дополнений – имеется возможность создавать программные продукты более чем на пяти языках программного кода.

Интерфейс среды разработки Eclipse представлен на рисунке 6.

http://static.softoware.net/data/programs/images/eclipse-68523_68523.gif

Рисунок 6 – Интерфейс среды разработки Eclipse

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

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

Сравнение характеристик описанных интегрированных сред разработки

Среда разработки/критерий

Поддержка разработчиком

Является Кроссплатформенной

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

Шкала популярности от 1 до 5

Поддерживает русский язык

Входит в состав компилятор

Visual studio

5

NetBeans

4,4

Geany

5

Komodo

4

Kylix

2

Eclipse

5

Таблица составлена по Пугачев С., Шериев А., Кичинский К. Разработка приложений для Windows 8 на языке C#; БХВ-Петербург, 2013. - 416 c., Герберт, Шилдт Java 2 v5.0 (Tiger). Новые возможности; СПб: БХВ-Петербург, 2005. - 208 c.

Таким образом можно заметить, что данные среды разработки программного обеспечения (или подобные) можно осуществлять весь цикл разработки программного обеспечения. Но есть также интегрированные среды, которые предназначены для одного программного языка. К примеру, такая среда как Visual Basic.

Для больших (или командных) проектов в среду разработки должны быть включены файловый менеджер, интегрированная среда разработки программного обеспечения, PlSql (используется и для работы с Системой Управления БД и как инструмент отчётов), Cristal Reports (создание отчётов), StarTeam (ведение журнала версий разрабатываемого продукта).

Существует множество способов писать код для веб-приложений: от текстовых редакторов до облачных сред разработки, — пишет tproger.ru. Трудно сразу решить, какая среда лучше подходит для поставленных задач. Чтобы сэкономить вам время, выбрали наиболее популярные:

Текстовые редакторы.

Настольные интегрированные среды разработки (IDE).

Облачные IDE.

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

Текстовые редакторы для веб-разработки

Komodo Edit

Komodo Edit — сокращённая версия Komodo IDE. Включает в себя базовые функции для создания веб-приложений. Кроме того, подключаются расширения для добавления поддержки языков или полезных функций вроде компиляции LESS и SASS файлов.

Komodo Edit не выделяется среди других редакторов как лучший, но подходит для повседневной работы, особенно при работе с XML.

Основные возможности:

мультиязычность,

автозавершение кода,

всплывающие подсказки,

множественное выделение текста,

менеджер проектов,

скины и наборы значков,

отслеживание изменений,

быстрая навигация по частям редактора (commando),

интеграция с Kopy.io.

Bluefish — полнофункциональный редактор кода со следующими примечательными особенностями:

проверка орфографии с учётом особенностей языка программирования,

автозавершение кода,

сниппеты,

управление проектами,

автосохранение.

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

Vim — расширенная версия Vi, текстового редактора в UNIX. Он не был создан специально для редактирования кода, но это исправляют многочисленные расширения. Для изучения этого редактора создали online-игру — Vim Adventures, а у нас уже подготовлена шпаргалка по основным командам Vim.

Основные возможности:

бесконечная история отмены,

обширное количество плагинов,

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

мощный поиск и замена,

интеграция со сторонними инструментами.

GNU Emacs

Как текстовый редактор Vi, GNU Emacs присутствует в стандартной комплектации большинства систем Linux. Emacs сложнее, но содержит больше возможностей:

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

документация с руководством для новичков,

полная поддержка Unicode,

гибкая настройка с помощью Emacs Lisp или графического интерфейса,

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

система загрузки и установки расширений.

Adobe Brackets

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

Основые особенности:

при редактировании HTML-кода CSS-стили элементов отображаются во всплывающем окне для редактирования на лету,

просмотр HTML-кода в браузере реализован в реальном времени,

импорт изображений из PSD файлов возможен без Adobe Photoshop,

встроенные инструменты упрощают работу с LESS и SASS файлами.

Visual Studio Code — легкий, но мощный редактор исходного кода. В изначальной конфигурации используется для редактирования кода на JavaScript, TypeScript и Node.JS, а с помощью расширений поддерживает C++, C#, Python и PHP.

Visual Studio Code не просто выполняет автодополнение, а делает это с умом: с помощью технологии IntelliSense дописывает названия объявленнных переменных, функций и модулей, а также делает ссылку на соответствующий раздел документации. Возможна отладка кода напрямую из редактора, запуск приложения для отладки и присоединение к запущенным приложениям.

Atom от Github

Atom — текстовый редактор с множеством настроек, но даже со стандартной конфигурацией помогает работать продуктивно.

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

Основные возможности:

умное автозавершение,

файловый менеджер, с помощью которого легко просматривать как отдельные файлы, так и целые проекты,

мультипанельный интерфейс позволяет разделить интерфейс для удобства сравнения и редактирования кода в нескольких файлах,

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

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

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

ЗАКЛЮЧЕНИЕ

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

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

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Аблязов, Р. Программирование на ассемблере на платформе x86-64 / Р. Аблязов. - М.: Книга по Требованию, 2011. - 65 c
  2. Белов П.М. Основы алгоритмизации в информационных системах: Учебн. Пособие.- Спб.: СЗТУ, 2003. – 85с. Режим доступа: http://www.ict.edu.ru/ft/005406/nwpi225.pdf
  3. Бородин А.П., Галло В.Ф. Августа Ада Лавлейс — первый программист. // Информатика, № 11/95.
  4. Гавриков, М. М. Теоретические основы разработки и реализации языков программирования / М.М. Гавриков, А.Н. Иванченко, Д.В. Гринченков. - Москва: СПб: Питер, 2010. - 184 c.
  5. Гаевский, А.Ю. 100% самоучитель. Создание Web-страниц и Web-сайтов. HTML и JavaScript / А.Ю. Гаевский, В.А. Романовский. - М.: Триумф, 2008. - 464 c.
  6. Гаевский, А.Ю. 100% самоучитель. Создание Web-страниц и Web-сайтов. HTML и JavaScript / А.Ю. Гаевский, В.А. Романовский. - М.: Триумф, 2008. - 464 c.
  7. Герберт, Шилдт Java 2 v5.0 (Tiger). Новые возможности; СПб: БХВ-Петербург, 2005. - 208 c.
  8. Жуков, А. Ассемблер / А. Жуков, А. Авдюхин. - М.: БХВ-Петербург, 2012. - 25 c.
  9. Зиборов, В. MS Visual C++ 2010 в среде .NET / В. Зиборов. - М.: Питер, 2012. - 320 c.
  10. Калашников, О. Ассемблер - это просто. Учимся программировать C 87.
  11. Калашников, О. Ассемблер - это просто. Учимся программировать / О. Калашников. - М.: БХВ-Петербург, 2011. - 32 c.
  12. Клименко Роман Веб-мастеринг на 100%; Питер - Москва, 2013. - 512 c
  13. Левин А. Android на планшетах и смартфонах; Питер - Москва, 2013. – 224с
  14. Маркин А. В., Шкарин С. С. Основы Web-программирования на PHP; Диалог-МИФИ - , 2012. - 56 c
  15. Маслов, В.В. Основы программирования на языке Perl. / В.В. Маслов. - М.: Горячая линия - Телеком, 2000. - 144 c.
  16. Медникс Зигард , Дорнин Лайрд , Мик Блэйк , Накамура Масуми Программирование под Android; Питер - Москва, 2013. - 560 c.
  17. Монахов Вадим. Язык программирования Java и среда NetBeans. — 3-е издание. — СПб.: «БХВ-Петербург», 2011. — С. 704
  18. Монахов Вадим. Язык программирования Java и среда NetBeans. — 3-е издание. — СПб.: «БХВ-Петербург», 2011. — С. 704. — ISBN 978-5-9775-0671-7.
  19. Макаров В.Л. Программирование и основы алгоритмизации.: учебн. пособие.-Спб., СЗТУ, 2003, - 110с. Режим доступа: http://window.edu.ru/resource/126/25126/files/nwpi223.pdf
  20. Негрино JavaScript для начинающих / Негрино, Том. - М.: НТ Пресс, 2007. - 544 c.
  21. ПаронджановВ.Д. Как улучшить работу ума. Алгоритмы без программистов—это очень просто!М., 2001 – 204 с
  22. Понамарев, В. Программирование на C++/C# в Visual Studio .NET 2003 / В. Понамарев. - М.: БХВ-Петербург,2015. – С 917c
  23. Пугачев С., Шериев А., Кичинский К. Разработка приложений для Windows 8 на языке C#; БХВ-Петербург, 2013. - 416 c.
  24. Основы алгоритмизации и программирования: учеб. пособие / Т.А. Жданова, Ю.С. Бузыкова. – Хабаровск : Изд-во Тихоокеан. гос.ун-та, 2011. – 56 с. Режим доступа: http://pnu.edu.ru/media/filer_public/2013/02/25/book_basics.pdf.
  25. Основы алгоритмизации и программирования : учебное пособие / Г. Р. Кадырова. – Ульяновск : УлГТУ, 2014. – 95 с. . Режим доступа: http://venec.ulstu.ru/lib/disk/2014/137.pdf
  26. Основы алгоритмизации и программирования. Курс лекций. Режим доступа: http://lib.ssga.ru/fulltext/UMK/исходные%20для%20Кацко/заменить%20полно стью/Информатика/лекции/13%20Основы%20алгоритмизации%20и%20прог раммирования.pdf
  27. Основы алгоритмизации и программирования: Метод. указ. / Сост.: И.П. Рак, А.В. Терехов, А.В. Селезнев. Тамбов: Изд-во Тамб. гос. техн. ун-та. Режим доступа: http://www.ict.edu.ru/ft/004758/terehov.pdf.
  28. Программирование и основы алгоритмизации: Для инженерных специальностей технических университетов и вузов. /А.Г. Аузяк, Ю.А. Богомолов, А.И. Маликов, Б.А. Старостин. Казань: Изд-во Казанского национального исследовательского технического ун-та - КАИ, 2013, 153 с. Режим доступа: http://au.kai.ru/documents/Auzyak_Progr_osn_alg_C_2013.pdf.
  29. Сергиенко А.Б.: Цифровая обработка сигналов. - СПб.: Питер, 2006 −24 с.
  30. Уилтон, Пол; Колби, Джон SQL для начинающих; М.: Вильямс, 2011. – 496 c.
  31. Фаулер, Мартин Предметно-ориентированные языки программирования / Мартин Фаулер. - Москва: Гостехиздат, 2011. - 36 c.
  32. Фаулер, Мартин Предметно-ориентированные языки программирования / Мартин Фаулер. - Москва:Гостехиздат, 2011. - 576 c.
  33. Фаулер, Мартин Предметно-ориентированные языки программирования C 144.
  34. Федерико, Бьянкуцци Пионеры программирования. Диалоги с создателями наиболее популярных языков программирования / Бьянкуцци Федерико. - М.: Символ-плюс, 2011. – 143 c.
  35. Фленов Михаил Библия C#; БХВ-Петербург, 2009. - 560 c.
  36. Чарли Калверт, Мэрджори Калверт, Джон Кастер, Боб Свот. Borland Kylix. Руководство разработчика = Borland Kylix Developer's Guide. — М.:«Вильямс», 2002.— С 129.
  37. Ю. А. Кирютенко, В. А. Савельев. Объектно-ориентированное программирование. Язык Smalltalk. — М.: Вузовская книга, 2007. — 153 с. — ISBN 5-9502-0097-7.
  38. Ю. А. Кирютенко, В. А. Савельев. Объектно-ориентированное программирование. С 212.
  39. Wilson G.V. Extensible Programming for the 21st Century // ACM Queue. January 2005. vol. 2. pp. 48–57.
  1. Основы алгоритмизации и программирования. Курс лекций. Режим

    доступа:

    http://lib.ssga.ru/fulltext/UMK/исходные%20для%20Кацко/заменить%20полно

    стью/Информатика/

  2. Бородин А.П., Галло В.Ф. Августа Ада Лавлейс − первый программист. // Информатика, № 11/95.

  3. Жуков, А. Ассемблер / А. Жуков, А. Авдюхин. − М.: БХВ-Петербург, 2012. − С25.

  4. Калашников, О. Ассемблер − это просто. Учимся программировать / О. Калашников. − М.: БХВ-Петербург, 2011. – С 32.

  5. Калашников, О. Ассемблер - это просто. Учимся программировать C 23.

  6. Аблязов, Р. Программирование на ассемблере на платформе x86-64 / Р. Аблязов. - М.: Книга по Требованию, 2011. −С 35

  7. Фаулер, Мартин Предметно-ориентированные языки программирования / Мартин Фаулер. - Москва: Гостехиздат, 2011. −С36.

  8. Фаулер, Мартин Предметно-ориентированные языки программирования C 144.

  9. Федерико, Бьянкуцци Пионеры программирования. Диалоги с создателями наиболее популярных языков программирования / Бьянкуцци Федерико. − М.: Символ-плюс, 2011. –С34

  10. Ю. А. Кирютенко, В. А. Савельев. Объектно-ориентированное программирование. Язык Smalltalk. − М.: Вузовская книга, 2007. − С 123.

  11. Ю. А. Кирютенко, В. А. Савельев. Объектно-ориентированное программирование. С 156.

  12. Сергиенко А.Б.: Цифровая обработка сигналов. - СПб.: Питер, 2006 −С24.

  13. Основы алгоритмизации и программирования. Курс лекций. Режим доступа: http://lib.ssga.ru/fulltext/UMK/исходные%20для%20Кацко/заменить%20полно стью/Информатика/лекции/13%20Основы%20алгоритмизации%20и%20прог раммирования.pdf

  14. Белов П.М. Основы алгоритмизации в информационных системах: Учебн. Пособие.- Спб.: СЗТУ, 2003. – 85с.

  15. Основы алгоритмизации и программирования: Метод. указ. / Сост.: И.П. Рак, А.В. Терехов, А.В. Селезнев. Тамбов: Изд-во Тамб. гос. техн. ун-та. Режим доступа: http://www.ict.edu.ru/ft/004758/terehov.pdf

  16. Основы алгоритмизации и программирования: учеб. пособие / Т.А. Жданова, Ю.С. Бузыкова. – Хабаровск : Изд-во Тихоокеан. гос.ун-та, 2011. – 56 с.

  17. Основы алгоритмизации и программирования: учеб. пособие / Т.А. Жданова, Ю.С. Бузыкова. – Хабаровск : Изд-во Тихоокеан. гос.ун-та, 2011. – 56 с.

  18. Калашников, О. Ассемблер - это просто. Учимся программировать C 65

  19. Аблязов, Р. Программирование на ассемблере на платформе x86-64. С 46

  20. Гавриков, М. М. Теоретические основы разработки и реализации языков программирования / М.М. Гавриков, А.Н. Иванченко, Д.В. Гринченков. - Москва: СПб: Питер, 2010. – С26.

  21. Фаулер, Мартин Предметно-ориентированные языки программирования / Мартин Фаулер. - Москва:Гостехиздат, 2011. – С19.

  22. Анатолий Адаменко, Андрей Кучуков. Логическое программирование и Visual Prolog (с CD). – СПб.: «БХВ-Петербург», 2003. – С68

  23. Уилтон, Пол; Колби, Джон SQL для начинающих; М.: Вильямс, 2011. – 496 c.

  24. Н. А. Роганова Функциональное программирование: Учебное пособие для студентов высших учебных заведений – М.: ГИНФО, 2002.– С46

  25. Анатолий Адаменко, Андрей Кучуков. Логическое программирование и Visual Prolog (с CD). – СПб.: «БХВ-Петербург», 2003. – С 23

  26. Кундиус, В.А. Теоретические основы разработки и реализации языков программирования / В.А. Кундиус. - М.: КноРус, 2013. – С24.

  27. ПаронджановВ.Д. Как улучшить работу ума. Алгоритмы без программистов—это очень просто!М., 2001 – С11

  28. Медникс Зигард , Дорнин Лайрд , Мик Блэйк , Накамура Масуми Программирование под Android; Питер - Москва, 2013. – С112.

  29. Мельникова Оксана Смартфоны на Android; Эксмо - Москва, 2013. – С 25

  30. Медникс Зигард , Дорнин Лайрд , Мик Блэйк , Накамура Масуми Программирование под Android . С 22.

  31. Мельникова Оксана Смартфоны на Android; Эксмо - Москва, 2013. – С34

  32. Левин А. Android на планшетах и смартфонах; Питер - Москва, 2013. – С 23

  33. Маслов, В.В. Основы программирования на языке Perl. / В.В. Маслов. - М.: Горячая линия - Телеком, 2000. – С 36.

  34. Гаевский, А.Ю. 100% самоучитель. Создание Web-страниц и Web-сайтов. HTML и JavaScript / А.Ю. Гаевский, В.А. Романовский. - М.: Триумф, 2008. – С54.

  35. Негрино JavaScript для начинающих / Негрино, Том. - М.: НТ Пресс, 2007. – С 34.

  36. Негрино JavaScript для начинающих / Негрино, Том. - М.: НТ Пресс, 2007. – С 46

  37. Фленов Михаил Библия C#; БХВ-Петербург, 2009. – С15.

  38. Маркин А. В., Шкарин С. С. Основы Web-программирования на PHP; Диалог-МИФИ - , 2012. - С 56

  39. Клименко Роман Веб-мастеринг на 100%; Питер - Москва, 2013. - С 42

  40. Зиборов, В. MS Visual C++ 2010 в среде .NET / В. Зиборов. - М.: Питер, 2012. - С 135

  41. Зиборов, В. MS Visual C++ 2010 в среде .NET / В. Зиборов. - М.: Питер, 2012. - С 137

  42. Понамарев, В. Программирование на C++/C# в Visual Studio .NET 2003 / В. Понамарев. - М.: БХВ-Петербург,2015. – С 35

  43. Чарли Калверт, Мэрджори Калверт, Джон Кастер, Боб Свот. Borland Kylix. Руководство разработчика Borland Kylix Developer's Guide. –М.:Вильямс, 2002–С 129.

  44. Монахов Вадим. Язык программирования Java и среда NetBeans. –3-е издание. –СПб.: «БХВ-Петербург», 2011. –С 12

  45. Монахов Вадим. Язык программирования Java и среда NetBeans. – 3-е издание. – СПб.: «БХВ-Петербург», 2011. – С 18