Файл: Современные языки программирования (Теоретические основы развития языков программирования).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 24.05.2023

Просмотров: 166

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

2.2. Потенциальное направление развития языков программирования на сближение с моделями естественного языка

Если проследить всю историю развития парадигм программирования, то можно заметить постепенное увеличение описательных возможностей языков, позволяющих не просто задавать последовательность выполнения команд для ЭВМ, но моделировать таким образом реальность. Языки машинных команд в этом смысле являются отправной точкой, поскольку они не содержат никакой семантики, кроме устройства ЭВМ, для которой они предназначены. Язык ассемблера, по сути, является более удобным способом написания машинных команд. Однако это удобство заключается в добавлении некоторой семантики на уровне операций, использовании осмысленных имен вместо кодов. На следующем этапе – этапе процедурного и модульного программирования – семантика заключается в представлениях алгоритмической декомпозиции и структурного анализа. То есть, мир представляется в виде набора операций, процессов, действий, которые преобразуют некоторые входные информационные потоки в выходные. В явном виде моделирование мира с данной точки зрения представлено в методологии SADT [4, c.103]. Однако после появления ООП от этого подхода отказались в связи с преимуществами последнего [1, c.283].

Концепция ООП заключается в использовании объектной декомпозиции, т.е. представления действительности как набора независимых объектов, у каждого из которых имеются известные общедоступные каналы для взаимодействия и некоторая внутренняя скрытая «начинка». Данные объекты обмениваются друг с другом сообщениями через открытые каналы, в результате чего изменяют свое внутреннее состояние. При этом предполагается, что большинство объектов имеют некоторое существенное сходство, благодаря которому их можно объединить в иерархическую систему классификации, так что свойства этих классов в полной мере описывают каждый конкретный объект [1, c.292].

Данная модель в концептуальном смысле имеет претензию на соответствие структуре естественного языка и способу человеческого мышления. Классы в данном случае соответствуют понятиям языка, а объекты конкретным проявлениям этих понятий в реальном мире. Например, Буч приводит методику объектно- ориентированного анализа, при которой понятия, взятые непосредственно из словаря пользователя, преобразуются в классы и объекты (микропроцесс анализа и проектирования [1, c.307-337]).

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


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

С позиции Витгенштейна [8] язык нельзя свести к формальной логике, с четкими и однозначными правилами вывода, поскольку язык является продуктом «языковых игр». Значение каждого понятия, каждой языковой конструкции образуется спонтанно в ходе человеческой деятельности, и поэтому он имеет нечеткий характер. Так, например, рассматривая понятие «игра», философ обнаруживает, что невозможно выделить какие- либо общие признаки, характерные для всех игр. То, что верно для настольных игр, где присутствуют правила и соревновательный момент, оказывается неприменимо к детским играм в песочнице. Существует множество видов деятельности называемых играми, между которыми имеются «семейные сходства», однако полное определение понятия «игра» едва ли возможно. «Безусловно, можно начертить несколько таких прямоугольников с четкими контурами, которые соответствовали бы одному нечеткому. Но если в оригинале нет резких границ при переходе одного цвета в другой, то разве не становится невыполнимой задача передать расплывчатое изображение четким?» [8]. То есть, пытаться описать содержание понятий формальным образом подобно попытке описать расплывчатую область четким прямоугольником. Можно сделать это с разной степенью полноты или адекватности, но в любом случае, конечный результат будет неверным.


Своеобразный подход к этой проблеме у Выготского [2, c.169]. Он рассматривает слово не в контексте его фактического существования, но в рамках процесса его формирования. С этой точки зрения психолог представляет слово как результат обобщения, сложной интеллектуальной операции по выявлению (пользуясь терминологией Витгенштейна) «семейных сходств» у объектов реального мира.

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

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

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


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

Заключение

За прошедшие десятилетия языки программирования изменились не только количественно, но и качественно. Поэтому понятие более высокий и более низкий уровень языка программирования следует рассматривать во временном разрезе. С конца 60-х до середины 80-х годов практически во всех учебных заведения преподавали один из языков низкого уровня, например один из вариантов языка ассемблера, а потом – один из языков высокого уровня, например Fortran, COBOL, ALGOL и так далее.

С развитием объектно-ориентированных языков акценты сменились на языки высокого уровня и объектно-ориентированные языки. Причем, если ранее почти повсеместно из языков высокого уровня использовали Fortran, а затем Pascal, Basic, C. Среди объектно-ориентированных языков наиболее популярными, с точки зрения применения, необходимо назвать Visual C++ Builder, Delphi, Visual Basic, Visual Basic for Application.

В настоящее время в группе объектно-ориентированных языков стала выделяться некоторая подгруппа языков, которые имеют более широкие возможности. К таким языкам можно отнести PHP, Python, пакет Visual Studio и др. Эти языки имеют своими прародителями один или несколько объектно-ориентированных языков. В них учтены недостатки предшествующих языков и добавлены новые оригинальные свойства. Так серьезно расширены библиотеки подпрограмм и функций, расширены (а иногда и добавлены) понятия «объект» и «класс», добавлены новые визуальные инструменты для создания программных продуктов, которые предполагают новую технологию их написания.

Если в языках программирования высокого уровня программирование начиналось с организации вычислений, а потом программист тем или иным способом пытался предъявить на экран результаты вычислений и очень часто в неудобном виде, то в объектно-ориентированных языках программирование начинается с интерфейса (представления на экране результатов вычислений), а уже потом – программирование самих вычислений. В свое время такой подход к программированию был революционным, и потребовалось много времени и сил на его освоение. И в случае языков высокого уровня, и в случае объектно-ориентированных языков, после создания программных продуктов необходимо было выпускать сопроводительную документацию. Отмеченная подгруппа объектно-ориентированных языков предоставляет программисту новую процедуру программирования – рисование. Вместо размещения компонентов на форме теперь программист «рисует объект» и под каждый элемент рисунка прописывается программный код. В распоряжении у программиста вся рабочая область окна, в которой допускается размещение рисунков, текста и традиционных компонентов. Размер текста и рисунка ограничивается только размерами рабочего окна.


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

Список использованных источников

  1. Буч Г. Объектно-ориентированный анализ и проектирование [Текст] / Г. Буч. – 2-е изд. – М.: Вильямс, 2016. – 720 с.
  2. Выготский, Л.С. Мышление и речь. Изд. 5, испр. [Текст] / Л.С. Выготский. –М.: Лабиринт, 2015. – 352 с.
  3. Грязнов А.Ф. Язык и деятельность. Критический анализ витгентшейнианства [Текст] / A.Ф. Грязнов – Изд. 2-е, доп. М.: Книжный дом «ЛИБРОКОМ», 2014. – 152 с.
  4. Марка Д., Клемент, М. Методология структурного анализа и проектирования SADT – М.: Мета Технология, 2013. – 284 с.
  5. Свердлов С. З. Языки программирования и методы трансляции [Текст] / С.З. Свердлов / - СПб.: Питер: 2015. – 207с.
  6. Исаева Г. Н. Об индуктивном подходе к приобретению знаний в экспертных системах управления персоналом[Текст] / Г.Н. Исаева // Вопросы региональной экономики – 2010. Т.5. – С.100-105.
  7. Бобровский С. История развития программного обеспечения [Электронный ресурс] / С. Бобровский. – Режим доступа: http://www.computer-museum.ru/histsoft/oophist.htm
  8. Витгенштейн, Л. Философские исследования [Электронный ресурс] / Л. Витгенштейн – Режим доступа: http://filosof.historic.ru/books/item/f00/s00/z0000273/index.shtml
  9. Зачем язык программирования Swift нужен Apple и вам: [Электронный ресурс] // Lookatme.URL: http://www.lookatme.ru/mag/ live/inspiration-lists/204771-swift
  10. Компания Microsoft представила TypeScript, новую открытую альтернативу JavaScript: [Электронный ресурс] // OpenNet.URL: www.opennet.ru/opennews/art.shtml?num=34981
  11. Новости свободного ПО: [Электронный ресурс] // Компьютерные вести.URL: http://www.kv.by/content/325304-novostisvobo dnogo-po
  12. Цилюрик О Сравнительное обозрение языков программирования[Электронный ресурс] // Редакция 2.31. 2014 год. – 78с.
  13. Классификация языков программирования [Электронный ресурс]. URL http://bourabai.ru/alg/classification.htm
  14. Пять поколений языков программирования [Электронный ресурс]. URL: http://life-prog.ru/view_zam2.php?id=194&cat=5&page=11
  15. Сайт о языке программирования Dart – руководства, инструкции, новости, статьи и многое другое: [Электронный ресурс] // dartdot.ru.URL: http://dartdot.ru/
  16. Эволюция языков программирования [Электронный ресурс]. URL: http://www.urtt.ru/bib/dataindex/oaip/lection/_html/lect_05.htm
  17. Язык программирования Swift. Русская версия: [Электронный ресурс] // Хабрахабр.URL: http://habrahabr.ru/post/225841/
  18. Языки программирования и их классификация [Электронный ресурс]. URL: http://www.maksakov-sa.ru/ProgrProd/YazProgr/index.html
  19. Язык программирования. Эволюция языков программирования [Электронный ресурс]. URL: http://wiki.mvtom.ru/index.php/Язык_программирования