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

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

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

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

Добавлен: 14.05.2023

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

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

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

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

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

Стоит отметить, что стандартные средства языка не обязаны решать весь список задач. Их основная цель, ускорить разработку и позволить не тратить время на написание стандартных шаблонов. Но некоторые языки программирования рассчитаны для определенных целей, например, такие как, 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++ входит специально адаптирована версия стандартной библиотеки си, что позволяет сохранять и быстро переносить уже готовые приложения. Также важно отметить что вся библиотека перешла на объектно-ориентированному основу

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

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