Ответы пользователя по тегу Программирование
  • Чем меньше символов, пробелов и пропусков в коде, тем лучше?

    Не правильно.

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

    Как форматировать код — договариваются. Есть общепринятые стандарты форматирования кода (coding style). Например, стандартный для PHP. Или принятый в компании AirBnB для JavaScript.

    Хороший-удобный редактор кода всегда подскажет, где накосячили со стилем вашего кода, почему, и как исправить.
    Ответ написан
    Комментировать
  • Как написать программу угадайка?

    Проще, например, прямо в браузере.
    Понадобится разобраться в основами HTML и JavaScript.
    Начните с отрисовки интерфейса: 5 квадратиков.
    Потом добавьте минимальное взаимодействие: клик по квадратику пусть показывает картинку в нём.

    Чтобы задавать дальнейшие вопросы тут, удобнее всю работу делать онлайн в редакторе jsFiddle
    Ответ написан
    Комментировать
  • Что такое "Уровень абстракции" или "Слой абстракции"?

    Абстракция — буквально «отвлечение», игнорирование ненужных подробностей.

    В программировании пример: вызов метода объекта. Известно, какие аргументы он ждёт, что вернёт в ответ. Но неизвестна и не важна внутренность, как именно это сделано. И можно заменить одну реализацию другой, если останутся теми же аргументы и результат. На этом уровне абстракции.

    В жизни все пользуются лифтами, всем известно, как – зашёл, нажал кнопку этажа, приехал. Лифты разных моделей, брендов, грузоподъёмностей, форм. На уровне абстракции пользователя это кабина с кнопками этажей. И не важно (абстрагируемся) как там что устроено за пределами кабинки. Нажимались бы кнопки и ехал бы лифт.

    Слой абстракции — минимум, необходимый для взаимодействия. Без лишних деталей.
    Ответ написан
    1 комментарий
  • Как можно запрограммировать гравитацию?

    Может, готовое поискать? Например harttle/universe (демо)
    Ответ написан
    Комментировать
  • Что такое обратный вызов в программировании?

    Обратный вызов (англ. callback) — это ещё одна функция, которую вызовут «потом».

    Бытовой аналог – когда отправляешь в письме на радиостанцию пустой конверт со своим же адресом и марками, чтобы в нём прислали ответ.

    Обычно это нужно при асинхронном выполнении — когда строчки кода не последовательно выполняются одна за другой, а запускается (и отпускается) какая-то долгая задача и ещё неизвестно, когда она закончится.

    Например, нужно выполнить HTTP запрос к далёкому серверу и получить от него ответ.

    Тогда в функцию, которая займётся общением с далёким сервером, передают не только параметры запроса, но и callback-функцию, которая будет вызвана после получения ответа, с данными из ответа.
    Ответ написан
    1 комментарий
  • Как быстро снова окунуться в свой же код?

    "Я через месяц отпуска" — то же, что "другой, новый разработчик в проекте".

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

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

    Похожий вопрос (на англ.) на SO: Are there emulators for quantum computers?

    Чтобы поиграть порекомендую IBM Q Experience где в качестве бэкендов предлагаются:
    • 8 настоящих квантовых компьютеров от 1 до 15 кубитов
    • 1 эмулятор на 32 кубита.
    Скрины
    визуальное составление квантовых схем:
    5e104c9888e39754526507.png

    Jupyter Notebook c Python 3
    5e104cc85fa13705406462.png
    Ответ написан
    7 комментариев
  • Бывает ли момент когда нет права на ошибку?

    На собеседовании.
    Ответ написан
    Комментировать
  • Что делать, когда умеешь программировать, но нет идей?

    Нужен другой независимый мозг. В виде товарища, соавтора и единомышленника. Или более широкий коллектив.

    А дальше кофе, мозгоштурмы и реализация идей.
    Ответ написан
    Комментировать
  • Как рассчитать среднее значение на замкнутой шкале?

    Сложить векторы.

    Каждый азимут перевести в пару координат (x, y), полагая длину равной 1.
    Ответ написан
  • Как применяется импликация в программировании?

    wiki смотрели?

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

    if ( выражение A ) {
        if ( выражение B ) {
           сделать_что-то_полезное
        }
           else {
           <font color=Red>сбой</font>
        };
     }

    будет успешно выполняться тогда и только тогда, когда верна импликация A→B. В то же время эти условия можно спокойно написать в одной строке, объединив их оператором конъюнкции.

    if ( выражение A ) and ( выражение B ) {
        сделать_что-то_полезное
     }


    При стандартных опциях компилятора (Delphi, C++ Builder) проверка идет до тех пор, пока результат не станет очевидным, и если А ложно, то (А и В) ложно вне зависимости от В, и не нужно ставить еще один условный оператор.

    //выражение A - ложно
     if ( выражение A ) {
        //Дальше проверка не идет
        ... if ( выражение B ) {
           сделать_что-то_полезное
        } ...
     }


    В функциональных языках импликация может быть не только правилом вычислений, но и видом отношения между данными, то есть обрабатываться (в том числе и выполняться) и создаваться по ходу выполнения программы.
    Ответ написан
    8 комментариев
  • Как создавать объект с большим количеством свойств?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Принимать ассоциативный массив. Недостающие свойства дописывать дефолтными значениями или тошнить exception когда пропущено обязательное свойство.
    Ответ написан
    5 комментариев
  • Алгоритм расчёта оставшегося времени выполнения операции?

    Прогноз можно сделать инертным.

    По событию обновления прогресса (очередной чанк загрузился) скачкообразно меняется значение ожидаемого конца finish_forecast.

    Переменная finish_forecast_display это прогнозируемый момент окончания для показа. Исходя из него и текущего времени плавно обновляем индикатор прогресса.

    Чтобы не было дерганий, finish_forecast_display обновляем не мгновенно, а раз в фикс. интервал времени (раз в 200 ms) двигаем его в сторону текущего значения finish_forecast на дельту, пропорциональную расстоянию - чем ближе, тем медленнее. Тут важна регулярность этих интервалов обновления дисплея.

    Так скорость прогресс-бара будет плавно ускоряться или замедляться, но скачков не будет.

    Похожий эффект в 2D использовал в эмуляции полёта насекомого. Там случайная точка задаёт цель, к которой стремится муха. В примере, правда, не сама муха, а перед ней ещё несколько звеньев невидимой цепочки преследования. Но принцип тот же:

    C ---> N . . . . . . . . . . . T
    T - только что заданный новый момент окончания процесса total * time_passed / current_progress
    C - показываем прогресс бар исходя из этого ожидаемого момента конца всего процесса
    N - в следующем "кадре" С примет значение N.

    N = C + (T - C) / 100
    Ответ написан
    Комментировать
  • Как покрыть полигон прямыми?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    Два параметра можно варьировать: угол решетки и её фазу, смещение линий параллельно самим себе в рамках одного шага решётки.

    При относительно сложной форме фигуры остаётся только перебор вариантов. Сначала с большим шагом, затем уменьшая шаг и уточняя.

    Не совсем понятно, как задана фигура?
    «даны точки границ ее» – это массив точек с небольшим шагом, т.е. контур задан пунктиром, или «углы» прямых отрезков (вся фигура составлена из множества прямых отрезков разной длины).

    Алгоритм примерно такой. Пара (угол, фаза) задаёт множество прямых. Надо пройтись по контуру фигуры, считая пересечения или близость очередной точки контура к одной из прямых. Если контур задан прямыми отрезками ещё проще: для каждого отрезка посчитать число пересечений, исходя только из расстояния краевых точек от одной master-прямой. Например, расстояния 5.2 и 7.3 при шаге решетки 3. 0 не пересекает, 3 пересекает, 6 пересекает, 9 уже нет. Итого 2 пересечения.

    Прямая задаётся уравнением Ax + By + C = 0 Или с угловым коэффициентом y = x(-A/B) - (C/B) Параллельные прямые отличаются значением C.

    Расстояние между параллельными прямыми = |C1 - C2| / sqrt( A2 + B2)

    Расстояние от точки (X,Y) до прямой |AX + BY + C| / sqrt(A2 + B2)
    Ответ написан
    Комментировать
  • Зачем делают вот такую конструкцию?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Очень-крутые сайтоделы внизу своей чисто-HTML страницы добавляют «копирайт (с) Вася Пупкин 2000 год» – иначе они не круты.

    Потом приходится менять год на следующий. И на следующий. Становится лень, и тут они открывают чудный мир PHP и копируют откуда-то код, автоматически подставляющий текущий год в страницу!

    &copy; Вася Пупкин <?php echo date('Y'); ?>

    Вот отсюда всё и начинается..
    Ответ написан
    Комментировать
  • Чем реально полезным можно заняться школьнику знающему программирование?

    «Заявить о себе» можно на крупных публичных площадках:
    1. github – помочь существующему проекту или запилить новый, свой, невероятно полезный многим;
    2. kaggle – разобраться с машинным обучением и научиться точнее всех прогнозировать;
    3. олимпиады.
    Warning обратная сторона медали: в результате попытки заявить о себе может случиться так, что станет очевидным, как много кругом крутых перцев и как до них бесконечно далеко, что угрожает самооценке.
    Ответ написан
    Комментировать
  • Где хранить связки кода (примеры, микропроректы)?

    Сервис по доставке кофе лентяям и всё тот же github )
    Ответ написан
    Комментировать
  • Почему не срабатывает onload() на vk.com?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Так работает:
    var mdk_win = window.open('https://vk.com/mudakoff', 'mdk_win', 'width=600,height=400');
    mdk_win.addEventListener('load', function(){
      console.log('окно MDK загружено');
    });
    Ответ написан
    2 комментария