Программирование Викиданных/Операционные системы

В статье исследуется объект Викиданных "операционная система" (operating system) и его свойства. В каждом из разделов представлены задачи, решённые с помощью SPARQL-запросов. В их числе: нахождение экземпляров объекта "операционная система", построение списка операционных систем (ОС) по предку, по времени создания, по языку, на котором написана ОС. Также построена гистограмма, показывающая количество программ, написанных на том или ином языке программирования, и долю того, сколько из них работает под той или иной ОС. У многого программного обеспечениея не указан язык программирования, на котором оно разрабатывалось. Для улучшения результатов решения вышеописанных задач отдельные объекты Викиданных были дополнены свойством "язык программирования". Викиданные играют большую роль в документировании программного обеспечения.

Экземпляры объекта "Операционные системы" править

Построим список всех операционных систем.

#List of `instances of` "operating system" 
SELECT ?os ?osLabel
WHERE
{
    ?os wdt:P31 wd:Q9135.
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}

SPARQL query 510 записей (март 2017), 1086 записей (сентябрь 2020)

[+] Наиболее полными и проработанными операционными системами на Викиданных являются: Linux, Windows, Windows 8

[-] Почти пустыми и малоинформативными операционными системами оказались: SPIN, JavaOS, Atari TOS, Xubuntu

По данным ProWD у единственной в Викиданных отечественной операционной системы Miraculix 7 свойств. Лидерами по операционным системам всего мира являются Microsoft Windows и Windows 8 имеющие по 24 свойства.

Запрос: На чем основаны ОС править

SELECT ?osLabel ?baseLabel
WHERE
{
    ?os wdt:P31 wd:Q9135.
  	?os wdt:P144 ?base.
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
GROUP BY ?osLabel ?baseLabel

SPARQL query 47 записей (март 2017), 118 записей (сентябрь 2020)

Комментарий: Данный запрос показывает соответствие между "Операционной Системой" и ее "предком", на котором она основана.

Запрос: Время создания (выпуска) ОС править

#defaultView:Timeline
SELECT ?osLabel ?time
WHERE
{
    ?os wdt:P31 wd:Q9135. 
  	?os wdt:P571 ?time.
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
GROUP BY ?osLabel ?time
ORDER BY DESC(?time)

SPARQL query 30 записей (март 2017), 238 записей (сентябрь 2020)

Комментарий: Данный запрос показывает в красивой графической оболочке таймлайн создания(на самом деле выпуска) операционных систем. А еще так-же он показывает насколько плохо заполнены викиданные, так как в запросах выводится только 30 результатов. Что в свою очеред обозначает что у других "объектов" это поле попросту не заполнено. Хотя информация о "дате выпуска" не такая уж и секретная информация.

Запрос: Кол-во ОС написанных на Языках Программирования править

#defaultView:BarChart
SELECT ?lang (count(*) as ?count)
WHERE 
{
    ?os wdt:P31 wd:Q9135.
    ?os wdt:P277 ?langObj .
    OPTIONAL {
		?langObj rdfs:label ?lang
		filter (lang(?lang) = "en")
	}
}
GROUP BY ?lang
ORDER BY DESC(?count) ASC(?lang)

SPARQL query 24 записей (март 2017), 37 записей (сентябрь 2020)

Комментарий: Данный запрос показывает (только на основе заполненых викиданных, поэтому не факт что это правда) что преимущественно ОС пишут на языке Ассемблер, что несомненно является правдой, потому что это самый быстрый, но при этом удобный язык программирования. На втором и третьем месте разместились Си и C++, которые в свою очередь являются не худшим аналогом, так как несмотря на свою (относительно Ассемблера) "медленность", они наиболее удобные и понятные ЯП.

Языки программирования, используемые для написания операционных система править

Еще на результаты данного запроса интересно смотреть в виде графа, так же на нем прекрасно видно как много объектов попросту имеют незаполненное поле "язык программирования".

#defaultView:Graph
SELECT ?os ?osLabel ?sharesBorderWith ?sharesBorderWithLabel
WHERE
{
    ?os wdt:P31 wd:Q9135.
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
    OPTIONAL { ?os wdt:P277 ?sharesBorderWith . }
}

SPARQL query 533 результатов (март 2017), 1117 результатов (сентябрь 2020)

Если взглянуть на такой же запрос, но с таким ограничением чтобы количество ОС написанных на языке было минимум два, то можно увидеть значительную разницу с результатом предыдущего запроса. Большое количество операционных систем отсеялось, поскольку для их написания создавался отдельный язык программирования.

#defaultView:Graph
SELECT ?os ?osLabel ?language ?languageLabel
WHERE
{
  {
    SELECT ?language
    WHERE {
      ?osTemp wdt:P31 wd:Q9135. # os is os
      ?osTemp wdt:P277 ?language. # os written by language
    } 
    Group by ?language
    Having (Count(?osTemp) > 1) # get laguages which has more than one written os
  }
  ?os wdt:P31 wd:Q9135. # os is os
  ?os wdt:P277 ?language. # os written by language
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}

SPARQL query 118 результатов (октябрь 2020)

 
Граф языков используемых для создания операционных систем 2020.


Полнота викиданных править

Используя данные с сайта www.operating-system.org удалось установить что существует порядка 611 операционных систем[1] (не учитывая дистрибутивы Linux'а, коих количество превышает количество самих операционных систем). В то время SPARQL запрос поведал нам лишь о 510 операционных системах. И если просмотреть достаточно большое количество объектов из запроса, то станет ясно еще и то, что много из них еще и не очень хорошо заполнены, а то и вовсе практически пусты. Из этого можно сделать вывод о неполноте викиданных, с которой призваны бороться мы - последняя надежда википедии и викиданных!

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

Список операционных систем и языков, на которых они написаны править

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

SELECT ?osLabel ?langLabel
WHERE 
{
    ?os wdt:P31 wd:Q9135. # os is instace of operating system
    ?os wdt:P277 ?lang. # os is written on programming language
    SERVICE wikibase:label { bd:serviceParam wikibase:language "ru, en" }
}

SPARQL запрос 147 записей (сентябрь 2020)

Программное обеспечение и операционные системы, на которых они используются править

Количество программного обеспечения(ПО) можно расценивать как индикатор значимости ОС. Чем больше пользователей ОС, тем больше производителей ПО захотят предоставить свой продут такой аудитории. Отсюда напрашивается вывод: чем больше ПО написано под систему, тем более она значима. Данный запрос показывает какое ПО имеет поддержку какой ОС.

SELECT ?software ?softwareLabel ?os ?osLabel
WHERE
{
    ?software wdt:P306 ?os. # on which os can works software
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}

SPARQL запрос 5738 записей (ноябрь 2017), 30184 записей (сентябрь 2020)

Для получения самых популярных для разработчиков ПО операционных систем можно модифицировать предыдущий запрос таким образом

#defaultView:BarChart
SELECT ?os ?osLabel (COUNT(*) as ?count)
WHERE
{
  ?software wdt:P306 ?os. # on which os can works software
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru" }
}
GROUP BY ?os ?osLabel
LIMIT 10

SPARQL запрос

Как можно увидеть приоритетными для разработчиков являются: Linux. Microsoft Windows, Ubuntu.

Количество языков программирования использовалось для создания программного обеспечения под операционную систему править

SELECT ?software ?softwareLabel ?os ?osLabel (count(*) as ?count)
WHERE
{
    ?software wdt:P306 ?os. # on which os can works software
    ?software wdt:P277 ?lang. # programming language in which developed software 
    SERVICE wikibase:label { bd:serviceParam wikibase:language "ru, en" }
}
GROUP BY ?software ?softwareLabel ?os ?osLabel
ORDER BY DESC(?count)

SPARQL запрос 2259 записей (октябрь 2017), 6883 записей (сентябрь 2020). Запрос показывает для каждого программного обеспечения под каждую ОС на скольких языках он написан.

Декартово произведение ОС и языков с программным обеспечением и языками править

SELECT ?software ?softwareLabel ?os ?osLabel ?softwareLanguageLabel ?osLanguageLabel
WHERE
{
  ?software wdt:P306 ?os. # software works on os
  ?software wdt:P277 ?softwareLanguage. # software is written by parogramming language
  ?os wdt:P277 ?osLanguage. # os is written by parogramming language
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru, en" }
}
GROUP BY ?software ?softwareLabel ?os ?osLabel ?softwareLanguageLabel ?osLanguageLabel
ORDER BY DESC(?softwareLabel)

SPARQL запрос 5336 записей (январь 2018), 18976 записей (сентябрь 2020).

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

#defaultView:BarChart
SELECT (count(*) as ?count) ?osLanguageLabel ?softwareLanguageLabel
WHERE
{
  ?software wdt:P306 ?os. # software works on os
  ?software wdt:P277 ?softwareLanguage. # software is written by parogramming language
  ?os wdt:P277 ?osLanguage. # os is written by parogramming language
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru, en" }
}
GROUP BY ?osLanguageLabel ?softwareLanguageLabel
ORDER BY DESC(?count) DESC(?osLanguageLabel) DESC(?softwareLanguageLabel)

SPARQL запрос 418 записей (январь 2018), 829 записей (сентябрь 2020). Данный запрос отлично показывает, что большая часть ПО, написанного под ОС, написанную на С/С++, пишется также на С/С++. С целом же видно, что большая часть ПО пишется на С, С++, Python, Java, ObjectiveC.

Сколько ПО было написано под ОС с использованием того или иного языка править

SELECT ?osLabel ?softwareLanguageLabel (count(*) as ?count)
WHERE
{
  ?software wdt:P306 ?os. # software works on os
  ?software wdt:P277 ?softwareLanguage. # software is written by parogramming language
  ?os wdt:P277 ?osLanguage. # os is written by parogramming language
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru, en"}
}
GROUP BY ?osLabel ?softwareLanguageLabel
ORDER BY DESC(?count) DESC(?osLabel)

SPARQL запрос 378 записей (январь 2018), 671 записей (сентябрь 2020). Данный запрос отлично показывает, что большая часть ПО, написанного под macOS, написано на C++, C, Python. Под Android - C++ и Java. Под iOS - C++.

Cколько ПО было написано на том или ином языке программирования, и какая часть из них работает под той или иной ОС править

Гистограмма показывает, сколько ПО было написано на том или ином языке программирования, и какая часть из них работает под той или иной ОС

#defaultView:BarChart
SELECT (count(*) as ?count) ?softwareLanguageLabel ?osLabel
WHERE
{
  ?software wdt:P306 ?os. # software works on os
  ?software wdt:P277 ?softwareLanguage. # software is written by parogramming language
  ?os wdt:P277 ?osLanguage. # os is written by parogramming language
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru, en"}
}
GROUP BY ?softwareLanguageLabel ?osLabel
HAVING (?count > 50)
ORDER BY DESC(?count) DESC(?osLabel)

SPARQL запрос 378 записей (январь 2018), 671 записей (сентябрь 2020).


 
Языки программирования и количества ОС, под которыми работают программы, написанные на них 2021 год.



Гистограмма на рисунке позволяет увидеть для каждого языка программирования количество программ, которые были на нем написаны, а также под какими ОС работают данные программы. Из графика видно, что наибольшее число программ пишется на языках: Си (1084 программы), С++ (1598 программ), Java (526 программ), JavaScript (242 программы), Objective C (252 программы), Python (454 программы).

Рассмотрим каждый из этих языков подробнее.

Большая часть программ на языке С пишется под macOS (472 программы) и Linux (235 программ). Несмотря на то, что язык был разработан в 1972, он пока не теряет своей популярности за счет, вероятно, того, что используется для написания низкоуровневых приложений, т.к. по "близости" к аппаратному уровню уступает разве что ассемлеру.

Большая часть программ на языке С++ пишется под macOS (780 программ) и Linux (265 программ) и Андроид (264 программы). Вероятно, С++ будет лидировать еще долгое время, т.к. на текущий момент он используется для решений, требующих высокой производительности, чего не позволяют высокоуровневые языки, как Java или C#.

Большая часть программ на языке Java пишется под macOS (196 программ) и Андроид (156 программ). Вероятно, Java пользуется популярностью за счет переносимости кода, т.е. код на Java запустится на любой машине с установленной JVM.

Большая часть программ на языке JavaScript пишется под macOS (100 программ) и Андроид (60 программ) и iOS (40 программ). Как правило, используется для написания клиентской части веб-приложений, что разработке сложных веб-приложений приводит к снижению нагрузки на сервер и увеличению скорости работы приложения.

Большая часть программ на языке ObjectiveC пишется под macOS (112 программ) и iOS (72 программы). Некоторое время назад особенно использовался корпорацией Apple.

Большая часть программ на языке Python пишется под macOS (212 программ) и Linux (107 программ). Высокоуровневый язык с низким порогом вхождения. Используется, например, для написания веб-приложений и анализа данных.

Глядя на гистограмму, можно сделать вывод, что каждый из данных языков занял свою "нишу" в области разработки ПО и применяется для определенного круга задач. Также вижно, что большая часть ПО пишется под macOS (2388 программ), Linux (895 программ) или Андроид (908 программ).

Документирование ПО править

Викиданные играют большую роль в документировании программного обеспечения. Это показано на примере программ, входящих в среды GNOME и KDE[2]. В этой статье показано, что если в Английской Википедии описаны почти все программы, входящие в состав GNOME и KDE, то в итальянской и французской есть только часть статей. Документирование больших проектов — это известная и трудная задача. Для её решения нужна централизованная система. Именно в этой роли и выступает связка Википедия и Викиданные[2].


Будущая работа править

1. Вывести все ОС со свойством "логотип (P18)".

2. Построить диаграмму, отражающую статистику того, в каких странах сколько "родилось" ОС. Можно использовать свойства разработчик, государство или штаб-квартира, если разработчик - компания, и гражданство, если разработчик - отдельный человек.

3. Посчитать, сколько ОС было создано (дата основания/создания (P571)) в 1995 году.

Упражнения править

1 Соотнесите ОС и её разработчика:

Apple Sun Microsystems Canonical Ltd.
Newton OS
JavaOS
Ubuntu Touch

2 Выберите изображение рабочего стола ОС Fuduntu:

 
 
 
 

3 Выберите ОС, на основе которой создано больше всего других ОС:

Debian
Android
Ubuntu
Linux kernel


1. SPARQL запрос ОС и их разработчики

2. SPARQL запрос ОС и их изображения

3. SPARQL запрос ОС и страны происхождения

4. SPARQL запрос ОС и количество "потомков"

Примечания править

Литература править

List of Operating Systems.

John Samuel Documenting Software Applications on Wikidata (English) (2020-12-13).

Ссылки править