Файл: Современные языки программирования (Понятие. Сущность).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 23.04.2023

Просмотров: 263

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ВВЕДЕНИЕ

Несмотря на существование огромного количества языков, лишь немногие массово применяются. Самыми популярными являются С, C++, Java, Fortran, Ada, Tcl.
Список существующих «зрелых» языков невелик для вычислительных сред современности. Их создатели совершенствуют их чтобы они применялись во многих сферах. Но даже при этом они не являются оптимальным вариантом для решения некоторых задач. В результате таких усовершенствований языки усложняются и их использование в разработке ПО для решения определённых задач становится невыполнимо. В связи с этим создаются новые языки, так как добавление дополнительных возможностей к существующим языкам программирования считается трудной и дорогостоящей задачей.
В сфере IT наблюдаются значительные изменения в языках, созданных в последнее время.

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

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

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

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

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

Задачи исследования:

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


Глава 1. Языки программирования

1.1 Понятие. Сущность

Язык программирования представляет собой формальную знаковую систему, при помощи которой записываются компьютерные программы. В настоящее время насчитывается от 2500 до 10000 различных языков программирования. В данной работе рассматриваются языки программирования с 2009 по 2018 год.

Хронология данных языков представлена в Таблице 1.

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

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

Языки программирования принято делить на пять поколений:

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

Второе поколение. Конец 50-х- начало 60-х годов. Был разработан символический ассемблер, в котором появилось понятие переменной.

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

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

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


Вывод:

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

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

Глава 2. Новое поколение универсальных языков 

2.1 Язык Go

Go был создан компанией Google в 2009 году. Ведущими разработчиками являются Роберт Гризмер, Роб Пайк и Кен Томпсон.

Целью разработчиков было создание высокоэффективного языка, использование которого позволяло бы писать программы высокоинтеллектуального уровня с лёгкостью. 
Go вобрал в себя заимствования из многих языков:  

C;

Limbo;

Modula;

Oberon;

Pascal.

Go повлиял на Sparkel.

Парадигма Go: 

императивная;

на уровне значений;

процедурная;

скалярная;

структурная.

Типизация Go: 

безопасная;

вывод типов;

статическая;

строгая;

типизированная.

В качестве примера приведём программу Hello, World!

package main
import "fmt"

func main() {
fmt.Println("Hello, World!")
}

Код Go организован в виде пакетов, которые подобны библиотекам или модулям других языков. Пакет состоит из одного или нескольких файлов исходных текстов (.go) в одном каталоге, которые определяют, какие действия выполняет данный пакет. Каждый исходный файл начинается с объявления package (в данном случае- package main), которое указывает, к какому пакету принадлежит данный файл. Затем следует список других пакетов, которые этот файл импортирует, а после него- объявления программы, хранящейся в этом исходном файле.

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

Пакет main- особый. Он определяет отдельную программу, т.е. выполнимый файл, а не библиотеку. В пакете main функция main также является особой- именно с неё начинается программа. Программа делает то, что делается в функции main. Конечно, для выполнения действий функция main обычно вызывает функции из других пакетов, как, например, fmt.Println .


Необходимо указать компилятору, какие пакеты нужны для данного исходного файла; эту задачу решают объявления import, следующие за объявлением package. Программа “hello, world” использует только одну функцию из одного стороннего пакета, но большинство программ импортируют несколько пакетов. Необходимо импортировать только необходимые пакеты.

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

Объявления import должны следовать за объявлением package. После этого в программе располагаются объявления функций, переменных, констант и типов (вводимые с помощью ключевых слов func, var, const и type); по большей части порядок объявлений не имеет значения. Приведенная программа максимально короткая, так как объявляет только одну функцию, которая, в свою очередь, также вызывает только одну функцию.

Объявление функции состоит из ключевого слова func, имени функции, списка параметров (пустого списка в случае функции main), списка результатов (также пустого в данном случае) и тела функции- инструкций, которые определяют выполняемые функцией действия- в фигурных скобках. Go не требует точек с запятой в конце инструкции или объявления, за исключением случаев, когда две или более инструкций находятся в одной и той же строке. По сути, символы новой строки после определенных лексем преобразуются в точки с запятой, так что местоположение символов новой строки имеет значение для корректного синтаксического анализа кода Go. Например, открывающая фигурная скобка { функции должна находиться в той же строке, что и конец объявления func, но не в отдельной строке, а в выражении х + у символ новой строки разрешён после, но не до оператора +. Go занимает жесткую позицию относительно форматирования кода. Инструмент gofmt приводит код к стандартному формату, а подкоманда fmt инструмента go применяет gofmt ко всем файлам в указанном пакете или к файлам в текущем каталоге по умолчанию. Формальное объявление стандартного формата устраняет множество бессмысленных споров о мелочах и, что более важно, разрешает целый ряд автоматизированных преобразований исходного кода, которые были бы неосуществимы при разрешенном произвольном форматировании.

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


2.2 Язык Rust

Rust- мультипарадигменный экспериментальный язык программирования, разработанный Mozilla Labs.  

Работа над языком началась в 2006 году Грейдоном Хоаром. В 2009 году подключились Mozilla Labs. В январе 2012 года был выпущен первый поддерживаемый релиз.

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

Основные характеристики Rust:  

C-подобный синтаксис и значительно отличающаяся семантика;  

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

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

безопасность динамического исполнения: ведение логов, обработка исключительных ситуаций “раскручиванием”;  

система “typestate”, позаимствованная из языка NIL: она позволяет определять сложные инварианты, которые должны сохраняться до и после выполнения операций;

явное управление памятью, расположением объектов и выделением памяти; 

потоки-сопроцессы, требующие минимум ресурсов и как следствие легко создающиеся в огромных количествах;

статическая компиляция, использующая LLVM (в том числе оптимизации) и при необходимости производящая файлы ELF / PE / Mach-O;

простой интерфейс с C; 

поддержка чисто функциональной парадигмы, функции как объекты первого класса;

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

 Создан под влиянием: 

C++;

Erlang; 

Lisp;

ML;

 Парадигма: 

императивная; 

метапрограммирование; 

обобщённая;

объектно-ориентированная; 

параллельная;

структурная;

функциональная; 

 Типизация: 

статическая; 

структурная; 

типизированная. 

 В качестве примера приведём программу Hello, World!

fn main() {

println!("Hello, world!");

}

println! в Rust- это макрос, который отображает текст в консоли.

Исполняемый файл может быть сгенерирован с помощью компилятора Rust - rustc.

rustc создаст исполняемый файл hello, который можно будет запустить.