Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
L01.doc
Скачиваний:
3
Добавлен:
15.11.2019
Размер:
116.74 Кб
Скачать

15

Лекция 1

1. Введение

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

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

1.1. Зачем изучать концепции языков программирования

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

Больше возможностей для выражения идеи.

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

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

Более обоснованный выбор подходящего языка.

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

Повышаются способности к изучению новых языков.

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

Это относится и к естествен­ным языкам. Чем лучше знание грамматики родного языка, тем легче дастся изучение второго языка. Более того, положительным побочным эффек­том изучения второго языка станет лучшее понимание первого.

Углубляется понимание реализации.

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

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

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

Повышаются способности к разработке новых языков.

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

Понимание новых технологий.

Со временем появля­ются новые парадигмы программирования. Для наилучшего исполь­зования концепций объектно-ориентированного, логического или парал­лельного программирования необходимо понимание конкретных языков, в которых эти концепции реализованы. Новые технологии, такие как Ин­тернет (Internet) и Всемирная паутина (World Wide Web), в корне меняют природу программирования. Создание методов программирования, опти­мально отвечающих этим новым условиям, требует достаточно глубокого понимания существа языков программирования.

1.2. Области применения программирования

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

1.2.1. Научные вычисления

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]