Хорошо известно, что в практике программирования сложились различные подходы, которые развиваются по различным направлениям. Бросающиеся в глаза различия проявляются в разном способе осмысления и написания программ. Большинство программистов занимается процедурным программированием. Однако кроме
него есть программирование, основанное на правилах, логическое
программирование, параллельное программирование, визуальное
программирование, программирование в терминах потоков данных. При желании этот перечень можно продолжить, но он, очевидно, будет неполон, если в него не включить также и объектноориентированное программирование, которое имеет явно выраженную тенденцию роста.
Подходов и стилей программирования много, и это отражает картину совершенствования и распространения все новых и новых компьютерных архитектур. Возникающие архитектуры ориентированы
на новые подходы к программированию, которые еще только зарождаются в исследовательских лабораториях.
Обилие и разнообразие подходов к программированию в computer
science отражается в развитии и распространении различных подходов к построению математики. Действительно, математических теорий построено удивительно много, и каждая из них является совершенно своеобразным языком общения сравнительно ограниченного
круга специалистов, которые хорошо понимают друг друга. Однако попытка “непосвященного” понять практическую пользу и значимость нового математического языка наталкивается на препятствия.
Прежде всего оказывается необходимым перестроить собственный
стиль мышления, чтобы на известные трудности взглянуть под новым углом зрения. Так распространение объектно-ориентированного
программирования требует и привлечения других способов рассуждения, которые зачастую радикально отличаются от стереотипов
рассуждения в процедурном программировании.8 Предисловие
Точно также лишь немногие и сравнительно молодые математические теории ориентированы на рассуждения в терминах объектов, а не в терминах операторов, как это следует из опыта изучения математического анализа в большинстве университетов, в том
числе, и технического или компьютерного профиля. К сожалению,
программисту не удается прослушать университетский курс, закладывающий основы математического мышления в терминах объектов. В лучшем случае дело ограничивается сообщением чисто математических результатов, полученных в комбинаторной логике, ?исчислении или теории категорий, которые не так-то просто преломить на практическое программирование без известной теоретической искушенности.
Можно утверждать, что комбинаторная логика значительно повлияла на современную картину программирования. Начинаясь как
наука о природе подстановок в математических теориях, она породила функциональное программирование, программирование в
терминах суперкомбинаторови некоторые другие чрезвычайно плодотворные подходы к программированию. В частности, только понастоящему проникнув в сам дух комбинаторной логики, можно понять в деталях и практически применить систему программирования
с заранее нефиксированной системой инструкций.
Парадигмы программирования 90-х гг. в сильной степени выросли из математического способа рассуждений, принятого в теории
вычислений. В частности, одной из ее начальных посылок была концепция “протекания информации” вдоль некоторого “возможного” русла, что привело к возникновению весьма плодотворной концепции
программы, управляемой потоком данных. Другой пример связан с
идеей использования некоторой части комбинаторной логики, построив в ней специальные объекты-инструкции. Эти объекты образуют систему команд категориальной абстрактной машины, которая
может быть с успехом положена в основу вполне практических (но
объектно-ориентированных) систем программирования. Более того,
правила комбинаторной логики позволяют оптимизировать компилируемый программный код, редуцируя его к некоторой нормальной
форме. Для специалистов в комбинаторной логике это почти само
собой разумеется с самого начала, поскольку в этом состояла одна
из целей разработки комбинаторной логики как математической дисциплины.
Современные исследования в области computer science показывают, что комбинаторная логика и ее различные категориальныеЗачем нужно исчислять объекты 9
диалекты становятся необходым математическим языком программиста, пользуясь которым он обменивается идеями со своими коллегами. Дело как раз в том, что одним из предметов ее исследования
являются объекты и построение различных исчислений объектов, которые удовлетворяют кругу вопросов каждой конкретной прикладной
задачи. Другими словами, решение всякой задачи требует построения специального точного языка. Как хорошо известно программистам, это язык интерфейса программного обеспечения. В терминах
специалиста в computer science это специализированный диалект
комбинаторной логики.
Опубликовал Kest
April 02 2014 23:09:56 ·
0 Комментариев ·
4408 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.