Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 30
×
Chief Scientist в VideoGorillas
  • Лицензия частного пилота

    Недавно сам опрашивал знакомых, которые получали PPL или еще учатся. Соответственно, получил крайне положительные отзывы про УТЦ Авиатор и про Аэропракт.

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

  • Кремниевая долина в Украине

    В Суоми тоже должны быть недовольны. Как и в Дойчланде.

  • Кремниевая долина в Украине

    В чем-то это правда, но намоленность там другая была. Силиконка выросла из Стэнфорда (центральная улица Пало-Альто прямо оттуда практически и идет), где во время войны (не той, что во Вьетнаме и одновременно с пиком популярности ЛСД) собрали огромное количество прекрасных специалистов, которые по окончании этой самой войны занялись мирными проектами.

  • Как понимать чужой код

    Да как будто же я хоть что-то написал против ревью, конвенций, паттернов, документации, комментариев, SOLID, разумного именования и здравой простоты! Я же тут не умозрительные гипотезы в голове сочиняю. Я прекрасно знаю какие места у меня в коде будут 200 раз менять и рефакторить, а куда никогда не ступит рука человека. И последние покрыты тестами так, чтобы уж точно туда лазить не пришлось, а если кто и залезет и поломает, то тесты упадут. Даже если взять пример отсюда: вы можете придумать разумную ситуацию в которой формошлеп решит рефакторить работающую функцию подсчета md5, принципиально при этом не разбираясь предварительно как она работает? А то тут же предлагают мне писать код CV библиотеки так, чтобы его менял человек, который не знает алгоритма, реализацию которого меняет, и ниоткуда кроме названий переменных этот алгоритм изучать не желает.

  • Как понимать чужой код

    Начнем с того, что я никогда не возьму на проект, в котором есть нетривиальная логика, формошлепа Васю — пусть себе пишет опердень.

    Тут все вот пишут про паттерны, а ведь они тоже неочевидны некоторым формошлепам. Не писать же в каждом визиторе ссылку на вики или на книжку GoF на Амазоне.

  • Как понимать чужой код

    Она обычно пишется после кода и другими людьми. Или не пишется вообще.

    А если она таки есть, то это действительно хороший вариант.

  • Как понимать чужой код

    Иногда объяснение занимает статью в Википедии. Известный пример — Fast inverse square root.

  • Как понимать чужой код

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

    В общем, если вы сделаете это лучше/быстрее/красивее, то я (и далеко не только я) буду рад, признателен и с радостью перейду на вашу библиотеку. Только не трактуйте это как «сперва добейся» — это действительно было бы очень полезно, да и решение подобных задач интереснее 95 (а может и 99) процентов того, что у нас делают.

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

  • Как понимать чужой код

    Реальные примеры легко найти в любом хорошо оптимизированном коде видео или аудио кодеков, обработке звука или изображения. Последнее, что помню точно видел из открытого кода — boofcv. Можете почитать если интересно.

    В общем, по вашим возражениям понятно, что вы неверно трактовали суть моих. Особенно это понятно из того, что вы старательно подчеркиваете абсурдность того, что я привел в качестве примера абсурдности.

    Я не пытаюсь сказать, что все равно как что называть и переменные h, v, a, G являются отличными и универсальными. Просто не возводите самодокументирующий код в абсолют.

    Make things as simple as possible, but not simpler.

  • Как понимать чужой код

    LUT — это таки стандартное обозначение, понятнее, чем table. Но даже когда вы знаете, что там синусы (чего-то), то вы в название не вложите то, что это sin((2n + 1)*PI/6) например. Названия не всесильны, надо понимать что там делается.

    Способов посчитать факториал много, но ни один из имеющих практическую пользу не будет выглядеть как факториал для человека, который не понимает стоящей за этим теории. Если мы говорим о том, что вам и не надо читать как он реализован, то вам должно быть все равно какие там обозначения, а если вы все-таки собираетесь читать что именно делает этот код, то не выучив матчасть вы не сможете этого сделать даже при самых понятных названиях переменных. Во многих случаях и в комментариях прийдется писать статью достойную википедии чтобы что-то попытаться прояснить читателю не знакомому с предметной областью.

    У меня нет проблем с тем, чтобы отличать читабельность от изящности. Иногда приходится жертвовать и тем и другим.

  • Как понимать чужой код

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

    Если lookup таблица будет называться, например, sinLUT, то вам от этого алгоритм редко станет понятнее, по крайней мере пока вы не прочитаете код, который эту таблицу инициализирует. Придумывание хороших и понятных имен и правда является одной из самых важных и нередко самых сложных задач, но глупо думать, что до минификации яваскриптового кода о его красоте можно было судить не понимая что он делает и насколько сильно его автор вынужден был жертвовать читабельностью ради скорости. Вы же не думаете, что, например, факториал в реальной жизни считают как function factorial(n) { return n ? n * factorial(n - 1) : 1; } ?

  • Как понимать чужой код

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

    Код, конечно, чаще всего действительно непонятен именно потому, что плохо написан, но есть еще куча других причин, например упомянутое автором знание предметной области или оптимизация (наверняка некоторые из переменных внешнего контекста из примера с md5 — это какие-то lookup таблицы).

    Но идею, что код во многих случаях понимать не надо поддерживаю двумя руками: ради этого же и придумывали инкапсуляцию.

  • Agile, который вначале радует, а затем вызывает депрессию

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

    В результате есть как минимум 2 разных аджайла — один для заказчика и один для разработчиков. В том, что для заказчика, есть частые релизы и предсказуемость, а в том, что для разработчиков — отсутствие работы, которая становится ненужной за время выполнения проекта и возможность оценивать сложность задач не в самом начале проекта, а в процессе.

    Получается, что теоретически давление на программистов как раз должно уменьшится, особенно с учетом того, что его частично «экранирует» скрам-мастер. Но это происходит только в рекламной версии для программистов, так как заказчик требует с них так, как ему рассказали в рекламе. Да и заказчик обещанный порядок и предсказуемость получает далеко не всегда, ведь программисты хотят обещанной им независимости.

    Реально, конечно, всегда выходит что-то среднее и, если не перегибать палку, оно для большинства участников процесса довольно комфортно. Если подходить ко всему с умом. Если...