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

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

Содержание:

Введение

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

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

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

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

Цели курсовой работы:

1. Просмотр общих сведений о языках программирования.

2. Рассмотреть историю развития языков программирования.

3. Сделать обозрение языков программирования.

4. Сделать обозрение сред для разработки программ.

Задачи курсовой работы:

1. Ознакомится с языками программирования.

2. Рассмотрение истории развития языков программирования.

3. Рассмотрение языков программирования.

4. Посмотреть по каким критериям выбирается среда и язык для разработки программ.

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

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

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

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

1.2. История развития языков программирования

Одной из самых революционных идей, которая привела к созданию автоматических цифровых вычислительных машин, была высказанная в 20-х годах 19 века Чарльзом Беббиджем мысль о предварительной записи порядка действия машины для последующей автоматической реализации вычислений – программе. И, хотя использованная Беббиджем запись программы на перфокартах, придуманная для управления такими станками французским изобретателем Жозефом Мари Жаккаром, технически не имеет ничего схожего с современными приемами хранения программ в персональном компьютере, принцип здесь по один. С этого момента началась история программирования.

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

Революционным моментом в истории языков программирования стало появление системы кодирования машинных команд с помощью специальных символов, предложенной Джоном Моучли. Система кодирования, которую он предложил, вдохновила одну из его сотрудниц Грейс Мюррей Хоппер. При работе на компьютере «Марк-1» ей и ее группе пришлось столкнуться со многими проблемами и все, что ими придумано, было впервые. Они придумали подпрограммы. И еще одно основное понятие техники программирования впервые ввели Хоппер и ее группа – «отладка».

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

Уже в 1951 г. Хоппер создала первый в мире компилятор и ею же был введен сам этот термин. Компилятор Хоппер осуществлял функцию объединения команд и в ходе трансляции производил организацию подпрограмм, выделение памяти компьютера, преобразование команд высокого уровня в машинные команды. «Подпрограммы находятся в библиотеке компьютера, а когда вы подбираете материал из библиотеки – это называется компиляцией» – так она объясняла происхождение введенного ею термина.

В 1954 году группа под руководством Г. Хоппер создала систему, включающую язык программирования и компилятор, которая в будущем обрела название Math-Matic. После удачного окончания работ по созданию Math-Matic Хоппер и ее группа взялись за создание нового языка и компилятора, который позволил бы пользователями программировать на языке, похожем на обычный английский. В 1958 г. появился компилятор Flow-Matic. Компилятор Flow-Matic был первым языком для задач обработки коммерческих данных. Разработки в этом направлении привели к созданию языка COBOL (Common Business Oriented Language). Он был создан в 1960 году.

Середина 50-х годов характеризуется быстрым прогрессом в области программирования. Роль программирования в машинных командах стала меньше. Начали появляться языки программирования нового типа, выступающие в роли посредника между машинами и программистами.

Первым и одним из самых распространенных был FORTRAN (FORmula TRANslator – переводчик формул), созданный группой программистов фирмы IBM в 1954 году. Этот язык был направлен на научно-технические расчеты математического характера и является классическим языком программирования при решении на ПК математических и инженерных задач. Значимое место среди языков про-гримирования занимает Algol, первая версия которого появилась в 1958 году. Одним из создателей Algol был «отец» Фортрана Джон Бэкус. Название языка ALGOrithmic Language отмечает то обстоятельство, что он предназначен для записи алгоритмов. Благодаря четкой логической структуре Algol стал стандартным средством записи алгоритмов в научной и технической литературе.

В середине 60-х годов Томас Курц и Джон Кемени разработали специализированный язык программирования, который состоял из простых слов английского языка. Новый язык назвали «универсальным символическим кодом для начинающих» (Beginner All-Purpose Symbolic Instruction Code, или, сокращенно, BASIC). Годом рождения нового языка считают 1964. Сегодня универсальный язык Basic (имеющий множество версий) стал очень популярен и получил широкое распространение среди пользователей ПК разных категорий во всем мире. В значительно мере этому способствовало то, что Basic стали использовать как встроенный язык персональных компьютеров, широкое распространение которых началось в конце 70-х годов. Однако Basic неструктурный язык, и поэтому он не очень подходит для обучения качественному программированию. Справедливости ради следует отметить, что последние версии Basic для ПК (например, QBasic) стали более структурными и по своим изобразительным возможностям приближаются к таким языкам, как Pascal.

Разработчики ориентировали языки на разные классы задач, в той или иной мере привязывали их к определенной архитектуре ПК, реализовывали личные идеи. В 60-е годы были приняты попытки преодолеть эту «разноголосицу» путем создания универсального языка программирования.

Первым в этом направлении стал PL/1 (Program Language One), разработанный фирмой IBM в 1967 году. Данный язык претендовал на возможность решать любые задачи: вычислительные, обработки текстов, накопления и поиска информации. Однако он оказался очень сложным, транслятор с него – недостаточно оптимальным и содержал ряд не выявленных ошибок.

Но линия на универсализацию языков была поддержана. Старые языки были Усовершенствованы в универсальные варианты: Algol-68 (1968 г.), FORTRAN -77. Подразумевалось, что подобные языки будут развиваться и усовершенствоваться, станут вытеснять все остальные. Но ни одна из этих попыток не увенчалась успехом.

Язык LISP появился в 1965 году. Основным в нем служит понятие рекурсивно определенных функций. Поскольку доказано, что любой алгоритм может быть описан с помощью некоторого набора рекурсивных функций, то LISP по сути является универсальным языком. С его помощью ПК может моделировать достаточно сложные процессы, в частности – интеллектуальную деятельность людей.

Prolog разработан во Франции в 1972 году для решения проблем «искусственного интеллекта». Prolog позволяет в формальном виде описывать различные утверждения, логику рассуждений и заставляет ПК давать ответы на заданные вопросы.

Значительным событием в истории языков программирования стало создание в 1971 году языка Pascal. Его автор – швейцарский ученый Никлаус Вирт. Вирт назвал его в честь великого французского математика и религиозного философа XVII века Блеза Паскаля, который изобрел первое суммирующее устройство, именно поэтому новому языку было присвоено его имя. Этот язык изначально разрабатывался как учебный язык структурного программирования, и, действительно, сейчас он является одним из основных языков обучения программированию в школах и вузах.

В 1975 году два события стали вехами в истории программирования – Билл Гейтс и Пол Аллен заявили о себе, разработав свою версию Basic, а Вирт и Йенсен выпустили классическое описание языка «Pascal User Manual and Report».

Не менее впечатляющей, в том числе и финансовой, удачи добился Филип Кан, француз, разработавший в 1983 году систему Turbo-Pascal. Суть его идеи состояла в соединении последовательных этапов обработки программы – компиляции, редактирования связей, отладки и диагностики ошибок – в едином интерфейсе. Turbo-Pascal – это не только язык и транслятор с него, но еще и операционная оболочка, позволяющая пользователю удобно работать на Pascal. Этот язык вышел за рамки учебного предназначения и стал языком профессионального программирования с универсальными возможностями. В силу названных достоинств Pascal стал источником многих современных языков программирования. С тех пор появилось несколько версий Turbo-Pascal.

Фирма Borland/Inprise завершила линейку продуктов Turbo-Pascal и перешла к выпуску системы визуальной разработки для Windows – Delphi.

Большой отпечаток на современное программирование наложил язык С (первая версия – 1972 год), являющийся очень популярным в середе разработчиков систем программного обеспечения (включая операционные системы). Этот язык создавался как инструментальный язык для создания операционных систем, трансляторов, баз данных и других системных и прикладных программ. Си объединяет в себе как черты языка высокого уровня, так и машинно-ориентированного языка, допуская программиста ко всем машинным ресурсам, чего не обеспечивают такие языки как Basic и Pascal.

Период с конца 60-х до начала 80-х годов характеризуется бурным ростом числа различных языков программирования, который сопровождался кризисом программного обеспечения. В январе 1975 года Пентагон решил навести порядок в хаосе трансляторов и учредил комитет, которому было предписано создать один универсальный язык. В мае 1979 года был объявлен победитель – группа ученых во главе с Жаном Ишбиа. Победивший язык назвали Ada, в честь Августы Ады Лавлейс. Этот язык предназначен для создания и многолетнего сопровождения больших программных систем, допускает возможность параллельной обработки, управления процессами в реальном времени. Много лет программное обеспечение строилось на основе операционных и процедурных языков, таких как FORTRAN, Basic, Pascal, Ada, C. По мере эволюции языков программирования широкое распространение получили и другие, принципиально иные языки программирования. [4]

1.3. История развития среды для разработки программ

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

Кардинальные изменения в сфере технологий были связаны с использованием алфавитно-цифровых, а затем и графических дисплеев, разработкой операционной IBM OS/360, изобретением микропроцессоров, появлению персональных ЭВМ, распространением Интернета.

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

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

В начале 70-х годов – время массового перехода на языки программирования, появление операционных систем первого поколения. По мере возрастания мощности ЭВМ стал возможным коллективный доступ к ее ресурсам, и дисплей стал инструментом программиста.

Несмотря на развитие способов общения с ЭВМ для программиста неизменным оставался основной цикл разработки и отладки программ: редактирование программы – компиляция – сборка – выполнение программы – анализ ошибок – редактирование. Этот цикл всегда надо иметь в виду при оценке эффективности операционной среды. [11]

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

2.1.  Машинно – ориентированные языки

Машинно – ориентированные языки -это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.). Машинно –ориентированные языки позволяют использовать все возможности и особенности Машинно – зависимых языков:

- высокое качество создаваемых программ (компактность и скорость выполнения);

- возможность использования конкретных аппаратных ресурсов;

- предсказуемость объектного кода и заказов памяти;

- для составления эффективных программ необходимо знать систему команд и особенности функционирования данной ЭВМ;

- трудоемкость процесса составления программ (особенно на машинных языках и языках символического кодирования), плохо защищенного от появления ошибок;

- низкая скорость программирования;

- невозможность непосредственного использования программ, составленных на этих языках, на ЭВМ других типов.

Машинно-ориентированные языки по степени автоматического программирования подразделяются на классы. [1]

2.1.1. Машинные языки

Машинный язык – это командный язык, с помощью которого программист задает команды, оперируя с ячейками памяти, полностью используя возможности машины. Суть этого языка — набор кодов, обязательно понятных процессору, к кому обращаются. Части («слова») этого языка называются инструкциями, каждая из которых представляет собой одно элементарное действие для центрального процессора, как, например, считывание информации из ячейки памяти. Если знаешь, можно непосредственно управлять процессором. Например, для организации чтения блока данных с гибкого диска программист может использовать 16 различных команд, каждая из которых требует 13 параметров, таких как номер блока на диске, номер сектора на дорожке и т. п. Когда выполнение операции с диском завершается, контроллер возвращает 23 значения, отражающие наличие и типы ошибок, которые надо анализировать. Уже одно обращение к процессору громоздко, а уж анализ ошибок и вовсе представляется невообразимым, особенно, если не именно с этим процессором приходится работать. Вообще набор команд машинного языка сильно зависит от типа процессора. [1]

2.1.2. Языки символического кодирования

Языки Символического Кодирования, так же, как и машинные языки, являются командными. Однако коды операций и адреса в машинных командах, представляющие собой последовательность двоичных (во внутреннем коде) или восьмеричных (часто используемых при написании программ) цифр, в Языки Символического Кодирования заменены на символы (идентификаторы), форма написания которых помогает программисту легче запоминать смысловое содержание операции. Это обеспечивает существенное уменьшение числа ошибок при составлении программ. [3]

2.1.3. Автокоды

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

Позднее для языков этого уровня стало применяться названия ассемблера. Появление языков типа Автокод – Ассемблер облегчило участь программистов. Переменные величины стали изображаться символическими именами. Числовые коды операций заменились на мнемонические (словесные) обозначения, которые легче запомнить. Язык программирования стал понятнее для человека, но при этом удалился от языка машинных команд. Чтобы компьютер мог исполнять программы на автокоде, потребовался специальный переводчик – транслятор. Здесь впервые в истории развития программирования появились два представления программы: в исходных текстах и в откомпилированном виде. [1]

2.1.4. Макрос

Макрос - язык, являющийся средством для замены последовательности символов, описывающих выполнение требуемых действий ЭВМ на более сжатую форму. В основном, Макрос предназначен для того, чтобы сократить запись исходной программы. Компонент программного обеспечения, обеспечивающий функционирование макросов, называется макропроцессором. На макропроцессор поступает макрос определяющий и исходный текст. Реакция макропроцессора на вызов – выдача выходного текста. Макрос одинаково может работать, как с программами, так и с данными. [1]

2.2. Машинно – независимые языки

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

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

Программист получил возможность не расписывать в деталях вычислительный процесс на уровне машинных команд, а сосредоточиться на основных особенностях алгоритма. (машинно -независимые языки, которые согласно ГОСТ 19781-90, используют понятия и структуры удобные для восприятия человеком. Программы на языках высокого уровня могут исполняться на различных типах микропроцессоров, то есть обладают свойством переносимости. Компиляторы, которые обеспечивают переносимость и эффективность ПО, существенно усложняются. Например, назначение регистров в языках высокого уровня выполняется с помощью компиляторов, а в ассемблере регистры указываются в самой команде либо в программе создается процедура формирования адреса регистра. Строка программного кода с оператором языка программирования высокого уровня транслируется примерно в три – семь машинных команд, что увеличивает размер программного обеспечения и оказывает влияние на время исполнения программного кода. [5]

2.2.1. Проблемно – ориентированные языки

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

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

Парадигма проблемно – ориентированных языков предоставляет разработчику возможность в одном и том же проекте использовать 5–10 разных языков, в зависимости от задач конкретного модуля/подсистемы без изменения общего подхода к реализации [4]

2.2.2. Универсальные языки

Универсальные языки были созданы для широкого круга задач: коммерческих, научных, моделирования и так далее. Первый универсальный язык был разработан фирмой IBM, ставший в последовательности языков Pl/1. Второй по мощности универсальный язык называется Algol-68. Он позволяет работать с символами, разрядами, числами с фиксированной и плавающей запятой. Pl/1 имеет развитую систему операторов для управления форматами, для работы с полями переменной длины, с данными организованными в сложные структуры, и для эффективного использования каналов связи. Язык учитывает включенные во многие машины возможности прерывания и имеет соответствующие операторы. Предусмотрена возможность параллельного выполнение участков программ.

Программы в Pl/1 компилируются с помощью автоматических процедур. Язык использует многие свойства таких языков как FORTRAN, Algol, COBOL. Однако он допускает не только динамическое, но и управляемое и статистическое распределения памяти. [3]

2.2.3. Диалоговые языки

Появление новых технических возможностей поставило задачу перед системными программистами – создать программные средства, обеспечивающие оперативное взаимодействие человека с ЭВМ их назвали диалоговыми языками. Создавались специальные управляющие языки для обеспечения оперативного воздействия на прохождение задач, которые составлялись на любых раннее неразработанных (не диалоговых) языках. Разрабатывались также языки, которые кроме целей управления обеспечивали бы описание алгоритмов решения задач. Необходимость обеспечения оперативного взаимодействия с пользователем потребовала сохранения в памяти ЭВМ копии исходной программы даже после получения объектной программы в машинных кодах. При внесении изменений в программу система программирования с помощью специальных таблиц устанавливает взаимосвязь структур исходной и объектной программ. Это позволяет осуществить требуемые редакционные изменения в объектной программе. [4]

2.2.4. Непроцедурные языки

Непроцедурные языки составляют группу языков, описывающих организацию данных, обрабатываемых по фиксированным алгоритмам (табличные языки и генераторы отчетов), и языков связи с операционными системами. Позволяя четко описывать как задачу, так и необходимые для её решения действия, таблицы решений дают возможность в наглядной форме определить, какие условия должны выполнятся, прежде чем переходить к какому-либо действию. Одна таблица решений, описывающая некоторую ситуацию, содержит все возможные блок-схемы реализаций алгоритмов решения. Табличные методы легко осваиваются специалистами любых профессий. Программы, составленные на табличном языке, удобно описывают сложные ситуации, возникающие при системном анализе. [4]

3. Выбор языка и среды для разработки программ

3.1. Современные языки программирования

Алгоритмический язык (язык программирования) представляет собой один из способов записи алгоритма. Язык программирования является строго формализованным, то есть все команды записываются по определенным правилам и отступления от этих правил не допускаются. Правила записи команд на конкретном языке называются синтаксисом языка. Синтаксис определяет, какая команда будет считаться правильной, а какая нет. Каждая команда, записанная на языке программирования, имеет определенное значение, то есть заставляет компьютер выполнять те или иные действия. Правила, определяющие смысл команд, называются семантикой языка. Каждый язык имеет алфавит – набор символов, которые можно использовать при записи программ на этом языке. Программа, написанная на языке программирования, состоит из команд (операторов), задающих последовательность действий. Эти действия выполняются над некоторыми объектами. Объектами могут быть числа, текстовые строки, переменные и другие. Языки отличаются друг от друга множеством допустимых объектов и набором операций, которые можно выполнять над этими объектами. [7]

Рассмотрим некоторые языки программирования.

3.1.1. Prolog, Prolog++

Язык программирования Prolog (PROgramming LOGic) предполагает получение решения задачи при помощи логического вывода из ранее известных фактов. Программа на языке Prolog не является последовательностью действий – она представляет собой набор фактов и правил, обеспечивающих получение логических заключений из данных фактов. Поэтому Prolog считается декларативным языком программирования. Программа на написанная на языке Prolog включает в себя постановку задачи в виде множества фраз Хорна (раздел clauses) и описание цели (раздел goal), - формулировку теоремы, которую нужно доказать, исходя из множества правил и фактов, содержащихся в этой постановке. Prolog использует упрощенную версию синтаксиса логики предикатов, он прост для понимания и очень похож на естественный язык. Prolog имеет механизм вывода, который основан на сопоставлении образцов. С помощью подбора ответов на запросы Prolog извлекает хранящуюся информацию. Prolog пытается ответить на запрос, запрашивая информацию, о которой уже известно, что она истинна. Одной из важнейших особенностей языка Prolog является то, что он ищет не только ответ на поставленный вопрос, но и все возможные альтернативные решения. Вместо обычной работы программы на процедурном языке от начала и до конца, Prolog может возвращаться назад и просматривать все остальные пути при решении всех частей задачи.

Prolog ++ можно отнести к группе гибридных языков, представителями которой считаются Object Pascal (Delphi) и C++. Расширение Prolog ++ поддерживает все свойства, присущие обычно объектно-ориентированным языкам: концепции объектов и классов, единичное и многократное наследование, разбиение на подклассы и передачу сообщений. Поддерживаются также некоторые усовершенствованные свойства, существующие в таких языках, как C++ и Smalltalk, включая общие и частные методы. [6]

3.1.2. Python

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

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

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

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

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

3.1.3. Java

Java это параллельный, объектно-ориентированный (а именно класс-ориентированный) язык программирования общего назначения. Java позволяет разработчикам приложений «написав однажды, запускать везде». Это означает, что скомпилированный Java-код может быть запущен на всех платформах, которые поддерживают Java, без необходимости в перекомпиляции. Приложения на Java, как правило компилируются в байт-код, который может выполняться на любой виртуальной машине Java (JVM – англ. Java Virtual Maсhine) не зависимо от компьютерной архитектуры.

По состоянию на 2017 год, Java является одним из наиболее популярных используемых языков программирования, особенно в сфере разработки клиент-северных web-приложений. Изначально язык Java был разработан в компании SunMicrosystems (которая была поглощена корпорацией Oracle в период с апреля 2009 года по январь 2010 года) Джеймсом Гослингом и опубликован в 1995 году как ядро программной платформы Java. Синтаксис Java по большей части взят из языков C и C++, но низкоуровневые возможности языка значительно ограничены по сравнению с любым из них. [9]

3.1.4. JavaScript

JavaScript - это язык программирования, как правило, выполняется на стороне клиента. Он используется для взаимодействия с пользователем. Он используется в разработке игр, настольных и мобильных приложений, в создании документов pdf и виджетов рабочего стола. Веб-браузеры имеют встроенную поддержку для этого языка. Структурно JavaScript можно представить в виде объединения трёх чётко различимых друг от друга частей: Ядро (ECMAScript), объектная модель браузера (Browser Object Model), объектная модель документа (Document Object Model).

Первоначально JavaScript обладал довольно небольшими возможностями. Его цель состояла лишь в том, чтобы добавить немного поведения на веб-страницу. Например, обработать нажатие кнопок на веб-странице, произвести какие-нибудь другие действия, связанные прежде всего с элементами управления. Однако развитие веб-среды, появление HTML5 и технологии Node.js открыло перед JavaScript гораздо большие горизонты. Сейчас JavaScript продолжает использоваться для создания веб-сайтов, только теперь он предоставляет гораздо больше возможностей. [3]

3.1.5. PHP

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

Имена всех переменных в PHP должны начинаться со знака $. Имена переменных чувствительны к регистру букв. Переменные в PHP не должны начинаться с цифры. Имя переменной может начинаться с символа подчеркивания. [3]

3.1.6. С, С++, С#

C - компилируемый статически типизированный язык программирования общего назначения, разработанный в 1969—1973 годах сотрудником Bell Labs Денисом Ричи. Первоначально был разработан для реализации операционной системы UNIX, но, впоследствии, был перенесён на множество других платформ. Язык программирования C отличается минимализмом. Авторы языка хотели, чтобы программы на нём легко компилировались с помощью однопроходного компилятора, чтобы каждой элементарной составляющей программы после компиляции соответствовало весьма небольшое число машинных команд, а использование базовых элементов языка не задействовало библиотеку времени выполнения. Однопроходный компилятор компилирует программу, не возвращаясь назад к уже обработанному тексту. Поэтому использованию функций и переменных должно предшествовать их объявление. Код на С можно легко писать на низком уровне абстракции, почти как на ассемблере. С часто называют языком среднего уровня или даже низкого уровня, учитывая то, как близко он работает к реальным устройствам. Однако, в строгой классификации, он является языком высокого уровня.

С (как и операционная система UNIX, с которой он долгое время был связан) создавался программистами и для программистов. Несмотря на это, область использования языка значительно шире задач системного программирования.

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

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

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

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

C# - объектно-ориентированный язык программирования. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft .NET Framework.

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

Переняв многое от своих предшественников -языков C++, Pascal, Модула, Smalltalk и, в особенности, Java — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, C# в отличие от C++ не поддерживает множественное наследование классов (между тем допускается множественное наследование интерфейсов).

C# разрабатывался как язык программирования прикладного уровня для CLR и, как таковой, зависит, прежде всего, от возможностей самой CLR. Это касается, прежде всего, системы типов C#, которая отражает BCL. Присутствие или отсутствие тех или иных выразительных особенностей языка диктуется тем, может ли конкретная языковая особенность быть транслирована в соответствующие конструкции CLR.

CLR предоставляет C#, как и всем другим .NET-ориентированным языкам, многие возможности, которых лишены «классические» языки программирования. Например, сборка мусора не реализована в самом C#, а производится CLR для программ, написанных на C# точно так же, как это делается для программ на VB.NET, J# и др. [13],[4],[3]

3.2. Среды для разработки программ

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

Компилятор — это такая программа, которая считывает исходные коды, написанные программистом и преобразует эти коды в программу.

Интерпретатор — это программа которая считывает команды, находящиеся в исходных кодах, сразу выполняя их.

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

Обычно среда разработки программного обеспечения предназначена для разработки только на одном языке программирования. А такая среда разработки как интегрированная, предоставляет право выбрать создателю программы язык программирования для разработки, удобный разработчику (из языков поддерживаемых данной средой). Примером тому служат: Visual Studio, Eclipse. [10], [12].

3.2.1. Microsoft Visual Studio

Microsoft Visual Studio — это набор инструментов для создания программного обеспечения: от планирования до разработки пользовательского интерфейса, написания кода, тестирования, отладки, анализа качества кода и производительности, развертывания в средах клиентов и сбора данных телеметрии по использованию.

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

По умолчанию Visual Studio обеспечивает поддержку C#, C и C++, JavaScript, F# и Visual Basic. Visual Studio хорошо работает и интегрируется со сторонними приложениями, например, Unity и Apache Cordova. Также можно самостоятельно расширить Visual Studio, создав собственные инструменты для выполнения специализированных задач.

Несмотря на то, что Visual Studio можно использовать для работы с отдельными файлами кода, как правило, работа выполняется в рамках проекта. Проект Visual Studio — это совокупность файлов и ресурсов, которые компилируются в единый двоичный исполняемый файл (например, EXE, DLL, APPX). Поскольку иногда может потребоваться создать несколько двоичных файлов или веб-сайтов, которые тесно связаны, Visual Studio использует концепцию решения, которое может содержать несколько проектов или веб-сайтов. [8]

3.2.2. Java Development Kit

Java Development Kit (JDK) — бесплатно распространяемый компанией Oracle Corporation (ранее Sun Microsystems) комплект разработчика приложений на языке Java, включающий в себя компилятор Java, стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java (JRE). В состав JDK не входит интегрированная среда разработки на Java, поэтому разработчик, использующий только JDK, вынужден использовать внешний текстовый редактор и компилировать свои программы, используя утилиты командной строки.

Все современные интегрированные среды разработки приложений на Java, такие, как JDeveloper, NetBeans IDE, Sun Java Studio Creator, IntelliJ IDEA, Borland JBuilder, Eclipse, опираются на сервисы, предоставляемые JDK. Большинство из них для компиляции Java-программ используют компилятор из комплекта JDK. Поэтому эти среды разработки либо включают в комплект поставки одну из версий JDK, либо требуют для своей работы предварительной инсталляции JDK на машине разработчика.

Существуют комплекты разработки приложений на Java других производителей, доступные для ряда платформ. Часть из них начиналась с исходного кода Sun JDK, часть — нет. Все они строго выполняют базовые спецификации Java, но обычно отличаются в областях, для которых нет явных спецификаций. Например, Сборка мусора, стратегии компиляции и техники оптимизации. [9]

3.2.3. BlackBox Component Builder

BlackBox Component Builder — open-source среда разработки-выполнения для языка Компонентный Паскаль, разработанная швейцарской компанией Oberon Microsystems.

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

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

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

Других компилирующих сред, обладающих такой гибкостью, на сегодняшний день нет. [6]

3.2.4. Eclipse

Eclipse представляет собой основанную на Java расширяемую платформу разработки с открытым исходным кодом. По сути - это просто среда разработки и набор сервисов для построения приложений на основе встраиваемых компонентов (плагинов). К счастью, в составе Eclipse имеется стандартный набор плагинов, в том числе хорошо известный инструментарий - Java Development Tools (JDT).

В то время как большинство пользователей, применяющих Eclipse в качестве интегрированной среды разработки Java (IDE), вполне им довольны, возможности его гораздо шире. Eclipse также включает в себя среду разработки плагинов (PDE), которая в первую очередь заинтересует тех, кто хочет расширить сам Eclipse, так как позволяет создавать свои инструменты, встраиваемые в среду Eclipse. Поскольку Eclipse полностью состоит из плагинов, у всех разработчиков инструментариев имеется возможность предложить свои расширения к Eclipse и предоставить пользователям последовательную и цельную интегрированную среду разработки (IDE).

Эта целостность и последовательность характерны не только для инструментов Java-разработки. Хотя Eclipse написан на Java, использовать его можно и с другими языками. К примеру плагины, поддерживающие такие языки программирования как C/C++ и COBOL. Структура Eclipse может также использоваться как основа для других типов приложений, не имеющих отношения к разработке ПО, например, систем управления контентом.

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

Те, кто создаёт плагины к Eclipse или использует Eclipse как базу для разработки ПО, обязаны публиковать любой код Eclipse, который они используют либо модифицируют в рамках лицензии EPL, но имеют право лицензировать свои собственные дополнения, как им нравится. Собственный код, объединённый в комплект с ПО из Eclipse, не требует лицензирования в качестве открытого исходного кода, а сам исходный код не нужно делать общедоступным. [7]

3.3. Методологии программирования

Методология программирования - это совокупность идей, понятий, принципов, способов и средств, определяющая стиль написания, отладки и сопровождения программ.

Перечислим основные методологии (парадигмы) программирования вместе с присущими им видами абстракций:

− процедурно-ориентированные – алгоритмы;

− объектно-ориентированные – классы и объекты; [2]

3.2.1. Структурное программирование

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

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

Структурное программирование, наиболее отчетливо выраженное в языке Pascal, возникло в ходе развития процедурно-ориентированного подхода, заложенного в исторически языке программирования FORTRAN.

Основу технологии структурного программирования составляют следующие положения:

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

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

3. Детально проработанные алгоритмы изображаются в виде блок-схемы.

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

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

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

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

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

Использование модулей имеет следующие преимущества:

1) возможность создания программы несколькими программистами;

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

3) упрощение отладки программы – поиска и устранения в ней ошибок;

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

Сегодня дополняющим структурное программирование, создающим основу для разработки современных программных комплексов стало объектное объектно-ориентированное программирование, а противостоящим ему при решении определенных классов задач является декларативное программирование, выраженное двумя разными подходами – функциональным и логическим. [2]

3.2.2. Объектно-ориентированное программирование

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

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

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

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

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

Инкапсуляция – это механизм, который объединяет данные и код, манипулирующий этими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования. В объектно-ориентированном программировании код и данные могут быть объединены вместе; в этом случае говорят, что создаётся так называемый «черный ящик». Когда коды и данные объединяются таким способом, создаётся объект.

Наследование – свойство объектов порождать своих

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

Полиморфизм – многие объекты могут иметь одноименные методы, которые могут выполнять разные действия для разных объектов. Например, оператор «+» для числовых величин выполняет сложение, а для текстовых – склеивание. Выполнение каждого конкретного действия будет определяться типом данных.

В объектно-ориентированном программировании центральным является понятие класса. Класс – это шаблон, по которому создаются объекты определенного типа. Класс объединяет в себе данные и методы их обработки.

Объекты – это экземпляры определенного класса. Например, кнопки или текстовые поля, устанавливаемые на форме, являются экземплярами соответствующих стандартных классов. [9]

3.2.3. Декларативное программирование

Направлен на относительно узкий круг задач искусственного интеллекта.

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

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

При логическом варианте такого подхода (прежде всего это относится к языку PROLOG) задача описывается совокупностью фактов и правил в некотором формальном логическом языке, при функциональном варианте – в виде функциональных соотношений между фактами (LISP).

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

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

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

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

Функциональный подход породил целое семейство языков, родоначальником которых стал язык программирования LISP. [2]

3.2.4. Параллельное программирование

Используется для распараллеливания обработки информации в многопроцессорных и мультипрограммных ЭВМ с целью ускорения вычислений и эффективного использования ресурсов ЭВМ.

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

Выводы и предложения

С появлением языков программирования жизнь современного человека стала проще и интереснее. В 21 веке любой человек в той или иной степени соприкасается с языками программирования. Сегодня языки программирования применяются в любой сфере деятельности человека. И С каждым годом наблюдается все больший прогресс. Все больше предприятий автоматизируются с помощью компьютеров и языков программирования.

В данной курсовой работе мы провели сравнение языков программирования (Python, PHP, С++ и т.д.) и среды для разработки программ (Microsoft Visual Studio, Eclipse и т.д.) мы пришли к выводам:

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

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

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

Список использованной литературы.

  1. Киреенко В.П., Борздова Т.В. Учебно-методический комплекс / Киреенко В.П., Борздова Т.В. ГИУСТ БГУ, 2017. – с. 41-49.
  2. Кадырова Г.Р. Учебное пособие. Основы алгоритмизации и программирования / Кадырова Г.Р. УлГТУ,2014. С.24-30.
  3. Национальная библиотека им. Н.Э. Баумана. 2017. https://ru.bmstu.wiki (дата обращения 21.01.2018)
  4. https://studopedia.ru/5_116868_istoriya-yazikov-programmirovaniya.html Лекции - Высокоуровневые методы информатики и программирования (ВМИП) (дата обращения 15.12.2017)
  5. О.П. Солдатова, И.В.Лёзина / О.П. Солдатова, И.В.Лёзина, учебное пособие 2010, (17-18с)
  6. С.П.Хабаров Учебное пособие / С.П.Хабаров, PROLOG – язык разработки интеллектуальных и экспертных систем. 2013. C 18-19.
  7. www.inr.ac.ru/~info21/info/qtoblackbox.htm – сайт проекта «Информатика-21».(дата обращения 09.01.2018)
  8. www.eclipse.org – официальный сайт платформы Eclipse. (дата обращения 09.01.2018)
  9. https://msdn.microsoft.com/ru-ru/library/dn762121.aspx - официальный сайт Microsoft. (дата обращения 09.01.2018).
  10. Блинов О.П., Романчик В.С. Учебно-методическое пособие / Блинов О.П., Романчик В.С., Java методы программирования. 2013 с 12, с.14-15, с. 827-829.
  11. Гагарина Л.Г./ Гагарина Л.Г. Технология Разработки программного обеспечения. 2008
  12. Голиков В.А. Теория программирования. / Московская финансово-промышленная академия.
  13. А.Г. Аузяк, Ю.А. Богомолов, А.И. Маликов, Б.А. Старостин, Учебное пособие/КАИ, 2013. С. 32-36.