Добавлен: 23.05.2023
Просмотров: 372
Скачиваний: 2
СОДЕРЖАНИЕ
ГЛАВА 1. ПОНЯТИЕ «ЯЗЫКИ ПРОГРАМИРОВАНИЯ»
1.1 История развития языков программирования
1.2 Современные тенденции развития языков программирования
ГЛАВА 2. ЯЗЫКИ ПРОГРАМИРОВАНИЯ И ИХ ОБЗОР
ГЛАВА 3. НАИБОЛЕЕ ГИБКИЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ В СОВРЕМЕННОМ МИРЕ
3.1. TYPESCRIPT как одни из современных языков программирования высокого уровня
- char – символьный;
- int - целое число;
- float - с плавающей точкой;
- double - двойной точности;
- bool - логический тип.[42]
Для формирования других типов данных используют простые типы и так называемые спецификаторы. Типы данных созданы на базе простых типов с использованием спецификаторов называют сложенными типами данных. В С ++ определены четыре спецификатора типов данных:
- short – короткий;
- long – длинный;
- signed – знаковый;
- unsigned – беззнаковый.
Переменная - это область памяти, в которой хранится значение определенного типа. В переменной есть имя (идентификатор) и значения. Имя служит для обращения к области памяти, в которой хранится значение. Во время выполнения программы значение переменной можно изменить. Перед использованием любая переменная должна быть описана.
По месту объявления переменных в языке Си++ можно разделить на три класса: локальные, глобальные и формальные параметры функции. Локальные переменные объявляются внутри функции и доступны только в ней. Формальные параметры функции описываются в списке параметров функции.
Ввод-вывод данных в языке С ++ осуществляется или с помощью функций ввода-вывода в стиле С или с использованием библиотеки классов С ++. Преимущество объектов С ++ в том, что они просты в использовании, особенно если ввода-вывода достаточно просто. Функции ввода-вывода, унаследованные от C, более громоздкие, но подходят для задач с форматированным выводом данных[43].
2.12. Java
JAVA - это объектно-ориентированный язык программирования, разработанный Дж. Ослингом и запущенный в 1995 г. в качестве одного из ключевых компонентов платформы JAVA Sun Microsystems.
Синтаксис языка взят в большинстве из языка программирования С ++ и С, но все же JAVA имеет более простую объективную модель и более низкий уровень объектов. JAVA - приложения обычно транслируются в байт-код (длина каждого кода операции - один байт), который может быть обработан любой виртуальной машиной JAVA (Java Virtual Mashine. JVM) независимо от компьютерной архитектуры.
Стоит отметить, что первоначально реализация ссылок на компиляторы JAVA, виртуальных машин и библиотек классов, была представлена компанией Sun в 1995 г. В мае 1997 г. вместе с JAVA Communitz Process Sun разработала технологию JAVA согласно GNU General Public License. Другие компании также искали альтернативы технологии, предложенной Sun как GNU Compiler для JAVA и GNU Classpath.[44]
Разрабатывая язык, специалисты руководствовались пятью задачами, которые были преобразованы в следующие принципы:
простота в использовании, объектная ориентированность и легкость изучения;
- надежность и безопасность;
- независимость от архитектуры;
- возможность интерпретации;
- интерактивность и динамичность.
Для того, чтобы понять, как работать с языком JAVA, необходимо, в первую очередь, познакомиться с платформой и характеристикой этого языка.
Возможность JAVA выполнять свой код на любой из поддерживаемых платформ достигается за счет того, что ее программы транслируются в промежуточное представление, которое называется байт кодом. Байт-код может интерпретироваться в любой системе, в которой присутствует среда выполнения JAVA[45].
Значительное количество ранних систем, в которой вводилась возможность независимости от платформы, сталкивалась с недостатком заключенному в снижении производительности.
Байт-код легко переводится непосредственно в родные машинные коды, независимо от того, что в JAVA используется интерпретатор[46], при котором достигается очень высокая производительность. Инструкции java bytecode похожи с инструкциями машинного кода, но предназначены для виртуальной машины и созданы специально для аппаратного владельца.
Конечные пользователи применяют обычно Java Runtime Environment (JRE - конфигурация виртуальной машины, необходимая для выполнения Java приложений), установленную, как правило, на собственном компьютере для приложений Java или в веб-браузере для Java апплетов[47].
Виртуальная машина Java (Java Virtual Machine) это ключевой компонент платформы Java, представляющий собой виртуальную среду, виртуальный компьютер с характеристиками нормального компьютера (реестром, кодами, набором информации), который руководит приложениями Java. Немаловажное место в языке занимает библиотека Java.
Библиотеки в термине языков программирования - это ресурсы программного обеспечения, которые нужны языку для функционирования. Java использует такие библиотеки, которые сохраняют специальные директории, в папке приложения Java. Оттуда они загружаются каждый раз, когда инициализируется приложение Java. Стандартные библиотеки Java обеспечивают общий доступ к конкретным функциям Java, которые реализуют основные возможности языка.
Выводы по Главе 2
В данной главе были рассмотрены основные языки программирования высокого уровня, которые стали популярными в мире. из всего высше сказанного, можно сделать вывод, что, начиная с 60-х гг. ХХ в., изучение и разработка языков программирования для ЭВМ занимало одно из основных мест в сфере компьютерных технологий. Также, немаловажно, что каждый из рассмотренных языков дал толчок для развития языков программирования высокого уровня с повышенной гибкостью.
ГЛАВА 3. НАИБОЛЕЕ ГИБКИЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ В СОВРЕМЕННОМ МИРЕ
3.1. TYPESCRIPT как одни из современных языков программирования высокого уровня
Как всем известно, каждый из веб-разработчиков должен в совершенстве знать HTML и JavaScript. Без этих языков, включая и CSS, невозможно создать полноценный, современный веб-ресурс. Конечно, современные веб-приложения создаются с использованием серверных технологий, таких как NodeJS или ASP.NET и др. За последние годы, невозможно не заметить роста популярности интерпретированного языка программирования JavaScript на мировом рынке. [48]Этот язык, будучи созданным для решения вопроса манипулирования элементами веб-страницы, сейчас используется почти повсюду, от десктопных приложений, как например, Windows 8,10 до смартфонов, которые работают на таких операционных системах, как Android или iOS.
Несмотря на все преимущества, данный язык имеет и свои недостатки. Так, JavaScript не был спроектирован для решения больших задач, чем те, которые связаны с манипулированием веб-страницей, однако разработчики с каждым годом улучшают его, дополняя новыми возможностями, а также исправляя ошибки, при этом поддерживая совместимость с предыдущими версиями[49].
В данной работе, рассмотрен язык, который называется TypeScript, который было создан в Microsoft под руководством А. Хейлсберг, который создал такие языки как C #, Delphi и т.д . TypeScript решает основные проблемы JavaScript, как, например, использование статичных типов, что значительно упрощает дебагинг кода и его тестирование. Специалисты с Google используют TypeScript как основной язык своего нового Фреймворка Angular2.
TypeScript имеет свой компилятор, который компилирует код в чистый JavaScript, таким образом, программист может писать JavaScript код в одном файле с TypeScript кодом, а компилятор просто пропустит данные сроки, компилируя другие.
Каждый файл TypeScript имеет расширение «.ts», компилятор TypeScript проходит по каждому такому файлу и компилирует его в аналогичный файл с JavaScript кодом, таким образом, в проекте достаточно будет ссылаться на JavaScript файлы. Однако, TypeScript предоставляет и возможность настройки компилятора, используя специальный файл «tsconfig.json»[50].
Данный файл является коренным в проекте для TypeScript. В нем можно добавить файлы или папки с файлами для компиляции, и, аналогично, исключить файлы папки из процесса компиляции, изменить кодировку для компилированного файла и т.д. (Все опции доступны на официальном сайте языка TypeScript). Компилятор во время работы при неправильном сопоставлении типов не будет останавливать компиляцию, как, например, в C ++, Java, а лишь выдаст предупреждение о несопоставимости типов, поскольку это разрешено на языке JavaScript, где число может с легкостью быть переведено в термины и прочее, используя специальные методы для типов значения и объектов.
3.2. Сравнение TypeScript и JavaScript
В данном разделе приведены основные возможности языка TypeScript, которые невозможно использовать в JavaScript.
1. Использование статических типов
В отличие от JavaScript, в TypeScript разработчик должен писать тип переменной вместе с ее объявлением. TypeScript поддерживает основные типы, которые доступны и в JavaScript - number, string, boolean, null, object, undefined, symbol, promise и другие. Однако, в TypeScript разработчик может создать еще и enum (перечисление), void, any (тип параметра не определен во время компиляции), tuple (кортеж - нечто вроде массива, может иметь значение различных типов, однако данные типы необходимо описать, то есть кортеж - не то же, что и массив в JavaScript)[51].
Пример создания переменной в TypeScript:
let myVar: string = "Hello";
2. TypeScript позволяет создавать интерфейсы
Интерфейс - это контракт, который может принимать функция и реализует определенный класс, для того, чтобы код не зависел от конкретной реализации. Интерфейсы используются в таком популярном паттерне как «dependency injection[52]». Однако, в TypeScript интерфейсы используются в основном для передачи комплексных типов - объектов в определенную функцию, причем функция может возвращать объект, реализующий данный интерфейс (под реализацией имеется в виду то, что у объекта есть те параметры, описанные в интерфейсе, то есть их может быть и больше, однако проверяются только необходимые), то есть интерфейсы используются для проверки типов, которые передаются в функцию и используются компилятором.
Также, основной особенностью интерфейсов является то, что интерфейс может иметь необязательные параметры, которые могут быть проигнорированы.
Пример интерфейса в TypeScript:
interface Named {
name: string;
(а: string, b: string): string;
surname ?: string;
}
В данном интерфейсе есть поле name с типом строка, функция, принимающая два параметра типа строка, а также поле surname, что является необязательным.
3. TypeScript позволяет создавать классы
Так, с выходом EcmaScript 6 в JavaScript также возможно использование классов, однако в TypeScript классы имеют большее значение и имеют больше функций. Во-первых, классы в TypeScript могут реализовывать интерфейсы, то есть, их можно передавать в функции, как и объекты, реализующие данный интерфейс. Во-вторых, в TypeScript классы имеют модификаторы доступа - public, private, protected, чего нет в JavaScript. В-третьих, в TypeScript можно создать абстрактный класс.
Итак, TypeScript на данный момент является более приспособленной для создания ООП кода. Конечно, в TypeScript, как и в JavaScript есть подражания, статические методы, конструкторы и свойства (getters, setters).
Простейший пример класса:
class Person {
private _name: string;
constructor (name: string) {
this._name = name;
}
public sayName (): string {
return this._name;
}
};
В данном классе есть только конструктор, частное поле типа, строка и публичный метод.
4. Поскольку TypeScript имеет статическую типизацию то в нем доступно приведения типов, благодаря специальным конструкциям.
В версии 1.5 разработчикам рекомендуется использовать специальный оператор «as»[53], и используется для приведения одного типа к другому.
5. В TypeScript можно создавать generic-типы и функции - аналог шаблонов в С ++.
Конечно, в простом JavaScript данный функционал не нужен, поскольку функцией можно передать параметр любого типа, однако сопровождать такой код очень трудно. В TypeScript можно вместо таких типов использовать и специальный тип «any»[54], но он имеет совсем другое значение. Как и в шаблонах С ++, generic тип используется для создания классов и методов, которые могут принимать параметры различных типов. Данный функционал является очень важным в любом языке со статической типизацией, пример generic типа:
function genFunc <T> (arg: T): T {
return arg;
}
let output = genFunc <number> (5);
В данном примере было создано простую generic-фунцию, что принимает параметр и возвращает его обратно. В переменную output будет записано число 5 и тип этой переменной - также число. Однако, мы могли использовать любой другой тип - интерфейс Named, string или класс Person[55].
6. Для функций в TypeScript зарезервировано специальный тип, то есть функция в TypeScript - это не объект, как в обычном JavaScript, причем мы не сможем присвоить параметру одного типа функции другого, если в них не одинаковое количество параметров и тип, а также тип возвращаемого значения, однако есть и исключения, которые более подробно описаны на официальном сайте языка TypeScript.