Системная социология: языки программирования

Системная социология: языки программирования

 А.А.Давыдов

 

Системная социология: языки программирования

Ключевые слова: системная социология, языки программирования

 

Введение

Одной из проблем российской социологии, которая сдерживает развитие отечественной социологии, является практически полное отсутствие отечественных компьютерных разработок социологических теорий, методов анализа и моделирования, поскольку отсутствуют социологи, которые бы умели квалифицированно программировать на современных языках программирования, а профессиональные программисты, подготовленные «на стороне», не идут в российскую социологию по известным причинам ( https://www.isras.ru/phpBB2/viewtopic.php?t=46 ). В результате, российская социология катастрофически отстает от зарубежной социологии в области компьютерных разработок, в частности, социологических Баз данных [1], Knowledge Discovery and Data Mining  (KDD) [2-5], Интернет-приложений [6-8]

Вместе с тем, развитие информационного общества [7,9], Computational Sociology ( http://www.personal.kent.edu/~bcastel3 ), математической социологии [10], Social Computing [11], многочисленные практические приложения по решению социальных проблем и т.д., настоятельно требуют, чтобы российские социологи, умели программировать на современных языках программирования. Напомним, что язык программирования - это концептуальная системная модель действительности (подсистемы действительности), которая задает возможности и ограничения изучения действительности. Язык программирования «направляет» научное исследование, поскольку задает, какие элементы, свойства и отношения в статике и динамике можно изучить, в частности, какие эмпирические данные необходимо собрать и какие модели можно использовать.

Использование языка программирования способствует пониманию сути изучаемых социальных явлений и процессов, творческому решению оригинальных содержательных социологических задач [12]; обеспечивает независимость от разработчиков стандартного программного обеспечения, которое не всегда соответствует специфической содержательной задаче социолога и которое, в ряде случаев, невозможно купить; значительно дешевле, например, компания SPSS ( http://www.spss.com ), продает систему SPSS Clementine 12.0 за 80 000 долларов США; имеет спрос среди работодателей и другие очевидные достоинства.

Автор, имея опыт разработки компьютерной экспертно-дигностической системы МАКС [13], компьютерных систем КСЕНИЯ, ALEX, Контент-анализ ПРО,   прекрасно понимает, что научиться программировать, например, глобальные компьютерные модели [14], значительно сложнее и требуется значительно больше времени, чем измышлять «литературные теории» [15,с.10-11], заниматься умозрительными спекуляциями и публицистическими фантазиями, например, «О судьбах России», «Пути России», «Куда идет Россия?» и т.д. В этой связи отметим, что для выгодного ответа на подобные вопросы совсем не обязательно быть социологом и уж совсем не обязательно знать языки программирования. Например, российская история показывает, что для придумывания доктрины «Москва - третий Рим», в которой «обосновывается» исключительная роль России, как мирового центра истинной веры,  где Россия - богом избранный духовный центр мира, святости, великой миссии и т.д., не нужно быть социологом, а нужно быть монахом Филофеем, который сформулировал данную доктрину в 1510-1511 гг., чтобы угодить великому князю Московскому Василию III ( http://ec-dejavu.ru/m-2/Moskow_Third_Rome.html ). Либо, нужно быть Екатериной II, которая в одном из своих Указов декларировала, что «Россия есть держава Европейская» ( http://www.polit.ru/research/2004/10/06/janov.html ) и вопрос о специфике России был закрыт на время правления Екатерины II. Т.е. по сути, вопрос об умении программировать - это вопрос о том, социология является наукой или антинаукой [16]?  Не стоило бы повторять прописную истину, что социология - это наука, если бы среди некоторых российских социологов не существовали бы явно ошибочные и вредные представления о социологии, как антинауке.  Например, на III Всероссийском социологическом конгрессе (21-24 октября, Москва, 2008 г.) на Круглом столе «Методологические стратегии в социологии. Харчевские чтения (СОЦИС)» одна из участниц вполне серьезно утверждала, что прогнозирование - это не функция социологии. Очевидно, что подобное заблуждение вредит социологии и несовместимо с социологией, как научной дисциплиной. Негоже социологам уподобляться известному персонажу басни И.Крылова «Свинья под Дубом» ( http://sheba.spb.ru/lib/krylov04.htm ), которая наевшись плодов Науки (электричество, лекарства, радио, телевидение, компьютеры, мобильный телефон и т.д.) начинает подрывать древо Науки. Повторим еще раз прописные истины, которые студент-социолог первого курса должен узнать уже на первом занятии. Социология - это Science (наука), которая базируется на Research  (эмпирических исследованиях), главной целью которой (предметом социологии) является выявление законов строения и динамики общества, точные выводы, прогнозы и рекомендации. Плодотворность научных результатов базируется на использовании технологий методов сбора,  анализа и моделирования данных, о чем неопровержимо свидетельствует история Науки. В свою очередь, современные технологии методов сбора, анализа эмпирических данных, моделирования, написаны на языках программирования. В целом, можно сказать, что социология, представители которой не умеют программировать, не имеет перспективы в информационном обществе.  

В данной статье автор предпринял очередную попытку ( https://www.isras.ru/phpBB2/viewtopic.php?t=46 ) привлечь внимание российских социологов к необходимости изучения языков программирования и умению программировать. В частности, решалась следующая исследовательская задача. На каком языке (языках) программирования, должны уметь программировать российские социологи, поскольку существует более тысячи языков программирования, их диалектов и реализаций? В данной статье также выдвигается предложение по разработке нового языка программирования, специально предназначенного для решения социологических задач.

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

 

Языки программирования в системной социологии

Напомним, что системная социология [15,17] - часть Systems Science ( http://isss.org/world ), которая изначально создавалась на основе математики и Computer Science для изучения сложных систем и решения междисциплинарных проблем, в частности, социальных проблем. В России использование и разработка языков программирования для системного анализа осуществляется, например, на кафедре системного анализа факультета вычислительной математики и кибернетики МГУ ( http://www.cs.msu.su/faculty/structure/departments/sa.html ), в Институте системного анализа РАН ( http://www.isa.ru ). Системная социология [15,17] основана на фундаментальной системной методологической парадигме и частных математической, компьютационной, естественнонаучной и социально-инженерной  методологических парадигмах, в рамках которых изучение языков программирования и умение программировать - обязательное условие эффективной научной деятельности и подготовки студентов. Поэтому в системной социологии разработчики компьютерных систем для анализа и моделирования социальных систем давно, широко и активно используют универсальные и специализированные языки программирования. Разрабатываются новые языки программирования, например, Systems Modeling Language (OMG SysML) ( http://www.sysml.org ), ведутся перспективные исследования и разработки принципиально новых языков программирования на основе Cognitive Computing [15],  Brain-Computer Interface (управление компьютером с помощью электроэнцефалограммы мозга пользователя) ( http://ida.first.fraunhofer.de/bbci/index_en.html ), Dynamic Adaptive Reconfigurable Systems (компьютерная система самостоятельно перенастраивает Software и Hardware под конкретную содержательную задачу) [1] и т.д.

Перечислим некоторые специализированные языки программирования, которые используются в системной социологии. UML, SysML, Matlab, SDML - языки программирования для моделирования систем. MAML, KQML, ELMS и т.д. - языки программирования Multi-Agents Systems. PMML - язык программирования Data Mining.  SAS, R - языки программирования для статистического анализа. VRML, 3DMLW, O3D, X3D и т.д. -  языки программирования виртуальной реальности. SISAL, Parallel Haskell, Mitrion-C, Erlang, Prograph и т.д. - языки программирования параллельных и распределенных вычислений. MPI, SHMEM, UPC, OpenMP, PVM, HPF и т.д. - языки суперкомпьютинга. Prolog, Common Lisp, Planner, Haskell и т.д. - языки программирования Artificial Intelligence (искусственного интеллекта). Например, A.L.I.C.E. (Artificial Linguistic Internet Computer Entity) ( http://www.pandorabots.com/pandora/talk?botid=f5d922d97e345aa1 ) - chat robot, предназначен для диалога с пользователями на английском языке (задает вопросы и отвечает на вопросы пользователя, т.е. поддерживает беседу). ALICE получила награду 2004 Loebner Prize, за попытку пройти тест А.Тьюринга. Напомним, что тест Тьюринга состоит в следующем. Если группа экспертов - людей не может определить, что беседует с машиной, то машина является интеллектуальной ( http://www.pcweek.ru/themes/detail.php?ID=62564 ). ALICE написана на языке AIML (Artificial Intelligence Markup Language).

К сожалению, системная социология в России практически не развита, что, в частности, сдерживает широкое использование языков программирования отечественными социологами. Хотя отдельные положительные примеры существуют. Так, например, на математико-механическом факультете Санкт-Петербургского Государственного Университета ( http://www.math.spbu.ru/ru/index.html ), где готовят специалистов по специальности 080801 - прикладная информатика в области социологии, квалификация - информатик по социологии, даются углубленные знания по математике, навыки программирования и преподается теория систем и системный анализ. 

 

Языки программирования для российских социологов

По данным компании TIOBE ( http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html ), специализирующейся на рейтинге популярности универсальных языков программирования,  в мае 2009 г. наиболее популярными среди программистов были следующие 10 универсальных языков программирования: Java, C, C++, PHP, (Visual) Basic, Python, C#, JavaScript, Perl, Ruby. В этой связи напомним, что в Институте социологии РАН, в рамках системной социологии, еще в 1993 году была разработана компьютерная экспертно-диагностическая система МАКС (версия 1.0) [18], предназначенная для модульного анализа, моделирования, прогнозирования и автоматической диагностики строения и динамики социальных систем, которая была написана А.Н.Чураковым на языке программирования Borland C++. В 2000 г. вышла последняя версия МАКС (версия 3.1) [13].

Cогласно результатам одного из массовых международных экспертных опросов программистов ( http://www.redcanary.ca/view/top-programming ), в 2013 г. язык Python может стать наиболее популярным языком программирования. Может быть российским социологам следует уметь программировать на языке Python, в котором использованы некоторые конструкции популярных языков программирования, например Java, С, C++, Scheme (диалект языка Лисп)?  Если развитие Интернета будет происходить, согласно прогнозам [6,19], в направлении Semantic Web, то тогда, может быть, социологам следует изучать Web Ontology Language (OWL) ( http://www.w3.org/TR/owl-features ) - язык программирования для Semantic Web, на котором уже написан Интернет-сервис социальной сети нового поколения Twine [19]?  

В целом, в настоящий момент времени не существует «лучшего» универсального языка программирования «на все случаи жизни» и для каждого класса содержательных задач, в идеале, лучше использовать специализированный язык программирования. Вместе с тем, много приложений (компьютерных систем анализа и моделирования, аналитических онлайн платформ и т.д.), например, Systems Dynamics, Multi-Agent Based Social Simulations, Social Networks и т.д. написано, в настоящий момент времени, на языке Java, его диалектах и реализаций. Также, множество современных и полезных методов анализа и моделирования, имитационных моделей, для которых используются специализированные языки программирования, можно реализовать с помощью языка Matlab. Опыт работы автора с пакетом Matlab  показывает, что Matlab - это простой и мощный язык визуального программирования в среде Simulink и Stateflow (дискретно-событийное моделирование), который позволяет быстро решать неординарные содержательные задачи анализа и моделирования, с помощью различных методов, практически из всех разделов современной математики, например, вейвлет-анализа, фрактального анализа, системной динамики, «нечеткой» логики, клеточных автоматов, «нейронных» сетей, многомерной статистики и т.д., строить продуктивные имитационные модели на основе интеграции различных парадигм имитационного моделирования, разрабатывать и внедрять независимые приложения и т.д.

В зарубежных Университетах на факультетах социологии и кафедрах Computational Sociology, давно и успешно преподают языки программирования для социологов. Например, в Northern Illinois University ( http://catalog.niu.edu/preview_program.php?catoid=6&poid=1005 ) для социологов преподают основные языки программирования высокого уровня, например, С. В Columbia University ( http://cdg.columbia.edu/cdg/software ) социологам преподают языки программирования Java, Matlab, R. Department of Sociology Cornell University ( http://www.soc.cornell.edu/computing/resources.html ), который существует 75 лет и где учились и работали многие известные социологи, например, Дж.Тернер, ставшие впоследствии президентами Американской социологической ассоциации, изучают языки программирования Perl, SAS, Matlab и т.д.

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

 

Специализированный язык программирования для социологии

В Computational Sociology предпринимаются попытки разработки языков программирования для социологов, в частности, для реализации Multi-Agent Based Social Simulations ( http://jasss.soc.surrey.ac.uk/12/2/2.html ), Social Networks Analysis ( http://www.insna.org/software/software_old.html ) и т.д. Для Computer-Assisted Telephone Interviewing (CATI) и Web-Based Surveys был разработан Questionnaire Programming Language (QPL) ( http://qpl.gao.gov ). Вместе с тем, насколько известно автору, универсальный язык программирования для социологии пока не разработан.

В перспективе, с точки зрения автора, российским социологам следует рассмотреть возможность разработки нового, собственного языка программирования, специально предназначенного для решения социологических задач в информационном обществе. Для достижения данной цели необходимо определить классы содержательных научных задач, которые решают социологи, типы эмпирических данных, используемые социологами методы анализа данных и моделирования, используемые модели, теории и т.д. В принципе, разработку языка программирования может осуществить всего один человек. В этой связи напомним, что современный, популярный, простой и мощный,  интерпретируемый, объектно-ориентированный язык высокого уровня Python ( http://www.python.org ), ( http://www.python.ru ), который позволяет, в частности, программировать Natural Language Processing, который используется в Question Answering Systems [20], сначала разработал один программист - Гвидо ван Россум. 

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

 

Заключение

Автор убежден, что если российская социология сумеет продемонстрировать свою привлекательность в области интересных содержательных задач для программистов, в России будет развиваться системная социология, в частности, будут созданы кафедры системной социологии, где студенты будут глубоко изучать программирование, современные Интернет-технологии ( https://www.isras.ru/blog_Davydov.html ), математическую социологию [10], Computational Sociology ( http://www.personal.kent.edu/~bcastel3 ), в частности, теорию социологических алгоритмов [21],  компьютационные теории социальных систем и искусственных социальных агентов [22] и т.д., то вопрос о языках программирования для российских социологов будет полностью и окончательно решен и российская социология сократит отставание от зарубежной социологии в области компьютерных разработок.

 

Пригашаем обсудить статью на форуме.

 

СПИСОК ЛИТЕРАТУРЫ

  1. Давыдов А.А. Системная социология: Data Warehousing. М.: ИС РАН, 2009. ( https://www.isras.ru/index.php?page_id=1012 )
  2. Давыдов А.А. Knowledge Discovery and Data Mining в системной социологии. М.: ИС РАН, 2009. ( https://www.isras.ru/Davydov_Knowledge.html )
  3. Давыдов А.А. Системная социология: Opinion Mining.  М.: ИС РАН, 2009. ( https://www.isras.ru/index.php?page_id=1024 )
  4. Давыдов А.А. Системная социология: Social Networks Mining. М.: ИС РАН, 2009. ( https://www.isras.ru/index.php?page_id=1033 )
  5. Давыдов А.А. Качественные исследования: перспективы развития. М.: ИС РАН, www ( https://www.isras.ru/index.php?page_id=922 )
  6. Давыдов А.А. Развитие Интернет-технологий - вызов современной российской социологии. М.: ИС РАН, www( https://www.isras.ru/index.php?page_id=957 )
  7. Давыдов А.А. Системная социология: анализ мультимедийной информации в Интернете. М.: ИС РАН, 2009. ( https://www.isras.ru/index.php?page_id=988 )
  8. Давыдов А.А. Technological Forecasting компьютерных технологий опросов респондентов. М.: ИС РАН, 2009. ( https://www.isras.ru/index.php?page_id=1018 )
  9. Давыдов А.А. Социология среди научных дисциплин в информационном обществе. М.: ИС РАН, 2009. ( https://www.isras.ru/index.php?page_id=1050 )
  10. Давыдов А.А. Математическая социология: обзор зарубежного опыта// Социол. исслед. 2008, № 4, С. 105-111. ( http://www.ecsocman.edu.ru/socis/msg/327114.html )
  11. Давыдов А.А. Системная социология: Social Computing. М.: ИС РАН, 2009. ( https://www.isras.ru/?page_id=1016 )
  12. Чураков А.Н. Методологические и методические проблемы разработки компьютерных систем в социологии. Автореф. канд. социол. н., М.: МГИМО МИД РФ, 1998.
  13. Давыдов А.А., Чураков А.Н. Модульный анализ и моделирование социума. М.: ИС РАН, 2000.
  14. Давыдов А.А. Системная социология: Ultra - Large - Scale Holistic Simulation. М.: ИС РАН, 2009. ( https://www.isras.ru/index.php?page_id=1008 )
  15. Давыдов А.А. Конкурентные преимущества системной социологии. (Электронное издание). М.: ИС РАН, www   ( https://www.isras.ru/publ.html?id=855 ),   ( http://www.ecsocman.edu.ru/db/msg/324618.html )
  16. Коллинз Р. Социология: наука или антинаука?//ТHESIS, 1994, вып. 4, С. 71-97. ( http://www.gumer.info/bibliotek_Buks/Sociolog/Article/koll_socnauk.php )
  17. Давыдов А.А. Системная социология: введение в анализ динамики социума. М.: ЛКИ, 2007.
  18. Давыдов А.А. Модульный анализ и конструирование социума. М.: ИС РАН, 1994.
  19. Давыдов А.А. Twine: искусственный интеллект создает социальные взаимодействия. М.: ИС РАН, 2009. ( https://www.isras.ru/index.php?page_id=974 )
  20. Давыдов А.А. Системная социология: Question Answering Systems. М.: ИС РАН, 2009. ( https://www.isras.ru/index.php?page_id=1047 )
  21. Давыдов А.А. Системный подход в социологии: новые направления, теории и методы анализа социальных систем. М.: Эдиториал УРСС, 2005.
  22. Давыдов А.А. Системная социология. М.: Эдиториал УРСС, 2006.