Файл: Современные языки программирования (Автокоды).pdf

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

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

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

Добавлен: 18.05.2023

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

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

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

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

Название «JavaScript» является зарегистрированным товарным зна­ком компании Oracle Corporation.

JavaScript является объектно-ориентированным языком, но используемое в языке прототипирование обуславливает отличия в работе с объектами по срав­нению с традиционными класс-ориентированными языками. Кроме того, JavaScript имеет ряд свойств, присущих функциональным языкам — функции как объекты первого класса, объекты как списки, карринг, анонимные функ­ции, замыкания — что придаёт языку дополнительную гибкость.

Несмотря на схожий с Си синтаксис, JavaScript по сравнению с язы­ком Си имеет коренные отличия:

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

В языке отсутствуют такие полезные вещи, как:

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

2.6 Python

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


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

Python — активно развивающийся язык программирования, новые версии (с добавлением/изменением языковых свойств) выходят примерно раз в два с по­ловиной года. Вследствие этого и некоторых других причин на Python отсут­ствуют стандарт ANSI, ISO или другие официальные стан­дарты, их роль вы­полняет CPython.

2.7 Ruby

Ruby  - динамический, рефлективный, интерпретируемый высокоуровне­вый язык программирования. Язык обладает независимой от операционной си­стемы реализацией многопоточности, стро­гой динамической типиза­цией, сборщиком мусора и многими другими возможностями. По особенно­стям синтаксиса он близок к язы­кам Perl и Eiffel, по объектно-ориентирован­ному подходу — к Smalltalk. Также некоторые черты языка взяты из Python, Lisp, Dylan и Клу.

Кроссплатформенная реализация интерпретатора языка является полно­стью свободной.

Возможности Ruby:

  • Имеет лаконичный и простой синтаксис, частично разработанный под влиянием Ада, Eiffel и Python.
  • Позволяет обрабатывать исключения в стиле Java и Python.
  • Позволяет переопределять операторы, которые на самом деле явля­ются методами.
  • Полностью объектно-ориентированный язык программирования. Все данные в Ruby являются объектами в понимании Smalltalk. Един­ственное исключение — управляющие конструкции, которые в Ruby, в отличие от Smalltalk, не являются объектами. Например, число «1» — это экземпляр класса Integer. Также поддерживается добавление мето­дов в класс и даже в конкретный экземпляр во время выполнения про­граммы.
  • Не поддерживает множественное наследование, но вместо него мо­жет использоваться концепция «примесей», основанная в данном языке на механизме модулей.
  • Содержит автоматический сборщик мусора. Он работает для всех объ­ек­тов Ruby, в том числе для внешних библиотек.
  • Создавать расширения для Ruby на С очень просто частично из-за сбор­щика мусора, частично из-за несложного и удобного API.
  • Поддерживает замыкания с полной привязкой к переменным.
  • Поддерживает блоки кода (код заключается в { … } или do … end). Блоки могут использоваться в методах или преобразовываться в за­мы­кания.
  • Целые переменные в Ruby автоматически конвертируются между ти­пами Fixnum (32-разрядные) и Bignum (больше 32 разрядов) в за­виси­мости от их значения, что позволяет производить целочислен­ные ма­тематические расчёты со сколь угодно большой точностью.
  • Не требует предварительного объявления переменных, но для интер­пре­татора желательно, чтобы переменным присваивалось пу­стое зна­чение nil (тогда интерпретатор знает, что идентификатор обозначает переменную, а не имя метода). Язык использует про­стые соглашения для обозначения области видимости. Пример: просто var — локальная переменная, @var — переменная экзем­пляра (член или поле объекта класса), @@var — переменная класса, $var — глобальная переменная.
  • В Ruby непосредственно в языке реализованы многие шаблоны проек­ти­рования, так, например, «одиночка» (singleton) может быть (хотя и не обязан) реализован добавлением необходимых методов к одному конкретному объекту.
  • Может динамически загружать расширения, если это позво­ляет операционная система.
  • Имеет независимую от ОС поддержку не вытесняю­щей многопоточности.
  • Перенесён на множество платформ. Он разрабатывался на Linux, но ра­ботает на многих версиях Unix, DOS, Microsoft Windows (в част­но­сти, Win32), Mac OS, BeOS, OS/2 и т. д.

2.8 PHP

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

Язык и его интерпретатор (Zend Engine) разрабатываются группой энтузиастов в рамках проекта с открытым кодом. Проект распространяется под собственной лицензией, несовместимой с GNU GPL.

В области веб-программирования, в частности серверной части, PHP — один из популярных сценарных языков (наряду с JSP, Perl и языками, используемыми в ASP.NET).

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

  • автоматическое извлечение POST и GET-параметров, а также перемен­ных окружения веб-сервера в предопределённые массивы;
  • взаимодействие с большим количеством различных систем управления базами данных;
  • автоматизированная отправка HTTP-заголовков;
  • работа с HTTP-авторизацией;
  • работа с cookies и сессиями;
  • работа с локальными и удалёнными файлами, сокетами;
  • обработка файлов, загружаемых на сервер;
  • работа с XForms.
  • В настоящее время PHP используется сотнями тысяч разработчиков. Со­гласно рейтингу корпорации TIOBE, базирующемся на данных по­исковых систем, в мае 2016 года PHP находился на 6 месте среди язы­ков программирования. К крупнейшим сайтам, использующим PHP, относятся Facebook, Wikipedia и др.
  • Входит в LAMP — распространённый набор программного обеспече­ния для создания и хостинга веб-сайтов (Linux, Apache, MySQL, PHP).

2.9 CSS

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

Преимущественно используется как средство описания, оформления внешнего вида веб-страниц, написанных с помощью языков разметки HTML и XHTML, но может также применяться к любым XML-документам, например, к SVG или XUL.

CSS используется создателями веб-страниц для задания цветов, шрифтов, рас­положения отдельных блоков и других аспектов представления внешнего вида этих веб-страниц. Основной целью разработки CSS являлось разделение описа­ния логической структуры веб-страницы (которое производится с помо­щью HTML или других языков разметки) от описания внешнего вида этой веб-страницы (которое теперь производится с помощью формального языка CSS). Такое разделение может увеличить доступность документа, предоставить большую гибкость и возможность управления его представлением, а также уменьшить сложность и повторяемость в структурном содержимом. Кроме того, CSS позволяет представлять один и тот же документ в различных стилях или методах вывода, таких как экранное представление, печатное представле­ние, чтение голосом (специальным голосовым браузером или программой чте­ния с экрана), или при выводе устройствами, использующими шрифт Брайля.


2.10 Go

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

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

Основные возможности языка Go:

  • Go — язык со строгой статической типизацией. Доступен автоматический вы­вод типов, для пользовательских типов — «утиная типизация».
  • Полноценная поддержка указателей, но без возможности применять к ним арифметические операции, в отличие от C/C++/D.
  • Строковый тип со встроенной поддержкой юникода.
  • Использование динамических массивов, хэш-таблиц, срезов (слайсов), вариант цикла для обхода коллекции.
  • Средства функционального программирования: неименованные функции, за­мыкания, передача функций в параметрах и возврат функциональных значений.
  • Автоматическое управление памятью со сборщиком мусора.
  • Средства объектно-ориентированного программирования, но без поддержки наследования реализации (наследуются только интерфейсы). По большому счёту, Go является процедурным языком с поддержкой интерфейсов.
  • Средства параллельного программирования: встроенные в язык потоки (go routines), взаимодействие потоков через каналы и другие средства организации многопоточных программ.
  • Достаточно лаконичный и простой синтаксис, основанный на Си, но суще­ственно доработанный, с большим количеством синтаксического сахара.

При этом из языка сознательно исключены:

  • Структурная запись обработчиков исключений. Вместо неё предлага­ется проверка кодов возврата с использованием многозначных функ­ций и использование отложенных (deferred) функций и специального интерфейса error для перехвата исключительных ситуаций.
  • Наследование реализации. В качестве замены предлагается анонимное вложение типов.
  • Обобщённое программирование.
  • Использование утверждений.
  • переопределение методов.

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

2.11 Scala

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

Первые версии языка созданы в 2003 году коллективом лаборатории методов программирования Федеральной политехнической школы Лозанны под руко­водством Мартина Одерски, язык реализован для платформ Java и .Net. По мнению Джеймса Стрэчена , создателя языка программирования Groovy, Scala может стать преемником языка Java.

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

В Scala включены мощные и единообразные концепции абстракций как для ти­пов, так и для значений. В частности, язык содержит гибкие симметричные конструкции примесей для композиции классов и типажей. Возможно, позво­ляет производить декомпозицию объектов путём сравнения с образцом; об­разцы и выражения при этом были обобщены для поддержки естественной об­работки XML-документов. В целом, эти конструкции позволяют легко выра­жать самостоятельные компоненты, использующие библиотеки Scala, не поль­зуясь специальными языковыми конструкциями.

Язык допускает внешние расширения компонентов с использованием представ­лений (views). Возможности обобщённого программирования реализуются за счёт поддержки обобщённых функций (generics), в том числе высшего типажа (generics of a higher kind). Кроме различных классических структурных типов данных, в язык включена поддержка экзистенциальных типов.

2.12 Swift

Swift — открытый мультипарадигмальный компилируемый язык программиро­вания общего назначения. Создан компанией Apple в первую очередь для раз­работчиков iOS и macOS. Swift работает с фреймворками Cocoa и Cocoa Touch и совместим с основной кодовой базой Apple, написанной на Objective-C. Swift задумывался как более легкий для чтения и устойчивый к ошибкам про­граммиста язык, нежели предшествовавший ему Objective-C. Программы на Swift компилируются при помощи LLVM, входящей в интегрированную среду разработки Xcode 6 и выше. Swift может использовать рантайм Objective-C, что делает возможным использование обоих языков (а также С) в рамках одной программы. Swift заимствовал довольно многое из Objective-C, однако он опре­деляется не указателями, а типами переменных, которые обрабаты­вает компилятор. По аналогичному принципу работают многие скриптовые языки. В то же время, он предоставляет разработчикам многие функции, кото­рые прежде были доступны в C++ и Java, такие как определяемые наименова­ния, так называемые обобщения и перегрузка операторов.