![](/stc/img/evkova.png)
Современные языки программирования
Содержание:
ВВЕДЕНИЕ
Компьютеры – это машины, т.е. устройства, которые выполняют последовательность инструкций. Наборы этих инструкций и создают программисты. Сначала программы писались на машинном языке, что было долго, трудно и дорого. Затем появились языки программирования, что сделало возможным создавать программы, реализующие сложные алгоритмы. Это же сделало возможным массовое использование компьютеров в бизнесе. Скоро требования к программному обеспечению значительно выросли, а разработка программ стала делом долгим, трудным и дорогим. Решение этого кризиса стало возможным только в 80-х годах прошлого века, когда появились парадигмы программирования, которые объясняли, как надо писать программы без ошибок.
В последние десять лет появилась новая тенденция в развитие программного обеспечения – веб-разработка, т.е. разработка программного обеспечения для Интернета. Это новое направление породило новые языки программирования, которые основаны на специфических подходах, учитывающих особенности глобальной сети. В этой работе сделано предположение, что именно эта тенденция определяет развитие языков программирования в наше время.
Актуальность данной курсовой работы обусловлена тем, что в ней рассматривается процесс развития языков программирования в настоящее время.
Объект исследования: языки программирования.
Предмет исследования: современные тенденции развития языков программирования.
Цель исследования – определение основных тенденций развития языков программирования.
Для достижения этой цели необходимо решить следующие задачи:
- изучить историю развития средств языков программирования и их современную классификацию;
- найти статистику популярности языков программирования;
- ознакомится с современными языками программирования;
- ознакомится с современными тенденциями развития языков.
Курсовая работа состоит из введения, основной части, заключения и списка литературы.
1. ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
1.1. Краткая история языков программирования
В 19 веке Ада Лавлейс написала пошаговые инструкции аналитической машины Чарльза Бэббиджа, и Лавлейс считается первым программистом [1, 2].
Первым языком программирования высокого уровня считается Plankalkülia, разработанный в 1940 - х годах немцем Konrad Zusen (К. Цузе). Однако описание языка не было опубликовано до 1972 года, и он не был реализован на компьютере.
Первым языком программирования, вероятно, обладал автоматический флейтист, описанный в 9 веке братьями Мусой в Багдаде во время исламского золотого века. С начала 1800-х годов программы использовались для управления поведением таких машин, как жаккардовые ткацкие станки, музыкальные шкафы и игровые пианино. Тем не менее, их программы (например, свитки игрока-пианиста) не могут приводить к другому поведению в ответ на какой-либо вход или состояние.
Очень ранние компьютеры, такие как Colossus , были запрограммированы без помощи хранимой программы, изменив их схему или установив переключатели физических элементов управления. Малогабаритная экспериментальная машина была первым компьютером, на котором программа могла быть сохранена в памяти компьютера.
Чуть позже программы стали записывать на машинный языке, где программист записывает каждую инструкцию в числовой форме, которую аппаратное обеспечение может выполнять напрямую. Например, инструкция по добавлению значения в две ячейки памяти может состоять из трех чисел: «код операции», который выбирает операцию «добавить» и два расположения памяти. Программы в десятичной или двоичной форме считывались с перфокарт или магнитной ленты или переключались на переключателях на передней панели компьютера. Языки машин позднее назвали языками программирования первого поколения (1GL). Характеристики более поздних компьютеров увеличили потребность в программировании на более высоком уровне, что привело к разработке символических машинных языков. Потребность в языках программирования более высокого уровня привели, в частности, к развитию ALGOL, COBOL и FORTRAN .
Этап 1: до середины 50-х годов. Большие затраты на кодирование, т.к. кодирование велось в машинных кодах. Появился Ассемблер (язык в помощь программирования) и трансляторы к ним.
Следующим шагом было развитие так называемых языков программирования второго поколения (2GL) или ассемблерных языков, которые все еще были тесно связаны с архитектурой набора команд конкретного компьютера. Они служили для того, чтобы сделать программу более удобной для восприятия человеком и освободить программиста от утомительных и подверженных ошибкам вычислений адресов.
В университете Манчестера , Алик Глени разработал AutoCode в начале 1950 - х годов. Он использовал компилятор для автоматического преобразования языка в машинный код. Первый код и компилятор был разработан в 1952 году для компьютера Mark 1 в Манчестерском университете и считается первым скомпилированным языком программирования высокого уровня.
Второй автокод был разработан для Mark 1 компанией RA Brooker в 1954 году и получил название «Mark 1 Autocode». Брукер также разработал автокод для Ferranti Mercury в 1950-х годах в сотрудничестве с Манчестерским университетом. Версия для EDSAC 2 была разработана DF Hartley из Кембриджской математической лаборатории Университета в 1961 году. Известная как EDSAC 2 Autocode, она была прямой разработкой от Mercury Autocode, адаптированной к местным условиям, и была отмечена для оптимизации объектного кода и исходного языка которые были выдвинуты на время. Современная, но отдельная нить разработки, Atlas Autocode была разработана для машины Манчестерского университета Atlas 1 .
2 этап: середина 50 - середина 60-х годов. Появляются различные языки высокого уровня: Fortran (1954-1957); Algol-60 (1958-1960 годы); Cobol (1959-1961 гг); Basic (1964); PL / 1 (1964); Lisp (1959) и трансляторов для них (компиляторы).
В 1954 году FORTRAN был изобретен в IBM Джоном Бэкусом. Это был первый широко используемый высокоуровневый язык программирования общего назначения, который имел функциональную реализацию, а не только дизайн на бумаге. Он по-прежнему является популярным языком для высокопроизводительных вычислений и используется для программ, которые сравнивают и оценивают самые быстрые суперкомпьютеры в мире. Еще один ранний язык программирования был разработан Грейс Хоппер в США под названием FLOW-MATIC. Он был разработан для UNIVAC I в Remington Rand в период с 1955 года по 1959 год. Хоппер обнаружил, что клиентам обработки бизнес-данных было неудобно с математической нотацией, а в начале 1955 года она и ее команда написали спецификацию английского языка программирования и внедрили прототип. Компилятор FLOW-MATIC стал общедоступным в начале 1958 года и был практически завершен в 1959 году. Flow-Matic оказал большое влияние на дизайн COBOL , поскольку только он и его непосредственный потомок AIMACO были фактически использованы на время.
Период с 1960-х по конец 1970-х годов привел к разработке основных языковых парадигм, используемых в настоящее время:
APL представила программирование массивов и повлияло на функциональное программирование.
ALGOL уточнил как структурированное процедурное программирование, так и дисциплину языковой спецификации; «Пересмотренный отчет по алгоритмическому языку ALGOL 60» стал образцом для написания более поздних спецификаций языка.
Lisp, реализованный в 1958 году, был первым динамически типизированным функциональным языком программирования
В 1960-х годах Simula был первым языком, предназначенным для поддержки объектно-ориентированного программирования; в середине 1970-х годов Smalltalk сопровождался первым «чисто» объектно-ориентированным языком.
C был разработан между 1969 и 1973 годами как язык системного программирования для операционной системы Unix и остается популярным.
Пролог, разработанный в 1972 году, был первым логическим языком программирования.
В 1978 году ML построил систему полиморфного типа поверх Lisp, новаторских статически типизированных языков программирования .
Каждый из этих языков породил потомков, и большинство современных языков программирования считают, по крайней мере, один из них в своей родословной.
3 этап: середина 60-х - начало 70-х годов. Размер программы резко увеличивается и происходит переход на коллективный характер труда. Требования для программного обеспечения увеличивается из-за перехода на серийное производство.
4 этап ("этап кризиса разработки программного обеспечения"): в начале 70-х и середины 70-х годов. Несмотря на развитие средств программирования, производительность труда программистов не растет. Условия разработки программного обеспечения не выполняются, их стоимость растет, качество их непредсказуемо, традиционные методы (которые обеспечивают человеческие ресурсы и другие материалы) не работают, что характеризуется как "кризис программного обеспечения".
Получают признание методологии структурного программирования (Dijkstra, 1968), формируются основы технологии программирования (язык Паскаль (Н. Вирт), 1971).
5 этап: 1976 - наше время. Стадии развития инструментов после кризиса. В 1976 вводится понятие жизненного цикла программного обеспечения, и отметим, что основные затраты теперь приходятся не на развитие, а на сопровождение.
Языки программирования: C (в начале 1970-х, 1978), Modula-2 (1978, развитие - язык Оберон (1988)), Ада (1980), Prolog (1972, распространяется начиная с 1980 года), Smalltalk (1970-х годов, в 1980 году был введен как Smalltalk-80), C ++ (В начале 1980-х годов, имя - 1983), Java (Java версия 1.0 - 1996, Java 2.0 - 1998, Java 5 - 2004 ...), C # (1998-2001, версия 1.0) - 2000-2002, версия 2.0 - 2003-2005, версия 3.0 - 2004-2008, версия 4.0 - 2008-2010 годы).
Большое признание получил подход объектно-ориентированного проектирования и программирования.
А что нового сейчас?
1.2. Определения
Язык программирования - это обозначение для написания программ, которые являются спецификациями вычисления или алгоритма [1-3]. Некоторые, но не все, авторы ограничивают термин «язык программирования» теми языками, которые могут выражать все возможные алгоритмы. Черты, которые часто считаются важными для того, что составляет язык программирования, включают:
Функция и цель
Язык программирования есть язык, который используется для записи компьютерных программ, которая выполняет какие - то вычисления или алгоритм и, возможно, управляет внешними устройствами, такими как принтеры, дисковые накопители, роботы, и так далее. Например, программы PostScript часто создаются другой программой для управления компьютерным принтером или дисплеем. В более общем плане язык программирования может описывать вычисления на некоторых, возможно, абстрактных машинах. Общепризнано, что полная спецификация для языка программирования включает описание, возможно, идеализированное для машины или процессора для этого языка. В большинстве практических контекстов язык программирования включает компьютер; следовательно, языки программирования обычно определяются и изучаются таким образом. Языки программирования отличаются от естественных языков тем, что естественные языки используются только для взаимодействия между людьми, в то время как языки программирования также позволяют людям передавать инструкции машинам.
Абстракции.
Языки программирования обычно содержат абстракции для определения и управления структурами данных или управления потоком выполнения. Практическая необходимость того, чтобы язык программирования поддерживал адекватные абстракции, выражается принципом абстракции; этот принцип иногда формулируется как рекомендация программисту правильно использовать такие абстракции.
Выразительная сила.
Теория вычисления классифицирует языки по вычислениям они способны выразить. Все полные языки Тюринга могут реализовывать один и тот же набор алгоритмов. ANSI / ISO SQL-92 и Charity являются примерами языков, которые не являются Тьюринговыми, но все же часто называются языками программирования.
Языки разметки, такие как XML, HTML или troff, которые определяют структурированные данные, обычно не рассматриваются как языки программирования. Языки программирования могут, однако, делиться синтаксисом с языками разметки, если определена вычислительная семантика. XSLT, например, является полным языком Тюринга, полностью использующим синтаксис XML. Кроме того, LaTeX, который в основном используется для структурирования документов, также содержит полное подмножество Тьюринга.
Термин компьютерный язык иногда используется взаимозаменяемо с языком программирования. Тем не менее, использование обоих терминов варьируется среди авторов, включая точный объем каждого из них. Одно использование описывает языки программирования как подмножество языков программирования. В этом ключе языки, используемые в вычислениях, которые имеют другую цель, чем выражение компьютерных программ, являются, как правило, компьютерными языками. Например, языки разметки иногда называют компьютерными языками, чтобы подчеркнуть, что они не предназначены для программирования.
Другое использование касается языков программирования как теоретических конструкций для программирования абстрактных машин, а также компьютерных языков в качестве их подмножества, которое выполняется на физических компьютерах, которые имеют ограниченные аппаратные ресурсы. Джон К. Рейнольдс подчеркивает, что официальные языки спецификации - это столько же языков программирования, сколько и языки, предназначенные для исполнения. Он также утверждает, что текстовые и даже графические форматы ввода, которые влияют на поведение компьютера, являются языками программирования, несмотря на то, что они обычно не являются Тюринг-полными и замечают, что незнание концепций языка программирования является причиной многих недостатков входных форматов.
Все языки программирования имеют некоторые примитивные строительные блоки для описания данных и применяемых к ним процессов или преобразований (например, добавление двух чисел или выбор элемента из коллекции). Эти примитивы определяются синтаксическими и семантическими правилами, которые описывают их структуру и значение соответственно.
Синтаксис.
Внешняя форма языка программирования известна как его синтаксис. Большинство языков программирования являются чисто текстовыми; они используют последовательности текста, включая слова, цифры и пунктуацию, подобно написанным естественным языкам. С другой стороны, существуют некоторые языки программирования, которые являются более графическими по своей природе, используя визуальные отношения между символами для указания программы.
Семантика. Различают статическую и динамическую семантику.
Статическая семантика. Статическая семантика определяет ограничения на структуру допустимых текстов, которые трудно или невозможно выразить в стандартных синтаксических формализмах. Для скомпилированных языков статическая семантика по существу включает те семантические правила, которые можно проверить во время компиляции. Примеры включают проверку того, что каждый идентификатор объявлен до его использования (на языках, требующих таких объявлений) или что метки на объятиях case-отчета различны.Многие важные ограничения этого типа, такие как проверка того, что идентификаторы используются в соответствующем контексте (например, не добавление целого числа к имени функции), или что вызовы подпрограмм имеют соответствующее количество и тип аргументов, могут быть принудительно определены путем определения их как правила в логике, называемой системой типов. Другие формы статического анализа, такие как анализ потока данных, также могут быть частью статической семантики. Новые языки программирования, такие как Java и C #, имеют определенный анализ присваивания, форму анализа потока данных, как часть их статической семантики.
Динамическая семантика. После того, как данные были указаны, машине необходимо дать указание выполнить операции с данными. Например, семантика может определять стратегию, с помощью которой выражения оцениваются по значениям, или способ, при котором структуры управления условно выполняют инструкции. Динамическая семантика (также известная как семантика исполнения) определяет, как и когда различные конструкты языка должны производить поведение программы. Существует много способов определения семантики выполнения. Естественный язык часто используется для указания семантики выполнения языков, обычно используемых на практике. Значительное количество академических исследований перешло на формальную семантику языков программирования, которые позволяют задавать семантику выполнения формальным образом. Результаты в этой области исследований показали ограниченное применение в разработке и внедрении языка программирования вне академических кругов.
1.3. Классификация
Тысячи различных языков программирования были созданы, главным образом в области компьютеров, и еще много создается каждый год. Многие языки программирования требуют, чтобы вычисление указывалось в императивной форме (т. е. как последовательность выполняемых операций), в то время как другие языки используют другие формы спецификации программы, такие как декларативная форма (то есть желаемый результат указан, а не как его достичь).
Описание языка программирования обычно разделяется на две составляющие синтаксиса (формы) и семантики (значение) [3]. Некоторые языки определяются спецификационным документом (например, язык программирования C задается стандартом ISO), тогда как другие языки (такие как Perl) имеют доминирующую реализацию, которая рассматривается как ссылка. Некоторые языки имеют оба языка, причем основной язык, определенный стандартом, и расширения, взятые из доминирующей реализации, являются общими.
Языки программирования можно разделить на разные группы в соответствии с языковой парадигмой и моделью программирования [1]:
парадигмы
- процедурный язык программирования
- объектно-ориентированный язык программирования
- функциональный язык программирования
- логический язык программирования
модель программирования:
- последовательная
- параллельная
Языки программирования могут принимать несколько парадигм, то есть они являются мультипарадигмами. Например, C ++ - это язык с несколькими парадигмами.
Современное состояние языков программирования можно представить в виде следующей классификации (рис. 1) [1-3].
Рисунок 1. Классификация языков программирования
Процедурное программирование.
Программирование процедурное или принудительная (от латинского impemtivus - команда) является отражением архитектуры компьютера фон Неймана. Программа на этом языке состоит из последовательности команд, определяющих процедуру решения проблемы. Выполнение программы сводится к последовательным выполнением операторов для преобразования состояния начальной памяти, то есть программа, после обновления содержимого памяти, изменяя его от исходного состояния в результирующее.
Функциональное программирование.
Основное понятие в функциональных языках является выражение. Выражения содержат константы, структуры объектов, функций, их тела и вызовы функций.
Логическое программирование.
Язык Prolog для Искусственного Интеллекта (PROLOG, ProgramminginLOGic - с точки зрения программной логики). Основная идея в программировании - логика отношений. Программа представляет собой совокупность определений отношений между объектами и цели.
Объектно-ориентированное программирование (ООП).
Пионером этого направления был язык Smalltalk, первоначально предназначенного для выполнения функций и графики на компьютере. Все что входит в Smalltalk - это объекты, и объекты общаются друг с другом исключительно с помощью сообщений. Его суть выражается формулой "объект = данные + процедуры".
Языки программирования для компьютерных сетей
С появлением и активным развитием компьютерных сетей, стало источником многочисленных версий популярных языков программирования, адаптированных для использования в сети. Отличительные особенности, присущие языкам сети: поддаются интерпретации. Интерпретаторы для них распространяются бесплатно, а сами программы используются в исходном коде. Такие языки называются языками сценариев [4-8].
HTML (Hyper Text Markup Language) - язык разметки гипертекста используется для подготовки веб-документов в сети Интернет. Язык-это набор форматированного текста с добавлением графических объектов, спецификации шрифтов и цветов, организации ссылок и таблиц.
Perl. В 80-х Ларри Уолл разработал язык Perl, который был разработан, чтобы эффективно обрабатывать большие текстовые файлы, создавать текстовые отчеты и управлять задачами. Включает в себя множество функций для работы со строками, массивами, все возможные средства преобразования данных, управления процессами, работы с системной информации, и др.
2. СОВРЕМЕННЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ
2.1. ТОП 10 языков программирования в 2018 году
Сначала рассмотрим вопрос о том, как производится измерение популярности языка программирования [9, 10].
Трудно определить, какие языки программирования наиболее широко используются, а какие способы использования варьируются в зависимости от контекста. Один язык может занимать большее количество часов программиста, другой - больше строк кода, а третий может потреблять наибольшее время процессора. Некоторые языки очень популярны для конкретных видов приложений. Например, COBOL по-прежнему силен в корпоративном центре обработки данных, часто на больших мэйнфреймах; Фортран в научных и технических приложениях; Ada в аэрокосмической, транспортной, военной, в реальном времени и встраиваемых приложениях; и C во встроенных приложениях и операционных системах. Другие языки регулярно используются для написания много разных приложений.
Были предложены различные методы измерения популярности языка, каждый из которых подвержен различной предвзятости по сравнению с измеренными. Например, подсчитывая количество рекламных объявлений, в которых упоминается язык, количество проданных книг, которые учат или описывают язык, оценки количества существующих строк кода, написанных на языке, подсчета языковых ссылок (т. е. имени языка), найденных с помощью поисковой системы.
Опубликованы несколько индексов:
Ежемесячный индекс сообщества TIOBE Community Community был опубликован с 2001 года и наглядно отображает популярность 10 лучших языков, 20 лучших языков с рейтингом и дельтами, а также рейтинг топ-50 языков. Цифры основаны на поиске в Интернете определенных фраз, которые включают имена языков и подсчет числа возвращенных обращений.
PYPL Известность языка программирования является показатель, основанный на Google Trends, отражая поиски разработчиков на „<язык программирования> учебник“, вместо того, что страницы доступны. Он показывает тенденции популярности с 2004 года, во всем мире или разделен для 5 стран.
RedMonk Язык программирования Рейтинг получены из соотношения программирования тяги на GitHub (использование) и переполнение стека (обсуждение).
The Trendy Skills ищет и извлекает из популярных рекламных сайтов навыки и технологии, которые ищут работодатели, и классифицирует навыки, которые ищут в категориях, одна из которых - категория «Языки программирования». Это позволяет пользователю видеть тренды для одного или нескольких навыков или категорий в определенные временные диапазоны. Данные также доступны через общедоступный API , поэтому каждый может создавать свою собственную статистику.
Результаты показывают, что среди объявлений о вакансиях Java более популярен, чем другие комбинированные языки. Результаты опроса разработчиков в 2016 году Stack Overflow . Согласно опросу, JavaScript используется 85% разработчиков.
Krihelinator.xyz оценивает языки программирования на основе их ставки вклада github в соответствии с этой формулой.
Рейтинг IEEE Spectrum 2016 лучших языков программирования «синтезирует 12 показателей из 10 источников, чтобы получить общий рейтинг популярности языка». Различные показатели были собраны из GitHub , Google Search и Trends , Twitter , Stack Overflow , Reddit , Hacker News , Career Builder , Dice.com и IEEE Xplore Digital Library. Приложение интерактивного ранжирования позволяет регулировать вес каждого метрика, а также фильтровать языки по типу (Web, Mobile, Enterprise, Embedded).
Сочетание и усреднение информации с различных интернет-сайтов, stackify.com сообщило о десяти самых популярных языках программирования как (в порядке убывания по общей популярности): Java , C , C ++ , Python , C # , JavaScript , VB .NET , R , PHP и MATLAB.
Рассмотрим отдельно данные по GitHub [10].
Разработка платформы GitHub началась 19 октября 2007 года. Сайт был запущен в апреле 2008 года Томом Престоном-Вернером , Крисом Ванстратом и PJ Hyett после того, как он был выпущен на несколько месяцев ранее как бета-релиз.
Проекты в GitHub можно получить и обработать с помощью стандартного интерфейса командной строки Git, и все стандартные команды Git работают с ним. GitHub также позволяет зарегистрированным и незарегистрированным пользователям просматривать общедоступные репозитории на сайте. Несколько настольных клиентов и плагинов Git также были созданы GitHub и другими третьими сторонами, которые интегрируются с платформой.
На сайте предусмотрены функции, связанные с социальной сетью, такие как каналы, последователи, вики (с использованием программного обеспечения wiki под названием Gollum ) и график социальной сети для отображения того, как разработчики работают над своими версиями («вилки») репозитория и какой fork (и это вилка) новейший.
Пользователь должен создать учетную запись для внесения контента на сайт, но публичные репозитории могут просматриваться и загружаться кем угодно. С зарегистрированной учетной записью пользователя пользователи могут вести обсуждения, управлять репозиториями, отправлять вклады в хранилища других и просматривать изменения в коде .
Программное обеспечение, которое запускает GitHub, было написано с использованием Ruby on Rails и Erlang разработчиками GitHub, Inc. Wanstrath, Hyett и Preston-Werner. GitHub в основном используется для кода.
Помимо исходного кода , GitHub поддерживает следующие форматы и функции:
Документация, включая автоматически отображаемые файлы README в различных форматах файлов, похожих на Markdown (см. Файлы README в GitHub)
Отслеживание ошибок (включая запросы функций) с надписями, вехами, правопреемниками и поисковой системой
Wikis
Вытягивать запросы с просмотром кода и комментариями
История фиксации
Графики: импульс, вкладчики, фиксации, частота кода, перфокарта, сеть, участники
Каталог интеграций
Унифицированные и разделенные разности
Уведомления по электронной почте
Возможность подписывать кого-то на уведомления, указав их.
Эможи
Страницы GitHub: небольшие сайты могут размещаться из публичных репозиториев на GitHub. Формат URL - https: // имя пользователя .github.io. Вложенные списки задач в файлах
Визуализация геопространственных данных
3D-файлы рендеринга, которые можно просмотреть с помощью нового интегрированного средства просмотра STL-файлов, которое отображает файлы на «трехмерном холсте». Зритель работает от WebGL и Three.js .
Собственный формат PSD для Photoshop можно просмотреть и сравнить с предыдущими версиями того же файла.
Просмотр PDF-документов
Предупреждения о безопасности известных общих уязвимостей и рисков в разных пакетах
Лицензирование репозиториев
Условия обслуживания GitHub не требуют публичных программных проектов, размещенных на GitHub, для соответствия определению Open Source. По этой причине очень важно, чтобы пользователи и разработчики намеревались использовать часть программного обеспечения, найденного в GitHub, для чтения лицензии на программное обеспечение в репозитории (обычно в файле верхнего уровня, называемом «LICENSE», «LICENSE.txt» или аналогично), чтобы определить, удовлетворяет ли он их потребностям. В Условиях обслуживания говорится: «Если вы публично просматриваете свои репозитории, вы соглашаетесь разрешать другим просматривать и форкировать свои репозитории».
GitHub Inc. - это веб- хостинг для контроля версий с использованием Git . Он в основном используется для компьютерного кода . Он предлагает все распределенное управление версии и источник управления кодом функциональности (SCM) в Git, а также добавить свои собственные функции. Он обеспечивает контроль доступа и несколько функций совместной работы, таких как отслеживание ошибок , запросы функций , управление задачами и вики для каждого проекта.
GitHub предлагает планы как для частных репозиториев, так и для бесплатных учетных записей , которые обычно используются для размещения проектов с открытым исходным кодом. По состоянию на июнь 2018 года GitHub сообщает, что у него более 28 миллионов пользователей и 57 миллионов репозиториев (в том числе 28 миллионов общедоступных репозиториев), что делает его крупнейшим в мире источником исходного кода.
4 июня 2018 года Microsoft объявила о достижении соглашения о приобретении GitHub за 7,5 млрд. Долл. США. Ожидается, что покупка завершится к концу года.
15 самых популярных языков программирования по версии GitHub [10]
(см. так же https://habr.com/post/310262/).
Рисунок 2. ТОП языков программирования по версии GitHub
Рассмотрим только пять первых.
№. 5 - PHP - это скриптовый язык, используемый для быстрого создания динамических веб-страниц. Отличный вариант для разработчиков frontend и backend, поддерживается веб-гигантами, как WordPress и Facebook. PHP позволяет развернуть быстро и просто веб-приложения и запускать веб-сайты с повторяющиеся задачими сервера (например, обновления ленты новостей). Есть с открытым исходным кодом и очень популярен среди стартапов, агентств, медиа и электронной торговли, людей, которые часто нанимают новых веб-разработчиков.
№. 4 - Ruby: простой, читаемый язык программирования, ориентированный на разработку веб-приложений. Разработанная Yukihiro Matsumto в 1995 году, Ruby framework использовалась для разработки Github, Scribd, Yammer, Shopify и Groupon. Ruby сочетает в себе некоторые функции Lisp, Pearl и Eiffel. Ruby имеет хороший рынок труда, и разработчики имеют достойный заработок.
№. 3 - Python: Язык относительно новый, по сравнению с некоторыми другими языками, в этом списке. Python очень легко изучается и является языком динамичным и универсальным. Хотя это самый популярный язык в фоновом режиме, с ним вы можете делать почти все, что угодно. Разработанный, чтобы быть легко читаемым, простым и, что более важно, забавный, это новый любимый язык разработчиков во всех областях промышленности. Python-это основной язык для начинающих. Является гибким и чрезвычайно мощным, и, самое главное, имеет очень светлое будущее.
№. 2 - Java: Java был разработан Джеймсом Гослингом в 1990 году на Sun Microsystems. Java также увеличивает шансы на C ++. Одной из особенностей Java является то, что это первый объектно-ориентированный язык программирования. Java был разработан в соответствии с принципом WORA (Write Once Run Anywhere или "Write Code Once, Run It it"). Это переносимость Java. Вам нужно только скомпилировать исходный код в Java один раз, а затем запустить его на любой машине с установленной JVM (Java Virtual Machine), а затем использовать его.
№. 1 - JavaScript: Язык интерфейса, используемый для создания и разработки веб-сайтов, настольных приложений и игр. JavaScript работает во всех браузерах, и может функционировать с программами, которые не найти в Интернете. Поддерживает стили программирования, функциональные и объектно-ориентированные, и в основном - это подход к построению пользовательских интерфейсов, и веб-сайты / приложения / игры выглядят очень хорошими. Разобраться в JavaScript - это важно, даже если вы ориентируетесь на развитие сервера. Компоненты, структуры данных и алгоритмы JavaScript применяются практически на любом другом языке.
2.2. Эзотерические языки программирования
Эзотерический язык программирования [11] (иногда сокращается до esolang ) является языком программирования, предназначенный для тестирования границ разработки языка компьютерного программирования, как доказательство концепции, как программное обеспечение - искусство, как взлом интерфейса на другом языке (в частности, функциональное программирование или процедурное программирование языки), или как шутка. Использование эзотерики отличает эти языки от языков программирования, с которым работают разработчики для написания программного обеспечения. Обычно создатели esolang не предполагают, что язык используется для основного программирования, хотя некоторые эзотерические функции, такие как visuospatial syntax, вдохновили практическое применение в искусстве. Такие языки часто популярны среди хакеров и любителей.
Юзабилити редко является целью для эзотерических программистов языка программирования - часто это совершенно наоборот. Их обычной целью является удаление или замена обычных языковых функций при сохранении языка, который является Turing-complete.
Самый ранний, и все же канонический пример эзотерического языка был INTERCAL, разработанный в 1972 году Доном Вудсом и Джеймсом М. Лионом, с заявленным намерением отличаться от любого другого языка программирования, с которым были знакомы авторы. Он пародировал элементы общепринятых языков программирования, такиех как Fortran , COBOL и язык ассемблера.
В течение многих лет INTERCAL был представлен только бумажными копиями руководства INTERCAL. Возрождение языка в 1990 году как реализация в C под Unix стимулировало волну интереса к намеренному дизайну эзотерических компьютерных языков.
В 1993 году Wouter van Oortmerssen создал FALSE, небольшой ориентированный на стек язык программирования, с синтаксисом, разработанным для того, чтобы сделать код по своей сути непонятным, запутанным и нечитаемым. Он также имеет компилятор всего 1024 байта. Это вдохновило Urban Müller на создание еще более маленького языка, ныне известный как «brainfuck - позорный мозговой упадок», который состоит всего из восьми признанных персонажей. Наряду с Befunge Криса Прессе (например, FALSE, но с двумерным указателем инструкции), brainfuck теперь является одним из лучших поддерживаемых эзотерических языков программирования. Это канонические примеры минимальных трюков Тьюринга и ненужных запутанных языковых особенностей. Brainfuck связан с семейством машин Тьюринга P.
Дадим описание некоторых из них.
Brainfuck
Brainfuck разработан для экстремального минимализма и приводит к запутанному коду с программами, содержащими только восемь различных символов.Следующая программа выводит «Hello World!»:
++++++++++ [ > +++++++ > ++++++++++ > +++ <<< - ] > ++ . > + . +++++++
.. +++ . > ++ . << +++++++++++++++ . > . +++ . ------ . -------- . > + .
.Gertrude
.Гертруда названа в честь Гертруды Штайн и был спроектирован (Герсон Курз), чтобы позволить программам смутно напоминать ее стихи.
Трава.
Grass - это функциональный язык программирования, который использует только символы «W», «w» и «v». Таким образом, программы в Траве, как говорят, выглядят как трава ASCII . Трава имеет официальную спецификацию, которая основана на нетипизированном лямбда-исчислении и машине SECD. Траву не следует путать с GRASS, другим языком программирования.
Piet - это язык, разработанный Дэвидом Морганом-Мар, чьи программы представляют собой растровые изображения, которые выглядят как абстрактное искусство. Компиляция ориентируется на «указатель», который перемещается по изображению, от одной непрерывной цветной области до следующей (рис.3). Процедуры выполняются, когда указатель выходит из региона.
Рисунок 3. Программа Piet, которая печатает «Piet»,
Шекспир.
Шекспир предназначен для того, чтобы программы выглядели как шекспировские пьесы. Например, следующий оператор объявляет точку в программе, которая может быть достигнута с помощью оператора GOTO:
Акт I: оскорбления и лесть Гамлета.
2.3. Современные тенденции развития языков
Развитие языка программирования продолжается, как в промышленности, так и в исследованиях. Некоторые из последних тенденций включают:
Расширение поддержки функционального программирования на основных языках, используемых на коммерческой основе, включая чисто функциональное программирование для упрощения анализа кода и его облегчения (как на микро-, так и на макроуровнях)
Создает поддержку параллельного и распределенного программирования.
Механизмы для добавления проверки безопасности и надежности на язык: расширенная статическая проверка, зависимая типизация, управление потоком информации, статическая безопасность потоков .
Альтернативные механизмы для компоновки и модульности: миксины, черты, стили, делегаты, аспекты.
Разработка программного обеспечения на основе компонентов.
Метапрограммирование, отражение или доступ к абстрактному синтаксическому дереву
AOP или Aspect Oriented Programming, позволяющие разработчикам вставлять код в другой модуль или класс в «точки соединения»,
Языки домена и генерация кода
XML для графического интерфейса ( XUL , XAML )
Повышенный интерес к распределению и мобильности.
Интеграция с базами данных, включая XML и реляционные базы данных.
Открытый исходный код как философия развития для языков, включая сборник компиляторов GNU и языки, такие как Python , Ruby и Scala .
Массивно параллельные языки для кодирования 2000 процессоров графических процессоров и суперкомпьютерных массивов, включая OpenCL
Ранние исследования (как еще не реализуемые) квантовых компьютерных языков программирования
Больше интереса к языкам визуального программирования, таким как Scratch.
Остановимся на мнение GitHub.
Каждая команда на GitHub Enterprise создает программное обеспечение, но более половины из них кодируют для других отраслей—от финансов до розничной торговли. Эта десятка представлена на рис. 4 [10].
Рисунок 4. Основные области приложения по версии GitHub
Из этой диаграммы видно, что с большим опережением превалируют разработки для Интернета.
Быстрый рост Интернета в середине 1990-х годов создавал новые возможности для новых языков [8]. Perl , первоначально инструмент для сценариев Unix, впервые выпущенный в 1987 году, стал распространенным явлением на динамичных веб-сайтах . Java стал использоваться для серверного программирования, а байт-коды виртуальных машин снова стали популярными в коммерческих настройках с их обещанием «Напиши один раз, бегите куда угодно» (UCSD Pascal был популярен в начале 1980-х годов). Эти разработки не были принципиально новыми, скорее они были уточнениями многих существующих языков и парадигм (хотя их синтаксис часто основывался на семействе языков программирования C).
С момента создания первого языка было создано более 2500 различных языков программирования, и каждый год их число увеличивается. Обычно только создатели могут использовать свои языки, а другие становятся популярными среди миллионов. Профессиональные программисты используют в своей работе более 10 языков программирования. Развитие языков программирования продолжается, как в промышленности, так и в исследованиях. Текущие направления включают проверку безопасности и надежности, новые типы модульности (mixins , делегаты, аспекты) и интеграцию с базой данных, например LINQ от Microsoft .
Языки программирования 4-го поколения (4GL) - это языки компьютерного программирования, целью которых является предоставление более высокого уровня абстракции деталей внутреннего компьютерного оборудования, чем 3GL.
Языки программирования пятого поколения (5GL) - это языки программирования, основанные на решении проблем с использованием ограничений, предоставляемых программе, а не на использовании, написанного программистом.
Хотя языки программирования четвертого поколения предназначены для создания конкретных программ, языки пятого поколения предназначены для того, чтобы компьютер мог решить заданную проблему без программиста. Таким образом, пользователю нужно только беспокоиться о том, какие проблемы необходимо решить и какие условия необходимо выполнить, не беспокоясь о том, как реализовать рутину или алгоритм их решения. Языки пятого поколения используются в основном в исследованиях искусственного интеллекта . OPS5 и Mercury являются примерами языков пятого поколения.
Эти типы языков были также построены на Lisp, многие из которых были созданы на машине Lisp, например ICAD . Затем есть много языков кадров, таких как KL-ONE.
В 1980-х годах языки пятого поколения считались вариантом будущего, а некоторые предсказывали, что они заменят все другие языки для развития системы, за исключением языков низкого уровня. В частности, с 1982 по 1993 год Япония вкладывала много исследований и денег в свой проект компьютерных систем пятого поколения, надеясь разработать мощную компьютерную сеть машин с использованием этих инструментов.
Однако по мере создания более крупных программ недостатки подхода стали более очевидными. Оказывается, что, учитывая набор ограничений, определяющих конкретную проблему, получение эффективного алгоритма для его решения является очень сложной проблемой само по себе. Этот важный шаг еще не может быть автоматизирован и по-прежнему требует понимания человека-программиста.
ЗАКЛЮЧЕНИЕ
В данной курсовой работе была поставлена цель изучения современных языков программирования. Для этого были решены ряд задач.
В первом разделе были изучены источники из Интернета и составлена общая картина развития языков программирования от начала эры ЭВМ до настоящего времени. До 2000 года основная причина развития языков – это попытка преодолеть проблему сложности программного обеспечения.
Приводится точное определение языков программирования, т.к. существуют конструкции, похожие на языки программирования, но это не языки программирования. Составлена классификация языков программирования, в основу которой положена парадигма программирования.
Во втором разделе изучено современное состояние языков программирования. Дан обзор основных языков программирования. Как удалось выяснить, существует множество методов оценки популярности языков, причем они дают разные результаты. Для оценки популярности языка были использованы данные с GitHub, эти данные представляются наиболее убедительными. Оказалось, что наиболее популярны языки, используемые в веб-программирование. Рассмотрено такое новое явление, как изотерические языки. Кроме того, наблюдается появление некоторых новых средств, например, делегаты и reflection.
Итак, по результатам выполнения данной курсовой работы можно сделать следующие выводы. На данный момент наиболее популярным языком является язык JavaScript. Основная современная тенденция развития языков программирования – адаптация к Интернету.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
- Информатика. Базовый курс. Учебник для Вузов/под ред. С.В. Симоновича, - СПб.: Питер, 2000.
- Википедиа. Языки программирования. URL: https://ru.wikipedia.org/wiki/%D0%AF%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F
- Иванова Г.С. Основы программирования: Учебник для вузов. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2012. - 416 с.
- Берд, Дж. Веб-дизайн.Руководство разработчика. / Дж. Берд. - СПб.: Питер, 2012. - 224 c.
- Мартынов, Н. Н. Алгоритмизация и основы объектно-ориентированного программирования на JavaScript. Информатика и ИКТ. Профильный уровень. 10 класс / Н.Н. Мартынов. - М.: Бином-Пресс, 2010. - 272 c.
- Средства разработки сайтов, URL: http://ekrost.ru/poster/sredstva-razrabotki-saitov.html
- Языки программирования для веб-разработки. URL: https://webshake.ru/post/769
- Сырых, Ю.А. Современный веб-дизайн. Эпоха Веб 3.0 / Ю.А. Сырых. - М.: Вильямс, Диалектика, 2013. - 368 c.
- ТОП 10 языков программирования, URL: http://webtricks-master.ru/beginners/top-10-yazykov-programmirovaniya-v-2018-godu/
- ТОП языков программирования на GitHub, URL: https://octoverse.github.com/
- Википедиа. Эзотерический язык программирования, URL: https://ru.wikipedia.org/wiki/%D0%AD%D0%B7%D0%BE%D1%82%D0%B5%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F Макнейл, П. Настольная книга веб-дизайнера / П. Макнейл. - СПб.: Питер, 2013. - 264 c.
- Персонал как ключевой фактор предоставления качественной гостиничной услуги
- Правовое регулирование рекламной деятельности в РФ
- Анализ денежных средств предприятия (Теоретические основы организации учета денежных средств)
- Административные барьеры входа на РФ рынках
- Роль мотивации в поведении организации (Механизм мотивации и стимулирования труда персонала в современных условиях)
- ОСНОВНЫЕ СТРУКТУРЫ АЛГОРИТМОВ (Сравнительный анализ и примеры использования структур алгоритмов)
- Управление распределением общей и чистой прибыли на предприятии (Методические основы анализа чистой прибыли предприятия)
- Повышения производительности труда в компании: совершенствование мотивации работников (Теоретические аспекты мотивации работников и повышения производительности труда)
- Роль кадровой службы в формировании и реализации кадровой стратегии
- Понятие, признаки и правовое регулирование несостоятельности (банкротства) (Правовые аспекты банкротства индивидуальных предпринимателей)
- Юридические аспекты сохранения банковской информации и банковской тайны
- Проектирование реализации операций бизнес-процесса «Транспортная доставка заказов (Контрольный пример реализации проекта и его описание)