Сохрани и опубликуйсвоё исследование
О проекте | Cоглашение | Партнёры
Изучение операционных систем на основе SPARQL-запросов
Петрозаводский государственный университет (ПетрГУ)
Комментировать 0
Рецензировать 0
Скачать - 201,6 КБ
Enter the password to open this PDF file:
-
Программирование Викиданных: Операционные системы Andrew Krizhanovsky1 , Mary Kornysheva2 1 Institute of Applied Mathematical Research of the Karelian Research Centre of the Russian Academy 2 Petrozavodsk State University Аннотация В статье исследуется объект Викиданных "операционная система"(operating system) и его свойства. В каждом из разделов представлены задачи, решённые с помощью SPARQL-запросов. В их числе: нахождение экземпляров объекта "операционная система построение списка операционных систем (ОС) по предку, по времени создания, по языку, на котором написана ОС. Также построена гистограмма, показывающая количество программ, написанных на том или ином языке программирования, и долю того, сколько из них работает под той или иной ОС. У многого программного обеспечения не указан язык программирования, на котором оно разрабатывалось. Для улучшения результатов решения вышеописанных задач отдельные объекты Викиданных были дополнены свойством "язык программирования". 1
1 Экземпляры объекта Операционные системы Объекты: Операционные системы(Q9135) Построим список всех операционных систем. 1 2 3 4 5 6 7 8 #added 2017−03 #L i s t o f ‘ i n s t a n c e s of ‘ " o p e r a t i n g system " SELECT ? o s ? o s L a b e l WHERE { ? o s wdt : P31 wd : Q9135 . SERVICE w i k i b a s e : l a b e l { bd : s e r v i c e P a r a m w i k i b a s e : l a n g u a g e " en " } } Листинг 1: Список операционных систем Наиболее полными и проработанными операционными системами на Викиданных являются: Linux, Windows, Windows 8 Почти пустыми и малоинформативными операционными системами оказались: SPIN, JavaOS, Atari TOS, Xubuntu 2 Запрос: На чем основаны ОС 1 2 3 4 5 6 7 8 SELECT ? o s L a b e l ? b a s e L a b e l WHERE { ? o s wdt : P31 wd : Q9135 . ? o s wdt : P144 ? b a s e . SERVICE w i k i b a s e : l a b e l { bd : s e r v i c e P a r a m w i k i b a s e : l a n g u a g e " en " } } GROUP BY ? o s L a b e l ? b a s e L a b e l Листинг 2: Список операционных систем и их "предков" Комментарий: Данный запрос показывает соответствие между "Операционной Системой"и ее "предком на котором она основана. 3 Запрос: Время создания(выпуска) ОС 1 2 #d e f a u l t V i e w : T i m e l i n e SELECT ? o s L a b e l ? time 2
3 4 5 6 7 8 9 10 WHERE { ? o s wdt : P31 wd : Q9135 . ? o s wdt : P571 ? time . SERVICE w i k i b a s e : l a b e l { bd : s e r v i c e P a r a m w i k i b a s e : l a n g u a g e " en " } } GROUP BY ? o s L a b e l ? time ORDER BY DESC( ? time ) Листинг 3: Таймлайн создания(на самом деле выпуска) операционных систем Комментарий: Данный запрос показывает в красивой графической оболочке таймлайн создания(на самом деле выпуска) операционных систем. А еще так-же он показывает насколько плохо заполнены викиданные, так как в запросах выводится только 30 результатов. Что в свою очеред обозначает что у других "объектов"это поле попросту не заполнено. Хотя информация о "дате выпуска"не такая уж и секретная информация. 4 Запрос: Кол-во ОС написанных на Языках Программирования используемые при написании ОС 1 2 3 4 5 6 7 8 9 10 11 12 13 #d e f a u l t V i e w : BarChart SELECT ? l a n g ( count ( * ) a s ? count ) WHERE { ? o s wdt : P31 wd : Q9135 . ? o s wdt : P277 ? langObj . OPTIONAL { ? langObj r d f s : l a b e l ? l a n g f i l t e r ( l a n g ( ? l a n g ) = " en " ) } } GROUP BY ? l a n g ORDER BY DESC( ? count ) ASC( ? l a n g ) Листинг 4: Языки программирования Комментарий: Данный запрос показывает (только на основе заполненных викиданных, поэтому не факт что это правда) что преимущественно ОС пишут на языке Ассемблер, что несомненно является правдой, потому что это самый быстрый, но при 3
этом удобный язык программирования. На втором и третьем месте разместились Си и C++, которые в свою очередь являются не худшим аналогом, так как несмотря на свою (относительно Ассемблера) "медленность они наиболее удобные и понятные ЯП. 4.1 Еще... Еще на результаты данного запроса интересно смотреть в виде графа, так же на нем прекрасно видно как много объектов попросту имеют незаполненное поле "язык программирования". 1 2 3 4 5 6 7 8 #d e f a u l t V i e w : Graph SELECT ? o s ? o s L a b e l ? sharesBorderWith ? s h a r e s B o r d e r W i t h L a b e l WHERE { ? o s wdt : P31 wd : Q9135 . SERVICE w i k i b a s e : l a b e l { bd : s e r v i c e P a r a m w i k i b a s e : l a n g u a g e " en " } OPTIONAL { ? o s wdt : P277 ? sharesBorderWith . } } Листинг 5: ОС и языки программирования 5 Полнота викиданных Используя данные с сайта www.operating-system.org удалось установить что существует порядка 611 операционных систем[1] (не учитывая дистрибутивы Linux’а, коих количество превышает количество самих операционных систем). В то время SPARQL запрос поведал нам лишь о 510 операционных системах. И если просмотреть достаточно большое количество объектов из запроса, то станет ясно еще и то, что много из них еще и не очень хорошо заполнены, а то и вовсе практически пусты. Из этого можно сделать вывод о неполноте викиданных, с которой призваны бороться мы последняя надежда википедии и викиданных! 4
6 Задача 1. У операционных систем: на каком языке написана (programming language (P277)) на котором написаны 1 2 3 4 5 6 7 SELECT ? o s L a b e l ? l a n g L a b e l WHERE { ? o s wdt : P31 wd : Q9135 . ? o s wdt : P277 ? l a n g . SERVICE w i k i b a s e : l a b e l { bd : s e r v i c e P a r a m w i k i b a s e : l a n g u a g e " en " } } Листинг 6: Список ОС и языков 2. У не операционных систем (а любых других объектов, обычно это какой-то софт): /1/ свойство operating system (P306) 1 2 3 4 5 6 SELECT ? s o f t ? s o f t L a b e l ? o s ? o s L a b e l WHERE { ? s o f t wdt : P306 ? o s . SERVICE w i k i b a s e : l a b e l { bd : s e r v i c e P a r a m w i k i b a s e : l a n g u a g e " en " } } Листинг 7: Список программного обеспечения (ПО) с указанным свойством "ОС" 3. У не операционных систем, а объектов, у которых указана свойство-операционка: /2/ на каком языке (programming language (P277)) написано это программное обеспечение (ПО) 1 2 3 4 5 6 7 8 9 SELECT ? s o f t ? s o f t L a b e l ? o s ? o s L a b e l ( count ( * ) a s ? count ) WHERE { ? s o f t wdt : P306 ? o s . ? s o f t wdt : P277 ? l a n g . SERVICE w i k i b a s e : l a b e l { bd : s e r v i c e P a r a m w i k i b a s e : l a n g u a g e " en " } } GROUP BY ? s o f t ? s o f t L a b e l ? o s ? o s L a b e l ORDER BY DESC( ? count ) ASC( ? l a n g ) Листинг 8: На каком языке написано ПО с указанным свойством "ОС" Запрос показывает для каждого софта под каждую ОС на скольких языках он написан. 5
4.1. Декартово произведение ОС и языков с программным обеспечением и языками на котором написаны 1 2 3 4 5 6 7 8 9 10 SELECT ? s o f t ? s o f t L a b e l ? o s ? o s L a b e l ? l a n g 1 L a b e l ? l a n g 2 L a b e l WHERE { ? s o f t wdt : P306 ? o s . ? s o f t wdt : P277 ? l a n g 1 . ? o s wdt : P277 ? l a n g 2 . SERVICE w i k i b a s e : l a b e l { bd : s e r v i c e P a r a m w i k i b a s e : l a n g u a g e " en " } } GROUP BY ? s o f t ? s o f t L a b e l ? o s ? o s L a b e l ? l a n g 1 L a b e l ? l a n g 2 L a b e l ORDER BY DESC( ? s o f t L a b e l ) Листинг 9: Список ОС и языков 4.2. Сколько программного обеспечения было написано с использованием языка lang1 для ОС, написанной с использованием языка lang2. написанной с использованием языка lang2 1 2 3 4 5 6 7 8 9 10 SELECT ? l a n g 1 L a b e l ? l a n g 2 L a b e l ( count ( * ) a s ? count ) WHERE { ? s o f t wdt : P306 ? o s . ? s o f t wdt : P277 ? l a n g 1 . ? o s wdt : P277 ? l a n g 2 . SERVICE w i k i b a s e : l a b e l { bd : s e r v i c e P a r a m w i k i b a s e : l a n g u a g e " en " } } GROUP BY ? l a n g 1 L a b e l ? l a n g 2 L a b e l ORDER BY DESC( ? count ) DESC( ? l a n g 1 L a b e l ) DESC( ? l a n g 2 L a b e l ) Листинг 10: Сколько программного обеспечения было написано с использованием языка lang1 для ОС Данный запрос отлично показывает, что большая часть ПО, написанного под ОС, написанную на С/С++, пишется также на С/С++. С целом же видно, что большая часть ПО пишется на С, С++, Python, Java, ObjectiveC. 5. Сколько ПО было написано под ОС с использованием того или иного языка 1 2 3 4 5 6 SELECT ? o s L a b e l ? l a n g 1 L a b e l ( count ( * ) a s ? count ) WHERE { ? s o f t wdt : P306 ? o s . ? s o f t wdt : P277 ? l a n g 1 . ? o s wdt : P277 ? l a n g 2 . 6
7 8 9 10 SERVICE w i k i b a s e : l a b e l { bd : s e r v i c e P a r a m w i k i b a s e : l a n g u a g e " en " } } GROUP BY ? o s ? o s L a b e l ? l a n g 1 L a b e l ORDER BY DESC( ? count ) DESC( ? o s L a b e l ) Листинг 11: Сколько ПО было написано под ОС с использованием того или иного языка Данный запрос отлично показывает, что большая часть ПО, написанного под macOS, написано на C++, C, Python. Под Android - C++ и Java. Под iOS - C++. 6. Гистограмма показывает, сколько ПО было написано на том или ином языке программирования, и какая часть из них работает под той или иной ОС и какая часть из них работает под той или иной ОС 1 2 3 4 5 6 7 8 9 10 11 #d e f a u l t V i e w : BarChart SELECT ? l a n g 1 L a b e l ( count ( * ) a s ? count ) ? o s L a b e l WHERE { ? s o f t wdt : P306 ? o s . ? s o f t wdt : P277 ? l a n g 1 . ? o s wdt : P277 ? l a n g 2 . SERVICE w i k i b a s e : l a b e l { bd : s e r v i c e P a r a m w i k i b a s e : l a n g u a g e " en " } } GROUP BY ? l a n g 1 L a b e l ? s o f t L a b e l ? o s L a b e l ORDER BY DESC( ? count ) DESC( ? o s L a b e l ) Листинг 12: Сколько ПО было написано на том или ином языке программирования Гистограмма на рисунке позволяет увидеть для каждого языка программирования количество программ, которые были на нем написаны, а также под какими ОС работают данные программы. Из графика видно, что наибольшее число программ пишется на языках: Си (1084 программы), С++ (1598 программ), Java (526 программ), JavaScript (242 программы), Objective C (252 программы), Python (454 программы). Рассмотрим каждый из этих языков подробнее. Большая часть программ на языке С пишется под macOS (472 программы) и Linux (235 программ). Несмотря на то, что язык был разработан в 1972, он пока не теряет своей популярности за счет, вероятно, того, что используется для написа7
ния низкоуровневых приложений, т.к. по "близости"к аппаратному уровню уступает разве что ассемлеру. Большая часть программ на языке С++ пишется под macOS (780 программ) и Linux (265 программ) и Андроид (264 программы). Вероятно, С++ будет лидировать еще долгое время, т.к. на текущий момент он используется для решений, требующих высокой производительности, чего не позволяют высокоуровневые языки, как Java или Csharp. Большая часть программ на языке 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 программ). 8
9
Отзывы:
Авторизуйтесь, чтобы оставить отзыв