Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Классификация языков программирования высокого уровня

Тип Курсовая
Предмет Основы программирования

ID (номер) заказа
3232859

500 руб.

Просмотров
1443
Размер файла
1.21 Мб
Поделиться

Ознакомительный фрагмент работы:

Введение

Актуальность исследуемой проблемы. Языки программирования высокого уровня облегчают решение сложных программных задач, а также упрощают портирование программного обеспечения. Данные свойства достигнуты благодаря оторванности высокоуровневых языков от аппаратной реализации компьютера.
Существует множество классов ЯПВУ, различающихся по парадигме и стилю написания кода.
Объект исследования – языки программирования высокого уровня.
Предмет исследования – классификация языков программирования высокого уровня.
Целью курсовой работы является исследование различных типов высокоуровневых языков, их анализ.
Для достижения поставленной цели необходимо решить следующие задачи:
Проанализировать этапы развития языков программирования, и то, как они связаны с совершенствованием ЭВМ;
Рассмотреть типы ЯПВУ, их сходства и различия;
Проанализировать популярность различных типов высокоуровневых языков на основе статистических данных;
Опираясь на проведенный анализ, сделать выводы о востребованности ЯПВУ.
Методическую базу исследования составляют общенаучные методы (эмпирический метод, анализ, синтез, сравнительный анализ, моделирование, абстрагирование, аналогия), специальные методы (сравнительно-исторический метод), системный подход.
Краткая характеристика источников. В данной работе были использованы книги, изданные в серьезных издательствах, таких как: Мир, Добросвет, Профобразование, издательский дом «Вильямс», Физматлит, Питер, ДМК Пресс и так далее. Учебники и статьи, издававшиеся в издательствах таких ВУЗов, как ИТМО, ТГУ, МГУ, Университет Карнеги Меллон, Университет Калифорния. А также статьи на таких уважаемых IT-сообществом сайтах, как habr.com, tiobe.com, tproger.ru, erlang.org и других.

Глава 1 История развития языков программирования1.1 Начальный этапКомпьютер выполняет различные действия в соответствии с заложенной в нее программой. Именно программа превращает ЭВМ из бесполезной груды металла в универсальную машину. Она способна, в зависимости от исполняемой программы, заложенной в память компьютера без изменения ее электронной схемы, решать различные задачи.
Систематизированная совокупность команд, входящих в набор исполнимых для конкретной ЭВМ, называется программой. [20] Система команд современного компьютера примитивна, так как состоит из элементарный: сложить 2 числа, проверить, не является ли число нулем, скопировать блок данных из одной части памяти компьютера в другую и так далее. Именно выполнение большого количества подобных простейших команд позволяет современным ЭВМ решать действительно сложные прикладные задачи, например, предсказание прогноза погоды или расчет траектории полета космических аппаратов.
Первым программистом в истории по праву считается леди Ада Лавлейс, которая создала описание вычислительной машины Чарльза Бэббиджа, в которое в том числе входило предписание с вложенными циклами по расчету чисел Бернулли, ввела фундаментальные понятия «цикл» и «рабочая ячейка». [29, 33]
Аналитическая машина Бэббиджа основывалась на механических узлах и должна была быть оснащена паровым двигателем, но существовала лишь в виде проекта, реализация которого означала бы создание первого программируемого компьютера. Для ввода программы в машину должны были использоваться перфокарты. Базовые части машины были в XX веке реализованы энтузиастами по чертежам и записям Ч. Бэббиджа.
Так в какой же стране впервые появился компьютер? К. Зус, немецкий инженер, в 1938 году построил первую из трех модификаций своей ЭВМ: Z1. Ее фото можно посмотреть в приложении 1. Машина была электромеханической, элементарной базой ей служили реле, списанные с телефонных станций. [34] Программа задавалась при помощи перфоленты, оперативная память составляла всего 0.17 Кбит. [17, с. 34] Зус увлекся созданием универсальной машины, способной решать не только вычислительные задачи, однако этот проект так и не был реализован. После окончания Второй мировой войны, в 1945 году, он переехал из Берлина в Баварские Альпы. Там он начал разработку для своей логической машины языка Plankalkül (планирующее исчисление). Этот язык программирования обладал следующими чертами современных языков программирования высокого уровня:
массивы;
наличие повторно вызываемых функций;
исключения;
аналог условного оператора;
цикл ПОКА;
аналог оператора assert;
встроенные типы данных.
Любопытной особенностью этого языка была двумерная запись программы, которая усложняет построение транслятора. Это роднит ее с более современными языками программирования, например, с BeFunge. Далее приводится пример программы на этом языке (сортировка):
P6 sort (V0[:6.8.0]) => R0[:6.8.0]
W1[0](4)[
V0[i0:8.0] => Z0[i0:8.0]
1 => Z4[:32.0]
W1[1](i0)
[
(V0[i0:8.0] < Z0[i1:8.0]) & (Z4[:32.0]=1) →
[
i0-i1 => Z1[:32.0]
W1[2](Z1[:32.0])
[
i0 — i2 — 1 => Z3[:32.0]
i0 — i2 => Z2[:32.0]
Z0[Z3[:32.0]:8.0] => Z0[Z2[:32.0]:8.0]
]
V0[i0:8.0] => Z0[i1:8.0]
0 => Z4[:32.0]
]
]
]
END
Зус составил 49 страниц программного кода для оценки шахматных позиций, но так и не реализовал идею создания автоматического преобразователя программы в исполнимую на его ЭВМ перфоленту. [34]
1.2 Второе поколение ЯП. Ассемблер.На начальных этапах развития вычислительной техники программы, написанные в машинных кодах, вводились с пульта, перемычками или тумблерами, а представление информации в памяти ЭВМ до сих пор представляет собой двоичный код. [17] Пример программы в машинном коде архитектуры PDP-11/СМ ЭВМ:
0110010111000001
0000000000000100
0000000000000000
Машинные коды можно считать языками программирования первого поколения. Однако они всегда отличались неудобством, поэтому в программах было огромное количество ошибок. [20]
Огромная разница между сложностью решаемых задач и примитивностью машинных команд [5] представляла собой явную проблему. Возникла идея использования мнемонических обозначений команд, затем при помощи таблиц соответствия переводить программу в машинный язык.
Создание специальной системной программы (ассемблера), при помощи которой машина сама выполняла перевод, ознаменовалось большим скачком в программировании. Появилась возможность давать символические имена определенным ячейкам, что позволило не обращаться к ним по конкретным адресам в памяти. Эта технология была названа «автокодом» или ассемблированием. Уже тогда ее назвали автоматическим программированием. [5]
Язык ассемблера относится ко второму поколению языков программирования. Программа, которая раньше записывалась при помощи машинного кода, на ассемблере выглядит более понятно для пользователя (по-английски ADD означает «сложить», HALT — «стоп»):
ADD #100, R1
HALT
Переход к ассемблеру повлек следующие положительные исходы:
Благодаря удобству «автокода» повысилась производительность труда, сократилось время разработки.
Уменьшилось количество ошибок в коде, а значит, повысилось качество программ.
Для того, чтобы машина поняла программу, написанную на автокоде, нужна программа-переводчик, строящую программу в машинном коде по предоставленному на ее вход тексту. [17, 20] При этом программист все равно должен мыслить в терминах машины. Ассемблер, как и машинный код, был языком низкого уровня, к тому же, программы, написанные на нем, не был переносимыми. Все старые программы становились бесполезными, при замене ЭВМ на другую модель, их приходилось переписывать.
Экономически выгоднее производить машины, работающие на примитивных машинных кодах, что стало понятно после неоднократных попыток создать ЭВМ с аппаратной поддержкой более сложного языка. Примером может послужить компьютер «Эльбрус», созданный в СССР. Также можно вспомнить Intel 432. Машинный язык этих микропроцессоров поддерживал обработку сложных структур данных.
1.3 ЯП третьего поколенияПоявление языков программирования третьего поколения, то есть высокого уровня, привело к очередной революции. Стали применяться абстрактные переменные и сложные выражения для определения базовых понятий, таких как ячейки памяти или простейшие операции суммирования чисел в ячейки памяти. [17, 20] Первым языком программирования высокого уровня был Фортран.
На примере Алгола можно увидеть, что разработчики пытались передать в языке именно суть алгоритма решения задачи, не привязываясь к мелким деталям реализации программ на разных ЭВМ. [6]
Языки программирования третьего поколения стали частично переносимыми благодаря трансляторам, которые переводили программу с соответствующего языка в машинный код конкретной ЭВМ. Основным минусом технологии была необходимость предварительной разработки программы-переводчика.
Трансляторы делятся на 2 типа:
Компиляторы транслируют всю программу сразу, а затем строит объектный модуль, состоящий из машинного кода, понятного процессору нужной модели ЭВМ.
Интерпретаторы переводят программу на языке высокого уровня в машинный код построчно, создавая специальное представление для каждой строки на промежуточном языке, которое направляется виртуальной машине, которая сразу исполняет полученные предписания. [1]
У обоих типов есть свои плюсы и минусы. К достоинствам компиляторов относится то, что полученный в результате машинный код может без проблем запускаться на конкретной ЭВМ с максимально возможной скоростью, даже без наличия самого компилятора. Однако при необходимости исправления даже самой маленькой ошибки, весь код придется компилировать заново, даже если он достигает больших объемов. [5, с. 443]
Построчный перевод программы интерпретатором удобен при отладке, так как позволяет сразу видеть, как ведет себя программа, оперативно откорректировать ее по мере надобности. К недостаткам такого способа относится скорость работы, которая ниже, чем у компиляторов примерно в 10-20 раз, обязательное наличие машины времени выполнения в памяти.
Скомпилированная на машинном коде программа, как и на ассемблере, может запускаться только на ЭВМ со сходной архитектурой. При этом для интерпретируемых языков, например, для Java, достаточно просто установить на компьютер машины времени исполнения. В случае с Java она называется JVM – Java Virtual Machine. [27]
Не удивителен тот факт, что языки программирования высокого уровня стали быстро развиваться, им гораздо легче пользоваться, чем ассемблером или машинным кодом. Появление Кобола и Фортрана повлияло на популяризацию программирования среди широкого круга пользователей. В наше время известно более 8000 видов ЯП. Но несмотря на это, лишь немногие из них применялись массово, породили потомков, например, (BCPL — B) — С — Objective C — C++ — Java — C# — C11, и повлияли на развитие индустрии в целом. [20]
Синтаксис большинства современных языков программирования основан на словах английского языка. Существуют и языки программирования, основанный на русском языке. Во времена СССР было создано немало автокодов, которые используются и сейчас в специальных приложениях, например, военных.
Можно отметить языки БЭСМ-6, имевшие оригинальную архитектуру и превосходившие аналоги своего времени. В начале 60-х годов XX века был создан ЛЯПАС, трансляторы для которого были созданы для большинства активно используемых компьютеров в СССР того времени. На международной выставке в Лондоне произвел настоящую сенсацию первый в пире ПК «Мир», который в 1967 году был закуплен IBM. Эта ЭВМ программировалась на языках Алмир -65 и Аналитик. В 1966 году В. Турчиным был создан язык РЕФАЛ, который Н. Н. Непейвода выделил [11] по стилю вместе с Прологом в одну группу «языков сентенциального программирования». Из современных интерпретируемых языков программирования высокого уровня, основанных на русском языке можно выделить 1С Язык программирования. [20]
1.4 Следующие поколения языков программированияВозникает резонный вопрос: что пришло или идет на смену языкам третьего поколения? К языкам программирования могут быть отнесены:
проблемно-ориентированные языки программирования;
декларативный подход к программированию;
языки графического программирования;
использование подмножеств естественного языка в программировании.
Проблемно-ориентированные языки программирования (англ. DSL — Domain Specific Language) используют в различн
ых сферах промышленности, экономики, например, в атомной энергетике, исследованиях космоса. В таких языках помимо базовых управляющих конструкций, типов и структур данных, существуют также встроены средства, решающие узкоспециализированные задачи конкретных предметных областей. [15] Вы можете видеть пример кода на проблемно-ориентированном языке, используемом для программирования бортовых алгоритмов управления реального времени для космических аппаратов:
t11:=(a003=0)=>f005+(a003=1)=>f200
t12:=(a004=0)=>f006+(a004=1)=>f201
t9:=t11CHt12
t13:=f003CHf004
t111:=(a003=0)=>f015+(a003=1)=>f210
t112:=(a004=0)=>f016+(a004=1)=>f211
t91:=t111CHt112
t10:=t13CHt91
t8:=(a002=0)=>t9+(a002=1)=>t10
t6:=f101->t8
t18:=f009CHf010
t19:=((f011->f012)->f014)
t17:=t18->t19
t15:=f103->t17
t16:=f007CHf008
t14:=f102->t16
t7:=t14CHt15
t5:=t6CHt7
t4:=f002CHt5
t3:=f111CHf100
t2:=t3->t4
endtxt
f200=f220
f005=f015
f006=f016
end
В больших информационных системах довольно популярны встроенные проблемно-ориентированные языки. Они позволяются быстрее и удобнее создавать прикладные приложение, что значительно увеличивает качество разработки. В пример можно привести ту же систему управления базами данных Oracle, в которой применяется язык PL/SQL. [20]
Примером идеальной технологии программирования, при которой от программиста требуется лишь постановка задачи каким-то формальным образом и описание требуемых выходных данных является декларативный подход. Эта технология характеризуется тем, что по неформальному описанию задачи «машиной вывода» формируется корректный код. Язык запросов к базам данных SQL – один из примеров декларативного подхода при котором основные действия выполняет система управления базой данной, а программисту достаточно написать просто правильный запрос. [19]
Среди плюсов декларативных языков программирования можно выделить также пригодность для формальных рассуждений и возможность логического анализа в своих собственных понятиях. В первом случае это означает значительное улучшение методов обеспечения надежности и поиска ошибок на более высокий уровень, однако известные методы формального анализа программ крайне трудоемки. Второе указанное преимущество означает возможность создания средств для автоматизации процессов анализа, преобразования и синтеза программ. При написании кода на императивном языке программирования, возникает необходимость вникать в низкоуровневые процессы, тогда как появление средств автоматического анализа позволит программисту не вникать в подобные вещи. Декларативную программу проще написать и понять, за реализацию порядка выполнения операций может отвечать компьютер. Появляется возможность использования параллельных подходов, «ленивых», недетерминированных и других нетривиальных алгоритмов. [7]
Необходимость в программах и программистах давно бы отпала, возникни возможность использования описанных универсальных решений. Но стоит отметить, что в некоторых предметных областях декларативный подход все же используется благодаря заранее подготовленным программным модулям из которых «собирается» нужная программа решения. К таким языкам можно отнести Пролог, и как отмечалось выше, SQL.
Графическое программирование заключается в представлении программы в виде диаграммы, в отличие от привычных строк кода. В современных системах программирования прослеживается тенденция развития функционала, которая позволяет программисту оперировать графическими образами, причем понятие «построить, проектировать программу» заменяет собой «написать программу». Описываться при этом могут самые разные аспекты программного комплекса.
С момента появления первых ЭВМ, для ученых была привлекательна идея создания компьютера, с которым было бы легко общаться на естественном языке. Но до сих пор разработать такую машину не удалось. Это не удивительно, поскольку еще в классической работе А. Тьюринга [18] показано, что создание подобной ЭВМ, означало бы создание искусственного интеллекта. Так как естественный язык неполон, избыточен, неоднозначен и неточен [10], возможность создания искусственного интеллекта остается открытым. Стоит заметить, что существует целый ряд успешных попыток использования подмножеств естественного языка. К ним относятся, например, запросы к базам данных, работа голосовых помощников, мир кубиков [25]. Естественно пользовательские команды при этом должны соответствовать строго определенной системе понятий и строиться по конкретным правилам.
ВыводПрогресс компьютерных технологий определил процесс появления новых языков программирования. Данный процесс призван упрощать программный код и использование ЭВМ.
Языки программирования принято делить на пять поколений. Первое поколение – языки, созданные в 50-х годах XX века, когда только появились первые компьютеры. Это были машинные коды (ассемблеры).
Следующий шаг, определивший развитие всей индустрии был сделан в 1954 году, когда началась разработка высокоуровневого языка Фортран.

Глава 2 Языки высокого уровня. Классификация.2.1 Коротко об архитектуре современного компьютераАрхитектура любого современного компьютера представляет собой иерархическую структуру уровней, каждый из которых надстраивается над предыдущим. Очередной уровень – это абстракция с различными наборами типов данных, объектами и операциями. Подобное проектирование позволяет не принимать во внимание лишни детали, а значит, свести сложный предмет к более легкому для понимания. [17]
Большинство современных компьютеров состоят из нескольких уровней абстракций, это показано на рисунке 1:

Рис. 1. Шестиуровневый компьютер. Способ поддержки каждого уровня указан под ним, в скобках дано название соответствующего программного обеспечения
В данной работе речь пойдет о пятом уровне. Он обычно состоит из языков, разработанных для прикладных программистов, то есть языков высокого уровня. На данный момент подавляющее большинство языков программирования – высокоуровневые [35] Одни из самых популярных – C, Python, Java, C++, C# [36]. Программы, написанные на этих языках, обычно транслируются на уровень 3 или 4. Обработкой этих программ занимаются трансляторы, называемые компиляторами.
Нередко также используется метод интерпретации. Например, программы на языке Java обычно интерпретируются. [27] В некоторых случаях пятый уровень состоит из интерпретатора для такой сферы приложения, как символическая математика. Он обеспечивает данные и операции для решения задач в этой сфере в терминах, понятных людям, сведущим в символической математике.
2.2 Объектно-ориентированные языкиОдним из самых распространенных классов языков высокого уровня являются объектно-ориентированные языки. Если программа представляет собой совокупность взаимодействующих объектов, каждый из которых представляет собой экземпляр определенного класса, являющегося членом определенной иерархии наследования, она написана при помощи методики ООП. [3]
Это подход, при котором программа рассматривается как набор взаимодействующих друг с другом объектов, характеристики которых не так важны.
Для каждого объекта системы определены свойства и поведение, как и у объектов реального мира. Для наглядности можно рассмотреть объект «утюг». У него есть свои свойства (вес, стоимость, цвет) и поведение (утюг может гладить, подавать пар).
Так как вся предметная область оказывается разделена на слабо связанные между собой объекты, сложные системы строятся более естественно и просто. Структурирование кода программы, повышение его читабельности, сокращение дублирования, ускорение понимания логики программы и повышение безопасности – вот основные функции объектно-ориентированного программирования. [1]
Соблюдение трех принципов ООП: инкапсуляции, полиморфизма и наследования влияет на слабую связанность объектов между собой.
Инкапсуляция – свойство языка программирования, позволяющее пользователю не вникать в нюансы использования того ли иного программного компонента, а взаимодействовать с ним только при помощи интерфейса. Данный механизм также позволяет объединить и защитить важные для компонента данные. [1,11]
Полиморфизм – свойство при котором объекты отличаются друг от друга реализацией, но сходны по свойствам. Если, например, реализация класса может быть изменена в процессе наследования, то ЯП поддерживает полиморфизм.
Благодаря полиморфизму увеличивается коэффициент повторного использования кода, появляется возможность писать более абстрактные программы. В системы (интерфейсы и классы) объединяют свойства объектов. Существуют два типа выражения общности:
внешняя общность представляет собой одинаковый набор методов со сходными именами и сигнатурами;
внутренняя общность проявляется в виде одинаковой функциональности методов. Ее можно выразить как при помощи законов и правил, так и интуитивно. Есть возможность перезагрузки методов (функций, операции), то есть приписывать одному методу разную функциональность.
Наследование – механизм объектно-ориентированного программирования, позволяющий на основе существующего (родительского) класса описать новый, заимствовав спецификацию родительского. [8] Это позволяет обращаться с объектами класса-наследника так же, как с объектами базового класса. Различают два типа данного механизма:
Простое наследование. Базовый, родительский класс (англ. base class) – тот, от которого произошло наследование, наследники или производные классы (англ. derived class)– потомки этого родительского класса.
Абстрактные классы, содержащие хотя бы один абстрактный метод, описаны в программе, имеют обычно поля, методы и не могут использоваться для непосредственного создания объекта, используются в некоторых языках программирования. Только на основе производных классов, наследованных от абстрактного, можно создать объект.
Множественное наследование. Эта технология подразумевает наличие у класса более одного предка. Множественное наследование в языке C++, но от него отказались в языках-наследниках (Java, C# и др.) в пользу интерфейсов, так как метод, не смотря на свою гибкость, является потенциальным источником ошибок, провоцируемых одинаковыми именами методов в предках. Данная возможность поддерживается также в языках Python, UML, Эйфель.
Именно благодаря технологии ООП, в данный момент над одним и тем же проектом может работать большое количество программистов, которые не будут друг другу мешать, так как каждый занят своим блоком. [12]
2.3 Декларативные ЯПДекларативные языки программирования отличаются тем, что в них важно, что нужно сделать, а не как. Некоторые задачи трудно описать в терминах последовательных операций, к ним относятся почти все задачи искусственного интеллекта. Например, обработка естественного языка, проблемы машинного зрения, экспертные консультирующие системы – все они входят в круг проблем декларативных языков программирования. [8, 35]
Полной противоположностью декларативного программирования является императивное. Оно детально описывает, как решить задачу и представить результат. Это наглядно видно на рисунке 2:

Рис. 2. Схема, иллюстрирующая разницу между императивным и декларативным подходами в программировании
Для лучшего понимания можно привести следующий пример: допустим, вы решили пообедать не дома. Вы пришли в ресторан, подошли к администратору и сказали:
Императивный подход: Я вижу, что тот столик у окна свободен, я сяду за него.
Декларативный подход: Столик для одной персоны, пожалуйста.
При императивном подходе мы описали все шаги, которые собираемся проделать, а при декларативном просто заявили, о том, какой результат интересует. [39]
Написание исполнимых спецификаций наиболее близко к «чисто декларативному» программированию. Логическое и функциональное программирование относится к подвидам декларативного программирования, так как схема программы является частью исполняемого кода [37], хотя нередко программы на этих языках содержат алгоритмические составляющие.[7]
2.4 Функциональные ЯППервым языком программирования, поддерживающим функциональную парадигму, был Лисп, разработанный в Массачусетском университете. На данный момент, одними из самых популярных языков программирования, поддерживающими эту методику программирования, являются: Scala, Haskell, Elm, Javascript, Python и другие.[8]
В функциональном программировании понятие функции не трактуется как подпрограмма в процедурном программировании. Имеется в виду ее математическое понимание. При необходимости в функциональном программировании вся последовательность состоянии вычислительного процесса представляется явно.
В отличии от применения функций в императивном подходе, в функциональных языках при вызове одной и той же функции на разных этапах с одинаковыми аргументами, получается один и тот же результат. Эта особенность позволяет средам выполнения программ без проблем распараллеливать функции, вызывать их в порядке, не зависящем от алгоритма. Основой для функционального программирования является лямбда-исчисление. [22, стр. 120]
Этот парадигма широко применяется в различных сферах прикладного программирования. Можно отметить следующие:
Электронные таблицы представляют собой системы функционального программирования нулевого порядка со строгим вычислением [32, стр.131–143]. Естественно, в таблицах отсутствуют функции высших порядков, невозможно повторно использовать код, нет рекурсии. Разработчики работают над созданием расширений, решающих эти проблемы.
В теории языков программирования парадигма играет важную роль, а значит, является объектом активного академического изучения. Существует несколько сообществ, занимающихся освещением новейших разработок в этой сфере. Это и Международная конференция по функциональному анализу, и Журнал функционального программирования, и Симпозиум по тенденциям в функциональном программировании.
Нашли применение функциональному анализу и различных промышленных приложениях. В 80-х годах XX века шведской компанией Ericsson был разработан язык Erlang, который использовали для создания отказоустойчивых телекоммуникационных систем, а также для создания приложений в таких компаниях, как Nortel, Facebook, Électricité de France и WhatsApp. [28]
Схема, диалект Лиспа, использовалась в качестве основы для нескольких приложений на ранних компьютерах Apple Macintosh и применялась для написания программного обеспечения для моделирования обучения и управление телескопом. [7]
OCaml, представленный в середине 1990-х годов, нашел коммерческое применение в таких областях, как финансовый анализ, проверка драйверов, программирование промышленных роботов и статический анализ встроенного программного обеспечения. Haskell изначально задумывался как язык исследований, но применялся рядом компаний в таких областях, как аэрокосмические системы, проектирование оборудования и веб-программирование.
Другие языки функционального программирования, которые используются в промышленности, включают Scala, F #, Wolfram Language, Lisp, Standard ML, и Clojure.
Крупные инвестиционные банки использовали, написанные в рассматриваемой парадигме программы для анализа рисков. Факторы риска кодируются как функции, которые формируют взаимозависимые графики (категории) для измерения корреляций в рыночных сдвигах. Учитывая использование вариантов OCAML или CAML в финансах, эти системы иногда считают относящимися к категориальной абстрактной машине или CAM. Действительно, на функциональное программирование сильно влияет теория категорий.
Многие университеты преподавали или преподают функциональное программирование в рамках своих программ бакалавриата по информатике. [28] Некоторые используют его как введение в программирование, в то время как другие преподают его после обучения императивному программированию.
При помощи функционального программирования также изучают алгебраические и геометрические понятия. Оно также использовалось в качестве инструмента для обучения классической механике. [28]
2.5 Логические языки программированияПарадигма программирования, основанная на автоматическом доказательстве теорем, использующая методы логического вывода информации на основе входных данных, называется логическим программированием. Основой этого метода являются математические принципы резолюций и раздел математики, называющийся алгеброй логики.
Логическое программирование можно рассматривать как управляемую дедукцию. [7] Важным понятием в логическом программировании является разделение программ на их логический компонент и компонент управления. В языках программирования чистой логики только логический компонент определяет производимые решения. Компонент управления может быть изменен для обеспечения альтернативных способов выполнения логической программы. Это понятие иллюстрирует следующее выражение:
Алгоритм = Логика + Управление,
где «Логика» - логическая программа, а «Управление» - различные стратегии доказательства теорем. [30, с. 424–436]
Чтобы понять логическое программирование, мы сначала исследуем разницу между вычислением и дедукцией. Для вычисления мы начинаем с заданного выражения и в соответствии с фиксированным набором правил (программа) генерируем результат. Например, 15 + 26 → (1 + 2 + 1) 1 → (3 + 1) 1 → 41. Чтобы сделать вывод, мы начинаем с предположения и, в соответствии с фиксированным набором правил (аксиомы и правила вывода), пробуем построить доказательство гипотезы. Таким образом, вычисления механичны и не требуют изобретательности, в то время как дедукция - это творческий процесс. Например,
an+bn≠cn при n>2,…, 357 лет упорного труда…,
QED.
Философы, математики и ученые, занимающиеся компьютерными науками в течении долгого времени пытались объединить их или хотя бы найти точки соприкосновения. Например, Джорджу Булю удалось свести определенный класс логических рассуждений к вычислениям в так называемых булевых алгебрах. Из фундаментальных результатов о неразрешимости 20-го века мы знаем, что не все, о чем мы можем рассуждать, на самом деле механически вычислимо, даже если мы следуем четко определенному набору формальных правил. [30]
Первое замечание состоит в том, что вычисления можно рассматривать как ограниченную форму дедукции, поскольку они устанавливают теоремы. Например, 15 + 26 = 41 - это и результат вычисления, и арифметическая теорема. И наоборот, дедукцию можно рассматривать как форму вычислений, если мы зафиксируем стратегию поиска доказательств, исключив догадки (и возможность применения изобретательности) из дедуктивного процесса.
Эта последняя идея является основой логического программирования. Вычисление логической программы происходит путем поиска доказательства в соответствии с фиксированной стратегией. Зная, что это за стратегия, мы можем реализовать определенные алгоритмы в логике и выполнять алгоритмы путем поиска доказательств. [31]
Первым логическим языком программирования был Planner, но самым популярным – Prolog (programming in logic), который, по сути, являлся упрощенной версией Planner, так как не требовал плана перебора вариантов. [2]
2.6 Языки сценариев (скрипты)Высокоуровневые языки сценариев представляют собой краткое описание действий, которые должны выполнить система. Сценарий представляет собой программу, имеющую дело с готовыми программными компонентами. В более узком смысле, сценарные языки – это специализированные языки, расширяющие возможности командной оболочки или текстового редактора.
Языки сценариев бывают:
Командно-сценарными. Появились в 60-х годах XX века для управления заданиями в ОС. К ним относятся: AutoHotkey, JCL, Autolt И так далее.
Прикладными (встроенными). Появились в 80-х годах XX века. Благодаря им на промышленных предприятиях стало возможно на ПК интерактивное общение в ОС. К ним относятся: AutoLISP, ERM, VBA, Встроенный язык программирования 1С:Предприятие.
Языками общего назначения. Это наиболее известный и популярны тип сценариев. Возник в 90-х годах XX века. Языки этой категории имеют более широкое применение, чем просто скриптовые языки. К ним относятся: Perl, Python, PHP, Ruby, JavaScript. [9,16, 23]
Из плюсов этой парадигмы можно выделить:
выразительный код;
низкий порог вхождения, язык программирования легко выучить;
отличный вариант для написания кроссплатформенных приложений;
хороший вариант для «одноразовых» проектов, решающих какую-то проблему;
отлично подходят для визуализации данных, как пример можно вспомнить множество библиотек языка Python, нацеленных на это (Pandas).
ВыводРазвитие с 1954 года высокоуровневых языков привело к появлению огромного количества видов языков программирования:
Объектно-ориентированные языкиДекларативные ЯПФункциональные ЯПЛогические языки программированияЯзыки сценариев (скрипты)
Все они использовались или используются при решении самых разных прикладных задач.

Глава 3 Сравнительная характеристика популярных ЯВУ3.1 Индекс TIOBEКак отмечалось в главе 1, существует более 8000 [20] языков программирования, их рейтинг меняется каждый год, при этом порог входа в профессию уменьшается.
Для проверки актуальности навыков и знаний программирования или для принятия стратегически важного решения о том, какой язык программирования следует использовать при создании нового программного продукта используются данные индекс сообщества программистов TIOBE.
Данный индекс обновляется раз в месяц. Он является одним из самых авторитетных показателей популярности языка, а не его качества и возможностей. Рейтинги основаны на количестве квалифицированных инженеров во всем мире, курсов и сторонних поставщиков. Для расчета рейтингов используются популярные поисковые системы, такие как Google, Bing, Yahoo !, Википедия, Amazon, YouTube и Baidu.
Если посмотреть на сайте рейтинг за май 2021 года [36], можно найти оценку происходящего от генерального директора TIOBE Software Пола Янсена.В ноябре прошлого года Python ненадолго поменялся позициями с Java, заняв вторую позицию в индексе TIOBE, и в этом месяце Python снова поражает. Разница составляет всего 0,13%, но разумно предположить, что Python сохранит свою вторую позицию в течение более длительного времени. Возможно, в ближайшие полгода он даже выйдет на первое место в индексе TIOBE, потому что C (как и Java) теряет популярность. На других позициях индекса Rust пытается вернуться в топ-20, а Дарт и Джулия также двигаются вверх.
В приложении 2 приведен рейтинг языков программирования TOBE за май 2021 года, а в приложении 3 индекс комьюнити.
3.2 Аналитика от профильных сайтовОчередной ежегодный опрос программистов провел профильный украинский ресурс DOU.UA. В опросе участвовали 7211 респондентов. Можно сделать любопытные выводы относительно популярности языка Python (с 2014 года у него впервые наблюдается отрицательная динамика), TypeScript, возможно, потеснит JavaScript. [40]
Основные изменения в коммерческом использовании языков программирования проиллюстрированы на рисунке 3. Основные привлекающие внимание изменения заключаются в росте популярности TypeScipt, которому в этом году удалось обойти C++.
Доля Python уменьшилось впервые за несколько лет, а C#, наоборот, стал популярнее впервые с 2012 года. Java продолжает терять популярность, Kotlin стабилен, хоть и уступил место Ruby. У языка Scala, по сравнению с 2018 годом, наблюдается рост популярности.

Рис. 3. Популярность ЯП в коммерческой разработке
Диаграмма на рисунке 4 ниже, показывает изменение динамики актуальности тех или иных языков программирования по годам. Изменения статистически значимы, если невозможно получить результаты, имеющие или не имеющие изменения при равномерном выборе двух групп респондентов из одной популяции с вероятностью 0.95.

Рис. 4. Динамика актуальности ЯП
В опросе этого года были учтены сферы, в которых работают респонденты. Это дало очень интересные результаты, которые наглядно видны на рисунке 5.

Рис. 5. Сферы программирования, в которых задействованы респонденты
Половина разработчиков заняты в бэкенде – 52 %, 19 % составляют фронденд-программисты, мобильная разработка – 6 %, анализом данных занимаются 4%, а системное программирование и Full-Stack составило по 3 % и 1% соответственно.
Далее рассмотрим, какие языки популярны в разных сферах программирования.
Мобильная разработка
На лидирующей позиции с 34, 2 % находится Swift – популярный язык программирования, созданный компанией Apple в первую очередь, для разработки на iOS и macOS. [21] Второе место с 26,1 % занимает объектно-ориентированный Kotlin - язык, широко использующийся в Android-разработке [14] из-за своей простоты, лаконичности и совместимости с Java. Доля Dart, JavaScript и C# не так высока и сравнима, в девятку самых популярных языков также вошли TypeScript, Java, C++, что изображено на рисунке 6:

Рис. 6. ЯП, используемые в мобильной разработке
Back-end
Из 20 указанных на рисунке 7, самыми популярными являются Java, C#, PHP. Это неудивительно, так как Java, строгий язык, подходит для крупных решений, C# - для веб-разработки, а для PHP разработано огромное количество библиотек и классов, к тому же стоимость часа разработки на этом языке дешевле. [26] Также можно отметить Python, который хорош для небольших веб-решений и научных задач. [16]

Рис. 7. ЯП, используемые в Back-end разработке
Front-end
Лидером в данной сфере остается JavaScript – 68,2 % (Рис. 8). Это язык, на котором можно писать, как Back-end, так и Front-end. Он прост для изучения, отлично подходит для новичков. [23]
TypeScript, занявший вторую позицию (26 %), возможно, в скором будущем потеснит JavaScript, так как расширяет возможности последнего. Он быстрее, в нем облегчена читаемость, повторное использование кода, рефакторинг.[23]

Рис. 8. ЯП, используемые в Front-end разработке
Обработка данных
В анализе и обработке данных с большим отрывом лидирует Python (55, 3 %) с его библиотеками для анализа данных (Pandas, NumPy, SciPy, Matplotlib и так далее). [16] Далее идет T-SQL (11,4 %) – процедурное расширение языка SQL от Microsoft. Без знания SQL в анализе данных не обойтись.[19] Особо хочется отметить язык R, занимающий четвертую позицию. Он используется для статистической обработки данных и работы с графикой.

Рис. 9. ЯП, используемые для обработки данных
Desktop-программирование
В этой гонке с небольшим отрывом лидирует C#. Он позволяет выбрать платформу (.NET Framework, .NET Core), в зависимости от того, какой программный продукт требуется создать. [26] Однако и C++ в связке с Qt является отличным решением для desktop- программирования.

Рис. 10. ЯП для desktop-программирования
Системное программирование
Тройка лидеров состоит из C++ (35, 4 %), C (22,9 %) и Python (16, 6 %). Язык C изначально создавали для системного программирования. Он быстрый, энергоэффективный, гибкий, на нем легко работать с кодом низкого уровня. А C++, кроме возможностей C, еще поддерживает объектно-ориентированное программирование. [13]
На Python удобно писать переносимые программы и утилиты системного администрирования. Все благодаря встроенным в язык интерфейсам доступа к службам операционных систем. Этот язык по праву занял третье место, так как программы, написанные на нем способны запускать другие программы, производить параллельные вычисления и так далее.[16]

Рис. 11. ЯП для системного программирования
Еще одна сфера, в которой популярны языки C и C++, является GameDev (рис. 12). Это самые быстрые на сегодняшний день языки программирования, поэтому на них пишут многопользовательские, 3D другие. [13]
В основе консоли Xbox и PlayStation лежат программы на C++. Такие культовые игры как Word of Warcraft, Counter-Strike, StarCraft: Brood War, Diablo I были написаны на C++.
Самым популярным движком для создания видеоигр сразу под несколько ОС является Unity. В его ядре также использовался этот язык программирования.
Седства C/С++ позволяют оптимизировать использование ресурсов памяти и структур данных в игре, а значит, могут справиться даже с самой сложной игровой графикой.

Рис. 12. ЯП, используемые для разработки игр
QA automation
Это технологии, охватывающие все этапы создания, выпуска и эксплуатации продукта (необязательно программного). Инженер QA automation обязан уметь как тестировать код, так и программировать его. На рисунке 13 изображена диаграмма самых популярных языков в этой сфере программирования, созданная по результатам опроса.
На первом месте – Java (39,3 %), он основан на принципе «Напиши один раз, запускай везде» (WORA). Автоматизированное тестирование можно проводить при помощи библиотеки JUnit и различных фреймворков [27].
Для автоматизации и кросс-браузерного тестирования на мобильных, десктопных устройствах, удобно использовать Python [16] с его библиотеками Selenium и Appium. Также популярны, особенно в кросс-браузерном тестировании, фреймворки PyUnit и Pytest. В этом кроется причина занятого Python второго места (21, 3 %).
Третье место по популярности занимает C# - 18,9 %. Он универсален для тестирования приложений на разных ОС, совместим с Selenium WebDriver. Для автоматизированного тестирования используются фреймворки NUnit, MSTest и xUnit.Net. [26]
Для автоматизированного браузерного тестирования c Selenium используют инструменты JavaScript. Одними из лучших фреймворков являются Nightwatch, Jasmine, Jest, Mocha. [23]

Рис. 13. ЯП для QA automation
Full Stack разработка
По понятным причинам, JavaScript находится на первом месте этого рейтинга (Рис. 14): на этом языке можно написать, как Backend, так и Frontend, а веб-разработка сейчас находится на пике популярности.
На втором месте C#, огромное количество возможностей которого описывалось выше. Python и TypeScript занимают одну позицию. [40]

Рис. 14. ЯП для Full Stack разработчиков
Интернет вещей
Здесь в тройке лидеров - C, C++ и Python.
C, благодаря своей гибкости прекрасно подходит для написания низкоуровневого кода, так как не требует большой вычислительной мощностью и может работать с малым ОЗУ. [15] Также его активно используют в программировании микроконтроллеров. Все это делает его незаменимым при написании кода для приложений аппаратного уровня датчиков и шлюзов.
Умение настроить отдельные компоненты из ничего, например, доступ к памяти, проверку целостности пакетов и другое – обычные задачи, с которыми сталкивается разработчик интернета вещей. С++ включает в себя огромное количество библиотек, которые могут помочь в этом. [13]
Для аналитической части работы с информацией при разработке IoT используется Python [16], включающий в себя большой выбор библиотек для организации сложных потоков данных.

Рис. 15. ЯП для интернета вещей
Финальная таблица рейтинга популярности языков программирования представлена в приложении 4.
ВыводПрограммирование – основа цифровой эпохи, в которой мы живем. Языки программирования – инструменты, при помощи которых наша жизнь становится удобнее и интереснее.
С течением времени высокоуровневые языки стали более универсальны, они применимы к широкому кругу задач. Современные ЯП далеко не так сложны, как машинные коды первого поколения, а значит, и порог входа в профессию стал ниже.
ЗаключениеНа сегодняшний день языки программирования высокого уровня являются самыми распространенными из всех.
Язык высокого уровня - это язык программирования, который позволяет программисту писать программы, не зависящие от компьютера определенного типа. Языки высокого уровня считаются высокоуровневыми, потому что они ближе к человеческим языкам, чем языки машинного уровня.
При написании программы на языке высокого уровня все внимание нужно уделять логике проблемы.
Компилятор необходим для перевода языка высокого уровня на язык низкого уровня.
Преимущества языка высокого уровня:
Язык высокого уровня легко читать, писать и поддерживать, поскольку он написан по-английски как слова.
Языки высокого уровня предназначены для преодоления ограничений языка низкого уровня, то есть переносимости. Язык высокого уровня переносим; т.е. эти языки машинно-независимы.
В рамках курсовой работы проанализированы основные вехи развития языков программирования, а вместе с ними отмечено, то, как это зависело от совершенствования электронно-вычислительных машин начиная от разностной машины Бэббиджа до персональных компьютеров наших дней.
В ходе исследования были изучены особенности языков программирования высокого уровня, их классификация, развитие. Проанализировано то, как они используются в сферах различных индустрий.
Также в ходе исследовательской работы были проанализированы самые популярные языки программирования. На основе статистических данных выявлено, какие типы ЯПВУ на сегодняшний год самые популярные в различных сферах программирования. Выявлена специфика, которая позволяет им быть востребованными при решении тех или иных прикладных задач.
Приведенный в последней главе небольшой анализ опроса, проведенного среди украинских программистов, показал, что в настоящее время языков программирования высокого уровня очень много.
Языки разные, но большинство из них мультипарадигмальные, объектно-ориентированные или функциональные. Все они находят применения в решении проблем из самых разных областей промышленности, экономики, медицины, бизнеса, управления и обеспечения безопасности.

БиблиографияМонографии, научные статьи, публикации
Абельсон Х., Сассман Д. Структура и интерпретация компьютерных программ. — М.: Добросвет, 2010.
ред. В. Н. Агафонов. Логическое программирование. Сборник статей. — М.: Мир, 1988. 
Буч Г., Роберт А. Максимчук, Майкл У. Энгл, Бобби Дж. Янг, Джим Коналлен, Келли А. Хьюстон. Объектно-ориентированный анализ и проектирование с примерами приложений. — 3-е издание. — «Вильямс», 2010.
Дейкстра Э. Дисциплина программирования. — М.: Мир, 1978.
Ермаков Е. И., Лекции с обзором языков программирования., Технологический институт им. Н. Н. Поликарпова ГУ-УНПК, 2011.
Ред. Ершов А. П., Алгоритмический язык Алгол 60. Модифицированное сообщение. – М.: Мир, 1982. – 72 с.
Зюзьков В. М. Математическое введение в декларативное программирование: учебное пособие. — Томск: ТГУ, 2003. — 83 с.
Кауфман В. Ш., Языки программирования. Концепции и принципы. – Эл. изд. – Саратов: Профобразование, 2017. – 464 с.
Koтepoв, Д. В., Симдянов И. В., PHP 7, - CIПб.:БВХ-Петербург, 2016. - 1088 с.
Лорьер Ж.-Л. Системы искусственного интеллекта. — М.: Мир, 1991.
Непейвода Н. Стили и методы программирования. Курс лекций. Учебное пособие. — М.: Интернет-университет информационных технологий, 2005.
Пратт Т., Зелковиц М. Языки программирования: разработка и реализация / Под общей ред. А. Матросова. — СПб.: Питер, 2002.
Прата, С., Язык программирования С++. Лекции и упражнения, 6-е изд.: Пер. с англ. - М.: ООО "И.Д. Вильямc", 2012. - 1248 с.
Сомон. П.-И. Волшебство Kotlin / пер. с англ. А. Н. Киселева. – М.: ДМК Пресс, 2020. – 536 с.
Столяров А. В., Программирование: введение в профессию. 1: Азы программирования. – М.: МАКС Пресс, 2016. – 464 с.
Сузи Р. Т., Язык программирования Python. – М.: Национальный Открытый Университет «ИНТУИТ», 2016.
Таненбаум Э., Остин Т. Архитектура компьютера. 6-е изд. — СПб.: Питер, 2013. — 816 с.
Тьюринг А. Может ли машина мыслить. — М.: Физматгиз, 1950.
Тейлор А., SQL для чайников, 8-е издание = SQL For Dummies, 8th edition. — М.: «Диалектика», 2014. — 416 с.
Тюгашев А. А., Основы программирования. Часть I. – СПб: Университет ИТМО, 2016. – 160 с.
Усов В. Swift. Основы разработки приложений под iOS. — СПб.: Питер, 2016. — 304 с.: ил. — (Серия «Библиотека программиста»).
Филд, А., Харрисон, П., Функциональное программирование: Пер. с англ. — М.: Мир, 1993. — 637 с.
Флэнаган, Д., JavaScript. Полное руководство, 7-е изд. : Пер. с англ. — СПб. : ООО “Диалектика”, 2021. — 720 с
Хопкрофт Дж., Мотвани Р., Ульман Д. Введение в теорию автоматов, языков и вычислений. — 2-е. — Cornell University, Stanford University: Addison-Wesley Publishing Company, Издательский дом «Вильямс», 2001. — 528 с.
Хофштадтер Д. Гедель, Эшер, Бах — эта бесконечная гирлянда. — Самара: Бахрах-М, 2000.
Шилдт, Г., C# 4.0: полное руководство.: Пер. с англ. — М.: ООО "И.Д. Вильямс", 2011. — 1056 с.
Эккель Б., Философия Java = Thinking in Java. — 4-е изд. — СПб.: Питер, 2018. — 1168 с.
Armstrong, Joe (June 2007). A history of Erlang. Third ACM SIGPLAN Conference on History of Programming Languages. San Diego, California.
Fuegi, J & Francis, J (October–December 2003), Lovelace & Babbage and the creation of the 1843 'notes', Annals of the History of Computing (IEEE) . — Т. 25 (4): 16–26
Kowalski R.A. (July 1979). "Algorithm=Logic + Control". Communications of the ACM. 22 (7): 424–436. 
Pfenning F., Logic Programming, Notes for a course given at Carnegie Mellon University, Fall 2006, Carnegie Mellon University.
Wakeling, David (2007). "Spreadsheet functional programming" (PDF). Journal of Functional Programming. 17 (1): 131–143.
Электронные ресурсы
Ada Lovelace honoured by Google doodle (10 December 2012). [Электронный ресурс] URL: https://www.theguardian.com/technology/2012/dec/10/ada-lovelace-honoured-google-doodle (дата обращения 29 мая 2021)
Konrad Zuse (1910-1995) by Prof. Dr. Raúl Rojas. [Электронный ресурс] URL: http://zuse.zib.de/zuse (дата обращения 28 мая 2021)
Какие бывают языки программирования? [Электронный ресурс] URL: https://habr.com/ru/post/539784/ (дата обращения 29 мая 2021)
TIOBE Index for May 2021. [Электронный ресурс] URL: https://www.tiobe.com/tiobe-index/ (дата обращения 30 мая 2021)
Интервью с Саймоном Пейтоном Джонсом http://fprog.ru/2010/issue6/interview-simon-peyton-jones [Электронный ресурс] URL: (дата обращения 29 мая 2021)
What is Erlang. [Электронный ресурс] URL: http://erlang.org/faq/introduction.html#idp32582608 (дата обращения 30 мая 2021)
Основные принципы программирования: императивное и декларативное программирование. [Электронный ресурс] URL: https://tproger.ru/translations/imperative-declarative-programming-concepts/ (дата обращения 30 мая 2021)
Рейтинг языков программирования 2021: доля Python падает, а TypeScript обошел С++, в лидерах JavaScript, Java, C# [Электронный ресурс] URL: https://habr.com/ru/post/543346/ (дата обращения 30 мая 2021)


Нет нужной работы в каталоге?

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

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

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

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

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

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
54 132 оценки star star star star star
среднее 4.9 из 5
ТюмГУ
Спасибо большое за курсовую работу!! Оригинальность 75%, оценка отлично
star star star star star
СПбГУ
Очень грамотное написание курсовой, видно, что исполнитель разбирается в теме работы и пиш...
star star star star star
РЭУ им.Плеханова
Благодарю Евгению за выполнение работы,оценка-отлично.Сделано -все как положено,грамотно и...
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

Подогнать готовую курсовую под СТО

Курсовая, не знаю

Срок сдачи к 7 дек.

только что
только что

Выполнить задания

Другое, Товароведение

Срок сдачи к 6 дек.

1 минуту назад

Архитектура и организация конфигурации памяти вычислительной системы

Лабораторная, Архитектура средств вычислительной техники

Срок сдачи к 12 дек.

1 минуту назад

Организации профилактики травматизма в спортивных секциях в общеобразовательной школе

Курсовая, профилактики травматизма, медицина

Срок сдачи к 5 дек.

2 минуты назад

краткая характеристика сбербанка анализ тарифов РКО

Отчет по практике, дистанционное банковское обслуживание

Срок сдачи к 5 дек.

2 минуты назад

Исследование методов получения случайных чисел с заданным законом распределения

Лабораторная, Моделирование, математика

Срок сдачи к 10 дек.

4 минуты назад

Проектирование заготовок, получаемых литьем в песчано-глинистые формы

Лабораторная, основы технологии машиностроения

Срок сдачи к 14 дек.

4 минуты назад

2504

Презентация, ММУ одна

Срок сдачи к 7 дек.

6 минут назад

выполнить 3 задачи

Контрольная, Сопротивление материалов

Срок сдачи к 11 дек.

6 минут назад

Вам необходимо выбрать модель медиастратегии

Другое, Медиапланирование, реклама, маркетинг

Срок сдачи к 7 дек.

7 минут назад

Ответить на задания

Решение задач, Цифровизация процессов управления, информатика, программирование

Срок сдачи к 20 дек.

7 минут назад
8 минут назад

Все на фото

Курсовая, Землеустройство

Срок сдачи к 12 дек.

9 минут назад

Разработка веб-информационной системы для автоматизации складских операций компании Hoff

Диплом, Логистические системы, логистика, информатика, программирование, теория автоматического управления

Срок сдачи к 1 мар.

10 минут назад
11 минут назад

перевод текста, выполнение упражнений

Перевод с ин. языка, Немецкий язык

Срок сдачи к 7 дек.

11 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

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

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно
    Введите ваш e-mail
    Файл с работой придёт вам на почту после оплаты заказа
    Успешно!
    Работа доступна для скачивания 🤗.