thedeemon: (bednota)
[personal profile] thedeemon
Группа ученых под руководством Дэниела Лебреро из Лаборатории Торговых Программных Интерфейсов британской компании IG Markets Ltd провела статистическое исследование о связи числа баг-репортов и языков программирования на базе информации об открытых проектах на сайте "Центр деятельности мерзавцев" (GitHub.com, организация разрешена в России, за исключением некоторых периодов, когда она запрещена). Выяснилось, что наличие статической типизации и продвинутой системы типов не помогает в уменьшении ошибок, а порой даже вредит, в то время как меньше всего ошибок получается в программах на максимально простых языках.

Плотность багов у проектов с 10 звездами и более:


Теперь научно доказано, что [livejournal.com profile] theiced был прав: типы не нужны, а писать надо на Кложури. А также Эрланге и Го. Адептам сложных языков и развитых систем типов надлежит раскаяться, одуматься и перестать уже своими надуманными неработающими идеями отвлекать благородных донов, занятых TDD.

Date: 2016-05-20 07:58 am (UTC)
From: [identity profile] tancorko.livejournal.com
Интересно мнение [livejournal.com profile] thesz. Мой небольшой опыт с clojure, erlang и haskell говорит об обратном.
Edited Date: 2016-05-20 07:59 am (UTC)

Date: 2016-05-23 03:02 pm (UTC)
From: [identity profile] thesz.livejournal.com
Не указан размер кода.

Мой опыт говорит о некоем пороге (в районе 300-1000 строк), выше которого лучше использовать типы. Поэтому если в репозитории лежит 10 не связанных библиотек по 100 строк, то плотность ошибок в любом языке будет одинакова.

(no subject)

From: [identity profile] rdia.livejournal.com - Date: 2016-05-23 03:48 pm (UTC) - Expand

(no subject)

From: [identity profile] rdia.livejournal.com - Date: 2016-05-23 03:58 pm (UTC) - Expand

Date: 2016-05-20 08:00 am (UTC)
From: [personal profile] alll
> Плотность багов у проектов с 10 звездами и более

Плотность ошибок внезапно может оказаться связанной со сложностью проекта, а не с количеством звёзд на небе. :)

Date: 2016-05-20 08:09 am (UTC)
From: [identity profile] enternet.livejournal.com
Праильно! Поддерживаю!

Но у меня есть теория ещё проще. Я лично ввел бы понятие "сложность программиста". Чем больше внутренняя сложность у программиста, тем больше 10* проектов он пишет (это внешняя сложность) и тем больше народа ищет там ошибки.

(no subject)

From: [identity profile] psilogic.livejournal.com - Date: 2016-05-20 08:17 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2016-05-20 08:23 am (UTC) - Expand

(no subject)

From: [identity profile] psilogic.livejournal.com - Date: 2016-05-20 08:38 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2016-05-20 08:51 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2016-05-20 08:22 am (UTC) - Expand

(no subject)

From: [identity profile] voidex.livejournal.com - Date: 2016-05-20 09:06 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2016-05-20 09:19 am (UTC) - Expand

(no subject)

From: [identity profile] voidex.livejournal.com - Date: 2016-05-20 09:25 am (UTC) - Expand

Date: 2016-05-20 08:08 am (UTC)
From: [identity profile] dtim.livejournal.com
Вернуть Паскаль в университеты!

Date: 2016-05-20 06:12 pm (UTC)
From: [identity profile] nivanych.livejournal.com
Но у него типизация!
Не вернуть Паскаль, а поставить вместо него Петон!
ТакЪ победимЪ!

Date: 2016-05-20 08:08 am (UTC)
From: [identity profile] permea-kra.livejournal.com
>числа баг-репортов
>меньше всего ошибок получается

Гм. Им еще не объяснили, в чем они неправы?

Date: 2016-05-20 08:15 am (UTC)
From: [identity profile] jamhed.livejournal.com
В Erlang типы навешиваются сверху, если надо. Часть ошибок отловить можно.

Date: 2016-05-20 08:16 am (UTC)
From: [identity profile] theiced.livejournal.com
для го некорректно так мерять. одна строка на нормальном языке (например, кложе) это примерно тринадцать с половиной строк на го.

Date: 2016-05-20 08:25 am (UTC)
From: [identity profile] thedeemon.livejournal.com
А тут строки не учитывались.
"charts that compare the number of issues labelled "bug" versus the number of repositories in GitHub for different languages"

(no subject)

From: [identity profile] sassa-nf.livejournal.com - Date: 2016-05-20 08:43 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2016-05-20 08:55 am (UTC) - Expand

(no subject)

From: [identity profile] dmytrish.livejournal.com - Date: 2016-05-20 12:11 pm (UTC) - Expand

(no subject)

From: [identity profile] fi_mihej.livejournal.com - Date: 2016-05-20 08:52 am (UTC) - Expand

(no subject)

From: [identity profile] fi_mihej.livejournal.com - Date: 2016-05-20 08:50 am (UTC) - Expand

(no subject)

From: [identity profile] avnik.livejournal.com - Date: 2016-05-20 10:17 am (UTC) - Expand

Date: 2016-05-20 08:35 am (UTC)
From: [identity profile] lispnik.livejournal.com
В моих проектах на самых разных языках вообще 0 багрепортов.

Date: 2016-05-20 08:54 am (UTC)
From: [identity profile] thedeemon.livejournal.com
А звезд сколько? Там проекты "для себя" звездами отсекали.

(no subject)

From: [identity profile] lispnik.livejournal.com - Date: 2016-05-20 09:06 am (UTC) - Expand

Date: 2016-05-20 08:35 am (UTC)
From: [identity profile] diam-2003.livejournal.com
How to Lie with Statistics

Date: 2016-05-20 08:37 am (UTC)
From: [identity profile] psilogic.livejournal.com
Бу го га. Чоткая корреляция между числом больных сифилисом и числом монашек =)

За C++ скажу, что строгая типизация в нем ( по сравнению с простым Си) предотвращает появление трудноуловимых ошибок еще на этапе написания кода и компиляци - что не мешает насажать ещё кучу багов другими способами.

Date: 2016-05-20 08:50 am (UTC)
From: [identity profile] izard.livejournal.com
Поэтому для себя я пишу на кложур, а на работе на С-С++, так джоб секьюрити повышается ;)

Date: 2016-05-20 09:26 am (UTC)
From: [identity profile] sorhed.livejournal.com
В эрланге да, можно баги годами не замечать. Процессы рестартнутся, если что, и всё обратно работает. :)

Date: 2016-05-20 12:57 pm (UTC)
From: [identity profile] migmit.livejournal.com
Hear, hear.

Date: 2016-05-20 09:53 am (UTC)
From: [identity profile] binf.livejournal.com
По мне так данный рейтинг коррелирует со средним количеством boilerplate, а не с "наличием статической типизации и продвинутой системы типов".

Ну и С++ как обычно стоит особняком, поскольку его используют для низкоуровневых вычислений с памятью, недоступных в других перечисленных языках. Ясное дело, что там багов больше

Date: 2016-05-20 12:01 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
Хорошая гипотеза, разве что Го в нее не вписывается.

(no subject)

From: [identity profile] psilogic.livejournal.com - Date: 2016-05-20 03:07 pm (UTC) - Expand

(no subject)

From: [identity profile] nponeccop.livejournal.com - Date: 2016-05-20 03:41 pm (UTC) - Expand

(no subject)

From: [identity profile] psilogic.livejournal.com - Date: 2016-05-20 04:03 pm (UTC) - Expand

Date: 2016-05-20 10:18 am (UTC)
From: [identity profile] avnik.livejournal.com
Кстати -- статистика кривая, они же не отсеивали feature request'ы и прочие todo которые в гитхабе обычно болтаются в issues?

Date: 2016-05-20 10:30 am (UTC)
From: [identity profile] voidex.livejournal.com
Там есть теги, он считал только то, что помечено, как баги. Правда, прямее от этого статистика особо не становится.

Date: 2016-05-20 11:23 am (UTC)
From: [identity profile] con-vertor.livejournal.com
а может такое быть - что просто в Скале Го и Эрланге меньше народа понимает - вот и меньше багов находят?

не ну в Скале-то точно.
это ж вам не Руби)

Date: 2016-05-20 12:05 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
Да, тоже неплохая гипотеза. Список тут похож на перевернутый рейтинг популярности, разве что JS должен был быть ниже тогда, и Руби тоже.

(no subject)

From: [identity profile] con-vertor.livejournal.com - Date: 2016-05-20 12:33 pm (UTC) - Expand

Date: 2016-05-20 11:50 am (UTC)
From: [identity profile] valentin budaev (from livejournal.com)
Этот график, скорее, показывает относительные требования к компетенциям программиста при разработке. с++ и джава, как сильно распространенные языки, предъявляют низкие требования, квалификация программиста растет медленно => средний уровень программистов низок => много багов. "навороченные" статически типизированные языки предъявляют более высокие требования, квалификация растет быстрее, средний уровень программиста растет (а количество багов, соответственно, падает). Ну и сложнее всего писать на "навороченных" динамических языках - это требует как определенного уровня знаний (случайные люди на кложурах с эрлангами не пишут) так и развитой дисциплины (значительно превышающей требования статических языков) с набором специфичных скиллов, которые позволяют в нужном месте подстелить соломки и писать безопасно без типов. Такие программисты - топчик, и могут писать с минимальным уровнем багов даже на малболге.

Date: 2016-05-20 11:59 am (UTC)
From: [personal profile] alll
Тогда питоножабаскрипты должны требовать большей компетенции, нежели C++, что довольно сомнительно.

(no subject)

From: [identity profile] valentin budaev - Date: 2016-05-20 12:37 pm (UTC) - Expand

(no subject)

From: [personal profile] alll - Date: 2016-05-20 01:24 pm (UTC) - Expand

(no subject)

From: [identity profile] valentin budaev - Date: 2016-05-21 07:49 am (UTC) - Expand

(no subject)

From: [personal profile] alll - Date: 2016-05-21 06:54 pm (UTC) - Expand

(no subject)

From: [identity profile] valentin budaev - Date: 2016-05-22 05:54 am (UTC) - Expand

(no subject)

From: [personal profile] alll - Date: 2016-05-22 11:56 am (UTC) - Expand

Date: 2016-05-20 12:01 pm (UTC)
From: [personal profile] alll
Удивительно, что у C++ и Java метрика практически одинакова. Хотя казалось бы.

Date: 2016-05-20 12:08 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
Для проектов со 100+ звездами уже не одинакова:

(no subject)

From: [personal profile] alll - Date: 2016-05-20 01:29 pm (UTC) - Expand

(no subject)

From: [identity profile] nponeccop.livejournal.com - Date: 2016-05-20 10:39 pm (UTC) - Expand

Date: 2016-05-20 12:41 pm (UTC)
From: [identity profile] dmzlj.livejournal.com
Из графика мы видим, что (в плане популярности) что эрланг как обычно в жопе, руби уже в жопе, го всё еще в жопе, а вот F# внезапен. На нём что, кто-то правда пишет?

Date: 2016-05-20 12:49 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
С эрлангом я не работал, а только трахался. Потому что те простые, но только что нечитаемые, программы рушились обычно сразу, как авторы садились в самолет СФО-Варшава. А мне трахайся и чини.

Date: 2016-05-20 01:37 pm (UTC)
From: [identity profile] volodymir-k.livejournal.com
> статистическое исследование о связи числа баг-репортов и языков программирования

то есть на программы с определенными языками программирования юзеры даже не пытаются репортать баги: безнадёжно и неинтересно

лучше сразу выкинуть и взять аналоги

корреляция может иметь и другую каузацию: на кложуре-йерланге пишут синьоры, которые вообще всё пишут хорошо
вот какой основной ЯП у джунов?

ещё одна каузация: задачи, которые решаются определёнными ЯП, имеют разную степень специфицированности, часть ишью может быть фича реквестами


КСТАТИ

а как вообще они различали в ишьюсах баги от фича реквестов и дурных хотелок юзера "я так вижу, у вас всё неправильно и кошка у вас дура!"

Date: 2016-05-20 01:57 pm (UTC)
From: [identity profile] voidex.livejournal.com
> а как вообще они различали в ишьюсах баги от фича реквестов и дурных хотелок юзера
Там можно тегировать issue меткой bug

(no subject)

From: [identity profile] volodymir-k.livejournal.com - Date: 2016-05-20 02:13 pm (UTC) - Expand

(no subject)

From: [identity profile] nponeccop.livejournal.com - Date: 2016-05-20 03:35 pm (UTC) - Expand

Date: 2016-05-20 03:20 pm (UTC)
From: [identity profile] nponeccop.livejournal.com
Несколько возражений:

1. 10 звёзд - это очень мало. У моих проектов с 0 пользователей - по 40 звёзд.

2. Чарт отражает любовь авторов к бюрократии. Эрлангисты с рубистами просто бюрократию не любят, а джависты скрупулёзно малейшие бажики репортят.

У меня в одном закрытом проекте 500 ишшуёв, в том числе и дефекты. Кто-то может посчитать это демотивирующей бюрократией и не заниматься такой детализацией.

3. По поводу С++ - так и должно быть. Вокруг С++ много мифов, видимо распространяемых людьми, не работавшими в крестовых шопах и надрачивающими на опенсорс.

У меня в проекте за 15 лет было 2 (два) бага с повреждением памяти, и то в самом начале, пока низкоуровневые вещи писал. 0 утечек. Продвинутые фичи языка (за которые его часто ругают - шаблонное метапрограммирование, запутанное разрешение имён) - не используются. В результате от джавы отличается, внимание, только тем, что надо помнить про RAII и чтобы локальную переменную по ссылке не вернуть.

Date: 2016-05-20 06:56 pm (UTC)
From: [identity profile] binf.livejournal.com
== Продвинутые фичи языка .. - не используются

STL, unique_ptr, вывод типов auto, move-перегрузки тоже в топку?

(no subject)

From: [identity profile] nponeccop.livejournal.com - Date: 2016-05-20 10:43 pm (UTC) - Expand

(no subject)

From: [identity profile] binf.livejournal.com - Date: 2016-05-21 08:06 am (UTC) - Expand

(no subject)

From: [identity profile] nponeccop.livejournal.com - Date: 2016-05-21 10:15 am (UTC) - Expand

(no subject)

From: [identity profile] yauheni akhotnikau - Date: 2016-05-22 04:46 pm (UTC) - Expand

(no subject)

From: [identity profile] nponeccop.livejournal.com - Date: 2016-05-22 05:31 pm (UTC) - Expand

(no subject)

From: [identity profile] yauheni akhotnikau - Date: 2016-05-22 05:54 pm (UTC) - Expand

(no subject)

From: [identity profile] nponeccop.livejournal.com - Date: 2016-05-22 06:30 pm (UTC) - Expand

(no subject)

From: [identity profile] yauheni akhotnikau - Date: 2016-05-22 07:33 pm (UTC) - Expand

(no subject)

From: [identity profile] nponeccop.livejournal.com - Date: 2016-05-22 08:45 pm (UTC) - Expand

(no subject)

From: [identity profile] yauheni akhotnikau - Date: 2016-05-22 09:12 pm (UTC) - Expand

(no subject)

From: [identity profile] andrei-dikun.livejournal.com - Date: 2016-05-23 12:56 pm (UTC) - Expand

(no subject)

From: [identity profile] swizard.livejournal.com - Date: 2016-05-20 08:23 pm (UTC) - Expand

Date: 2016-05-20 06:16 pm (UTC)
From: [identity profile] migmit.livejournal.com
Как бы им объяснить, что типы — это не только и не столько борьба с багами.

Date: 2016-05-21 07:53 am (UTC)
From: [identity profile] valentin budaev (from livejournal.com)
Автор же проверял один конкретный тезис апологетов статической типизации: "типы снижают количество ошибок". Кажется, число багов - вполне корректная метрика тут.
Edited Date: 2016-05-21 07:54 am (UTC)

(no subject)

From: [identity profile] dewshick.livejournal.com - Date: 2016-05-25 09:12 pm (UTC) - Expand

Date: 2016-05-22 03:10 am (UTC)
From: [identity profile] nponeccop.livejournal.com
Ещё соображение: баги с несовпадением типов в динамических языках тривиальны и фиксятся тут же, не попадая в трекер. Ну не могу я представить висящими 100 багов вида "пропущена запятая" или "вместо var написано vars". Да даже "раз в год вместо массива в таком-то месте приходит строка, непонятно откуда"

Date: 2016-05-22 04:37 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Они могут просто выглядеть иначе: "при попытке использовать бэкап выбрасывается исключение undefined is not a function". А что там var вместо vars - это уже увидят потом, когда докопаются до причины.

dynamic vs static

Date: 2016-05-22 02:21 pm (UTC)
From: [identity profile] livejournal.livejournal.com
Пользователь [livejournal.com profile] vasnake сослался на вашу запись в своей записи «dynamic vs static (http://vasnake.livejournal.com/187640.html)» в контексте: [...] Попалась [...]

Date: 2016-05-25 09:08 pm (UTC)
From: [identity profile] dewshick.livejournal.com
получается что js-либы типа left-pad c 10 строками кода,
сравнивались наравне с каким-нибудь жавовским хибернейтом в полтора миллиона строк?

вот уж действительно время писать на кложури

Date: 2016-05-26 03:47 am (UTC)
From: [identity profile] max630.livejournal.com
мне лень читать всю статью, интересно он код тестов включал в объём кода на который делил?

PS: понял, вопрос снимаю
Edited Date: 2016-05-26 03:57 am (UTC)

Profile

thedeemon: (Default)
Dmitry Popov

December 2025

S M T W T F S
 12 3456
789101112 13
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 25th, 2026 04:11 am
Powered by Dreamwidth Studios