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

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

Содержание:

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

единство - использование одних и тех же символов для обозначения одних и тех же или родственных понятий в разных частях алгоритма. Количество этих символов должно быть по возможности минимальным;

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

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

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

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

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

По этому критерию можно выделить следующие уровни языков программирования:

машинные;

машинно-ориентированные (ассемблеры);

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

https://konspekta.net/poisk-ruru/baza3/38241830291.files/image001.jpg 

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

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

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

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

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

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

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

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

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

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

Таким образом, можно сформулировать основные преимущества языков высокого уровня перед машинными:

алфавит языка высокого уровня значительно шире алфавита машинного языка, что существенно повышает наглядность текста программы;

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

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

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

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

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

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

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

- алфавит,

- синтаксис,

- семантика.

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

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

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

Языки высокого уровня делятся на:

- процедурные;

- логические;

- объектно-ориентированные.

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

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

Разнообразие классов задач привело к тому, что на сегодняшний день разработано несколько сотен алгоритмических языков. Правда, широкое распространение и международное признание получили лишь 10-15 языков. Среди них в первую очередь следует отметить: Fortran и Algol - языки, предназначенные для решения научно-технических задач, Cobol – для решения экономических задач, Basic – для решения небольших вычислительных задач в диалоговом режиме. В принципе каждый из этих языков можно использовать для решения задач не своего класса. Однако, как правило, применение оказывается не удобным.

В то же время в середине 60-х годов начали разрабатывать алгоритмические языки широкой ориентации – универсальные языки. Обычно они строились по принципу объединения возможностей узко-ориентированных языков. Среди них наиболее известны PL/1, Pascal, C, C+ , Modula, Ada. Однако, как любое универсальное средство, такие широко-ориентированные языки во многих конкретных случаях оказываются менее эффективными

Логические языки- (Prolog, Lisp, Mercury, KLO и др.) ориентированы не на запись алгоритма решения задачи, а на систематическое и формализованное описание задачи с тем, чтобы решение следовало из составленного описания. В этих языках указывается, что дано и что требуется получить. При этом поиск решения задачи возлагается непосредственно на ЭВМ.

Объектно-ориентированные языки (Object Pascal, C++, Java, Objective Caml. и др.). Руководящая идея объектно-ориентированных языков заключается в стремлении связать данные с обрабатывающими эти данные процедурами в единое целое - объект.

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

- объект;

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

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

- событие;

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

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

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

Метод — это набор действий над объектом или его свойствами.

Событие — это характеристика изменения состояния объекта.

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

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

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

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

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

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

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

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

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

Программа – алгоритм, записанный на языке программирования. Программа – последовательность операторов языка. Языки программирования – искусственные языки, строго формализованные; существует правила записи операторов языка – синтаксис языка.

Машинный язык (40-50 годы XX в.).

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

Ассемблер (начало 50-ых годов XX в.).

Вместо 1 и 0 программисты теперь могли пользоваться операторами (MOV, ADD, SUB и т.д.), которые похожи на английские слова. Программы на ассемблере также являются машинно-зависимыми. Для преобразования в машинный код использовался компилятор (спец. программа – переводчик в машинный код).

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

С середины 50-ых гг. XX в. начали создавать первые языки программирования высокого уровня (high-level language). Эти языки были Машино независимыми (не привязаны к опред. типу ЭВМ). Но для каждого языка были разработаны собственные компиляторы.

Примеры таких языков: FORTRAN (FORmula TRANslator; 1954) предназначен для, научных и технических расчетов; COBOL (1959) был предназначен в основном для коммерческих приложений (обрабатывал большие объемы нечисловых данных) – Common Business-Oriented Language); язык BASIC (Beginner’s All Purpose Instuction Code – универсальный язык символьных инструкций для начинающих) (1964 г.)

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

С начала 80-ых г. XX в. начали создаваться языки программирования, которые позволили перейти к структурному программированию (использование операторов ветвления, выбора, цикла и практически отказ от частого использования операторов перехода (goto). К этим языкам относятся: язык Pascal (назван его создателем Никлаусом Виртом в честь великого физика Блеза Паскаля; 1970); язык Си, позволяющий быстро и эффективно создавать программный код (1971)

Языки объектно-ориентированного программирования

(90-ые г. XX в.). В основу этих языков положены программные объекты, которые объединяют данные и методы их обработки. В этих языках сохранялся алгоритмический стиль программирования. Для них были разработаны интегрированные среды программирования, позволяющие визуально конструировать графический интерфейс приложений:

язык С++ (1983) - продолжение алгоритм. языка Си;

язык Object Pascal (1989) был создан на основе языка Pascal. После создания среды программирования – Delphi (1995);

язык Visual Basic(1991) был создан корпорацией Microsoft на основе языка Qbasic (1975) для разработки приложений с графическим интерфейсом в среде ОС Windows.

Языки программирования для компьютерных сетей.

В 90-ые годы XX в. в связи с бурным развитием Интернета были созданы языки, обеспечивающие межплатформенную совместимость. На подключенных к Интернету компьютерах с различными ОС (Windows, Linux, Mac OS и др.) могли выполняться одни и те же программы. Исходная программа компилируется в промежуточный код, который исполняется на компьютере встроенной в браузер виртуальной машиной:

- язык Java - объектно-ориентированный язык был разработан фирмой Sun Microsystems для создания сетевого программного обеспечения (1995);

- язык JavaScript – язык сценариев Web-страниц (компания Netscape). (1995)

Языки программирования на платформе .NET.

Интегрированная среда программирования Visual Studio .Net, разработанная корпорацией Microsoft, позволяет создавать приложения на различных языках объектно-ориентированного программирования, в том числе:

на языке Visual Basic .Net ( на основе Visual Basic) - 2003 г.;

на языке Visual C# (С-шарп) – на основе языков С++ и J – 2003 г.;

на языке Visual J# (J-шарп) – на основе Java и JavaScript – 2003 г.

Интерпретаторы и компиляторы

Для того, чтобы процессор мог выполнить программу, программа и данные должны быть загружены в оперативную память. Необходимо, чтобы в ОП был размещена программа - транслятор, автоматически переводящий с языка программирования в машинные коды. Трансляторы бывают двух типов: интерпретаторы и компиляторы. Интерпретатор – программа, которая обеспечивает последовательный перевод операторов программы с одновременным их выполнением. Достоинством интерпретатора является удобство отладки (поиск ошибок), недостаток – сравнительно малая скорость выполнения. Компилятор переводит весь текст программы на машинный язык и сохраняет его в исполнимом файле (обычно с расширением .exe).

Системы объектно-ориентированного программирования содержат программу-транслятор и позволяют работать в режиме как интерпретатора, так и компилятора. На этапе разработки и отладки проекта используется режим интерпретатора, а для получения готовой программы – режим компилятора [].

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

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

Правила записи команд на конкретном языке называются синтаксисом языка. Синтаксис определяет, какая команда будет считаться правильной, а какая нет. Например, в языке Basic команды CLS и FOR I=1 TO 10 считаются правильными, а команды CLERSCREEN и FOR I FROM 1 TO 10 - неправильными.

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

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

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

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

По способу трансляции языки делятся на:

- компиляторы

- интерпретаторы

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

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

По уровню (особенностям построения) языки делятся на:

Машинно-ориентированные (ассемблеры).

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

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

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

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

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

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

Универсальные.

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

2.1. С и его разновидности

Язык "C" является универсальным языком программирования. Он тесно связан с операционной системой "UNIX" , так как был развит на этой системе и так как "UNIX" и ее программное обеспечение написано на "C". Сам язык, однако, не связан с какой-либо одной операционной системой или машиной; и хотя его называют языком системного программирования, так как он удобен для написания операционных систем, он с равным успехом использовался при написании больших вычислительных программ, программ для обработки текстов и баз данных.

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

В языке "C" отсутствуют операции, имеющие дело непосредственно с составными объектами, такими как строки символов, множества, списки или с массивами, рассматриваемыми как целое. Здесь, например, нет никакого аналога операциям PL/1, оперирующим с целыми массивами и строками. Язык не предоставляет никаких других возможностей распределения памяти, кроме статического определения и механизма стеков, обеспечиваемого локальными переменных функций; здесь нет ни "куч"(HEAP), ни "сборки мусора", как это предусматривается в АЛГОЛЕ-68. Наконец, сам по себе "C" не обеспечивает никаких возможностей ввода-вывода: здесь нет операторов READ или WRITE и никаких встроенных методов доступа к файлам. Все эти механизмы высокого уровня должны обеспечиваться явно вызываемыми функциями.

Аналогично, язык "C" предлагает только простые, последовательные конструкции потоков управления: проверки, циклы, группирование и подпрограммы, но не мультипрограммирование, параллельные операции, синхронизацию или сопрограммы[4]. Хотя отсутствие некоторых из этих средств может выглядеть как удручающая неполноценность ("выходит, что я должен обращаться к функции, чтобы сравнить две строки символов ?!"), но удержание языка в скромных размерах дает реальные преимущества. Так как "C" относительно мал, он не требует много места для своего описания и может быть быстро выучен. Компилятор с "C" может быть простым и компактным. Кроме того, компиляторы легко пишутся; при использовании современной технологии можно ожидать написания компилятора для новой ЭВМ за пару месяцев и при этом окажется, что 80 процентов программы нового компилятора будет общей с программой для уже существующих компиляторов. Это обеспечивает высокую степень мобильности языка. Поскольку типы данных и структуры управления, имеющиеся в "C", непосредственно поддерживаются большинством существующих ЭВМ, библиотека, необходимая во время прогона изолированных программ, оказывается очень маленькой. На PDP -11, например, она содержит только программы для 32-битового умножения и деления и для выполнения программ ввода и вывода последовательностей. Конечно, каждая реализация обеспечивает исчерпывающую, совместимую библиотеку функций для выполнения операций ввода-вывода, обработки строк и распределения памяти, но так как обращение к ним осуществляется только явно, можно, если необходимо, избежать их вызова; эти функции могут быть компактно написаны на самом "C".

C#

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

Создание C#

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

Другой возможностью, отсутствующей в Java, является полная интеграция с платформой Windows. Несмотря на то что программы на Java могут выполняться в среде Windows, при условии, что установлена виртуальная машина Java, среды Java и Windows не являются сильно связанными. А поскольку Windows является самой распространенной операционной системой во всем мире, то отсутствие прямой поддержки Windows является существенным недостатком Java.

Для удовлетворения этих и других потребностей программирования корпорация Microsoft разработала в конце 1990-х годов язык C# как часть общей стратегии .NET. Впервые он был выпущен в виде альфа-версии в середине 2000 года. Главным разработчиком C# был Андерс Хейльсберг — один из ведущих в мире специалистов по языкам программирования, который может похвалиться рядом заметных достижений в данной области. Достаточно сказать, что в 1980-е годы он был автором очень удачной и имевшей большое значение разработки — языка Turbo Pascal, изящная реализация которого послужила образцом для создания всех последующих компиляторов.

Язык C# непосредственно связан с С, C++ и Java. И это не случайно. Ведь это три самых широко распространенных и признанных во всем мире языка программирования. Кроме того, на момент создания C# практически все профессиональные программисты уже владели С, C++ или Java. Благодаря тому что C# построен на столь прочном и понятном основании, перейти на этот язык из С, C++ или Java не представляло особого труда. А поскольку и Хейльсбергу не нужно (да и нежелательно) было изобретать велосипед, то он мог сосредоточиться непосредственно на усовершенствованиях и нововведениях в С#.

На рис. 1.1 приведено генеалогическое дерево С#. Предком C# во втором поколении является С, от которого он унаследовал синтаксис, многие ключевые слова и операторы. Кроме того, C# построен на усовершенствованной объектной модели, определенной в C++. Если вы знаете С или C++, то будете чувствовать себя уютно и с языком С#.



https://e-libra.ru/files/books/2019/02/28/505923/i_001.jpg

Рис. 1.1. Генеалогическое дерево C#

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

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

2.2. Паскаль

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

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

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

2.3.Python

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

Python достаточно популярен, поскольку прост в изучении и переносим, что означает , что если вы напишите программ на Python , то сможете выполнять их различных типах компьютерах , работающих под управлением таких операционных систем, как Linux, Windows или Macintosh. Несмотря на то, что Python часто используется для создания Интернет – приложений, например программ получающих данные от Web-страниц и сохраняющих их в базе данных, его можно использовать и для создания практически других любых приложений.

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

Python – это язык программирования, чувствительный к регистру используемых символов , поэтому команда Print не будет распознана как правильная ( правильный вариант print).

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

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

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

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

2.4.Бейсик

Язык Бэйсик (он же Бейсик, он же BASIC) входит в семейство языков программирования высокого уровня.

BASIC - это аббревиатура, которая расшифровывается так: Beginner’s All-purpose Symbolic Instruction 

Code - универсальный код символических инструкций для начинающих).

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

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

Бэйсик с момента создания многократно дорабатывался и усложнялся, повинуясь законам современного программирования. По этой причине к настоящему времени он уже утратил (по сравнению с первыми версиями) свою простоту. Хотя, даже с учётом этого, современный Бэйсик всё-равно остаётся относительно простым языком, по сравнению с такими языками, как, например, С++.

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

Готовых программ тогда почти не было. Поэтому под каждую задачу надо было создавать отдельную программу. И делать это на компьютерах тех лет, используя имеющиеся тогда языки программирования, было очень сложно (отчасти поэтому раньше языки программирования создавались для решения конкретных задач, например, ПРОЛОГ был ориентирован на создание систем с искусственным интеллектом, ФОРТРАН - для работы с математическими формулами в научных и инженерных вычислениях и т.п.).

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

В итоге в 1964 году преподавателями Дартмутского Колледжа Джоном Кемени и Томасом Курцем был придуман язык Бэйсик, и под их руководством был реализован командой студентов колледжа. Со временем, когда стали появляться другие диалекты, изначальную реализацию стали называть Dartmouth BASIC.

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

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

  1. Язык должен быть простым в использовании и понятным для начинающих.
  2. Должен быть языком программирования общего назначения (а не специального, как, например, упомянутые выше Фортран и Пролог).
  3. Язык должен предоставлять возможность расширения функциональности, доступную опытным программистам.
  4. Язык должен быть интерактивным, то есть выполнять команды пользователя.
  5. Язык должен предоставлять однозначные и понятные сообщения об ошибках.
  6. Язык должен быстро работать на небольших программах.
  7. Язык не должен быть привязан к “железу” и не должен требовать от программиста понимания работы этого самого “железа”.
  8. Язык должен защищать пользователя от операционной системы.

При создании Бэйсика за основу были взяты частично Фортран II и частично Алгол 60. Первоначально Бэйсик был реализован на мейнфрейме GE-265 с поддержкой множества терминалов (мейнфрейм - это большой высокопроизводительный отказоустойчивый сервер).

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

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

2.5.Фортнан

В 1954 году в недрах корпорации IBM группой разработчиков во главе с Джоном Бэкусом (John Backus) был создан язык программирования Fortran.

Значение этого события трудно переоценить. Это первый язык программирования высокого уровня. Впервые программист мог по-настоящему абстрагироваться от особенностей машинной архитектуры. Ключевой идеей, отличающей новый язык от ассемблера, была концепция подпрограмм. Напомним, что это современные компьютеры поддерживают подпрограммы на аппаратном уровне, предоставляя соответствующие команды и структуры данных (стек) прямо на уровне ассемблера, в 1954 же году это было совершенно не так. Поэтому компиляция Fortran'а была процессом отнюдь не тривиальным. Кроме того, синтаксическая структура языка была достаточно сложна для машинной обработки в первую очередь из-за того, что пробелы как синтаксические единицы вообще не использовались. Это порождало массу возможностей для скрытых ошибок, таких, например:

В Фортране следующая конструкция описывает “цикл for до метки 10 при изменении индекса от 1 до 100”: DO 10 I=1,100. Если же здесь заменить запятую на точку, то получится оператор присваивания: DO10I = 1.100 Говорят, что такая ошибка заставила ракету взорваться во время старта.

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

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

Фортран - первый язык программирования высокого уровня <#"justify">Современный Фортран (Fortran 95 и Fortran 2003) приобрёл черты, необходимые для эффективного программирования для новых вычислительных архитектур, позволяет применять современные технологии программирования. Фортран имеет достаточно большой набор встроенных математических функций, поддерживает работу с целыми, вещественными и комплексными числами высокой точности. Выразительные средства языка изначально были весьма бедны, поскольку Фортран был одним из первых языков высокого уровня. В дальнейшем в Фортран были добавлены многие лексические конструкции, характерные для структурного, функционального и даже объектно-ориентированного программирования.

Заключение

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

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

В данной курсовой работе, мной были рассмотрены самые распространенные языки программирования, такие как: Фортран, Паскаль, Бейсик, Python, которые используется для научных вычислений, для обучения программированию начинающих программистов.

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

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

1. C++,Turbo Pasckal,QBasik: Эволюция языков программирования 2010г.

2. Семакин И.А., Информатика: Базовый курс /Семакин И.А., Залогова Л., Русаков С., Шестакова Л. - Москва: БИНОМ.,2005. - 105с.

3. Истомин Е.П. Информатика и программирование / Е.П. Истомин, А.М.

4. Иванова Г.С. Программирование / Г.С. Иванова. - М.: КНОРУС, 2013.

5. Уоллес Вонг Основы программирования 2-здание 2001

6. Бьерн Страуструпп Язык программирования C++


7. Герберт Шилдт C# 4.0: полное руководство


8. Марк Лутц Программирование на Python