Файл: Современные языки программирования (Эволюция языков программирования).pdf

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

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

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

Добавлен: 14.05.2023

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

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

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

ВВЕДЕНИЕ

Актуальность темы исследования

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

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

Основная цель работы – рассмотреть классификация современных языков программирования и критерии выбора средств и методов разработки программ.

Эта цель будет раскрываться через следующие задачи:

  1. Общая классификация языков программирования;
  2. Проблемы выбора языков программирования при разработке кроссплатформенных приложений

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

Глава 1. Общая классификация языков программирования

1.1. Эволюция языков программирования

По мере того как технология становится все более и более доступной широкой публике, растет и потребность в программистах. Написание компьютерных кодов и программ, оно же кодинг (от англ. "Coding"), - это навык, который приобретается и совершенствуется на протяжении долгого времени, но даже самый опытный программист когда-то был новичком.

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


Язык программирования - система обозначений для описания алгоритмов и структур данных, определенная искусственная формальная система, средствами которой можно выражать алгоритмы.[1]

Прогресс компьютерных технологий определил процесс появления новых разнообразных знаковых систем для записи алгоритмов языков программирования. Смысл появления такого языка - упрощение программного кода.

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

На заре компьютеризации (в начале 1950-х г.г.), машинный язык был единственным языком, большего человек к тому времени не придумал. Языки низкого уровня мало похожи на нормальный, привычный человеку язык. Большие, громоздкие программы на таких языках пишутся редко. Зато если программа будет написана на таком языке, то она будет работать быстро, занимая маленький объем и допуская минимальное количество ошибок. Чем ниже и ближе к машинному уровень языка, тем меньше и конкретнее задачи, которые ставятся перед каждой командой.

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

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

Языки программирования высокого уровня (FORTRAN, ALGOL, LISP,COBOL и т. д.) не похожи на язык ассемблера. Языки высокого уровня разработаны специально для того, чтобы можно было иметь дело непосредственно с задачей, решаемой программой. В этом качестве они иногда называются процедурными языками, поскольку описывают процедуру, используемую для решения задачи. Языки высокого уровня машинонезависимы. Программы же на языке ассемблера непосредственно относятся к той машине, на которой они должны выполняться.


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

А разные подвиды ассемблера применяются для программирования других устройств, где критичным является размер программы. Языки программирования высокого уровня отличаются от предыдущих повышением эффективности труда разработчиков за счет абстрагирования от конкретных деталей аппаратного обеспечения. Одна инструкция языка высокого уровня соответствовала последовательности из нескольких низкоуровневых инструкций, или команд.[2]

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

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

1.2. Области применения современных языков программирования

В таблице 1.1 рассмотрены современные языки программирования.

Таблица 1.1 – характеристика современных языков программирования

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

Обзорная информация

Язык Dart (компания Google)

Объекты в Dart определяются с помощью классов и интерфейсов, как в C++ или Java. Идея его создания основана на том, чтобы сделать язык таким же привычным, гибким и динамичным как JavaScript.

Go (компания Google)

Создан для легкого программирования, подходящий для всего - от разработки приложений до программирования систем. Язык больше похож на C или C++, чем на Java или C#. Однако, как и последние языки, Go включает в себя такие современные функции, как очистка памяти от ненужных данных, отражение текущих процессов выполнения и поддержку параллельности.

Ора

Создан для того, чтобы связать в себя интерфейс пользователя, логику сервера и базу данных ввода-вывода. Компилятор самостоятельно решает, где запушена программа и выполняет написанный код. Среда выполнения Opa объединяет собственный веб-сервер и систему управления базой данных, которые не могут быть заменены самостоятельными альтернативами. Opa поставляется бесплатно и на данный момент доступен для 64-х битных Linux и Mac OS X платформ, другие же порты пока разрабатываются.[3]

Sketch

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

Wolfram Alpha

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


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

На сегодняшний день существуют несколько языков программирования, которые имеют перспективные направления для развития. К их числу относятся: Elm, Rust, Kotlin, Crystal, Elixir. Они доказали свою состоятельность путем создания сильных сообществ, но они до сих пор не используются большинством консервативных IT-компаний.

На рисунке 1 изображен уровень популярности четырех из пяти языков программирования.

Рисунок 1- Популярность Elm, Rust, Kotlin, Elixir (на основе данных StackOverflow и GitHub)[4]

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

Существует огромное количество языков программирования. Каждый язык был придуман и создан для решения определенного типа задач. Большая часть языков пересекается в функционале, поэтому одну и ту же задачу можно решать различными инструментами. Но при этом, у каждого языка программирования есть свои преимущества, даже при решении одного типа задач.

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

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

Ада • АПЛ • Ассемблер • ActionScript • ABAP/4 • AutoIt • AWK • BASIC • C • Кобол • C++ • C# • Cω • Clarion • Clojure • ColdFusion • Common Lisp • D • dBase • Delphi • Eiffel • Erlang • F# • Forth • Фортран • Gambas • Go • Groovy • HAL/S • Haskell • Icon • Java • JavaScript • Limbo • Lua • MATLAB • Object Pascal • Objective-C • OCaml • Oz • Оберон • Parser • Паскаль • Perl • PHP • PowerBASIC • PureBasic • Python • ПЛ/1 • Пролог • Ruby • Scala • Scheme • Smalltalk • SQL • PL/SQL • Tcl • Vala • Visual Basic • VB.NET

Академические:

Clean • Curry • Лого • ML • Модула-3 • РЕФАЛ • Симула • IEC61131-3 Instruction List • ST • FBD • Ladder Diagram (LD) • SFC

Эзотерические:

HQ9+/HQ9++ • INTERCAL • Brainfuck • Brainfork • Befunge • Malbolge • Piet • Spoon • Unlambda • Whitespace • FALSE

Прочие:

Алгол • Алгол 68 • Модула-2 • Miranda • Hope

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


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

Код на С:

#include

int main(void)

{

int month;

month = 13;

while (month != 0)

{

puts("Введите номер месяца (для выхода, введите 0): ");

scanf("\n%d", &month);

if ((month == 12) || (month == 1) || (month == 2))

{

printf("Зима \n \n");

}

if ((month == 3) || (month == 4) || (month == 5))

{

printf("Весна \n \n");

}

if ((month == 6) || (month == 7) || (month == 8))

{

printf("Лето \n \n");

}

if ((month == 9) || (month == 10) || (month == 11))

{

printf("Осень \n \n");

}

if (month > 12)

{

printf("Такого месяца нет.\n \n");

}

}

printf("Программа завершена. :)\n");

return 0;

}

Код на Python (вариант 1):

# -*- coding: utf-8 -*-

months = 13

while months:

print("Введите номер месяца (для выхода, введите 0): ")

months = int(input())

if (months == 12 or months == 1 or months == 2):

print('Winter')

elif (months == 3 or months == 4 or months == 5):

print('Spring')

elif (months == 6 or months == 7 or months == 8):

print('Summer')

elif (months == 9 or months == 10 or months == 11):

print('Autumn')

else:

print('To exit, enter "0"')

Код на Python (вариант 2):

# -*- coding: utf-8 -*-

month = {12 : 'Winter', 1 : 'Winter', 2 : 'Winter',

3 : 'Spring', 4 : 'Spring', 5 : 'Summer',

6 : 'Summer', 7 : 'Summer', 8 : 'Summer',

9 : 'Autumn', 10 : 'Autumn', 11 : 'Autumn'}

i = 13

while i:

print("Введите номер месяца (для выхода, введите 0): ")

i = int(input())

if ((i > 0) and (i < 13)):

print(month[i])

elif (i > 12):

print('Такого месяца не существует. Для выхода из программы введите "0".')

else:

print('Программа завершена.')

Код на Python (вариант 3):

print("Введите номер месяца (для выхода, введите 0): ")

m = 13

while m != 0:

m = int(input())

print (["Зима", "Весна", "Лето", "Осень"][((m+1) % 11) // 3])

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

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

Количество языков велико и их становится больше с каждым годом. Технологии шагают семимильными шагами и быстро устаревают, а с ними и некоторые языки программирования. По этой причине программистам приходится изучать новые языки с новыми технологиями. Есть языки, которые существуют и развиваются уже 20-25 лет. Например, С и Python.

Прикладное (системное) программирование - это программирование железа, систем на достаточно низком уровне. В этом направлении очень многое зависит от окружающей среды (ОС - операционной системы). Можно разрабатывать, начиная от ОС, драйверов до простых и сложных пользовательских программ. Другими словами, можно написать все, что захочется. В связи с тем, что зависимостей очень много, необходимо изначально продумать, под какую ОС будет разрабатываться ПО. Основные языки для системного программирования - это Assembler, С, С++, Python, Perl, Java.