Новости
12.04.2024
Поздравляем с Днём космонавтики!
08.03.2024
Поздравляем с Международным Женским Днем!
23.02.2024
Поздравляем с Днем Защитника Отечества!
Оплата онлайн
При оплате онлайн будет
удержана комиссия 3,5-5,5%








Способ оплаты:

С банковской карты (3,5%)
Сбербанк онлайн (3,5%)
Со счета в Яндекс.Деньгах (5,5%)
Наличными через терминал (3,5%)

ПОТЕНЦИАЛЬНОЕ НАПРАВЛЕНИЕ РАЗВИТИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ В СТОРОНУ ПРИБЛИЖЕНИЯ К МОДЕЛЯМ ЕСТЕСТВЕННОГО ЯЗЫКА

Авторы:
Город:
Орел
ВУЗ:
Дата:
03 марта 2016г.

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

Ключевые слова: язык программирования, парадигма, развитие, моделирование, естественный язык, Витгенштейн, Выготский, нечеткость.

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

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

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

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

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

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

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

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

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

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

 

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

1.        Буч Г. Объектно-ориентированный анализ и проектирование [Текст] / Г. Буч. – 2-е изд. – М.: Вильямс, 2010. – 720 с.

2.        Бобровский С. История развития программного обеспечения [Электронный ресурс] / С. Бобровский. – Режим доступа: http://www.computer-museum.ru/histsoft/oophist.htm

3.        Витгенштейн, Л. Философские исследования [Электронный ресурс] / Л. Витгенштейн – Режим доступа: http://filosof.historic.ru/books/item/f00/s00/z0000273/index.shtml

4.        Выготский, Л.С. Мышление и речь. Изд. 5, испр. [Текст] / Л.С. Выготский. – Издательство "Лабиринт", М., 1999. – 352 с.

5.        Грязнов, А.Ф. Язык и деятельность. Критический анализ витгентшейнианства [Текст] / A.Ф. Грязнов – Изд. 2-е, доп. М.: Книжный дом «ЛИБРОКОМ», 2009. – 152 с.

6.        Марка, Д., Клемент, М. Методология структурного анализа и проектирования SADT – Мета Технология, 1993. – 284 с.