Главное Свежее Вакансии Образование

Stash +16

Полезности для разработчиков. Сообщество отбирает код методом голосования
Подписаться
Информация о проекте
Обсуждение проекта
Выбрать файл
Taras Nikitin
Вопроса собственно два:

1. Зачем вы создали ресурс, который распространяет и поощряет заведомо плохой, не годный код?
Примеры:
http://gostash.it/ru/stashes/304 - пояснение: "Класс RecursiveDirectoryIterator предоставляет интерфейс для рекурсивного перебора каталогов".
Примеры далее - это или сомнительный в плане безопасности код или чудовищно не оптимальный с точки зрения загрузки процессора и выделения памяти:
http://gostash.it/ru/stashes/291
http://gostash.it/ru/stashes/289
http://gostash.it/ru/stashes/283

2. Интересно, вы понимаете, что вам и вашим детям придётся жить в мире, где люди взращенные на таком не качественном коде создадут код алгоритмов в бортовых компьютерах автомобилей, самолётов, оборудовании больниц, что увеличит риск возникновения трагичных последствий?
Ответить
Stash
Полезности для разработчиков. Сообщество отбирает код методом голосования
Alexander Makarov
1. Мы создали инструмент. Контент модерируется сообществом. Если что-то вызывает сомнения — минусуйте и комментируйте. Особенно интересно, чем http://gostash.it/ru/stashes/289 не безопасен или не оптимален.
2. См. пункт №1. Голосуйте и качественный код будет виден, а не качественный потонет. И будет вашим детям хорошо.
Ответить
Taras Nikitin
> Особенно интересно, чем http://gostash.it/ru/stashes/289 не безопасен или не оптимален.

Вот, в этом и проблема - вы даже этого не понимаете :)

Проводим тест, на PHP, сделаем 10 млн раз:
$c0=$a0; $a0=$b0; $b0=$c0;
$c1=$a1; $a1=$b1; $b1=$c1;
...
Время выполнения (по 3 замерам среднее):
0.23009300231934 секунд

Теперь 10 млн раз:
list($a0, $b0) = [$b0, $a0];
list($a1, $b1) = [$b1, $a1];
...
Время выполнения (по 3 замерам среднее):
1.2122149467468 секунд

Процессор тот же, всё то же.
Переменные $a0, $a1... инициализированы заранее (до измерения времени по обмену данными, инициализация не включена в это время).

Почему же так?
При обмене между двумя переменными через третью, код: "$c=$a; $a=$b; $b=$c;" PHP задействует порядка 6 переменных в регистрах процессора, а именно: адрес переменной $a в памяти, длина данных в переменной $a и так для $b и $c.

При обмене вида данными через 2 массива число задействованных регистров возрастает, для этого теперь нужно хранить: адрес в памяти массива источника, длина массива источника, адрес в памяти переменной $a, длина данных в $a то же для $b и то же для массива приёмника, так как массив является сложной структурой то есть ещё ряд служебных данных описывающих массив, эта структура гораздо более объёмная, чем та, что описывает одиночную переменную, хуже того, массивы в PHP являются хешами, то есть нет как такового индекса элемента, для массива строится ещё и B-дерево имён его ячеек.
Всё это и снижает производительность.

Надеюсь, демонстрации наглядной хватило, что бы понять, что нельзя оценивать код обществом, это сродни оценке вашего здоровья прохожими на улице, безусловно, среди 1000 прохожих может оказаться 1-2 врача, но их "минусить за трепанацию" будет недостаточно что бы перебить "900 плюсить за трепанацию" и это для лечения мозоли на пятке :)

Вот такая глобальная проблемка рисуется в вашем проекте, в виде: "трепенация черепа как лечение мозоли на пятке" и по причине наличия этой проблемы я и не пойду к вам регистрироваться, так как не хочется тратить время становясь 3-им прохожим из 1000, который хоть что-то, по минимуму понимает в сути дела. А я ведь даже не врач из того сравнения выше, я ведь просто в гардеробе поликлиники работаю, просто слышал, что трепанацией мозоли не лечат.
Ответить
Stash
Полезности для разработчиков. Сообщество отбирает код методом голосования
Alexander Makarov
А теперь посчитаем, сколько раз обмен переменных используется в реальном коде. Сортировки сразу исключаем потому как в PHP руками сортировки практически никто не пишет. Получится от ноля до сотни. Порядок времени выполнения в этом случае не имеет никакого значения. Разница между десятимиллионными частями секунды не проявит себя никогда. Один вызов метода класса будет намного накладней. Теперь что, отказаться от классов?

Ваш комментарий, с технической точки зрения, конечно, интересен потому как, если всё-таки угораздит кого-то сделать миллион обменов переменных, оно может и понадобится. Но гораздо логичнее было бы его видеть под кодом http://gostash.it/ru/stashes/289 вместе с минусом.

Для регистрации, если что, даже вводить ничего не надо. Сервис удовлетворится вашим аккаунтом GitHub, VK или Facebook. Проголосовать займёт у вас пару секунд.
Ответить
Taras Nikitin
Я, как посетитель, указал на проблемы Вашего ресурса (даже провёл наглядную аналогию - с прохожими на улице и здоровьем), Ваше дело, как владельцев ресурса или проигнорировать написанное мной или потратить силы и время на устранение проблемы (включая продумывание механизма устранения проблемы).
Что бы я где-то регистрировался, мне гораздо важнее не время которое я потрачу на регистрацию, а вот такие факторы:
+ Полезность ресурса, как источника информации для меня (моей деятельности, моего бизнеса).
+ Репутация ресурса, составленная моим разумом на основе информации, которая опубликована на ресурсе (и по результатам обсуждения ресурса с знакомыми компетентными в области в которой ресурс предлагает информацию).
Так если на Вашем ресурсе предлагают код такого уровня уже на главной странице (а значит это положительный, качественный код по мнению сообщества ресурса), значит этот ресурс не просто не имеет ценности для меня, так ещё и имеет глубоко отрицательный рейтинг (естественно в контексте разработки кода, а не вообще).

Так или иначе, спасибо, что не только прочитали, но даже написали ответы.
Успехов Вам в развитии. Искренне желаю Вам, что бы я однажды начал сильно сожалеть, что не зарегистрировался на Вашем ресурсе, пока это было ещё можно и бесплатно.
Ответить
Stash
Полезности для разработчиков. Сообщество отбирает код методом голосования
Alexander Makarov
За мнение в любом случае спасибо. Есть над чем подумать.
Ответить
Stash
Полезности для разработчиков. Сообщество отбирает код методом голосования
Дамир Фаттахов
Будет бесплатно - всегда.
Ответить
Stash
Полезности для разработчиков. Сообщество отбирает код методом голосования
Guyver Robotics
Автономные роботы - сделаем за вас тяжелую работу
Игорь Гурский
Будет ли в будущем сегментация по языкам? Или может даже более глубокое (Язык -> Паттерн {если использовался})?
Ответить
Stash
Полезности для разработчиков. Сообщество отбирает код методом голосования
Дамир Фаттахов
Спасибо за вопрос, Игорь

Каждый стэш привязан к языку. Внизу каждого стэша, выводится список тегов, там самым первым идёт язык. Поэтому сегментация у нас уже есть. Вот так, по конкретному языку можно посмотреть опубликованные стэши — http://gostash.ru/lang/javascript

Скорее всего в будущем появится страница со список языков. Мы придумаем вариант вывода языков более интересным.
Ответить
Tucanus
3D-печать иначе
Григорий 10016
Приветствую! Куда можно написать по вопросу сотрудничества?
Ответить
Stash
Полезности для разработчиков. Сообщество отбирает код методом голосования
Дамир Фаттахов
Добрый вечер, Григорий
На почту — post@damir.in
Ответить

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.