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

Материал из Викиверситета
Перейти к навигации Перейти к поиску

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

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

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

#added 2017-03
#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 Results

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

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

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

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 Results

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

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

#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 Results

Комментарий: Данный запрос показывает в красивой графической оболочке таймлайн создания(на самом деле выпуска) операционных систем. А еще так-же он показывает насколько плохо заполнены викиданные, так как в запросах выводится только 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 Results

Комментарий: Данный запрос показывает (только на основе заполненых викиданных, поэтому не факт что это правда) что преимущественно ОС пишут на языке Ассемблер, что несомненно является правдой, потому что это самый быстрый, но при этом удобный язык программирования. На втором и третьем месте разместились Си и 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 Results

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

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

Задача[править]

1. У операционных систем: на каком языке написана (programming language (P277))

SELECT ?osLabel ?langLabel
WHERE 
{
    ?os wdt:P31 wd:Q9135.
    ?os wdt:P277 ?lang .
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}

SPARQL запрос

2. У не операционных систем (а любых других объектов, обычно это какой-то софт): /1/ свойство operating system (P306)

SELECT ?soft ?softLabel ?os ?osLabel
WHERE
{
  	?soft wdt:P306 ?os.
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}

SPARQL запрос 5738 записей в таблице

3. У не операционных систем, а объектов, у которых указана свойство-операционка: /2/ на каком языке (programming language (P277)) написан этот софт

SELECT ?soft ?softLabel ?os ?osLabel (count(*) as ?count)
WHERE
{
  	?soft wdt:P306 ?os.
    ?soft wdt:P277 ?lang .
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
GROUP BY ?soft ?softLabel ?os ?osLabel
ORDER BY DESC(?count) ASC(?lang)

SPARQL запрос 2259 записей в таблице 05.11.2017 13:00. Запрос показывает для каждого софта под каждую ОС на скольких языках он написан.

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

SELECT ?soft ?softLabel ?os ?osLabel ?lang1Label ?lang2Label
WHERE
{
  	?soft wdt:P306 ?os.
    ?soft wdt:P277 ?lang1 .
    ?os wdt:P277 ?lang2 .
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
GROUP BY ?soft ?softLabel ?os ?osLabel ?lang1Label ?lang2Label
ORDER BY DESC(?softLabel)

SPARQL запрос 5336 записей в таблице 16.01.2018 23:38.

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

SELECT ?lang1Label ?lang2Label (count(*) as ?count)
WHERE
{
  	?soft wdt:P306 ?os.
    ?soft wdt:P277 ?lang1 .
    ?os wdt:P277 ?lang2 .
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
GROUP BY ?lang1Label ?lang2Label
ORDER BY DESC(?count) DESC(?lang1Label) DESC(?lang2Label)

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

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

SELECT ?osLabel ?lang1Label (count(*) as ?count)
WHERE
{
  	?soft wdt:P306 ?os.
    ?soft wdt:P277 ?lang1 .
    ?os wdt:P277 ?lang2 .
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
GROUP BY ?os ?osLabel ?lang1Label
ORDER BY DESC(?count) DESC(?osLabel)

SPARQL запрос 378 записей в таблице 16.01.2018 23:56. Данный запрос отлично показывает, что большая часть ПО, написанного под macOS, написано на C++, C, Python. Под Android - C++ и Java. Под iOS - C++.

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

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

#defaultView:BarChart
SELECT ?lang1Label (count(*) as ?count) ?osLabel
WHERE
{
  	?soft wdt:P306 ?os.
    ?soft wdt:P277 ?lang1 .
    ?os wdt:P277 ?lang2 .
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
GROUP BY ?lang1Label ?softLabel ?osLabel
ORDER BY DESC(?count) DESC(?osLabel)

SPARQL запрос 378 записей в таблице 17.01.2018 22:51.

Гистограмма на рисунке позволяет увидеть для каждого языка программирования количество программ, которые были на нем написаны, а также под какими ОС работают данные программы. Из графика видно, что наибольшее число программ пишется на языках: Си (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 программ).

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

Сравним запросы 2 и 3. Очевидно, что у многих программных продуктов не указано, на каком языке программирования они написаны.

Скриншот. Сотня. Скриншот.[править]

После заполнения поля "язык программирования" у 100 программных продуктов запрос 3 показывает 2502 записи в таблице 06.11.2017 01:40.

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

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

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

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

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

1

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

Apple Sun Microsystems Canonical Ltd.
Newton OS
JavaOS
Ubuntu Touch

2

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

Ubuntu-smartphone.png
Linux Mint 17 (Qiana) Cinnamon.png
Fuduntu14.9-defaultdesktop.png
Kubuntu 16.10.png

3

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

Debian
Android
Ubuntu
Linux kernel


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

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

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

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

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

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

List of Operating Systems.