Файл: Обзор языков программирования высокого уровня (Понятие и развития языка программирования).pdf
Добавлен: 01.04.2023
Просмотров: 290
Скачиваний: 1
ВЕДЕНИЕ
Современный этап развития компьютерных технологий невозможно представить без использования языков программирования. Сегодня практически все программы создаются с помощью данных языков. Они позволяют сократить время разработки программ, добиться кроссплатформенности, определить внешний вид программы и предоставить возможность коммуникации программного (Software) и аппаратного (Hardware) обеспечения.
Актуальность данного исследования заключается в том, что программирование используется в таких важных сферах как медицина, строительство, экономика, электроника, автоматика, физика и другие. На многих предприятиях взамен на человеческий труд пришел роботизированный и машинный, который управляется благодаря программному обеспечению. Такое богатство разнообразия применений обеспечивается солидным выбором языков программирования, у каждого из которых есть свои плюсы и минусы.
В своей работе мне хотелось бы разобрать несколько основных современных языков. В качестве объекта исследования выступают языки программирования высокого уровня, а также системы программирования и их составляющие.
Цели данной работы являются:
- Изучить историю и развитие языков программирования
- Рассмотреть концепции языков программирования
- Сделать обзор языков программирования высокого уровня
Задачи данного исследования:
- Дать определение понятию «язык программирования».
- Проанализировать «набор правил», использующиеся в языках программирования.
- Провести обзор определенных языков программирования.
В данной курсовой работе будет двух глав. Первая глава будет посвящена основам языкам программирования, вторая глава рассматривает определённые языки программирования высокого уровня.
ГЛАВА 1. Языки программирования. Основы
1.1 Понятие языка программирования
Компьютеры могут управляться только инструкциям, которые им выдаются. Для того чтобы они (инструкции) были понятны как пользователю, так и компьютеру, должен быть интерфейс, облегчающий связь. Именно здесь появляются языки компьютерного программирования - их основная функция заключается в содействии общению между компьютером и пользователем. Они обеспечивают связь между человеческим и машинным языками [1].
Существует огромное разнообразие языков программирования, каждый из которых имеет свои сильные и слабые стороны и ориентированы они на определенные задачи. Несмотря на то, что сегодня существует огромное количество компьютерных языков, они являются довольно новой областью, поскольку первые языки высокого уровня были написаны в 1950-х годах, примерно в то время, когда были изобретены компьютеры. Самые ранние компьютеры были запрограммированы в двоичном формате, поэтому набор инструкций существовало в виде простых серией из 0 и 1. В то время существовал низкоуровневый язык программирования: компьютеру выдают серию инструкций через программу, он выполняет из них команды и общение между пользователем и компьютером производился с помощью примитивного интерфейса.
В программирование, для преобразования языка программирования более высокого уровня в исполняемый машинный код, существуют два способа трансляции — это компиляторы и интерпретаторы [1]. Компиляторы берут исходный код языка более высокого уровня и изменяет его в объектный код (1 и 0). Это преобразует всю программу за один раз, а затем сохраняет ее в преобразованной форме. Одним из преимуществ использования компилятора является отсутствие ошибок в синтаксисе при запуске программы, так как они (ошибки) обнаруживаются раньше на этапе трансляции. Однако компилятору требуется пространство для размещения как исходных, так и объектных файлов. С другой стороны, интерпретаторы - последовательно транслируют и выполняют один оператор, прежде чем перейти к следующему. Это означает, что перевод и выполнение происходят одновременно, а не отдельно, как с компилятором. Основным преимуществом интерпретатора является то, что он более эффективен при отладке программ. Однако интерпретаторы страдают от более низкой скорости выполнения, чем компиляторы, поскольку каждая строка должна быть переведена и выполнена, тогда как компиляторы переводят все сразу.
При разработке программного обеспечения, язык программирования должен быть совместим с методологией проектирования на этапе разработки программного обеспечения. В результате процесс разработки программного обеспечения имеет определенные цели проектирования языка компьютерного программирования, которые необходимы от программиста [2]:
Во-первых, надежность - пользователи должны чувствовать себя комфортно при использовании языка программирования даже при наличии случаев, таких как сбои оборудования или программного обеспечения. Это также связано с правильностью - программное обеспечение корректно, если оно ведет себя в соответствии со своими техническими характеристиками - чем точнее и недвусмысленно установлены характеристики, тем убедительнее может быть подтверждена правильность программы. Надежность состоит из читабельности, возможности записи на языке и способности справляться с исключениями, и чтобы система была предсказуемой в той или иной ситуации.
Во-вторых, ремонтопригодность - затраты на программное обеспечение возросли, и поэтому по экономическим соображениям уменьшили возможность исключения существующего программного обеспечения и разработки аналогичных приложений с нуля.
В-третьих, эффективность - цель для выполнения любой программы влияет как на язык программирования, так и на выбор используемых алгоритмов. Язык поддерживает эффективность, если он обладает такими качествами, как удобство записи, удобство обслуживания и оптимизация. Это важно, потому что большую часть времени, традиционно занимаемого программированием, тратится на поиск эффективного способа ведения дел. Это должно быть исключено с ранних этапов программирования.
Эти три цели могут быть достигнуты с помощью соответствующих инструментов и должны соответствовать определенным характеристикам языка программирования.
1.2 Появление и развитие языков программирования
Все началось в 1950-х годах с FORTRAN, Cobol и Lips, хотя до них было много пионеров. Так, например, греки и китайцы умели рассчитывать, автоматизировать (вручную) расчеты. Но отталкиваться будем от двух важных дат. В 820 году математик Аль-Хорезми опубликовал в Багдаде трактат под названием «Краткая книга восполнения и противопоставления», который, импортированный в Западную Европу во время арабских нашествий, оказал большое влияние на развитие математики. В 1840 году Ада Лавлейс (1814-1852) определила принцип последовательных итераций при выполнении операции. В честь трактата Аль-Хорезми («Dixit Algorizmi» на латинском) она (вероятно) назвала «алгоритм» логическим процессом выполнения программы. Для нее вычислительная машина должна включать в себя:
• устройство для ввода цифровых данных (перфокарты, зубчатые колеса и так далее.),
• память для хранения введенных числовых значений,
• блок управления, благодаря которому пользователь поражение задач, выполняемых машиной,
• «мельница», ответственная за проведение расчетов,
• устройство, позволяющее узнать результаты (принтер и т. д.).
Эти принципы будут, спустя столетие, лежать в основе первых компьютеров.
Самым старым искусственным вычислительным устройством, кроме счётов, является арифметическая машина Блеза Паскаля. До того, как были созданы языки программирования, бумажные ленты и перфокарты, в которых содержались сложные узоры для ткацкого станка Жаккарда в 1710 году. Спустя столетие Чарльз Бэббидж начал строить вычислительную машину и аналитическую машину. В 20 веке Герман Холлерит основал табулирующую машину. Его машинные табуляторы использовались для ускорения подсчета и сортировки перфокарт. В начале 1940-х годов Дж. Преспер Эккерт и Джон Мокли начали строить ENIAC (электронный числовой интегратор и калькулятор), который был завершен в 1946 году. Примерно в то же время, ближе к концу Второй мировой войны, Конрад Цузе начал строить электромеханические компьютеры в Германии. После того, как Цузе успешно завершил сборку своего компьютера в 1945 году, он понял, что у него нет дополнительного оборудования для ремонта или какой-либо разработки оборудования. Затем он переключил свое внимание с аппаратного обеспечения на разработку языков программирования. Конрад Цузе часто называют «отцом» современного компьютерного программирования из-за его вклада в первый язык программирования «Plankalkül», который был достаточно мощным, чтобы иметь возможность выполнять сложные программы.
В 1950-е года изобретение ассемблера Мориса В. Уилкса из Кембриджского университета открыло путь к так называемым языкам программирования высокого уровня. До этого программирование осуществлялось непосредственно в двоичном формате. Грейс Мюррей Хоппер (1906-1992), мобилизованная в качестве вспомогательного средства в американском флоте, разработала для «Remington Rand» самый первый компилятор, названный A0, который позволял генерировать двоичную программу из «исходного кода». После этого языки программирования превратились в языки ассемблера, которые быстро стали популярными и с которыми стало намного проще работать. Машинный код и язык ассемблера обычно известны как языки низкого уровня [3]. Язык ассемблера дает программисту преимущество, заключающееся в том, что он может указывать, где программист хочет выделить, где будут начинаться память и данные. Это освобождает программиста от ответственности за тщательный контроль над памятью. Языки высокого уровня, с другой стороны, снимают всю ответственность с программиста. Скорее, использование имен переменных позволяет программисту ссылаться на определенные части программы. Недостатком является то, что язык ассемблера очень ограничен, поскольку он предоставляет только те возможности, которые уже есть в машинном коде. Введение языка ассемблера в 1950-х годах проложило путь и дало ключ к более позднему производству языков программирования высокого уровня.
Самым первым языком программирования высокого уровня был FORTRAN, что означает FORmula TRANslation. Он был разработан в 1956 году Джоном Бакусом, сотрудником IBM. Целью FORTRAN было облегчить написание на ассемблере. Когда впервые был представлен FORTRAN, на него смотрели с подозрением, так как почти все программисты тогда работали только с машинным кодом и языками ассемблера [4]. Они изначально полагали, что программы, составленные на языке высокого уровня, будут менее эффективными, чем программы, написанные на низком уровне. Чтобы убедить потенциальных пользователей в преимуществах работы с языком высокого уровня, Джон Бэкус разработал отличный компилятор для FORTRAN, чтобы программы были такими же эффективными, как и написанные на языках низкого уровня. Это был лучший компилятор за многие годы. Однако одним из ограничений FORTRAN было то, что он был специально ориентирован на машину IBM 704. Это серьезное препятствие, так как синтаксис языка содержит много специфических особенностей машины IBM 704. Фортран известен своей эффективностью. За прошедшие годы FORTRAN был модернизирован и превращен в FORTRAN-II, FORTRAN-IV, FORTRAN-66 и FORTRAN-77. Ранние версии FORTRAN в значительной степени ограничивали пользователей. С другой стороны, более поздние версии допускали большую гибкость, но, поскольку она адаптировалась, ее использовать не так просто, как следовало бы. Развитие быстрой обработки строк делает FORTRAN более универсальным языком, чем раньше, но он все еще описывается как математический или научный язык.
В то время как язык FORTRAN начал появляться примерно в 1956 году, особенно в IBM, Грейс Хоппер заинтересовалась языками, которые используют слова или даже выражения из «естественного языка». После создания Flow-matic (или B0) она участвовала в 1959 году в разработке языка Cobol (COmmon Business Oriented Language). Cobol получил широкую поддержку правительства США. Первоначально Cobol был разработан для того, чтобы стать общим деловым языком в стране. Проект Cobol обсуждался в Пентагоне с 6 производителями компьютеров. Возможно, поэтому язык все еще используется, хотя он очень многословный и не содержит логических модулей, что приводит к уникальному стилю. Одно из преимуществ Cobol — это определенные приложения, связанные с обработкой долларов и центов.
FORTRAN и Cobol становятся основными языками: в течение 20 лет Cobol будет самым распространенным языком в мире. Сегодня он по-прежнему является рекордным для большого количества строк, написанных на языке программирования.
В то же время (около 1958 г.) математик в Массачусетском технологическом институте Джон МакКарти, основавший там в 1957 г. отдел искусственного интеллекта, создал язык Lisp. В отличие от FORTRAN, Lisp был разработан как функциональный язык для обработки списков. LISP является одним из наиболее используемых старых, «классических» языков программирования, разработанных в 1950-х годах. Дизайн был мотивирован необходимостью исследователей искусственного интеллекта для соответствующего языка. С другой стороны, Lisp остается ограниченным сообществом искусственного интеллекта.
В 1958 году, комиссия представителей GAMM (Европейская организация, собирающая исследователей в области обработки данных) и ACM (ее американский эквивалент) встречается в Цюрихе и пишет предварительный отчет о «международном алгебраическом языке» под названием LAI или Algol58 [5]. Algol станет языком для публикации алгоритмов, но он не будет полностью реализован, несмотря на его модификацию в Algol W, а затем в Algol68. Это связано со сложностью в реализации для того времени.
С концом 1950-х годов завершается то, что сегодня называется эрой компьютеров первого поколения, которые в основном используют перфокарты. Второе поколение компьютеров использует транзисторы.
В 1962 году канадский математик Кеннет Айверсон создал систему обозначений для математики, которая благодаря IBM станет языком программирования APL, который является очень оригинальным, поскольку он содержит не слова, а специальные символы. Требуется специальная клавиатура, которая значительно замедлит его распространение. Несмотря на широкое распространение и широкое использование, в мире программирования он всегда будет оставаться обособленным.