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

Классификация языков программирования. Критерии выбора среды и языка разработки программ (Синтаксис языков)

Содержание:

Введение

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

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

Объектом исследования послужили Классификация языков программирования. Критерии выбора среды и языка разработки программ.

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

Цели исследования:

  1. Просмотреть общие сведения и уровни языков программирования.
  2. Выбор наилучшего языка для решения определенных задач

Задачи исследования:

  1. Ознакомления с языками программирования.
  2. Сравнение языков программирования
  3. Обзор современных языков программирования.

В первой главе рассматриваются общие сведения о языках программирования

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

В данной курсовой работе использовались научно-исследовательские методы.

Применяемые технические средства:

Процессор: intel i3-6100

Оперативная память: 4 ГБ, ddr4

Видеокарта: Intel (R) HD Graphics 530

Диски: 2x ssd 120 ГБ

Программные средства:

Ос: Windows 10 , Debian Linux 10

asm: Fasm

c++: mingw

IDE) Qt creator.visual studio

Работа выполнена в программе LibreOffice 6

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

Языки проговаривания, далее ЯП, являются средством для создания приложений для ЭВМ. ЯП являются искусственно созданными языками. От естественных языков они отличаются ограниченным числом “слов” и очень строгими правилами записи команд (операторов). Поэтому при применении их по назначению они не допускают свободного толкования выражений, характерного для естественного языка.

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

Основные требования, предъявляемые к языкам программирования:

стандартизация — использования в ЯП общих форм и порядков
гибкость - ЯП не должен ограничивать программиста

ЯП можно разделить на несколько групп:

  • машинные;
  • машинно - ориентированные (ассемблеры);
  • машинно-независимые (языки высокого уровня).

Язык машинного кода очень сложно воспринимается человеком вследствие чего разработка программ занимает огромное количество времени поэтому были придуманы языки программирования, цель которых - представлять машины инструкции в виде человека понятных слов наподобие add mul и так далее

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

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

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

1.1 Синтаксис языков

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

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

Так что, в большинстве случаев, новые языки программирования куда как более удобны, чем старые. Это приводит к тому, что огромное количество языков со временем теряет свою актуальность, не перестает развиваться. Это, например, случилось с бесиком и Pascal. Но стоит отметить, что иногда из-за того, что язык был первым в своей области, его крайне сложно заменить на другой, например, это касается си Sharp и Java.

Также огромное количество языков, синтаксис которых сильно отличается от других, в большинстве случаев это связано с узкой направленностью данных языков ярким примером тому служат Haskell и Scala

1.2 Новая концепция

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

Объектно-ориентированный подход использует следующие базовые понятия:

• объект;

• свойство объекта;

• метод обработки;

• событие;

• класс объектов.

Объект — совокупность свойств (параметров) определенных сущностей и методов их обработки (программных средств).

Свойство — это характеристика объекта и его параметров. Все объекты наделены определенными свойствами, совокупность которых выделяет (определяет) объект.

  • Метод — это набор действий над объектом или его свойствами.
  • Событие — это характеристика изменения состояния объекта.
  • Класс — это совокупность объектов, характеризующихся общностью, применяемой к ней методов обработки или свойств.

Существуют различные объектно-ориентированные технологии, которые обеспечивают выполнение важнейших принципов объектного подхода:

• инкапсуляция;

• наследование.

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

Класс может иметь образованные от него подклассы. При построении подклассов осуществляется наследование данных и методов обработки объектов исходного класса

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

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

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

1.3 Компиляция и интерпретация

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

Одной из основных проблем при разработке является переносимость программы между операционными системами хоть операционные системы. и позволяют значительно увеличить переносимый с программы, но при этом очень редко операционной системой используют одни стандарты. Яркий пример тому Windows и unix, и тому подобные операционные системы. Всё это привело к тому, что бынамла добавлено прослойка в виде интерпретатора, задачей которого является выполнение программы в реальном времени и унификации её работы в любой среде, в которой работает сам интерпретатор. Яркими примерами таких языков служат Python, Ruby, Java, Java Script и многие другие.

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

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

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

В каких случаях не стоит принимать программы, работающие с помощью Интерпретатора:

  1. В случае необходимости большой производительности
  2. Необходимости работать с определенной операционной системой, либо её компонентами
  3. Обычных настольных приложений

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

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

1.4 Библиотеки и Фреймворки

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

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

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

1.5 Стандартные средства языка

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

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

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

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

1.6 Инструменты

При разработке приложений также немало внимания стоит уделить инструментарию. Так как, инструментарий позволяет тратить меньше времени на управление проектом расширением проекта, либо внесением изменений.

Инструментарий можно разделить на 3 группы

  1. Компилятор и интерпретатор - большинство популярных языков программирования имеет несколько реализаций. Реализации могут значительно отличаться друг от друга, и как правило составляют экосистему платформы. Пример gcc,llvm. Также, от этого может зависеть упор на какие-либо вещи в языке. Например, компилятор C++ от Intel позволяет повысить производительность программы на процессорах Intel. Интерпретаторы также могут отличаться. Главным отличием является быстродействие исправление каких-либо недостатков относительно других реализации. При этом, как правило, создаются стандарты, которым должны следовать каждые компиляторы Это позволяет добиться высокой переносимости, а также возможность перейти на другие средства в кратчайшие сроки.
  2. Интегрированная среда разработки - программный комплекс, позволяющий повысить эффективность написания программ. Это достигается путем автоматизация некоторых задач, а также в большинстве случаев, создание абстракций относительно компиляторов, либо интерпретаторов. Немалой частью стоит отметить, что интегрированные среды разработки позволяют повысить эффективность работы с кодом за счет автоматического крафтинг Skoda автодополнения.
  3. Система сборки - это неотъемлемая часть современного программирования. Данные системы позволяют эффективно управлять проектом. Также основной задачей является автоматизация рутинных задач, например, поиска файлов в проекте, либо поиск внешних зависимостей для успешной компиляции, либо интерпретация приложения. Ещё одна задача заключается в переносе одного проекта в другие системы сборки. Это может потребоваться при переходе с одной платформы на другую. Примеры системных сборок - make cmake qmake vsp

2. Обзор. Язык программирования

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

Большее внимание будет уделено языкам программирования C и С++. Это связано в первую очередь с тем, что большинство концепций других языков продаются. Но именно отсюда, либо развивают их, либо этих концепций в них нет.

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

Си — компилируемый статически типизированный язык программирования общего назначения, разработанный в 1969—1973 годах сотрудником Bell Labs Деннисом Ритчи.

Краткое описание

Был крайне популярен в конце 20 века. И сильно повлиял на развитие языков программирования. Большинство современных языков используют конструкции и синтаксис схожий с Си.

Язык завоевал свою большую популярность по нескольким причинам

Аккуратный компактный синтаксис.

Общая низкоуровневневость языка позволяла писать приложение, начиная от прошивок микроконтроллеров и заканчивая веб-серверами.

Основные особенности языка является

Простая языковая база. Большинство функций были перенесены в библиотеки

Ориентация на процедурное программирование

Система типов, предохраняющая от бессмысленных операций

Прямой доступ к памяти

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

Синтаксис языка, используя символы латинского алфавита от цифры некоторые специальные символы.

В то же время в Си отсутствуют:

Вложенные функции

Возвращение нескольких значений из функций

Средства автоматического управления памятью

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

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

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

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

Язык Си

Паскаль

Пример программы, выводящей строку «Hello, world!»:

#include <stdio.h>

int main(void)

{

printf("Hello, world!\n");

return 0;

}

program p;

begin

writeln('Hello, World!')

end.

Пример программы, выводящей строку Таблица умножения

#include <stdio.h>

int main()

{

int i, j, n;

printf ("Введите n: ");

scanf ("%d", &n);

for (i = 1; i <= n ; i++) {

for (j = 1; j <= n ; j++) {

printf ("%5d", i * j);

}

printf("\n");

}

retur

uses crt;

var a:array[0..50,0..50]of integer;

i,j,n:integer;

begin

readln(n);

for i:=1 to n do

begin

a[i,0]:=i;

a[0,i]:=i;

end;

for i:=1 to n do

for j:=1 to n do

begin

a[i,j]:=i*j;

end;

for i:=0 to n do

begin

for j:=0 to n do

begin

if (i=0) or (j=0) then

textcolor(lightgreen)

else

textcolor(white);

write(a[i,j]:4);

end;

writeln;

end;

end.

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

условное встраивание и удаление кусков из текста, включая сами директивы

подмены заданной лексемы текстом.

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

Но причина, по которым этот язык на данный момент устарел, заключается в

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

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

Расширение задачи выполняемые ЭВМ привело к тому, что некоторые задачи стало решать проще с использованием других средств.

Например, веб-сайта, корпоративные решения программы с графическим интерфейсом игры.

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

Список программ которые написаны на си

  • Ядро Linux
  • Большая часть ядра windows
  • Большая часть утилит командной строки для unix-подобных операционных систем
  • openssl
  • apche web server

Стандартный библиотека

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

Разработка игр

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

Разработка Desktop приложения.

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

Недостатки

  1. Ключевым недостатком си является ручное управление памятью, что может привести к проблемам с безопасностью программы, либо с критическими ошибками, а также, с понижением производительности работы программы. Из-за этого, для защиты памяти потребуется уделять особое внимание при разработке программ
  2. Из огромного количества возможностей в языке, которые могут нарушить в принципе типа безопасности приводит к тому что в программе может трудно закрываться обнаружена ошибка.
  3. Плохая поддержка модульности, подключение внешнего модуля через preprocessor на выставку, серьёзно замедляет компиляцию, а также невозможность ограничить доступ к определенному модулю файлы могут привести к проблемам с именами

2.2 Язык C++

Си++ [C++] - Язык программирования высокого уровня, созданный Бьярном Страустрапом на базе языка Си. является его расширенной версией, реализующей принципы объектно-ориентированного программирования. Используется для создания сложных программ.

Краткое описания

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

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

Пример кода который складывает строки

C

C++

char* concat(char *s1, char *s2) {

size_t len1 = strlen(s1);

size_t len2 = strlen(s2);

char *result = malloc(len1 + len2 + 1);

if (!result) {

fprintf(stderr, "malloc() failed: insufficient memory!\n");

return NULL;

}

memcpy(result, s1, len1);

memcpy(result + len1, s2, len2 + 1);

return result;

}

int main()

{

char *s = concat("first", "second");

printf("%s\n", s);

free(s);

return 0;

}

#include <string>

int main()
{
std::string s = "first";
s += "second"

return 0;
}

Обобщеное программирование

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

Стандартная библиотека

std lib c++ - это набор стандартных алгоритмов контейнеров функции для работы с датой и временем, а также файловой системой работы с многопоточностью использования регулярных выражений. Ещё огромное количество вспомогательных средств которые позволяют программисту значительно сократить время на написание компонентов для создания приложений. Также стоит отметить, что в стандартную библиотеку C++ входит специально адаптирована версия стандартной библиотеки си, что позволяет сохранять и быстро переносить уже готовые приложения. Также важно отметить что вся библиотека перешла на объектно-ориентированному основу

Умные указатели

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

Контейнеры

Ряд стандартных контейнеров, который часто используется в программах, таких как Vector Map List Stack Qure

Также стоит отметить наличие итераторов, которые позволяют создавать обобщенные алгоритмы сортировки поиска удаленых перемещенных данных. Это позволяет программисту не писать эти алгоритмы с нуля, а использовать Использовать универсальные элементы. А за счёт того что всё это странно стандартную библиотеку то применение итераторов облегчает работу даже с внешними библиотеками

Также стоит отметить контейнер типа string, который позволяет очень сильно оптимизировать работу со строками и осуществлять в них поиск замены лексем

Какую проблему решает C++

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

Разработка Desktop приложения.

Язык C++ является лидером в разработке Desktop приложения. Этому послужили совместимости с Си и огромное количество уже готовых инструментов библиотек для ускорения создания приложение.

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

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

Список программ которые написаны в C++

  • Virtual Box,
  • Skype,
  • VLC-плеер,
  • Adobe Illustrator
  • Веб сервера Apache и nginx

И данный список можно продолжать очень долго. Так большинство программ написано по *nux

Разработка прошивок для Микроконтроллеров

На текущий момент стали популярны микроконтроллера Arduino Одним из основных языков программирования на них является C++. Обусловлено это низкоуровневым языком удобного синтаксиса, а также наличия объектно-ориентированного программирования, что позволяет выделить и C++ на фоне си, так как C++ позволяет удобно организовывать управления электронными устройствами с помощью объектов.

Разработка игр

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

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

Также стоит отметить, что снедавних времён большинство игр особенно касающиеся мобильных платформ и небольших Энди проектов разрабатывается с использованием уже готовых решений, которые, как правило, используют язык программирования си Sharp, либо собственные, специально сделанные для программирования игр языки, например gamemaker Studio

Примеры кода

Пример программы Hello, world!, которая выводит сообщение, используя стандартную библиотеку, и завершается.

#include <iostream>

using namespace std;

int main()

{

cout << "Hello, world!" << endl;

return 0;

}

Недостатки языка

Большинство проблем из языка си перешло в си плюс плюс. Это касается огромного количества ненужных элементов языка и отсутствие модулей Что является одной из самых больших проблем на сегодняшний момент. Также одной из проблем является невозможность модифицирования стандартных классов.

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

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

На данный момент является одним из самых популярных языков это связано с несколькими факторами

  1. Огромное сообщество языка и наличию обучающих материалов
  2. Огромное количество инструментов для разработки
  3. Синтаксис который позволяет писать синтетически красивый код

Разработка игр

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

Автоматизация рутинных задач

Автоматизация рутинных задач - Очень часто используется для написания небольшой скриптов делающий автоматически работы такие как работа с файлами сканирование PDF файлов работа с Excel таблицами

Машинное зрение

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

Использование связки с микро компьютером Raspberry Pi

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

Использование Django для создания сайтов

Использование Django для создания сайтов - на данный момент развивающая отрасль. Связано это с тем, что использование других технологий таких как node JS в силу своих недостатков не может удовлетворить потребности современных веб-проектов.Это касается в первую очередь производительности работы , снижение скорости обслуживания сайта.

Недостатки языка

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

Примеры кода

Генератор чисел Фибоначчи

def fibonacci(max): # генератор (а не функция, т.к. оператор return заменён на yield)

a, b = 0, 1

while a < max:

yield a # return a, + запоминаем место рестарта для следующего вызова

a, b = b, a + b # параллельное присваивание, которое выполняется одновременно и параллельно

for n in fibonacci(100): # используем генератор fibonacci() как итератор

print (n) # печатаем все числа Фибоначчи меньшие 100 через пробел

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

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

Краткое описание

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

Огромной популярностью Java является работа над ошибками, которые были совершены в C++. Убраны многие ненужны элементы и добавлены действительно полезные инструменты, позволяющие эффективно разрабатывать приложения. Также немалым преимуществом является возможность использовать Java связки с другими языками, которые компилируются в байт-код Java, что позволяет использовать новые языки программирования на платформе байт код Java уже в готовых проектах, либо совершать быструю миграцию. Из-за чего на рынке присутствует огромное количество вакансии. Связано это, в первую очередь, в местном применении. Java в большинстве случаев является приложением корпоративного сектора. А так как кооперативный рынок развивается достаточно быстро, количество вакансий на Java одно из самых больших на рынке. На данный момент единственным конкурентом считается платформа dotnet от Microsoft.

Корпоративный сектор

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

Разработка для Мобильных платформ

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

Разработка для Desktop

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

Разработка Игр

Разработка игр на Java является крайне плохой идеей. Первая причина - это высокие требования к аппаратному обеспечению компьютера и сложностью в поддержании игры. Но при этом стоит отметить, что одним из преимуществ написания игры на Java, является возможность запуска почти на всех платформах, где сама виртуальная машина. Яркий пример такой игры является Minecraft. Но при этом стоит отметить что Minecraft разработанный на языке си плюс плюс в десятки раз более производительный, чем оригинальная версия написанная Java

Недостатки языка

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

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

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

Краткое описание

Язык разрабатывающих в первую очередь, как средство создания динамических web-страниц, стал самым популярным языком программирования в мире за счет огромного роста интернета и потребности создания интерактивных страниц, что привело к монополии на этот сектор. Стоит также отметить, что джаваскрипт не имеет ничего общего с Java, а название этого языка было выбрано ради привлечения внимания за счёт имни. Также стоит отметить, что вкупе со стандартом html5 на данный момент почти полностью вытеснил технологию Flash

Web Страницы

Основная задача джаваскрипта - это интерактивные веб-страницы. Данная технология позволяет создавать красивые страницы с рядом функций, которые позволяют сделать более красивее и интерактивний. Также стоит отметить что javascript позволяет обмениваться данными через использование нескольких сайтов с помощью технологии json, что позволяет использовать иные сервисы для улучшения своих страниц. Также стоит отметить технологии ajax, позволяющие обновлять страницу в реальном времени без перезагрузки всех страниц.

Web Сервера

Появление платформы джиос позволило использовать Java Script на стороне сервера. Стоит отметить что на данный момент данный муж пытается заменить другими языками программирования, в частности Python либо Ruby. Это связано с тем что язык имеет крайний не читаемый синтаксис

Web Мультимедия

Современные веб-страницаы используют Javascrpip скрипт для создания Форума для проигрывания видео и аудио. А также игр. Для этого, для создания мультимедийных форумов использовалась технология Flash. Но из-за того что технология значительно нагружает процессор, из-за неэффективной виртуальной машины и неумение программистов оптимизировать свои приложения Flash проекты часто работали крайне медленно. Также большой проблемой стало огромное количество уязвимостей, что могло привести к заражению пользовательских компьютеров вирусами. Ещё одним из важных факторов влияющих на смерть технологии Flash является то, что для его запуска требуется плагин из-за чего категорирование Flash приложений в веб-страница является проблематичным, а также это усложняет использование поисковых систем. Из-за того что джаваскрипт поддерживает большинство браузеров, а также является стандартом созданный на нём веб-приложения запускаются в большинстве браузеров и не требует установки от пользователя плагинов и расширений

Разработка Игр

Также стоит разобрать разработку игр так как на данный момент это отрасль развивается крайне быстро, а также это то, что люди проводят огромное количество времени в интернете, правила к тому чтобы появились множество веб игр которые работают прямо в браузере и так как технология Flash умерла, на её замену пришла html5 JavaScript. Популярность данного направления правила к огромному количеству всевозможных инструментов для создания игр. Так что джаваскрипт идеально подходит для создания браузерных игр

Недостатки языка

  1. Одна из проблем является доступ пользователя к к исходным кодом веб-страница что может привести понижение уровня безопасности и возможности использовать уязвимости
  2. Длинные названия встроенных методов напрем window['document'].getElementById('home').style.color = 'blue';
  3. Отсутствует стандартная библиотека. JavaScript не предоставляет никаких возможностей для работы с файлами, потоками ввода-вывода и прочими полезными вещами;
  4. Ключевая проблема языка является синтаксис который очень трудно разбирать и модифицировать, а также некоторые странных решения с объектами приводит к тому что большинство исходных текстов написанных на джаваскрипте очень трудно читаются

Все эти недостатки привели к тому что чистый джаваскрипт почти нигде не применяется, а применяют специальные фреймворки и другие библиотеки, цели которых упростить все возможные задачи. А также появлению языков которые пытаются заменить джаваскрипт за счёт конвертации в него либо выполнение за счет отдельных технологий, например язык программирования Dart или coffeescript,typescript. На данный момент этими знаками почти никто не пользуется из-за чего джаваскрипт остаётся на данный момент монополистом созданием динамических web-страниц

3. Выбор языка под свои нужды

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

Обучение программированию

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

  • C++ - для обучения не рекомендуется, так как для первого языка программирования имеет достаточно большое количество концепций, а сами возможности языка в руках новичка могут привести к большим проблемам. Для комфортного использования C++ требуется изучение стандартной библиотеки почти в полном объеме, и даже при этом стандартная библиотека не решает достаточно большого количества задач, например, работа с сетью, либо с графическим интерфейсом, а добавление новых библиотек, приложение может потребовать адаптации этих самых библиотек, либо вообще отсутствует в библиотеке для конкретной платформы.
  • Си - почти не пригоден для обучения из-за отсутствия ооп. Крайне мало подходит для новичка. В отличие от C++ требует гораздо более внимательной разработки, больших знаний и принципов работы ЭВМ. При всём при этом тебе также требует много знаний своей стандартной библиотеки. И хотя бы минимальные знания в asm
  • Pytho-идеально подходит для обучения за счет удобного синтаксиса огромного количества учебных материалов. Стандартная библиотека позволяет решать большинство задач, а установка новых библиотек производится достаточно просто также за счёт того что является интерпретируемым языком. Адаптация библиотеки в большинстве случаях не требуется. Также стоит отметить, что для новичка на достаточно легко найти работу на рынке работы
  • Java - неплохо подходит для обучения за счет огромного количества материалов, а также большого количества рабочих мест. Является одним из наилучших выборов для начинающих программистов. Стандартная библиотека языка решает большинство задач. А за счёт того, что контролируется добавление новых библиотек, производится достаточно просто адаптация их почти никогда не требуется
  • JavaScript - Джаваскрипт пригоден для обучения. Если вы собираетесь посвятить свою работу созданию веб-сайтов. В других же случаях рассматривать его не обязательно. У языка имеется достаточно большое количество проблем в синтаксисе,что приводит к усложнению анализа уже готовых решений, но при этом стоит отметить, что по Java скрипту написано огромное количество материала, а базовые концепции языка изучаются очень быстро. Также стоит отметить, что добавление новых решений и библиотек производится достаточно быстро и без каких-либо проблем, но также при этом стоит отметить, что сам по себе джаваскрипт бесполезен и большинство современных веб-сайтов используют достаточно большое количество библиотек, для решения стандартных задач

Трудоустройство

  • Си - крайне сложно найти работу, а также сами требования достаточно высоки. А самих таких мест достаточно мало. Как правило для таких мест требуется огромный опыт работы и знания низкоуровневых языков программирования таких как asmr
  • С++ - Также сложно найти работу, хотя количество вакансий больше, чем у си, но при этом в большинстве случаев требования такие же высокие. Стоит отметить то, что как правило, требуется также знать в идеале стандартную библиотеку алгоритма, а также иметь высшее образование и огромный опыт, поэтому новичкам очень сложно пробиться на высокооплачиваемую работу в этой области.
  • Java - Работу Java-программисту найти достаточно просто за счет обилия вакансии и не очень высоких требований
  • JavaScript - Найти работу достаточно просто из-за этих языков, которые позволяют работать на дому Без особых вложений создание бизнеса
  • Pyonton - Работу найти достатчно просто, но в большинстве случаев требуется изучение огромного количества дополнительных технологий, также стоит отметить, что в небольших городах найти работу крайне сложно.

Нолходимый знания

  • Си - Тебует почти полного понимания работы операционной системы и процессоров. Отсутствие знания по этим областям приводят к тому что программа на си теряет производительность, а также происходит появление критических ошибок связанных с памятью. Также для изучения си требуется изучении других технологий это система сборок инструментов отладчиков .Также требуются знания по работе алгоритмов и математических моделей для произведения оптимизации
  • C++ - По сравнению с C, куда менее требовательна к знаниям работы операционных систем и по работе процессора, за счёт модификации языка. С позволяет автоматизировать тестирование А за счёт своей богатой стандартной библиотеки. Но при этом также стоит изучать и программную платформу и огромное количество сопутствующих утилит для оптимизации создания приложений
  • Java - Большие требования к знаниям стандартной библиотеки, а также технологий вроде SQL и фреймворка. Но стоит отметить, что в учебных материалов уже включены самые популярные фреймворки. Интерпретируемость языка позволяет эд-э снизить количество информации о работе в ЭВМ. Но при этом требует хорошего знания в экосистеме Java.
  • Pyon - Почти не требует никаких знаний по работе операционной системы и других технологий. Но для профессионального использования требует наличие знаний в области машинного обучения и статистики. При этом как правильно он не является основным языком программирования в проектах.
  • JavaScript - Требования к хорошим знанием HTML CSS а также ряда других технологий делают количество знаний по Java скрипту достаточно большим. Стоит также отметить огромное количество фреймворков. Всё это приводит к огромным знаниям, необходимым даже для базовой разработки современных веб-сайтов

Место применения

  • Си - По большей части применяется для создания прошивок для микроконтроллеры либо небольшие программы. В других областях не годится причина кроется в устаревшем дизайне. Закон и отсутствие многих концепции приводит к тому что даже банальная программа вроде чтения файла требует огромного количества кода, большая часть которых связана с обработкой ошибок, поэтому на данный момент с ним можно использовать только для написания прошивок для микроконтроллеров, либо приложение —которым требуется, как можно низкоуровневое взаимодействие
  • Си++ - За счёт модификация по сравнению С, позволяет писать приложение достаточно высокого уровня. Является лидером на данный момент при написании графических утилит за счет обилия библиотек учебного материала и вспомогательных инструментов также неплохо подходит для написания графических приложений либо видеоигр, но при этом совершенно не подходит для создания корпоративных приложений, либо создания веб-приложений Стоит также отметить, что разработка небольших Program, либо программа для автоматизации задач, также малоэффективны так как написание базовых вещей требует достаточно большое количество кода
  • Java - Основным местом применения является корпоративное приложение, либо веб-приложения для этих целей она отлично подходит и за счет имеющихся количество инструментов и обучающих материалов, Но за счёт того что исполняется в реальном времени полностью не подходят для написания приложение требующих максимального быстродействия а также приложения которые должны быть интегрированные в операционной системы для разработки игр он также не подходит, так как дает куда меньшую производительность
  • Pyton - Подходят для создания небольших программ, либо программ для автоматизации рутинных задач, а также для статистического анализа и машинного зрения и машинного обучения, не подходит для написания приложений, требующих высокую производительность, либо интеграцию в операционную систему. Также с недавних пор стал использоваться в в приложениях
  • JavaScript - Основным местом работы является веб браузеры и создание интерактивных страниц, также подходит для создания веб приложений и небольших игр.

Перспективы

  • С - На данный момент почти без перспективный язык программирования большинство задач которую решают можно решить другими способами гораздо быстрее получить более безопасную программу
  • С++ - На данный момент язык по-прежнему используется в огромном количестве приложение. А за счёт развития стандарта может остаться лидером в области создания приложений ещё на долгие годы так как по большей части альтернатив нет
  • Java -На данный момент уже есть один серьезный конкурент - это платформы от Microsoft. Хотя всё больше проектов использует её. Но по сравнению с проектами на Java их крайне мало, поэтому можно на данный момент говорить, что Java является монополистом в рынке корпоративных решений
  • Pyton - На данный момент альтернатив эту языку почти нет, а те что имеются не имеют такое мощное сообщество и набор библиотек- инструментов для разработки. А также за счёт того
  • JavaScript - На данный момент наличествует несколько конкурентов такие как dart но Данный проект развивается Крайне медленно Что приводит по сути к монополии в этой области

Заключение

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