Файл: Системы программирования как неотъемлемая часть ЭВМ.pdf
Добавлен: 06.04.2023
Просмотров: 138
Скачиваний: 2
СОДЕРЖАНИЕ
Глава 1. Системы программирования как неотъемлемая часть ЭВМ
1.1 История развития языков программирования
1.2 Определение и классификация систем программирования
Глава 2. Современные системы программирования
2.1 Языки веб-программирования
2.2 Функционально-императивные языки программирования
Введение
Если проследить историю используемых сегодня языков программирования, таких как Си и Паскаль (а равно и менее популярных Бейсик, Фортран или Ада), то окажется, что все они были созданы на рубеже 60-х и 70-х годов. Иными словами, возраст современных языков программирования (за исключением Явы), перевалил за третий десяток, что для компьютерной индустрии является сроком экстремальным. Современные языки программирования старше Интернета, Windows и персонального компьютера минимум на десятилетие. При этом новые языки не переставали регулярно появляться, однако ни один из них не задержался в практике программирования, хотя приносимые ими новые идеи дополняли уже известные языки (как это произошло с объектно-ориентированным программированием).
В пятидесятые годы двадцатого века с появлением компьютеров на электронных лампах началось бурное развитие систем программирования. К сегодняшнему дню насчитывают несколько поколений систем программирования. Каждое из последующих поколений по своей функциональной мощности качественно отличается от предыдущего. С появлением персональных компьютеров системы стали составными частями интегрированных сред разработки. Появились системы, применяемые в различных офисных программах. В настоящее время системы программирования применяются в самых различных областях человеческой деятельности, таких как научные вычисления, системное программирование, обработка информации, искусственный интеллект, издательская деятельность, удаленная обработка информации, описание документов.
Язык программирования — формальная знаковая система, предназначенная для записи программ. Программа обычно представляет собой некоторый алгоритм в форме, понятной для исполнителя (например, компьютера). Язык программирования определяет набор лексических, синтаксических и семантических правил, используемых при составлении компьютерной программы. Он позволяет программисту точно определить то, на какие события будет реагировать компьютер, как будут храниться и передаваться данные, а также какие именно действия следует выполнять над этими данными при различных обстоятельствах.
С течением времени одни системы развивались, приобретали новые черты и остались востребованы, другие утратили свою актуальность и сегодня представляют в лучшем случае чисто теоретический интерес.
Цель исследования – обзор современных систем программирования.
Задачи исследования:
- рассмотрение истории развития языков программирования;
- анализ структуры современной системы программирования;
- характеристика понятия, назначения и составных элементов систем программирования;
- общая характеристика основных языков программирования;
- обзор современных систем программирования.
Глава 1. Системы программирования как неотъемлемая часть ЭВМ
1.1 История развития языков программирования
Не секрет, что языки программирования обязаны своим появлением необходимостью заставить ЭВМ эффективно работать, поэтому вполне логично начать с краткого экскурса в историю развития высокоуровневых языков программирования.
При классификации языков выделяют следующие типы языков:
- Ассемблерные языки — являются символьным представлением машинных языков конкретного компьютера.
- Метаязыки — языки, используемые для формального описания других языков.
- Императивные языки — это языки, оперирующие командами, изменяющими значение элементов данных, располагают операциями присваивания и циклами. К ним относятся все современные языки программирования.
- Декларативные языки — языки, оперирующие инструкциями данным и отношениями между ними. Алгоритм скрывается семантикой языка. Это аппликативные языки, языки логики и объектно-ориентированные языки. Примеры декларативных свойств - сложные множества и инструкции поиска по шаблону.
- Процедурные языки — позволяют определять отдельные методы вычисления какой-нибудь проблемы. Включают в себя императивные и функциональные языки.
- Аппликативные языки — функции применяются к значениям без побочного эффекта. Это Функциональные языки во всем своем многообразии.
- Функциональные языки — оперируют функциями высокого порядка. В них манипуляции совершаются напрямую функциями, а не данными. К категории функциональных языков относятся Lisp, FP, APL, Nial, Krc.
- Объектно-ориентированные языки — языки, в которых данные и функции, имеющие доступ к ним рассматриваются как один модуль. Пример: Object Pascal, С++, Java, Objective Caml.
- Языки запросов — обеспечивают интерфейс к базам данных.
- Языки четвертого поколения (4GL) — высокоуровневые языки, могут использовать естественный английский язык или визуальные конструкции.
- Языки логики — языки, оперирующие предикатами и их отношениями p (X,Y)[1].
Известные языки логического программирования: Prolog, KLO, Mandala и Mercury.
Первым общепризнанным языком высокого уровня можно по праву назвать Fortran, версия которого появилась в ноябре 1954 года. Позднее в октябре 1956 года появилась версия Fortran I, а через год Fortran II, еще через год вышел Fortran III, но казавшийся монополизм этого языка был нарушен с появлением более продуманных языков, таких как Cobol (1957), Lisp (1958), Algol'58 (1958), APL (1960). С момента, когда появился первый язык программирования высокого уровня, программисты могли создавать программы длиной до нескольких тысяч строк. Однако когда дело доходило до больших программ, код становился совершенно нечитаемым и трудно управляемым. Избавление от таких неструктурированных программ пришло с появлением языков структурного программирования. И на сегодня это привело к тому, что все современные языки являются структурными.
С ростом производительности ЭВМ от платформно-ориентированных последовательных процедурных языков с одним входом и одним выходом в 1975 пришли к созданию Modula (развитие Pascal) и Scheme (малый собрат языка Lisp).
В 1978 появился стандарт C от Кернигана и Ритчи, появляется и AWK, унаследовавший кое-что от С. Под влиянием популярности Pascal в 1979 появились языки Modula 2 и ADA.
В 1983 появляется ML - прародитель таких языков как O'Caml и Standard ML, небезызвестный С++ задумывается именно в этом году, совершенствуются другие языки (ADA'83, Prolog II)[2] .
В 1988 уже существовал Modula 3 и Perl 2.0. В 1989: Tcl , ANSI C (C89), Perl 3.0, bash. В 1990: Scheme IEEE, ISO C (C90), SML'90. В 1991: Fortran'90 ISO, Python, Java, Perl 4.0, NetRexx, Tcl/Tk. В 1992 разработан язык принтеров - PostScript level 2, появился фактический стандарт языка Oberon-2. В 1994: Perl 5.0, Common Lisp ANSI. В 1995: ADA'95, Delphi, Java 1. В 1996: PostScript level 3, APL'96, ISO C (C95), Objective Caml. 1997 - довольно богатый на языки год: Object Rexx, Prolog IV, OO Cobol, Modula 2 ISO, SML'97. Также компания Oberon Мicrosystems внесла в Oberon-2 небольшие дополнения и разработав коммерческий компилятор промышленного уровня выпустила его в свет под названием Component Pascal.
В 1998 утвержден стандарт на C++ ANSI/ISO, Java 2 (v1.2), O'Caml.
В 2000 году у появившегося к тому моменту Java 2 (v1.3) появился конкурент - C#. Появилась самая стабильная из существовавших - версия Perl 5.6. Затачивается получивший широкое распространение в Европе функциональный, объектно-ориентированный язык O'Caml 3.
В среде системных программистов визуальный интерфейс получил свой современный вид в основном благодаря противостоянию в 1990 с Microsoft фирм Borland и Watcom, которое как вылилось в появление семейств языков Microsoft Visual Studio, ставшего мощнейшим инструментом в руках Microsoft для пропаганды миграции на платформу Windows, и разрозненного множества систем от Borland, - таких сред как Delphi, Kylix, СBuilder и JBuilder. Кроме того, флагманским продуктом Borland провозглашается все-таки система, основанная на довольно старом языке Object Pascal – Delphi[3]. Последнее время высока популярность WWW-программирования. Языки WWW-программирования обладают рядом свойств, которые позволяют использовать их на платформе, специализированной для работы в качестве сервера. Чаще всего это интерпретаторы (такие как Perl, PHP) позволяющие использовать их на стороне сервера, или языки, поддерживаемые клиентом (браузеры) - HTML, XML, Java, JavaScript, или специальные модули (plug-in), расширяющие клиента - Flash.
1.2 Определение и классификация систем программирования
Система программирования – это комплекс средств, предназначенный для создания и эксплуатации программ на конкретном языке программирования на ЭВМ определенного типа.
Средства для создания программ.
Традиционными средствами разработки программ являются алгоритмические (процедурные) языки программирования. Для создания программы на выбранном языке программирования нужно иметь следующие компоненты:
Текстовый редактор – это редактор, который позволяет набрать текст программы на языке программирования. Для этой цели можно использовать любые текстовые редакторы, но лучше пользоваться специализированным текстовым редактором.
Существуют разные подходы к классификации языков программирования. Все они в той или иной мере упрощают реальную картину и охватывают лишь отдельные характеристики языков. Сложность классификации понятна: 50 лет эволюции языков программирования привели к тому, что взаимопроникновение концепций языков, которые используют различные модели и парадигмы, достигло едва ли не своего апогея. Почти каждый новый язык представляет собой «гремучую смесь» разных концепций и механизмов.
В течение многих лет программное обеспечение строилось на основе операционных и процедурных языков, таких как Фортран, Бейсик, Паскаль, Ада, Си. Сегодня современные версии этих и им подобных языков (Модула, Форт) доминируют при разработке прикладных программных средств. Однако по мере эволюции языков программирования получили широкое распространение и другие, принципиально другие подходы.
Классическое операционное программирование требует от программиста детального описания того, как решить задачу, то есть формулировки алгоритма и его специальные записи. При этом ожидаемые свойства результата обычно не указываются. При процедурном подходе операторы объединяются в группы – процедуры. Структурное программирование не выходит за рамки этого направления, оно лишь дополнительно фиксирует некоторые полезные приемы технологии программирования[4].
Модульное программирование является развитием и совершенствованием процедурного программирования и библиотек специальных программ. Основная черта модульного программирования — стандартизация интерфейса между отдельными программными единицами. Модуль — это отдельная функционально-законченная программная единица, которая структурно оформляется стандартным образом по отношению к компилятору и по отношению к объединению ее с другими аналогичными единицами и загрузке. Как правило, каждый модуль содержит паспорт, в котором указаны все основные его характеристики: язык программирования, объем, входные и выходные переменные, их формат, ограничения на них, точки входа, параметры настройки и т.д. Объем модуля обычно не превышает 1000 команд ЭВМ или операторов языка программирования. В противном случае модуль становится громоздким и трудным к восприятию и использованию.
Модульное программирование — это искусство разбиения задачи на некоторое число различных модулей, умение широко использовать стандартные модули путем их параметрической настройки, автоматизация сборки готовых модулей из библиотек, банков модулей.
Основные концепции модульного программирования:
- каждый модуль реализует единственную независимую функцию;
- каждый модуль имеет единственную точку входа и выхода;
- каждый модуль имеет единственную точку входа и выхода;
- размер модуля по возможности должен быть минимизирован;
- каждый модуль может быть разработан и закодирован различными членами бригады программистов и может быть отдельно протестирован;
- вся система построена из модулей;
- модуль не должен давать побочных эффектов;
- каждый модуль не зависит от того, как реализованы другие модули[5].
При таком подходе сложная система разделяется на несколько частей, одновременно создаваемых различными программистами. Каждый модуль реализует единственную функцию. Размер модуля невелик, поэтому тестирование управляемо и может быть проведено тщательным образом. После кодирования и тестирования всех модулей происходит их интеграция, и тестируется вся система.
При сопровождении тестируется и отлаживается только тот модуль, который плохо работает. Очевидны преимущества в облегчении написания и тестирования программ, уменьшается стоимость их сопровождения.
Концепция модульного программирования реализована в ряде языков, таких как Modula 2, Turbo Pascal 5.0 и выше, C, Python,Perl.
Отличие в реализации процедурного программирования от модульного состоит в том, что модуль не виден программе. В отличие от стандартных языков процедурного программирования, в модульных языках лишние модули просто не прикомпановываются на этапе сборки.
Принципиально иное направление в программировании связано с парадигмами непроцедурного программирования. К ним можно отнести объектно-ориентированное и декларативное программирование.
Объектно-ориентированный язык создает окружение в виде множества независимых объектов. Каждый объект ведет себя подобно отдельному компьютеру, их можно использовать для решения задачи как «черные ящики», не вникая во внутренние механизмы их функционирования.
Из языков объектного программирования, популярных среди профессионалов, следует назвать прежде всего C++, для более широкого круга программистов предпочтительны среды типа Delphi и Visual Basic.