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

Современные языки программирования

Содержание:

ВВЕДЕНИЕ

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

Самые первые языки программирования были простейшими и мало чем отличались от машинных последовательностей нулей и единичек, которые использует компьютер. Работа с такими языками была очень сложная для программистов, им нужно было знать числовые коды всех машинных команд, самим регулировать объемы памяти под команды, программы и данные. Для более простого общения человека с ЭВМ были созданы языки программирования типа Ассамблера. Язык создала команда разработчиков в компании IBM под руководством инженера Джона Бэкуса. Язык представлял собой не просто совокупность разрозненных простых команд, а группы более крупных кодов, которые стали называть операторами. Для перевода этих операторов на машинный язык были изобретены трансляторы, с помощью которых алгоритмы переводятся на язык понятный ЭВМ.

В настоящее время языки программирования применяются в разных областях человеческой деятельности. Настолько проникли в повседневную жизнь человека, что человек их не замечаем. Например, каждый день человек отправляется на работу, чтоб пройти турникет в метро, необходимо приложить специальную карточку метро или воспользоваться приложением в телефоне для входа в метро. Система сканирует чип, который встроен в карточку метро, а в телефоне NFC (Near field communication – переводится, коммуникация ближнего поля) – это интерфейс беспроводной связи, где главная характеристика является небольшой радиус действия до 10 см. Благодаря развитию информационных технологий и современных языкам программирования, человечество шагнуло в цифровой мир, где появились IoT (internet of things) – интернет вещи, связанные по сети интернета устройства, которые выполняют различные цели и задачи.

Целью курсовой работы является изучить теоретический материал по современным языкам программирования. Создать не большую программу на одном из языков программирования (Python) – блог. Познакомится, что такое операторы, массивы, функции в языке программирование. Рассмотреть синтаксис языка программирования Python и фреймворк Django.

ЧАСТЬ 1. История возникновения программирования. Основные принципы и подходы при создании языков программирования

1.1 Начало истории программирования

С глубокой древности известны попытки создать устройства, ускоряющие и облегчающие процесс вычислений. Еще древние греки и римляне применяли приспособление, подобное счетам - абак. Такие устройства были известны и в странах Древнего Востока. В XV века немецкие ученые В. Шиккард, Г.Лейбниц и французский ученый Б. Паскаль создали механические вычислительные устройства - предшественники всем известного арифмометра. Вычислительные машины совершенствовались в течении нескольких веков. Но при этом не применялось понятие «программа и программирование».

В начале XIX века английский ученый, профессор математики Кэмбриджского университета Чарльз Бэббидж, анализируя результаты обработки переписи населения во Франции, теоретически исследовал процесс выполнения вычислений и обосновал основы архитектуры вычислительной машины. Работая над проектом аналитической машины - «Машины для исчисления разностей», Ч. Бэббидж предсказал многие идеи и принципы организации и работы современных ЭВМ, в частности принцип программного управления и запоминаемой программы. Общая увлеченность наукой дала ученому и Аде Лавлейс долгие годы плодотворного сотрудничества. В 1843 году она перевела статью Менабреа по лекциям

Ч. Бэббиджа, где в виде подробных комментариев (по объему они превосходили основной текст) сформулировала главные принципы программирования аналитической машины. Она разработала первую программу в 1843 году для машины Бэббиджа, убедила его в необходимости использования в изобретении двоичной системы счисления вместо десятичной, разработала принципы программирования, предусматривающие повторение одной и той же последовательности команд при определенных условиях. Именно она предложила термины «рабочая ячейка» и «цикл».

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

В 1854 году английский математик Джордж Буль опубликовал книгу «Законы мышления», в которой развил алгебру высказываний - Булеву алгебру. На ее основе в начале 80-х гг. XIX в. построена теория релейно-контактных схем и конструирования сложных дискретных автоматов. Алгебра логики оказала многогранное влияние на развитие вычислительной техники, являясь инструментом разработки и анализа сложных схем, инструментом оптимизации большого числа логических элементов, из многих тысяч которых состоит современная ЭВМ.

Идеи Ч. Бэббиджа реализовал американский ученый Г. Холлерит, который с помощью построенной счетно-аналитической машины и перфокарт за три года обработал результаты переписи населения в США по состоянию на 1890 года. В машине впервые было использовано электричество. В 1896 году Холлеритом была основана фирма по выпуску вычислительных перфорационных машин и перфокарт.

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

В 40-х гг. XX в. механическая элементная база вычислительных машин стала заменяться электрическими и электронными устройствами. Первые электромеханические машины были созданы в Германии К. Цузе (Ц-3, 1941г.) и в США под руководством профессора Гарвардского университета Г. Айкена (МАРК-1, 1944 г.). Первая электронная машина создана в США группой инженеров под руководством доктора Пенсильванского университета Дж. Мочли и аспиранта Дж. Экксрта (ЭНИАК - электронный числовой интегратор и калькулятор, 1946 г.). В 1949 году в Англии была построена EDSAC - первая машина, обладающая автоматическим программным управлением, внутренним запоминающим устройством и другими необходимыми компонентами современных ЭВМ.

Логические схемы вычислительных машин были разработаны в конце 1940-х гг. Дж. фон Нейманом, Г. Гольдстайном и А. В. Берксом. Особый вклад в эту работу внес американский математик Джон фон Нейман, принимавший участие в создании ЭНИАК. Он предложил идею хранения команд управления и данных в машинной памяти и сформулировал основные принципы построения современных ЭВМ. ЭВМ с хранимой программой оказались более быстродействующими и гибкими, чем ранее созданные.

В 1951 году в США было налажено первое серийное производство электронных машин УНИВАК (универсальная автоматическая вычислительная машина). В это же время фирма IBM начала серийный выпуск машины IBM/701.

В СССР первыми авторами ЭВМ, изобретенной в декабре 1948 года, являются И. С. Брук и Б. И. Рамеев. А первая советская ЭВМ с сохраняющейся программой создана в 1951 году под руководством С. А Лебедева (МЭСМ - малая электронная счетная машина). В 1953 году в Советском Союзе начался серийный выпуск машин, первыми их которых были БЭСМ-1, «Стрела».

С появлением цифровых программно-управляемых машин родилась новая область прикладной математики - программирование. Как область науки и профессия она возникла в 1950-х гг. Первоначально программы составлялись вручную на машинных языках (в машинных кодах). Программы были громоздки, их отладка - очень трудоемка. Для упрощения приемов и методов составления и отладки программ были созданы мнемокоды, по структуре близкие к машинному языку и использующие символьную адресацию. Ассемблеры переводили программу, записанную в мнемокоде, на машинный язык и, расширенные макрокомандами, используются и в настоящее время. Далее были созданы автокоды, которые можно применять на различных машинах, и позволившие обмениваться программами. Автокод - набор псевдокоманд для решения специализированных задач, например научных или инженерных. Для таких задач имеется развитая библиотека стандартных программ.

До конца 1950-х гг. ЭВМ основным элементом конструкции были электронные лампы (1-е поколение). В этот период развитие идеологии и техники программирования шло за счет достижений американских ученых Дж. фон Неймана, сформулировавшего основные принципы построения ЭВМ, и Дж. Бэкуса, под руководством которого в 1954 году был создан Fortran (Formula Translation) - первый язык программирования высокого уровня, используемый до настоящего времени в разных модификациях. Так, в 1965 году в Дартмутском колледже Д. Кэмэни и Т. Куртцем была разработана упрощенная версия Фортрана - Basic. В 1966 году комиссия при Американской ассоциации стандартов (ASA) разработала два стандарта языка: Фортран и Базисный Фортран. Используются также дальнейшие модификации языка (например, 1970, 1990 гг.).

Достижения в области электроники и микроэлектроники позволили заменить элементную базу ЭВМ на более совершенную. В конце 1950-х гг. громоздкие электронные лампы заменяют полупроводниками (миниатюрными транзисторами). Появляются ЭВМ II поколения; затем примерно через 10 лет - ЭВМ III поколения на интегральных схемах; еще через 10 лет - ЭВМ IV поколения на больших интегральных схемах (БИС). В Японии в 1990-х гг. реализованы проекты ЭВМ V поколения, в которых использованы достижения в области искусственного интеллекта и биоэлектроники. Если объем оперативного запоминающего устройства (ОЗУ) одной из лучших отечественных машин 1960-х гг. М-20, созданной под руководством С.А.Лебедева в 1958 году, имел 4096 слов (8 Кбайт) и быстродействие 20 тыс. операций в секунду, то современные персональные компьютеры характеризуются ОЗУ в десятки Мбайт и быстродействием в сотни миллионов операций в секунду, что позволяет решать сложнейшие задачи.

В 1953 году А.А.Ляпуновым был предложен операторный метод программирования, который заключался в автоматизации программирования, а алгоритм решения задачи представлялся в виде совокупности операторов, образующих логическую схему задачи. Схемы позволяли расчленить громоздкий процесс составления программы, части которой составлялись по формальным правилам, а затем объединялись в целое. Для проверки идей операторного метода в СССР в 1954 году была разработана первая программирующая программа ПП-1, а в 1955 году более совершенная - ПП-2. В 1956 году разработана ПП БЭСМ, в 1957 году - ППСВ, в 1958 году - для машины «Стрела».

В США в 1954 г. стал применяться алгебраический подход, совпадающий, по существу, с операторным методом. В 1956 году корпорацией IBM разработана универсальная ПП Фортран для автоматического программирования на ЭВМ IBM/704.

В этот период по мере накопления опыта и теоретического осмысления совершенствовались языки программирования. В 1958-1960 гг. в Европе был создан ALGOL, который породил целую серию алголоподобных языков: Algol W, (1967), Algol 68, Pascal (Н. Вирт, 1970 г.), С (Д. Ритчи и Б. Керниган, 1972 г.), Ada (под руководством Ж. Ишбиа, 1979 г.), C++ (1983).
В 1961-1962 гг. Дж. Маккарти в Массачусетском технологическом институте был создан язык функционального программирования Lisp, открывший в программировании одно из альтернативных направлений, предложенных Дж. фон Нейманом.

На начало 1970-х гг. существовало более 700 языков высокого уровня и около 300 трансляторов для автоматизации программирования.

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

В 1965 году итальянцы Бом и Джакопини предложили использовать в качестве базовых алгоритмических элементов следование, ветвление и цикл. Почти в то же время к аналогичным выводам пришел голландский ученый Э. Дийкстра, заложивший основы структурного программирования. В 1970-х гг. эта методология оформилась, и корпорация IBM сообщила о применении в разработке программного обеспечения «Усовершенствованных методов программирования», одним из компонентов которых являлась технология нисходящего структурного программирования, основу которого составляет следующее:

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

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

Развитие получило модульное программирование, основа которого заключается в следующем:

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

В период 1970-1980-х гг. развитие теоретических исследований оформило программирование как самостоятельную научную дисциплину, занимающуюся методами разработки программного обеспечения (ПО).

В истории развития промышленного программирования большую роль сыграл программист и бизнесмен Билл Гейтс (Gates William Henry, p. в 1955 г.). Гейтс и его школьный товарищ Пол Аллен основали компанию по анализу уличного движения «Трэф-О-Дейта» и использовали для обработки данных компьютеры с микропроцессором 8008 первым из знаменитого ряда микропроцессоров компании «Intel». Будучи студентом Гарвардского университета, в 1975 году он совместно с Алленом написал для компьютера Altair (фирмы M1TS) интерпретатор - программу переводчик с языка программирования на язык машинных кодов.

Профессиональное программирование вышло на уровень технологии. Методы разработки ПО синтезируют:

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

1.3 Объектно-ориентированное программирование

На смену структурному программированию в начале 1990-х гг. пришло объектно-ориентированное программирование - ООП. Его можно рассматривать как модульное программирование нового уровня, когда вместо во многом случайного, механического объединения процедур и данных главным становится их смысловая связь. Объект рассматривается как логическая единица, которая содержит данные и правила (методы) их обработки. Объектно-ориентированный язык создает «программное окружение» в виде множества независимых объектов, каждый из которых отличается своими свойствами и способами взаимодействия с другими объектами. Программист задает совокупность операций, описывая структуру обмена сообщениями между объектами. Как правило, он «не заглядывает» внутрь объектов, но при необходимости может изменять элементы внутри объектов или формировать новые.

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

  1. Инкапсуляция - объединение в единое целое данных и алгоритмов их обработки. Данные здесь - поля объекта, а алгоритмы - объектные методы.
  2. Наследование - свойство объектов порождать своих потомков. Объект-потомок автоматически наследует все поля и методы, может дополнять объекты новыми полями, заменять и дополнять методы.
  3. Полиморфизм - свойство родственных объектов решать схожие по смыслу проблемы разными способами.

Идея использования программных объектов исследовалась в течение ряда лет разными учеными. Одним из первых языков этого типа считают Simula-67. А в 1972 году появился язык Smoltalk, разработанный Аланом Кеем, утвердивший статус ООП.

На современном этапе развиваются инструментальные среды и системы визуального программирования для создания программ на языках высокого уровня: (Turbo Pascal, Delphi, Visual Basic, C++Builder и др.).

1.4 Компонентное программирование

Развитие основных принципов объектно-ориентированного программирования получило с появлением компонентного программирования (КП). КП - динамический процесс без жестких правил, выполняющийся в основном для распределенной разработки (программирования) распределенных систем. Суть КП в том, что независимые проектировщики, программисты разрабатывают независимые компоненты (отдельные части) единой системы, распределенные по множеству узлов большой сети. Эти части могут принадлежать разным собственникам и управляться организационно независимыми администраторами.

В КП компонент рассматривается как хранилище (в виде DLL-или ЕХЕ файлов) для одного или нескольких классов. Классы распространяются в бинарном виде, а не в виде исходного кода. Предоставление доступа к методам класса осуществляется через строго определенные интерфейсы по протоколу. Это снимает проблему несовместимости компиляторов, обеспечивая без перекомпиляции смену версий классов в разных приложениях. Интерфейсы задают содержание сервиса и являются посредником между клиентом и сервером.

Фирма Microsoft создала технологии для распределенной разработки распределенных систем, такие как COM (Component Object Model), COM+, .NET. Разработаны и другие технологии: CORBA (консорциума OMG), JAVA (компании Sun Microsystem) и др.

Идея переложить на ЭВМ функции составителей алгоритмов и программистов дала новые возможности развитию сферы искусственного интеллекта, которая должна была создавать методы автоматического решения интеллектуальных задач. Формализация знаний, которые есть у профессионалов в разных областях, накопление их в базах знаний, реализованных на ЭВМ, стали основанием для создания экспертных систем. На основе баз знаний работают и ЭВМ V поколения, и интеллектуальные роботы, и экспертные системы. Эти системы могут не только найти решение той или иной задачи, но и объяснить, как оно получено. Появилась возможность манипулировать знаниями, иметь знания о знаниях - метазнания. Знания, хранящиеся в системе, стали объектом ее собственных исследований.

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

В конце 1980-х гг. в Японии и США появились проекты ЭВМ V поколения, реализованные в конце 1990-х гг. Прогресс в программировании связан с прогрессом в архитектуре вычислительных систем, отходом от фон-неймановской концепции, с достижениями в области искусственного интеллекта. Революционные изменения в элементной базе ЭВМ связываются с исследованиями по биоэлектронике.

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

  1. (внутренний) программы для аппаратуры;
  2. ядро ОС;
  3. программы сопряжения;
  4. часть ОС, ориентированная на пользователя;
  5. системы программирования;
  6. (внешний) программы пользователя.

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

1.5 Применение структурных и объектно-ориентированных методов программирования

Широкое применение структурных и объектно-ориентированных методов программирования с использованием графических моделей объединялось отсутствием инструментальных средств. Это породило потребность в программно-технологических средствах специального класса - CASE (Computer Aided Software Engineering), реализующих технологию создания и сопровождения ПО различных систем. Предпосылки для появления CASE-технологий возникли к концу 1980-х гг. Первоначально термин «CASE» применялся только к вопросам автоматизации разработки ПО, теперь программная инженерия имеет более широкое значение для разработки систем в целом. В CASE-технологии входит разработка и внедрение языков высокого уровня, методов структурного и модульного программирования, языков проектирования и средств их поддержки, формальных и неформальных языков описания системных требований.

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

В начале этого столетия текстовые процессоры стали более совершенными. Наряду с более простыми (например, Professional Write и др.) появились такие мощные, как MS WinWord, WordPerfect WordStar 2000 и др. Из отечественных широкое распространение получил текстовый процессор Лексикон.

С начала 1980-х гг. для подготовки и обработки числовой информации стали использоваться табличные процессоры. В 1979 году Д. Брикклин предложил первую программу для работы с электронными таблицами VisiCalc. В 1981 году была разработана система SuperCalc фирмы «Computer Associates», в 1982 году - Multiplan фирмы «Microsoft», далее - пакет для IBM PC Lotusl-2-3 фирмы «Lotus Development», русифицированные пакеты АБАК, ДРАКОН и др. В 1985 году появился табличный процессор Excel фирмы «Microsoft» первоначально для персонального компьютера Macintosh, а затем для совместимых с IBM PC. Этот процессор разрабатывался параллельно с ОС Windows, его версии вобрали в себя все черты графиче-ского интерфейса, вплоть до версий Excel 5.0 как приложения Windows 3.1, Excel 7.0 как приложения Windows 95 и т. д. В последние годы создано достаточно много систем подготовки табличных документов, т.е. электронных таблиц, табличных процессоров (например, Corel Quattro 6.0 фирмы «Corel Co», Lotus 5.0 фирмы «Lotus Development Co», Office Proftessional for Windows фирмы «Microsoft». Но наиболее широко используют электронные таблицы Excel.

Разработано большое количество стандартных реляционных систем управления базами данных - СУБД (например, MS Access, paradox и др.), на основе которых строят реляционные базы данных в различных предметных областях.

Для многих организаций (особенно управленческих) разработаны так называемые офисные пакеты, в которых на основе единой ОС функционируют приложения, включающие в себя системы для работы с различными видами информации. Например, созданы пакеты приложений к ОС Windows (MS Office, WordPerfect Office фирмы «Corel», StarOffice фирмы «SunMicrosystems» и др.), которые включают программные средства для выполнения функций обработки всех видов информации. Например, MS Office включает совершенствующиеся год от года (в зависимости от последней версии ОС Windows) средства обработки текста (MS Word), графики (Photo Draw) и презентаций (PowerPoint), таблиц (Excel), баз данных (Access), электронной почты (Outlook), работы во Всемирной паутине (FrontPage), создания звуковых клипов (MS Sound Recorder).

1.6 Новые направления в программировании

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

За рубежом в 1960-х гг. появились первые вычислительные сети, с которых началась техническая и технологическая революция, т.к. была предпринята попытка объединить технологию сбора, хранения, передачи и обработки информации на ЭВМ с техникой связи. В Европе в те годы были созданы международные сети EIN и Евро-нет, затем появились национальные сети. В 1972 году в Вене была создана сеть МИПСА, к которой присоединились в 1979 году 17 стран Европы, СССР, США, Канада и Япония. В 1980-х гг. в нашей стране была создана система телеобработки статистической информации, обслуживающая государственные и республиканские органы статистики.

ЧАСТЬ 2. Обзор современных языков программирования и их возможностей

2.1 Основной список современных языков программирования

  • Kotlin
  • HCL
  • Go
  • Javascript
  • Typescript
  • Python
  • Java
  • PHP

2.2. Описание современных языков

Kotlin (Ко́тлин) - статически типизированный, объектно-ориентированный язык программирования, работающий поверх Java Virtual Machine и разрабатываемый компанией JetBrains. Также компилируется в JavaScript и в исполняемый код ряда платформ через инфраструктуру LLVM. Язык назван в честь острова Котлин в Финском заливе, на котором расположен город Кронштадт.

Авторы ставили целью создать язык более лаконичный и типобезопасный, чем Java, и более простой, чем Scala. Следствием упрощения по сравнению со Scala стали также более быстрая компиляция и лучшая поддержка языка в IDE. Язык полностью совместим с Java, что позволяет java-разработчикам постепенно перейти к его использованию; в частности, в Android язык встраивается с помощью Gradle, что позволяет для существующего android-приложения внедрять новые функции на Kotlin без переписывания приложения целиком.

Язык разрабатывается с 2010 года, представлен общественности в июле 2011. Исходный код реализации языка открыт в феврале 2012. В феврале выпущен milestone 1, включающий плагин для IDEA. В июне — milestone 2 с поддержкой Android. В декабре 2012 года вышел milestone 4, включающий, в частности, поддержку Java 7.

В феврале 2016 года вышел официальный релиз-кандидат версии 1.0, а 15 февраля 2016 года - релиз 1.0. 1 марта 2017 вышел релиз 1.1.

В мае 2017 года компания Google сообщила, что инструменты языка Kotlin, основанные на JetBrains IDE, будут по стандарту включены в Android Studio 3.0 - официальный инструмент разработки для ОС Android.

На Google I/O 2019 было объявлено, что язык программирования Kotlin стал приоритетным в разработке под Android.

Синтаксис языка использует элементы из Паскаля, TypeScript, Haxe, PL/SQL, F#, Go и Scala, C++, Java, C#, Rust и D. При объявлении переменных и параметров типы данных указываются после названия (разделитель - двоеточие). Точка с запятой, как разделитель операторов, также необязательна (как в Scala и Groovy); в большинстве случаев перевода строки достаточно, чтобы компилятор понял, что выражение закончилось. Кроме объектно-ориентированного подхода, Kotlin также поддерживает процедурный стиль с использованием функций. Как и в Си, C++ и D, точка входа в программу - функция main, принимающая массив параметров командной строки. Программы на Kotlin также поддерживают perl- и shell-стиль интерполяции строк (переменные, включённые в строку, заменяются на их содержимое). Также поддерживается, примеры кода на рис:

fun main() {

val scope = "world"

println("Hello, $scope!")

}

fun sayHello(maybe: String?, neverNull: Int) {

// use of elvis operator

val name: String = maybe ?: "stranger"

println("Hello $name")

}

Рисунок 1

HCL (HashiCorp Configuration Language) - язык построен компанией HashiCorp. Удобный язык для DevOps-разработчиков с целью помочь им генерировать больше кода за меньшее время. По сравнению с прошлым годом сообщество языка удвоилось, и даже больше. 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 доступен и интерпретатор, практически в нём нет большой потребности, так как скорость компиляции достаточно высока для обеспечения интерактивной разработки.

JavaScript - мультипарадигменный язык программирования. Поддерживает объектно-ориентированный, императивный и функциональный стили. Является реализацией стандарта ECMAScript (стандарт ECMA-262).

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

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

Название «JavaScript» является зарегистрированным товарным знаком корпорации Oracle в США.

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

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

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

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

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

TypeScript — язык программирования, представленный Microsoft в 2012 году и позиционируемый как средство разработки веб-приложений, расширяющее возможности JavaScript. Разработчиком языка TypeScript является Андерс Хейлсберг (англ. Anders Hejlsberg), создавший ранее Turbo Pascal, Delphi и C#.

Спецификации языка открыты и опубликованы в рамках соглашения Open Web Foundation Specification Agreement (OWFa 1.0).

TypeScript является обратно совместимым с JavaScript и компилируется в последний. Фактически, после компиляции программу на TypeScript можно выполнять в любом современном браузере или использовать совместно с серверной платформой Node.js. Код экспериментального компилятора, транслирующего TypeScript в JavaScript, распространяется под лицензией Apache. Его разработка ведётся в публичном репозитории через сервис GitHub.

TypeScript отличается от JavaScript возможностью явного статического назначения типов, поддержкой использования полноценных классов (как в традиционных объектно-ориентированных языках), а также поддержкой подключения модулей, что призвано повысить скорость разработки, облегчить читаемость, рефакторинг и повторное использование кода, помочь осуществлять поиск ошибок на этапе разработки и компиляции, и, возможно, ускорить выполнение программ. Планируется, что в силу полной обратной совместимости адаптация существующих приложений на новый язык программирования может происходить поэтапно, путём постепенного определения типов. На момент релиза представлены файлы для восприятия расширенного синтаксиса TypeScript для Vim и Emacs, а также плагин для Microsoft Visual Studio. Одновременно с выходом спецификации разработчики подготовили файлы с декларациями статических типов для некоторых популярных JavaScript-библиотек, среди которых jQuery.

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

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

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

Java - строго типизированный объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Разработка ведётся сообществом, организованным через Java Community Process, язык и основные реализующие его технологии распространяются по лицензии GPL. Права на торговую марку принадлежат корпорации Oracle.

Приложения Java обычно транслируются в специальный байт-код, поэтому они могут работать на любой компьютерной архитектуре, для которой существует реализация виртуальной Java-машины. Дата официального выпуска - 23 мая 1995 года. На 2019 год Java - один из самых популярных языков программирования. Программы на Java транслируются в байт-код Java, выполняемый виртуальной машиной Java (JVM) - программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.

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

Часто к недостаткам концепции виртуальной машины относят снижение производительности. Ряд усовершенствований несколько увеличил скорость выполнения программ на Java:

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

По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10 - 30 раз больше, чем программой на C/C++. Также примечательно исследование, проведённое компанией Google, согласно которому отмечается существенно более низкая производительность и бо́льшее потребление памяти в тестовых примерах на Java в сравнении с аналогичными программами на C++.

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

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

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

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

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

  • автоматическое извлечение POST- и GET-параметров, а также переменных окружения веб-сервера в предопределённые массивы;
  • взаимодействие с большим количеством различных систем управления базами данных через дополнительные модули (MySQL, MySQLi, SQLite, PostgreSQL, Oracle (OCI8), Oracle, Microsoft SQL Server, Sybase, ODBC, mSQL, IBM DB2, Cloudscape и Apache Derby, Informix, Ovrimos SQL, Lotus Notes, DB++, DBM, dBase, DBX, FrontBase, FilePro, Ingres II, SESAM, Firebird / InterBase, Paradox File Access, MaxDB, Интерфейс PDO), Redis;
  • автоматизированная отправка HTTP-заголовков;
  • работа с HTTP-авторизацией;
  • работа с cookies и сессиями;
  • работа с локальными и удалёнными файлами, сокетами;
  • обработка файлов, загружаемых на сервер;
  • работа с XForms.

В настоящее время PHP используется сотнями тысяч разработчиков. Согласно рейтингу корпорации TIOBE, базирующемуся на данных поисковых систем, в мае 2016 года PHP находился на 6 месте среди языков программирования. К крупнейшим сайтам, использующим PHP, относятся Facebook, Wikipedia и др.

Входит в LAMP — распространённый набор программного обеспечения для создания и хостинга веб-сайтов (Linux, Apache, MySQL, PHP).

ЧАСТЬ 3. Разработка веб-приложения на основе фреймворка Django.

Django (Джанго) - свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC. Проект поддерживается организацией Django Software Foundation. Сайт на Django строится из одного или нескольких приложений, которые рекомендуется делать отчуждаемыми и подключаемыми. Это одно из существенных архитектурных отличий этого фреймворка от некоторых других (например, Ruby on Rails). Один из основных принципов фреймворка - DRY (англ. Don't repeat yourself). Также, в отличие от других фреймворков, обработчики URL в Django конфигурируются явно при помощи регулярных выражений. Для работы с базой данных Django использует собственный ORM, в котором модель данных описывается классами Python, и по ней генерируется схема базы данных.

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

Веб-приложение разрабатывается в современной среде разработки JetBrains PyCharm 2019.2.4. Прежде чем переходить к разработке, на операционной системе должен быть предустановлен Python, в моём случае ОС Windows 10 Pro (Рис 1.)

Рис 1. Версия Python 3.8

А также должны быть подключены следующие модули, которые отображены на рис 2.

Рис 2. Отображение модулей подключенные в проекте.

Рис 3. Структура проекта

И так, при помощи команды startproject создалась директория Blog, сейчас ее рассмотрим:

  1. manage.py: Скрипт, который позволяет вам взаимодействовать с проектом Django.
  2. blog/__init__.py: Пустой файл, который указывает Python, что текущий каталог является пакетом Python.
  3. blog/settings.py: Настройки/конфигурация проекта.
  4. blog/urls.py: Конфигурация URL-ов для вашего проекта Django.
  5. blog/wsgi.py: Точка входа вашего проекта для WSGI-совместимых веб-серверов.
  6. blog/asgi.py: Точка входа вашего проекта для ASGI-совместимых веб-серверов.

Рассмотрим теперь главный конфигурационный файл settings.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) //путь к главной директории проекта
SECRET_KEY = 'lly9fw$$09a43wc^6s6qw#s$sz821&@kz(p7jo6yj#moju*=6a' //секретный ключ проекта
DEBUG = True //диагностика проекта на
ALLOWED_HOSTS = [] // описание хоста, где лежит будет прослушиваться данный проект
INSTALLED_APPS = [ //подключение приложений
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'webexamle.apps.WebexamleConfig',
'startapp.apps.StartappConfig',
]
MIDDLEWARE = [ // описание зависимостей
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'Blog.urls' //главный маршрутный файл
TEMPLATES = [ //шаблоны проекта
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'Blog.wsgi.application'

DATABASES = { // база данных
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}


AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
LANGUAGE_CODE = 'ru'

TIME_ZONE = 'Europe/Moscow'

USE_I18N = True

USE_L10N = True

USE_TZ = True


STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
STATIC_URL = '/static/'

После создания проекта и настройки файла settings.py требуется создать супер-пользователя для управления административной панелью, используя команду python manage.py createsuperuser. Затем предлагается сгенерировать логин, почтовый адрес и пароль администратора административной панели управления сайтом.

Рис 4. Генерация супер-пользователя.

После всех этих манипуляция вводим команду python manage.py migrate, для того чтобы создались таблицы в БД.

Рис 5. Созданные таблицы в БД.

Теперь перейдем к файлу urls.py, в каталоге blog. Файл urls.py, в данном каталоге является главным маршрутным файлом.

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
path('admin/', admin.site.urls), //админская часть
path('', include('webexamle.urls')), // главная страница блога
path('news/',include('startapp.urls')), // страница новостей
]

Итак, в данном проекте создано два приложения, одно из них это startapp.

Рис 6. Описание приложения startapp

Как видно на рис 2. Приложения в себя включает файл models.py, для генераций таблиц в БД, в приложении используется база данных – Sqlite3. Рассмотрим поподробнее файл models.py, а также затроним файлы в папке migrations.

Содержимое файла models.py:

from django.db import models


class Articles(models.Model):
title = models.CharField(max_length=120) // поле для заголовка статьи
post = models.TextField() // описание статьи
date = models.DateTimeField() // дата публикации

def __str__(self):
return self.title

Тем самым обозначили нужные поля для дальнейшего заполнения. После этого используем команду python manage.py migrate, после этой команды python manage.py makemigrations. После данных операций у нас в приложении появились файл 0001_initial.py:
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Articles',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=120)),
('post', models.TextField()),
('date', models.DateTimeField()),
],
),
]

Как видно в описании, это поля в БД на Рис 7.

Рис 7. Подключение Bootstrap стилей к проекту.

Bootstrap настраивается в главном конфигурационном файле, а также прописывается уже путь к файлу уже в файле в нашем случае в главном файле wraper.html:

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Личный блог</title>

<link rel="stylesheet" href="{% static "css/bootstrap.min.css" %}"/>
</head>
<body>
<div class="jumbotron">
<div class="container">
<h1>{% include "blog/includes/some_html.html" %}</h1>
{% block content %}
{% endblock %}
<p>
<a href="/" class="btn btn-success btn-lg">Главная страница</a>
<a href="/news" class="btn btn-primary btn-lg">Новости &raquo;</a>
<a href="/contact" class="btn btn-info btn-lg">Контакты</a>
</p>
</div>
</div>
<div class="container">
<img src="{% static "image/mercedes-amg-cls-53-cls-53-amg-mercedes-benz.jpg" %}" class="img-thumbnail">
<hr>
&copy; Все права защищены 2020
</div>
</body>
</html>

После этого предстоит настроить подключение к шаблонам:

from django.shortcuts import render
from django.http import HttpResponse

def index(request):
return render(request,'blog/homepage.html')
# Create your views here.

def contact(request):
return render(request,'blog/basic.html', {'values':['Если у вас остались вопросы задавайте мне по телефону, ', '(926)729-23-98','email: oleg.shavernev21993@gmail.com']})

Рис 8. Страница новостей

Рис 9. Главная страница

Рис 9. Страница контактов.

Рис 10. Логи сервера.

Рис 11. Страница статьи.

Заключение

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

СПИСОК ЛИТЕРАТУРЫ

  1. Немнюгин С.А. Turbo Pascal (практикум): СПб.: «Питер», 2003. – 475с.
  2. Кирнос В.Н. Информатика 10 – 11 класс: Кокшетау: «Кешелек»,2005. – 208с.
  3. Фаронов В.В. Turbo Pascal 7.0. Начальный курс. - Нолидж, 1998. -620 с.
  4. Грызлов В.И., Грызлова Т.П. Турбо Паскаль 7.0. - М.: "ДМК", 2000. - 416 с.
  5. Зуев Е.А. Turbo Pascal. Практическое программирование. - Приор,1997. - 336с.
  6. Пильщиков В.Н. Сборник упражнений по языку Паскаль. – М.: Наука, 1989.– 160 с.
  7. Йенсен К., Вирт Н. Руководство для пользователя и описание языка. – М.,1982. 151 с.
  8. Абрамов С.А., Зима Е.В. Начала программирования на языке Паскаль. – М.:Наука, 1987. – 112 с.
  9. Павловская Т.А. Паскаль. Программирование на языке высокого уровня. - СПб: Питер, 2003.-393с.
  10. Эллиот Б.К. Turbo Pascal = Turbo Pascal Web Update. — М.: Вильямс, 2005. — 896с.
  11. Лукин С.Н. TURBO PASCAL 7.0. Самоучитель для начинающих.- Диалог-МИФИ, 2005.-

400с.

  1. Епанешников А. М., Епанешников В. А. Программирование в среде Turbo Pascal 7.0.- 1995.-278с.
  2. Немнюгин С., Перколаб Л. Изучаем Turbo Pascal.- Питер, 2007.- 320с.
  3. Kotlin — конкурент Java и Scala, Открытые системы (июль 2011). Дата обращения 26 мая 2013.
  4. Андрей Бреслав. Язык программирования Kotlin // Открытые системы. — 2011. — № 09.
  5. Java-alternative Kotlin now available as open source, The H (англ.)русск. (14 February 2012). Дата обращения 26 мая 2013.
  6. Kotlin M2 now runs on Android too, The H (англ.)русск. (04 June 2012). Дата обращения 26 мая 2013.
  7. Fourth Kotlin milestone adds annotation tool, The H (англ.)русск. (12 December 2012). Дата обращения 26 мая 2013.
  8. Kotlin 1.0 Release Candidate is Out! (4 February 2016).
  9. Kotlin 1.0 Released: Pragmatic Language for JVM and Android (англ.). Kotlin Blog. Дата обращения 15 февраля 2016.
  10. Встречайте Kotlin 1.1: JavaScript, корутины и многое другое (рус.). Дата обращения 11 марта 2017.
  11. Google добавила Kotlin как официальный язык программирования для Android (рус.) (17 мая 2017). Дата обращения 18 мая 2017.
  12. Евгений Делюкин. Google объявила Kotlin приоритетным языком программирования для разработки Android-приложений — Разработка на vc.ru. vc.ru (7 мая 2019).