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