Файл: Современные языки программирования (ИСТОРИЯ И ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ).pdf

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

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

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

Добавлен: 29.03.2023

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

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

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

На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на Java, но при этом лёгким для использования непрограммистами. Языком JavaScript не владеет какая-либо компания или организация, что отличает его от ряда языков программирования, используемых в веб-разработке.

JavaScript применяется во многих областях от игровой индустрии до разработки веб приложений [14]

Версии JavaScript

ECMAScript 1

выпущенная в 1997 году

Самая первая версия языка

ECMAScript 2

Выпущен в 1998 году

Внесены не значительные исправления.

ECMAScript 3

Выпущен в 1998 году

Добавлены регулярные выражения.

Добавлен оператор try/catch.

ECMAScript 5

Вышел в 2009 году

Добавлен "строгий режим".

Добавлена поддержка JSON.

Добавлен String.trim().

Добавлен Array.isArray().

Добавлены методы обхода элементов массив.

ECMAScript 5.1

Выпущен в 2011 году

Внесены не значительные исправления.

ECMAScript 2015

Добавлены ключевые слова let и const.

Добавлены значения параметров по умолчанию.

Добавлен Array.find().

Добавлен Array.findIndex().

ECMAScript 2016

Добавлен оператор возведения в степень (**).

Добавлен Array.prototype.includes.

ECMAScript 2017

Добавлен "паддинг" строки (дополнение до нужной длины).

Добавлены новые свойства объекта Object.

Добавлены асинхронные функции.

Добавлены разделяемая память и атомарные операции.

ECMAScript 2018

Добавлены свойства rest / spread.

Добавлены асинхронные итерации.

Добавлен Promise.finally().

Добавления в объект RegExp.

2.5 Python

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

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

Эталонной реализацией Python является интерпретатор CPython, поддерживающий большинство активно используемых платформ. Он распространяется под свободной лицензией Python Software Foundation License, позволяющей использовать его без ограничений в любых приложениях, включая проприетарные. Есть реализация интерпретатора для JVM
с возможностью компиляции, CLR, LLVM, другие независимые реализации. Проект PyPy использует JIT-компиляцию, которая значительно увеличивает скорость выполнения Python-программ.


Python — активно развивающийся язык программирования, новые версии с добавлением/изменением языковых свойств выходят примерно раз в два с половиной года. Язык не подвергался официальной стандартизации, роль стандарта де-факто выполняет CPython, разрабатываемый под контролем автора языка. В настоящий момент Python занимает третье место в рейтинге TIOBE с показателем 8,5 %. Аналитики отмечают, что это самый высокий балл Python за все время его присутствия в рейтинге.

Разработчики языка Python придерживаются определённой философии программирования, называемой «The Zen of Python» «Дзен Пито́на». Её текст выдаётся интерпретатором Python по команде import this (работает один раз за сессию). Автором этой философии считается Тим Петерс.

Текст философии:

Красивое лучше, чем уродливое.

Явное лучше, чем неявное.

Простое лучше, чем сложное.

Сложное лучше, чем запутанное.

Плоское лучше, чем вложенное.

Разреженное лучше, чем плотное.

Читаемость имеет значение.

Особые случаи не настолько особые, чтобы нарушать правила.

При этом практичность важнее безупречности.

Ошибки никогда не должны замалчиваться.

Если не замалчиваются явно.

Встретив двусмысленность, отбрось искушение угадать.

Должен существовать один — и, желательно, только один — очевидный способ сделать это.

Хотя он поначалу может быть и не очевиден, если вы не голландец.

Сейчас лучше, чем никогда.

Хотя никогда зачастую лучше, чем прямо сейчас.

Если реализацию сложно объяснить — идея плоха.

Если реализацию легко объяснить — идея, возможно, хороша.

Пространства имён — отличная вещь! Давайте будем делать их больше!

Python портирован и работает почти на всех известных платформах — от КПК до мейнфреймов. Существуют порты под Microsoft Windows, практически все варианты UNIX включая FreeBSD и Linux, Plan 9, Mac OS и macOS, iPhone OS (iOS) 2.0 и выше, iPadOS, Palm OS, OS/2, Amiga, HaikuOS, AS/400 и даже OS/390, Windows Mobile, Symbian и Android.

По мере устаревания платформы её поддержка в основной ветви языка прекращается. Например, с серии 2.6 прекращена поддержка Windows 95, Windows 98 Windows ME. Однако на этих платформах можно использовать предыдущие версии Python — на данный момент сообщество активно поддерживает версии Python начиная от 2.3 (для них выходят исправления).

При этом, в отличие от многих портируемых систем, для всех основных платформ Python имеет поддержку характерных для данной платформы технологий (например, Microsoft COM/DCOM). Более того, существует специальная версия Python для виртуальной машины Java — Jython, что позволяет интерпретатору выполняться на любой системе, поддерживающей Java, при этом классы Java могут непосредственно использоваться из Python и даже быть написанными на Python. Также несколько проектов обеспечивают интеграцию с платформой Microsoft.NET, основные из которых — IronPython и Python.Net.


Разработка языка Python была начата в конце 1980-х годов сотрудником голландского института CWI Гвидо ван Россумом. Для распределённой ОС Amoeba требовался расширяемый скриптовый язык, и Гвидо начал писать Python на досуге, позаимствовав некоторые наработки для языка ABC Гвидо участвовал в разработке этого языка, ориентированного на обучение программированию. В феврале 1991 года Гвидо опубликовал исходный текст в группе новостей alt.sources. С самого начала Python проектировался как объектно-ориентированный язык.

Наличие дружелюбного, отзывчивого сообщества пользователей считается, наряду с дизайнерской интуицией Гвидо, одним из факторов успеха Python. Развитие языка происходит согласно чётко регламентированному процессу создания, обсуждения, отбора и реализации документов PEP англ. Python Enhancement Proposal — предложений по развитию Python.

3 декабря 2008 года, после длительного тестирования, вышла первая версия Python 3000 или Python 3.0, также используется сокращение Py3k.
В Python 3000 устранены многие недостатки архитектуры с максимально возможным, но не полным сохранением совместимости со старыми версиями Python. На сегодня поддерживаются обе ветви развития Python 3.x и 2.x, но поддержка Python 2.7 заканчивается в 2020 году. [18]

2.6 Go

Go часто также Golang — компилируемый многопоточный язык программирования, разработанный внутри компании Google. Разработка Go началась в сентябре 2007 года, его непосредственным проектированием занимались Роберт Гризмер, Роб Пайк и Кен Томпсон, занимавшиеся до этого проектом разработки операционной системы Inferno. Официально язык был представлен в ноябре 2009 года. На данный момент поддержка официального компилятора, разрабатываемого создателями языка, осуществляется для операционных систем FreeBSD, OpenBSD, Linux, macOS, Windows, DragonFly BSD, Plan 9, Solaris, Android, AIX. Также Go поддерживается набором компиляторов gcc, существует несколько независимых реализаций. Ведётся разработка второй версии языка.

Язык Go разрабатывался как язык программирования для создания высокоэффективных программ, работающих на современных распределённых системах и многоядерных процессорах. Он может рассматриваться как попытка создать замену языкам Си и C++ с учётом изменившихся компьютерных технологий и накопленного опыта разработки крупных систем. По словам Роба Пайка, «Go был разработан для решения реальных проблем, возникающих при разработке программного обеспечения в Google». В качестве основных таких проблем он называет:

медленную сборку программ;

неконтролируемые зависимости;


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

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

дублирование разработок;

высокую стоимость обновлений;

несинхронные обновления при дублировании кода;

сложность разработки инструментария;

проблемы межъязыкового взаимодействия.

Основными требованиями к языку стали:

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

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

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

Отсутствие неявных преобразований.

Сборка мусора.

Встроенные средства распараллеливания, простые и эффективные.

Поддержка строк, ассоциативных массивов и коммуникационных каналов.

Чёткое разделение интерфейса и реализации.

Эффективная система пакетов с явным указанием зависимостей, обеспечивающая быструю сборку.

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

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

Хотя для Go доступен и интерпретатор, практически в нём нет большой потребности, так как скорость компиляции достаточно высока для обеспечения интерактивной разработки.

Версии Go

С марта 2012 года, когда была представлена версия Go 1, вышли следующие основные версии:

go 1

28 марта 2012 года

Первая официальная версия; зафиксированы библиотеки, внесены изменения в синтаксис.

go 1.1

13 мая 2013 года

Целочисленное деление на нуль стало синтаксической ошибкой, введены method values — замыкания метода с заданным значением-источником, в некоторых случаях стало необязательным использование return; в реализации разрешено выбирать между 32- и 64-разрядным представлением стандартного целочисленного типа, изменения в поддержке Unicode.


go 1.2

1 декабря 2013 года

Любая попытка обратиться по указателю nil гарантированно вызывает панику, введены трёхиндексные срезы. Доработки Unicode.

go 1.3

18 июня 2014 года

Изменена модель распределения памяти; удалена поддержка платформы Windows 2000, добавлены DragonFly BSD, FreeBSD, NetBSD, OpenBSD, Plan 9, Solaris.

go 1.4

10 декабря 2014 года

Разрешена конструкция цикла «for range x { … }» цикл по коллекции без использования переменных, запрещено двойное автоматическое разыменование при вызове метода если x **T — двойной указатель на тип T, то вызов метода для x в виде x.m()— запрещён; в реализацию добавлена поддержка платформ Android, NaCl on ARM, Plan9 on AMD64.

go 1.5

19 августа 2015 года

В записи map-литералов указание типа каждого элемента сделано факультативным, в реализации среда исполнения и компилятор полностью переписаны на Go и ассемблере, более не используется язык Си.

go 1.6

17 февраля 2016 года

изменений в языке нет, среда портирована на платформы Linux on 64-bit MIPS, Android on 32-bit x86 (android/386), изменения в инструментарии.

go 1.7

16 августа 2016 года

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

go 1.8

7 апреля 2017 года

Ускорена работа встроенного сборщика мусора памяти, модуль «http» получил возможность мягкой остановки, добавлена поддержка процессоров с архитектурой MIPS 32-бит. Внесены исправления в ряд пакетов и утилиты.

go 1.9

24 августа 2017 года

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

go 1.10

16 февраля 2018 года

В язык внесено два уточнения, фактически узаконивших уже существующие реализации, остальные изменения касаются библиотек и инструментария. Выпущено три «трёхзначных» релиза 1.10.1 — 1.10.3, содержащие исправления обнаруженных ошибок.

go 1.11

24 августа 2018 года

Добавлены в качестве экспериментальных поддержка модулей нового механизма версионирования пакетов и управления зависимостями, а также возможность компиляции
в WebAssembly, улучшена поддержка ARM-процессоров, внесены изменения
в инструментарий и библиотеки, в частности добавлен пакет syscall/js; компилятор теперь правильно контролирует использование переменных, объявленных в конструкциях switch с проверкой типа.

go 1.12

25 февраля 2019 года

Исправления в библиотеках и утилитах. Объявлено, что это последний релиз, в котором сохраняется поддержка FreeBSD 10.Х и macOS 10.10. Добавлена поддержка cgo на платформе linux/ppc64. Добавлена поддержка ОС AIX. До августа 2019 в рамках этого релиза вышло девять патч-релизов, исправляющих различные ошибки.