Помощь в учёбе, очень быстро...
Работаем вместе до победы

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

ДиссертацияПомощь в написанииУзнать стоимостьмоей работы

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

Содержание

  • Глава 1. Развитие концепций языков программирования
    • 1. 1. Определение понятия «язык программирования»
      • 1. 1. 1. ' Программирование первых вычислительных машин
      • 1. 1. 2. Программирование как рассуждение
      • 1. 1. 3. Программирование как создание алгоритма
      • 1. 1. 4. Программирование как моделирование программ
    • 1. 2. Практические основания развития языков программирования
      • 1. 2. 1. Зависимость языков программирования от архитектурных особенностей конкретного вычислителя
      • 1. 2. 2. Создание «предметно-ориентированных» языков программирования
      • 1. 2. 3. Разработка «универсальных» языков
  • Глава 2. Практические реализации языков программирования
    • 2. 1. Методы реализации языков программирования
      • 2. 1. 1. Практические решения
      • 2. 1. 2. Проблемы реализации языков программирования
    • 2. 2. Исследования в области языков программирования, направленные на преодоление проблем реализации
      • 2. 2. 1. Становление дисциплины программирования
      • 2. 2. 2. Теория абстрактной машины А. Тьюринга
      • 2. 2. 3. Теория порождающей грамматики Н. Хомского
  • Глава 3. Методологические основания для выделения парадигм программирования
    • 3. 1. Исследования синтаксиса и семантики языков программирования
      • 3. 1. 1. Метод описания синтаксиса языков программирования — «форма Бэкуса-Наура»
      • 3. 1. 2. Основные подходы к описанию семантик языков программирования
    • 3. 2. Парадигмы программирования
      • 3. 2. 1. Понятие «парадигма» Т. С. Куна и «парадигмы» программирования
      • 3. 2. 2. Теория языков программирования как становящаяся техническая теория

Методологические основания развития языков программирования (реферат, курсовая, диплом, контрольная)

Актуальность темы

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

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

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

Для аналитической традиции характерно рассмотрение языка как метода. Основную интуицию этой традиции Е.Д. Смирнова1 относит к.

1 Смирнова Е. Д. Логика и философия. — М.: РОССПЭН, 1996. Стр. 29 4.

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

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

2 Кондильяк Э. В. де. Об искусстве рассуждать // Сочинения в трех томах. -— М.: Мысль, 1983. T.3, стр. 224.

3 Смирнова Е. Д. Логика и философия. — М.: РОССПЭН, 1996. Стр. 31.

4 Философия техники и технических наук. // Современные философские проблемы естественных, технических и гуманитарных наук: учебник для аспирантов и соискателей ученой степени кандидата наук / под общ. ред. д-ра филос. наук, проф. B.B. Миронова. — М.: Гардарики, 2006. Стр. 407 общих методологических, например, системных понятий и представлений, а также обобщения практики решения определенного класса научно-технических задач5″. Эти дисциплины не могут быть отнесены ни к естественным, ни к техническим, ни к общественным наукам, они носят комплексный, междисциплинарный характер. Теоретические основания программирования вычислительных устройств можно причислить к такого рода дисциплинам.

Данное исследование черпает материал из области, которая в современной научной литературе называется «Computer Science» (иногда «Computer Sciences») — «компьютерная наука» (науки) или «наука о компьютерах». В рамках компьютерных наук возникли новые прикладные направления научных исследований, такие как вычислительная математика, вычислительная физика, вычислительная химия. Компьютерные науки явились результатом синтеза логических, математических, физических, лингвистических, психологических и других дисциплин. Уточнение смысла некоторых из этих вопросов развивается в направлении проблем, которые мы назвали бы философскими. Например, проблема соотношения материального и идеального в компьютерной науке принимает вид вопроса о физических границах реализации идеальных процессов с помощью материальных устройств. На современном научном языке это направление называют проблемой создания искусственного интеллекта (Artificial Intelligence). Эта проблема тесно связана с проблемой соотношения языка и мышления. Она выражается в вопросах о влиянии языка на сознательные структуры, о том, как возможно познание мышления с помощью языка, о границах формализации языков, о соотношении естественных и искусственных языков. Ряд других проблем относятся к области философских оснований математики и логики, и связаны с вопросами о категоризации мыслительных.

5 Философия техники и технических наук. // Современные философские проблемы естественных, технических и гуманитарных наук: учебник для аспирантов и соискателей ученой степени кандидата наук / под общ. ред. д-ра филос. наук, проф. В. В. Миронова. — М.: Гардарики, 2006. Стр. 418 6 абстракций путем упорядочивания, сравнения, вычисления и других операций над абстрактными объектами. В компьютерной науке эти вопросы приобретают вид рассуждений о соотношении дискретности и непрерывности, парадоксах теории множеств, пределов вычислимости и алгоритмизации.

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

По мнению Герберта Саймона, изучение систем в науке и технике определено потребностью в анализе сложности. На наш взгляд некоторые особенности сложности таких организованных систем, как вычислительные машины, запечатлены в структуре языков программирования. «Благодаря абстрактному характеру и общности языка вычислительных машин как устройств для манипуляции символами, цифровые вычислительные машины существенно расширили диапазон систем, поведение которых поддается имитации. Такую имитацию мы теперь обычно называем „моделированием“ и стараемся разобраться в имитируемой системе, изучая поведение модели в разнообразных модельных и имитационных средах6».

Языки программирования являются средством представления знания для компьютерных систем. Они предлагают концептуальные средства представления и возможности моделирования, приспособленные к решению конкретных задач. Многообразие конструкций этих языков, сложившееся за довольно короткий по историческим меркам период — около шестидесяти лет— является благотворной почвой для размышлений о вопросах логико-философского и методологического характера, связанных с формализованными языками. Дело в том, что одна и та же задача может быть f 6 Саймон Г. Науки об искусственном: пер. с англ. Изд. 2-е. — М., Едиториап УРСС, 2004. Стр. 23. 7 н решена различными программными средствами. Основанием этого различия служит не только модель вычислительного устройства, на котором будет выполнен алгоритм, но и язык, средствами которого этот алгоритм описан. «Эффективность машинных алгоритмов во многом зависит от используемых языков и систем программирования7».

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

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

Теоретические исследования в области языков программирования представляют собой работы по упорядочению и систематизации множества этих языков. Примерами таких исследований могут служить работы о профессора, академика РАН В. Э. Вольфенгагена (МИФИ, ЮрИнфо), профессора Н.Н. Непейводы9 (УдГУ, НГУ), С.С. Лаврова10. Эти ученые отмечают, что работу по типизации языков программирования приходится осуществлять чуть ли не каждому преподавателю, подготавливающему вводную лекцию к курсу программирования. Это позволяет говорить о программировании как становящейся, развивающейся области науки и техники. Подобные исследования ведутся во многих университетах и научно-исследовательских организациях мира, так или иначе связанных с областью компьютерных наук.

7 Теслер Г. С. Место и роль алгоритмического базиса в решении проблемы производительности // Математические машины и системы. 1997. № 1, стр. 25 — 33.

8 Вольфенгаген В. Э. Конструкции языков программирования. Приемы описания. — М.: АО «Центр ЮрИнфоР», 2001.

9 Непейвода Н. Н. Стили и методы программирования. — М.: «Интернет-университет информационных технологий», 2005.

10 Лавров С. С. Основные понятия и конструкции языков программирования. — М.: Финансы и статистика, 1982.

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

Фундаментальными работами в области языков программирования принято считать «Искусство программирования» Д. Кнута11, «Дисциплина.

1? программирования" Э. Дейкстры, «Алгоритмы + структуры данных = программы» Н. Вирта13. Эти ученые являются лауреатами премии Тьюринга14 и разработчиками^ наиболее широко известных языков программирования. Эти работы послужили основными источниками для данного исследования.

Основные работы, посвященные анализу эволюции языков программирования — это работы М. Бен-Ари15, Т. Пратта16 и Р.У. Себесты17. К этому же типу относятся «Методы программирования» Б. Мейера и.

11 Donald Е. Knuth. The Art of Computer Programming, Volumes 1−4, Addison-Wesley Professional, 1997 (1-st ed. — 1968) //Русский перевод: Кнут Д. Искусство программирования. — М., Вильяме, 2007.

12 Е. Dijkstra. A Discipline of Programming. Prentice-Hall Series in Automatic Computation, 1976 // Русский перевод: Дейкстра Э. Дисциплина программирования. 1-е изд. — М.: Мир, 1978. стр. 275.

13 N. Wirth. Algorithms + Data Structures = Programs. Prentice-Hall, Inc., Englewood Cliffs, 1975 // Русский перевод: Вирт H. Алгоритмы + структуры данных = программы. — М., «Мир», 1985.

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

15 М. Ben-Ari. Principles of Concurrent Programming. Prentice-Hall, Englewood Cliffs, NJ. 1982 // Русский перевод: Бен-Ари M. Языки программирования. Практический сравнительный анализ. — М.: Мир, 2000.

1бПратт Т. Языки программирования: разработка и реализация.— Пер. с англ. Под ред. Ю. М. Баяковского. — М.: Мир. 1989.

17 Robert W. Sebesta. Concepts of Programming Languages, The Benjamin/Cummings Publishing Company, Inc, 1993 // Русский перевод: СебестаР.У. Основные концепции языков программирования. — М., Спб., Киев: Вильяме, 2001.

К. Бодуэна18, «Эволюция языков программирования» Г. Грогоно19. Они также.

20 послужили материалом для данной работы .

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

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

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

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

Цель данного исследования — выявить методологические основания развития языков программирования и определить этапы становления теории языков программирования как технической теории.

Для достижения этой цели требуется решить следующие задачи:

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

18 Мейер Б., Бодуэн К. Методы программирования: в 2-х томах. Т.1., пер. с франц. Ю. А. Первина. — М.:Мир. 1982.

19 Grogono G. The Evolution of Programming Languages. Department of Computer Science, Concordia University, Montreal, Quebec. 1999.

20 Материалом послужили также работы Ellis Horowitz, Fundamentals of Programming Languages (Rockville, Maryland: Computer Science Press, 1983) и Bruce MacLennan, Principles of Programming Languages: Design, Evaluation, and Implementation (London: Oxford University Press, 1987).

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

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

В качестве общетеоретических методов исследования использован системный подход, а также методы структурного и функционального анализа, определенные спецификой искусственных языков. Методологической основой исследования является концепция развития технической теории, разработанная В. Г. Гороховым и представленная в работе «Философия науки и техники21».

Положения, выносимые на защиту.

1. Концепции языков программирования высокого уровня складываются и развиваются в результате стремления разработчиков снизить «семантический разрыв», лежащий между языком описания работы вычислительного устройства в его конкретной (физической) реализации и языком, на котором осуществляется постановка задачи, зачастую представляющем смесь естественного языка и языка математики.

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

21 Степин В. С., Горохов В. Г., Розов М. А. Философия науки и техники. — М.: Гардарики, 1999.

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

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

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

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

Новизна предложенного исследования может быть суммирована в следующих положениях:

1. Теория языков программирования развивается согласно особенностям, определенным концепцией развития технических теорий В. Г. Горохова, выбранной в качестве методологии для данного исследования.

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

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

Теоретическое и практическое значение диссертации.

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

Апробация диссертации происходила в рамках курса «Телекоммуникации и компьютерные технологии», читаемого автором начиная с 2005 г. на философском факультете МГУ им. М. В. Ломоносова, а также при разработке мультимедийного методического пособия для обязательной общеобразовательной дисциплины «Математика и информатика» (2006 г). Кроме этого, в 2007 г. автором была разработана программа и учебно-методический комплекс для курса «Информатика»,.

13 входящего в федеральный компонент программ инновационного типа по философии. Основные результаты исследования были изложены на научных конференциях «Философия искусственного интеллекта» (МИЭМ, 2005 г), «Ломоносов-2005» (МГУ), на IV Российском философском конгрессе «Философия и будущее цивилизации» (МГУ, 2005 г), «Философия математики» (МГУ, 2007).

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

1. Гуманитарные и естественнонаучные предпосылки к созданию искусственного интеллекта. // Философия искусственного интеллекта. Материалы всероссийской международной конференции. — М.: ИФ РАН, 2005.

2. Некоторые методологические аспекты программирования автоматических вычислений // Философия математики. Материалы международной научной конференции 15−16 июня 2007 года. — М., Изд. Савин С. А., 2007.

3. Энциклопедические статьи «Кун Т.С.», «Малкей М.», «Тулмин С.Э.», «Гонсет Ф.», «Флек Л.», «этос науки», «парадигма», «нормальная наука» // «Современная западная мысль», Изд. «Академический проект» под ред. В. В. Васильева и др. (в печати).

4. Особенности семантики языков программирования. // Вестник Московского университета. Серия 7. Философия. № 6. — М.: Изд-во МГУ, 2007.

Структура диссертации.

Диссертация состоит из введения, трех глав, каждая из которых включает 2 параграфа, заключения и библиографии. Текст каждой главы.

Заключение

.

Герман Вейль описывает процесс абстрагирования следующим образом. Первый шаг, предшествующий математическому анализу, — «мыслить конкретно». Второй шаг — «шаг абстракции» — когда интуитивные представления заменяются чисто знаковой конструкцией. «Когда интуитивная картина уступает место знаковой конструкции, неспециалист перестает понимать математика. <. .> Математика интересует не применение схемы к тому или иному многообразию, а только схема сама по себе, лишенная каких бы то ни было неясностей229».

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

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

Структура диссертации соответствует логике решаемых в ходе исследования задач.

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

229 Вейль Г. Математическое мышление. Пер. с англ. и нем. Составитель Ю. А. Данилов. Под ред. Б. В. Бирюкова и А. Н. Паршина. — М., Наука, 1989. Стр. 9−11.

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

В параграфе 1.1. —"Определение понятия «язык программирования» — показано, как изменялось понятие «язык программирования» в теоретических работах, написанных преимущественно разработчиками этих языков, выделено четыре подхода к определению понятия «язык программирования»:

1. Язык программирования как средство трансляции математических формул в последовательность машинных команд230. Такой подход определяет деятельность программиста как написание математических формул.

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

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

4. Язык программирования как средство моделирования программ233. Этот подход дает основание считать деятельность программиста конструированием программ.

Отмечается, что четвертый подход имеет принципиальное отличие от первых трех, появившихся примерно в одно время. Это отличие выражается.

230 Впервые реализован в языке «FORTRAN» (FORmula TRANslating System — 1954 г.).

231 Первая публикация описания этой концепции принадлежит Джону МакКарти: MacCarthy, J. «Recursive Function of Symbolic Expressions and Their Computation by Machine, Part I.» Commun. ACM, Vol. 3, № 4, pp. 184−195.

232 Впервые реализован в языке ALGOL 58 (ALGOrithmic Language— 1958 г.).

233 Идея впервые была представлена в языке SIMULA I — Дал У.-И., Мгархауг Б., Нгогорд К., СИМУЛА 67: Универсальный язык программирования. — М.: Мир, 1969. Стр. 9. (англ. Версия — Norwegian Computing Center, Oslo, 1968) как переход от понимания языка программирования в качестве «набора правил для написания программ, которые являются всего лишь последовательностями символов234» к пониманию языка программирования как «механизма абстрагирования «. Эти подходы определили направление дальнейших работ по созданию языков программирования.

В параграфе 1.2. — «Практические основания развития языков программирования» — осуществлено описание этапов развития языков программирования.

Первый этап — появление языков «высокого уровня». «Высота уровня» определяется как снижение степени зависимости конструкций языка описания программы от аппаратной реализации конкретного вычислителя.

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

Третий этап (продолжается по настоящий момент) — создание «универсальных» языков, причем «универсальность» в этом контексте понимается, и как обеспечение средств решения задач, принадлежащие различным предметным областям, и как независимость от архитектуры вычислительной машины236.

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

234 Бен-Ари М., Языки программирования. Практический сравнительный анализ. — М.: Мир, 2000.

Стр. 43.

235 Там же, стр. 9.

236 В литературе по программированию иногда называется «интерплатформенностью».

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

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

В параграфе 2.1,—"Методы реализации языков программирования" — дается описание основныхпрактических решений, реализующих языки программирования. В технических науках задача реализации выражается как проблема интерпретации и эмпирического обоснования правил перехода от одних модельных уровней в составе теории к другим. Реализовать язык программирования — значит не только обеспечить всю совокупность технических средств для написания" программы, но и гарантировать корректность ее выполнения. Реализация осуществляется за счет создания так называемых системных программ, основным назначением которых является трансляция (перевод) текста, составленного на языке программирования «высокого уровня», в последовательность машинных команд — компилятора и интерпретатора. Процедура перевода осуществляется следующим образом. Текст программы подвергается лексическому, синтаксическому и, в наиболее современных языках, семантическому разбору. В основу лексического и синтаксического разбора должны быть положены правила определения «правильных» последовательностей и комбинаций лексем, а, следовательно, способ определения принадлежности этих лексем конкретному языку. Исходная программа, как правило, имеет не линейную структуру, а состоит из нескольких связанных между собой модулей (речь идет, конечно, о серьезных, сложных программах). Это обусловлено наличием нескольких уровней представления данных, что в процессе конструирования программы обеспечивает построение абстракций высокого уровня. Для определения правильности интерпретации типов данных и производимых над ними операций необходим семантический анализ. Семантический анализ предполагает наличие формализованного способа определения правил формирования и различения абстракций, содержащихся в конкретном языке программирования. Именно это вызывает наибольшие трудности при реализации языков программирования и определяет основную проблемную область для теоретических исследований.

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

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

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

В качестве, примера таких теорий дается описание абстрактной машины А. Тьюринга и> порождающей грамматики Н. Хомского.

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

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

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

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

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

237 Выделение семантических теорий приводится по: Вольфенгаген В. Э. Конструкции языков программирования. М АО «Центр ЮрИнфоР» 2001. стр. 77−80.

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

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

В параграфе 3.2. — «Парадигмы программирования» — выделяются подходы к определению парадигмальных оснований развития языков программирования. Сделано предположение относительно того, что способы построения семантик языков программирования оказывают влияние на выделение парадигм. «Парадигма», как она определяется Т.С. Куном239, представляет совокупность концептуальных, ценностных и практических ориентиров, определяющих деятельность научного (интеллектуального) сообщества. Парадигмы языков программирования выделяются на основании.

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

239 Кун Т. С. Структура научных революций. — М.: ACT, 2001.

240 Непейвода H.H. Стили и методы программирования. М.:"Интернет-Университет Информационных Технологий", 2005 методологии программирования". В некоторых современных англоязычных источниках встречается термин «философия программирования241». Все эти термины, призваны подчеркнуть разницу в способах конструирования программ на основании различения применяемых методов. Методологии, как только они определяются в рамках какого-то конкретного языка, в скором времени становятся основанием для расширения и усовершенствования других ранее созданных языков, что характерно для развития технических теорий.

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

241 Grogono G. The Evolution of Programming Languages. Department of Computer Science. Concordia University. Montreal, Quebec. 1999. описанных средствами какого-то языка алгоритмов, вычисляющих ту или иную функцию. Существенными для этой методологии оказываются, прежде всего, отношения, заданные между классами абстрактных объектов, использующихся при составлении алгоритма. Конструирование таких абстрактных объектов, которым в качестве определения задаются свойства их функционирования, реализуется в объектно-ориентированной методологии. Это обеспечивает возможность разрабатывать программу, выполнение которой не только не зависит от аппаратно-программной реализации конкретного вычислителя, но и позволяет формализовать задачи, относящиеся к различным предметным областям. В основном именно эта методология развивается и совершенствуется в настоящий момент, и определяет направление специальных теоретических исследований.

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

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

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

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

Показать весь текст

Список литературы

  1. A.M., Абстрактная вычислимость и язык программирования АВТ. // Логические исследования. Вып. 3, М.: Наука. 1995.
  2. И. А., Майстров JI. Е. История вычислительной техники: от простейших счет, приспособлений до сложных релейных систем // М.: Наука, 1990.
  3. Ахо А., Сети Р., Ульман Д., Компиляторы. Принципы, технологии, инструменты. Киев: Вильяме, 2003.
  4. Бар-Хиллел, И. Некоторые новые результаты в теоретической лингвистике. // Математическая логика и ее применения. Сборн. Ст., под ред. А. И. Мальцева. М.: Мир. 1965.
  5. Бен-Ари М. Языки программирования. Практический сравнительный анализ. — М.: Мир, 2000.
  6. А.Е., Бочаров В. А., Горчаков А. Е. и др. Логика и компьютер. М.: Наука, 2004.
  7. Е. И. Краткая история корпорации IBM // История науки и техники, 2002.
  8. В.А., Маркин В. И. Основы логики. Учебник. — М.: Космополис, 1994.
  9. В. В. Мозг и сознание: выходы из лабиринта. // Вопросы философии, 2006, № 1.
  10. Г. Математическое мышление. Пер. с англ. и нем. Составитель Ю. А. Данилов. Под ред. Б. В. Бирюкова и А. Н. Паршина. — М., Наука, 1989.
  11. Е. Этюды о симметрии. — М.: Мир, 1997.138
  12. Н. Я математик. // Творец и будущее: пер. с англ. — М.: ООО «Изд. ACT», 2003
  13. Н. Новая наука, от рождения до зрелости. // Речь на праздновании годовщины факультета компьютерных наук, ЕТН Zurich, 19 октября 1988 г. Пер. А. Деревянко, 2006
  14. Н., Алгоритмы + структуры данных = программы. М., «Мир», 1985
  15. Н. Систематическое программирование. Введение. М.: «Мир», 1977.
  16. В.А., Коварцев А. Н., Кораблин М. А. Имитация втоматизированных систем с использованием концепции состояний // М.: Известия АН СССР. Техническая кибернетика. 1981. № 4, стр. 86−93.
  17. Е.К., Дегтярев М. Г. Логика как часть теории познания и научной методологии. М.: Наука, 1994
  18. В.Э. Конструкции языков программирования. Приемы описания. — М.: АО «Центр ЮрИнфоР», 2001.
  19. С. Математическая теория контекстно-свободных языков. — М.: Мир, 1970.
  20. Дал У.-И., Мюрхауг Б., Нюгорд К., СИМУЛА 67: Универсальный язык программирования. — М.: Мир, 1969.
  21. Э. Дисциплина программирования. 1-е изд. — М.: Мир, 1978.
  22. Э. Заметки по структурному программированию. // Дал У., Дейкстра Э., Хоор К., Структурное программирование. пер с англ. Зеленецкого С. Д. — М.: Мир. 1975
  23. Ю.Л., Палютин Е. А., Математическая логика. М.: Наука. 1979.
  24. В.А., Некоторые аспекты развития и классификации языков представления знаний. // Логико-философские исследования. Вып. 1., — М.: ВИНИТИ, 1989.
  25. Р. Значение и необходимость. Исследования по семантике и модальной логике. Биробиджан: ИП «ТРИВИУМ», 2000.
  26. Г., Некоторые логические аспекты грамматической структуры. // Новое в лингвистике. Вып. IV. М.: Прогресс. 1965.
  27. Э., Философия символических форм. Том 1. Язык. М.- СПб.: Университетская книга, 2001.
  28. Д., Искусство программирования. Т. 1−5- — М., изд-во. «Вильяме». 2006−2008
  29. Э.В. де. Об искусстве рассуждать // Сочинения в трех томах. — М.: Мысль, 1983.
  30. Кун Т. С. Структура научных революций. — М.: ACT, 2001
  31. С.С. Основные понятия и конструкции языков программирования. -— М.: Финансы и статистика, 1982.
  32. А.Р. Язык и сознание. Изд. «Феникс», г. Ростов на Дону, 1998.
  33. .П. История вычислительной техники в лицах. — Киев.: Фирма «КИТ», ПТОО «А.С.К.» 1995.
  34. А.А. Теория алгорифмов. Труды Матем. Ин-та АН СССР им. В .А. Стеклова, Изд-во АН СССР, 1954.
  35. Ю.Г. Функциональный подход в современном научномпознании. —Новосибирск: «Наука», 1982.140
  36. Математическая логика и ее применения. Сборн. Статей под ред. Э. Нагела, П. Саппса и А. Тарского. Пер. с англ. Под ред. Мальцева А. И. Изд-во «Мир». М. 1965.
  37. ., Бодуэн К. Методы программирования: в 2-х томах. Т.1., пер. с франц. Ю. А. Первина. —М.: Мир. 1982.
  38. Н.Н. Основания программирования. Ижевск- Москва: РХД, 2003.
  39. Н.Н. Стили и методы программирования. — М.: «Интернет-университет информационных технологий», 2005
  40. Р. Новый ум короля: о компьютерах, мышлении иIзаконах физики. М.: Едиториал УРСС, 2005.
  41. Ч., Код. — М.: Издательско-торговый дом «Русская редакция», 2004.
  42. К.Р., Логика и рост научного знания: Избр. Работы. / Общ. Ред. В. Н. Садовского. -М.: Прогресс, 1983.
  43. Т., Языки программирования: разработка и реализация. -Пер. с англ. Под ред. Ю. М. Баяковского. М.: Мир. 1989.
  44. А. О науке: пер. с фр. 2-е изд., — М.: Наука. 1990.
  45. Г. Науки об искусственном: пер. с англ. Изд. 2-е. — М., Едиториал УРСС, 2004.
  46. Р.У. Основные концепции языков программирования. — М., Спб., Киев: Вильяме, 2001.
  47. Е.Д. Логика и философия. — М.: РОССПЭН, 1996.
  48. Современная американская лингвистика: Фундаментальные направления. Изд. З-е. М.: Эдиториал УРСС, 2006.
  49. В. С., Горохов В. Г., Розов М. А. Философия науки и техники. —М.: Гардарики, 1999.
  50. Н.И. Становление математической логики. — М., Наука, 1964.
  51. ТеслерГ.С. Место и роль алгоритмического базиса в решении проблемы производительности // Математические машины и системы. 1997. № 1, стр. 25 33.
  52. Л., Проблемы семантики. М.: изд. «Прогресс», 1975
  53. Философия языка // ред.-сост. Дж. Серл: пер. с англ. М.: Едиториал УРСС, 2004.
  54. А.А., Бар-Хиллел И. Основания теории множеств. М., издательство «Мир», 1966.
  55. К., Введение в логическое программирование: пер. с англ. М.: Мир, 1988.
  56. Н. Вопросы теории порождающей грамматики. // Философия языка. Ред.-сост. Дж. Р. Сёрл: пер. с англ. М: Едиториал УРСС, 2004.
  57. Н., Миллер Д., Языки с конечным числом состояний. // Кибернетический сборник. Вып. 4. 1962. стр. 233−255.
  58. Н., Объяснительные модели в лингвистике. // Математическая логика и ее применения. Сборн. Ст., под ред. А. И. Мальцева. —М.: Мир. 1965.
  59. , Н. Три модели описания языка. // Кибернетический сборник. Вып. 2, 1961. стр. 237−266.
  60. Р., Бирнбаум JL, Мей Дж. К интеграции семантики и прагматики. // Новое в зарубежной лингвистике. Вып. XXIV. Компьютерная лингвистика. М.: Прогресс. 1989.
  61. Backus, J. Can programming be liberated from the von Neumann style? A functional style and its algebra of programs. Communications of the ACM 21 (8), 613−64, 1978
  62. Backus, J. THE HISTORY OF FORTRAN I, II, AND III // ACM SIGPLAN Notices, Vol. 13, No. 8, August 1978.
  63. Ben-Ari, M. Principles of Concurrent Programming. Prentice-Hall, Englewood Cliffs, NJ. 1982.
  64. Bohm C., Jacopini G., Flow Diagrams, Turing Machines, and Lanfuages with Only Two Formation Rules. Commun. ACM, Vol. 9, No 5, pp. 366−371.
  65. Campbell-Kelly M. A History of the Software Industry // MIT Press, 2003.
  66. Chomsky N. Three models for the description of language. IRE Trans., Vol. 1. N-2, № 3. 1956)
  67. Davis M. The Universal Computer: The Road from Leibniz to Turing // W. W. Norton & Co., 2000.
  68. Dijkstra, E. A Discipline of Programming. Prentice-Hall Series in Automatic Computation, 1976.
  69. Farrow R., LINGUIST 86: Yet Another Translator Writing System Based on Attribute Grammars. // ACM SIGPLAN Notices, Vol. 17 № 6. 1982.
  70. Gill, S., Getting programmes right. In International Symposium on Automatic Digital Computing. National Physical Laboratory. 1954.
  71. Godfrey M.D., Hendry F. The Computer as von Neumann Planned It. // IEEE Annals of the History of Computing, Vol. 15., № 1, 1993."
  72. Grogono G., The Evolution of Programming Languages. Department of Computer Science. Concordia University. Montreal, Quebec. 1999.
  73. History of Computing Software Issues. By ed. U. Hashagen, R. Keil-Slawik, A. L. Norberg // Springer Verlag, 2002.
  74. History of Scientific Computing. S. G. Nash // Assn for Computing Machinery, 1990.
  75. Hoare C.A.R., A Hard Act to Follow. // Higher-Order and Symbolic Computation, Vol. 13 №½, April 2000.
  76. Horowitz, E. Fundamentals of Programming Languages (Rockville, Maryland: Computer Science Press, 1983)
  77. International Standard ISO/IEC 9899. Programming languages — C. Second Edition, 1999.
  78. ISO/IEC FCD 1539−1:2004(E). Information technology -Programming languages Fortran.
  79. ISO/IEC 9899. Information technology Programming languages — C.
  80. Iverson R.E., A Programming Language. John Wiley, New York. 1962.
  81. Kay, A. C. The Reactive Engine. Ph.D. Thesis. University of Utah, September 1969.
  82. Kemeny J. G., Kurtz Т. E. Back to Basic: The History, Corruption, and Future of the Language // Addison-Wesley, 1985.
  83. Knuth, Donald E. The Art of Computer Programming, Volumes 1−4, Addison-Wesley Professional, 1997.
  84. Knuth Donald E., Semantics of Context-Free Languages. Mathematical Systems Theory, Vol. 2, No. 2.
  85. MacCarthy, J. Recursive Function of Symbolic Expressions and Their Computation by Machine, Part I. Communications of the. ACM, Vol. 3, № 4.
  86. MacLennan, B. Principles of Programming Languages: Design, Evaluation, and Implementation. London, Oxford University Press, 1987.
  87. Neumann, J. First Draft of a Report on the EDVAC // Moore school of Electrical Engineering University of Pennsylvania, 1945.
  88. Newell N.J., Simon H.A., The Logic Theory Machine — A Complex Information Processing System. // IRE Transactions on Information Theory. Vol. IT-2, № 3, pp. 61−79.
  89. Salus P. H. A Quarter Century of UNIX // Addison-Wesley, 1994.
  90. Sebesta, Robert W. Concepts of Programming Languages, The Benjamin/Cummings Publishing Company, Inc, 1993
  91. Scott D.S., Strachey C. Towards a Mathematical Semantics for Computer Language. // Proceedings, Symposium on Computers and Automation, ed. J. Fox, Polytechnic Institute of Brooklyn Press, New York.
  92. Teitelbaum Т., Reps T. The Cornell Program Synthesizer: A Syntax-Directed Programming Environment. // Commun. ACM, Vol. 24, № 9. 1981.
  93. The First Computers History and Architectures. By ed. R. Rojas, U. Hashagen // MIT Press, 2002.
  94. The FORTRAN Automatic Coding System. Reprinted from the Proceedings of the Western Joint Computer Conference, Los Angeles, California, February 1957.
  95. The Future of Software. By ed. D. Leebaert // MIT Press, 1995.
  96. Turing A. On computable numbers, with an application to the entscheidungsproblem. Proc. of the London Math. Soc., (2), 42, 1936
  97. Watt D.A. An Extended Attribute Grammar for Pascal. // ACM SIGPLAN Notices, Vol. 4 № 1. 1979.
  98. Weaver W. Science and Complexity, Am. Scient., 1948.
  99. WignerE.P. Symmetries and Reflections. Bloomington, London, 1970
  100. William G. Lycan Philosophy of Language A contemporary introduction. London and New York, Taylor & Francis Group, Routledge 2001.
  101. Williams M. R. A History of Computing Technology // John* Wiley & Sons-IEEE Computer Society Press, 1997.
  102. WitrhN. Algorithms + Data Structures = Programs. Prentice-Hall, Inc., Englewood Cliffs, 1975
  103. Zuse, Konrad. Der Plankalkul, Berichte der Gesellschaft fur Mathematik und Datenverarbeitung, Nr. 63, Sankt Augustin, 1972.
Заполнить форму текущей работой