Ответы пользователя по тегу Программирование
  • Циклы. While, do while, for, чем отличаются?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Нам в школе так обьяснили:
    while - в зависимости от условия тело цикла может быть не выполнено ни разу.
    do while - тело цикла будет выполнено минимум один раз.

    ну а for - будет выполняется для выбраных элементов последовательности (какие это будут элементы - указывается в условии). Тут можно задать периодичность, например, для каждого второго элемента.
    Ответ написан
    Комментировать
  • Программирование и наука, с чего начать?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Согласен с SEOVirus , игры - одна из самых сложных, широких и обьемных прикладных областей информатики.
    Из языков, изучите python. Чтобы исследовать прикладные области информатики, он подходит очень хорошо. Для него есть масса библиотек для практически любых задач, от биоинформатики, до компьютерного зрения. Он даже дле микроконтроллеров есть. чем он удобен, он не стоит у вас на пути, на нем можно делать быстрые наброски, для него есть интерпретаторы онлайн напр. www.repl.it и он достаточно быстрый.
    Ответ написан
    Комментировать
  • Как залезть на несколько уровней абстракции ниже, не плодя кривой код?

    lxsmkv
    @lxsmkv
    Test automation engineer
    может запрашивать только команды для определенного сервиса? при таком подходе можно выполнять обработку асинхронно. будет выигрыш в перформансе. (чем больше логики в передающем механизме тем больше он становится узким местом. парсинг xml вообще дело сравнительно медленное) тогда разбирать сваленные в кучу данные придется сервису подающему вам данные.
    Ответ написан
    Комментировать
  • Как назвать простейший класс?

    lxsmkv
    @lxsmkv
    Test automation engineer
    "$1"
    Обоснование: пока вы придумываете название классам - индусы деплоят свои поделки на продакшн.
    Ответ написан
    2 комментария
  • Что является основной причиной говнокода?

    lxsmkv
    @lxsmkv
    Test automation engineer
    В английском это называется duct tape programming - программирование "изолентой".
    Это значит мы записываем в код первое пришедшее в голову решение, не раздумывая, не задумываясь о последствиях и пр. Главное чтобы было "сделано".
    Еще указывают на проблему такого подхода, что человек который делает тяп-ляп, но быстро в глазах заказчика или менеджера будет незаслуженно выглядеть героем.
    Ответ написан
    Комментировать
  • Код с комментариями - избыточность?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Это просто кровавый энтерпрайз. У нас тоже так. У нас разрабы сразу говорят: "Не пытайся понять все это сразу, тебе понадобится минимум полгода чтобы понять и освоить устройство приложения и его частей [на таком уровне, чтобы работать автономно]."
    Вам нужно больше задавать вопосов коллегам. Вы не успеете умереть от стыда - вопросы кончатся быстрее:)
    Как молвит японская поговорка: "Спросить - позор на один раз. Не знать - позор на всю жизнь".
    У нас например один из архитекторов добровольно сделал курс обзорных презентаций (3 раза по часу) по архитектуре приложения и это здорово помогло. Спросите тимлида, может он подговорит какого-нибудь опытного программиста или архитектора на такое доброе дело. Все понимают что новичкам надо помогать. Но сами по себе они не бросят все, чтобы заполнять ваши пробелы. Но все без проблем поделятся опытом. Это же для любого человека приятно - показать свои знания. Так что вы не бойтесь, они только на вид такие неприступные. Сядьте рядом с каким нибудь особенно разговорчивым и веселым коллегой. Он вам будет потихоньку все обьяснять. Посмотрите как он анализирует баги, и задавайте вопросы, это много дает. Никто не ожидает что от вас на первых порах будет много пользы. Так что не переживайте. Но все оценят если вы будете быстро впитывать полученные знания. У нас некоторые новички за 3 месяца освоились а некоторые и за год не в зуб коленом.
    Ответ написан
    Комментировать
  • Как развиваться в программировании не привязываясь к языку?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Как писать бестселлеры не привязываясь к языку. Нет, не получится. У каждого языка своя парадигма, свой менталитет. Читать много. То что понравится брать на заметку. Читать про сами языки, как они возникли, какие проблемы они хотели решить когда были созданы. Какие возможности эти языки предлагают, читать сравнительные статьи, холивары даже. Читать код всяких библиотек и sdk. Он обычно написан опытными программистами.
    Изучатъ историю становления компьютерных вычислений как дисциплины. Пробовать разные языки, хотя бы на уровне базовых туториалов. Про паттерны почитайте. Например www.gameprogrammingpatterns.com - там рассматриваются некоторые в контексте разработки игр. В контексте игростроя вообще концепции легче воспринимаются, это область применения которая понятна и знакома практически любому человеку. Так же, например если хочешь получить практические навыки в автоматизации, нет ничего лучше чем начать с написания игровых ботов. Игры такой контекст который задействует практически все технологии и области компьютерных знаний.
    Ответ написан
    Комментировать
  • Чему учиться для работы из дома?

    lxsmkv
    @lxsmkv
    Test automation engineer
    А фирм нет где нужно какую-нибудь оптимизацию делать? Это ведь прямой профиль экономиста. Грузоперевозки, склады. Закуп. Процессы оптимизировать. Маркетинг. Планирование смен. Бухгалтерия. Налогообложение. Да не перечислить всего. У экономиста с дипломом выбор задач колоссальный. Конечно если в университете ничему из этого не научили, то обидно конечно. И программистом становиться не выход. На это уйдет дофига времени. Идите тестировщиком, это единственная специальность где порог входа самый низкий, и логика вам там тоже пригодится. А если постараться можно стать хорошим специалистом.
    Ответ написан
  • Как назвать булеву переменную которая указывает делать что-то или не делать?

    lxsmkv
    @lxsmkv
    Test automation engineer
    filteringOptionEnabled - включена ли опция пользователем.
    если говорить should_ то получается должна быть включена и не до конца сразу ясно это ее текущее состояние или желаемое.
    если говорить active - это активен ли фильтр, он может быть включен пользователем в опциях но не быть активным, потому что в данный момент нечего фильтровать.

    Видел булеву переменную она называлась EnabledDisabledServiceState - Это означало ... щас мозги в кучу соберу .. оключил ли пользователь сервис, при этом показывалась соответствующая иконка, что сервис отключен пользователем.
    Ответ написан
    Комментировать
  • Для чего существуют другие парадигмы программирования?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Любую программу можно написать с любым подходом. Разница лишь в том, насколько удобно будет моделировать законы реального мира в программе. ООП потому распространено, что провести аналогию между программным обьектом и обьектом из реального мира очень легко. При программировании предметных областей которые не имеют осязаямых участников, могут быть удобны другие парадигмы. По той же причине когда нужно в ООП отображать неосязаемые сущности, могут возникать определенные сложности с именованием классов. Может замечали. Не все рифмуется в эту парадигму. Иногда вам нужны просто вычисления, тогда декомпозиция задачи на объекты не нужна совсем.
    Парадигма это всего лишь перспектива взгляда на одно и то же. В зависимости от того с какой стороны мы смотрим на предмет, очередность (приоритет) компонент его составляющих для зрителя будет меняться. В какой-то задаче может быть важно время, а в какой-то цвет, а в какой-то измерение. Что является единицей анализа в честь того и парадигма.
    Ответ написан
    Комментировать
  • Можно ли считать профиль в Windows как отдельную среду для работы?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Вопрос в том, достаточно ли вам для проведения конкретного набора тестов чистого пользовательского аккаунта или вам нужна чистая инсталляция системы. На этот вопрос можно ответить только зная что вы хотите протестировать. В принципе сбоить может и с новым аккаунтом и с чистой инсталляцией. Будут совершенно разные ошибки. Есть программы которые по причине недоработанности не запускаются из под пользователя, а только под администратором. Есть сбои когда программа при запуске из под пользователя дает сбой на всю систему. Столько разных сценариев, что может пойти не так. Если допустить, что вы хотите протестировать процесс инсталляции программы, то логично, что тестировать нужно и на чистой машине и под пользователем и под ограниченным пользователем, и под администратором. Поскольку для такого теста это определяющие факторы. А если вы тестируете нагрузку на память программы во время выполнения, то профиль пользователя вряд ли будет ключевым фактором. Опять же, если вы тестируете сохранение глобальных настроек программы, то тестировать нужно под как минимум двумя разными профилями, соответственно.
    Ответ написан
    Комментировать
  • Как понять какие вещи в программе налдо универсализировать?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Наверное общее правило такое: "если значение от чего-то зависит, нужно делать его гибким".
    Ответ написан
    Комментировать
  • Как стать хорошим программистом на работе?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Во первых, что такое "хороший" программист, это сложно определить. У нас тоже есть программисты, они вроде работают и деньги получают, и с образованием, а когда в продукте обнаруживаются проблемы, выясняется что логгирования в компонентах нет, о юнит-тестах никто не подумал при написании, а теперь придется рефакторить чтобы их туда прикрутить, да и если бы заранее подумали о тестировании и написали юнит тесты, то этих проблем бы не возникло сейчас. А теперь чтобы исправить проблему, нужно перекраивать код целыми слоями, а продукт уже в фазе стабилизации и просто так туда изменения не зальешь. Ну ладно можно сказать это джуниоры напортачили. Но у нас и сениоры есть, под чьим руководством они работают. И сениоры прекрасно знают как делать правильно но не требуют этого от остальных.
    Я все это к чему - можно фигачить код со скоростью электровеника, а можно писать его медленно. Скорость написания кода не говорит о том хороший программист или плохой ничего. Совсем ничего. Можно быстро писать плохой код.
    Гораздо важнее правильно мыслить. Для этого нужно читать книжки типа Clean Code. Юнит тестирование тоже. Нужно приобрести понимание хорошо и плохо. Если вы читаете код и в нем черт ногу сломит. Может это плохой код?
    Чтобы набить руку в программировании нужно им заниматься. У меня постоянно открыт repl.it где я набиваю мелкие куски кода для развлечения. Нужно постоянно тренироваться, "ни дня без строчки", только тогда мозг перейдет из режима отторжения в режим обучения. Заставляйте себя, заставляйте себя разобраться. Разберите как работют лямбды, list comprehension. разберитесь в *args, **kwargs. Выясните разницу между __new__ и __init__. Для новичка это приличная нагрузка, но вы должны поверить в то что осилите это. Иначе будете всегда пасовать.
    Почитайте гайдлайны по питону docs.python-guide.org/en/latest/writing/style
    Питон очень стройный язык, он вам не сломает мозг как какая нибудь ява. Читайте хаб по питону на тостере, на хабре. Я например пытаюсь решить задачки которые пролетают тут по хабу, и улучшил свои знания питона за счет этого.
    Удачи, надеюсь смог хоть как-то помочь.
    Ответ написан
    5 комментариев
  • Какую специальность в IT выбрать?

    lxsmkv
    @lxsmkv
    Test automation engineer
    если душа лежит к математике идите на прикладную математику. программная инженерия - слишком расплывчатая вещь, которой можно научиться только на собственном опыте (имхо). А прикладная математика она осязаема и знания математики, как мне кажется, усиливают любого разработчика. Это умение абстрактно мыслить, оно незаменимо, и вы его получите уже во время учебы. А на программной инженерии в худшем случае будут лить воду, про стандарты и как лучше - но на практике все совсем не так, как должно быть в теории.
    Ответ написан
    Комментировать
  • Зачем нужна сериализация?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Потому что сокет понимает только потоки данных, поскольку основан на протоколе tcp/ip?
    Ответ написан
    Комментировать
  • Можно ли в линуксе передать экземпляр класса из одного процесса в другой и выполнить с ним действия?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Одна тема называется [python] interprocess communication,
    a другая [python] object serialization
    А это наверное ответ на ваш вопрос
    Ответ написан
    1 комментарий
  • Что нужно для развития логики?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Решайте задачки по программированию. Попробуйте обучающие игры типа codecombat.com, js.checkio.org, screeps.com, codewars.com, codehunt.com ( правда тут java /c#)
    Попробуйте порешать задачки на этих интерактивных курсах: repl.it/community/classrooms/24696 repl.it/community/classrooms/26415
    и тут coderbyte.com

    Рекомендую еще книжку Самоучитель JavaScript (Дмитриева М.) Там на яваскрипте решаются серьезные алгоритмические задачи.

    Учебник по логике вам мало чем поможет, так же как и учебник по физкультуре мало поможет научиться подтягиваться на турнике по 20 раз.
    Ответ написан
    Комментировать
  • В программисты или в тестировщики (идти)?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Предлагаю вам проверочное задание-шутку для профориентации:
    Посмотрите на этот
    юнит-тест
    public class ListMapTest {
    
        @Test
        public void testListMap() {
            ListMap<String, String> listMap = new ListMap<String, String>();
            listMap.put("bob", "hello");
            assert "hello".equals(listMap.get("bob"));
            assert "hello".equals(listMap.remove("bob"));
            assert listMap.size() == 0;
            assert listMap.isEmpty();
    
            listMap.put("abc", "1");
            listMap.put("def", "2");
            listMap.put("ghi", "3");
            listMap.put("jkl", "4");
            listMap.put("mno", "5");
            assert "3".equals(listMap.get("ghi"));
            assert listMap.size() == 5;
            assert !listMap.isEmpty();
    
            // check iteration order, should be consistent
            for (int i = 0; i < listMap.size(); i++) {
                String expectedValue = Integer.toString(i + 1);
                String key = listMap.getKey(i);
                String value = listMap.getValue(i);
                Entry<String, String> entry = listMap.getEntry(i);
                assert key.equals(entry.getKey());
                assert value.equals(entry.getValue());
                assert expectedValue.equals(value);
            }
        }
    }


    (из опенсорсного игрового движка jmonkeyengine .)

    Что можно в нем улучшить ?

    Варианты ответов:
    1. ничего
    2. использовать junit
    3. разбить на несколько тестов и добавить недостающие проверки


    Ключ: если вы ответили 1. или 2. - вам в разработчики.
    Ответ написан
    1 комментарий
  • Как быстро попробовать себя в разных сферах?

    lxsmkv
    @lxsmkv
    Test automation engineer
    попробуйте по видеотуториалу, и что у вас лучше пойдет, на том и остановитесь. Есть конечно большая опасность что тема в видеотуториале будет просто неудачно обьяснена (вообще качество обучающего материала часто оставляет желать лучшего), так что пробуйте несколько разных туториалов. Ну и конечно нужно попытаться понять в какой области применения у вас наибольший интерес. Если вы считаете что веб-приложения это будущее, значит вам туда, если вас интересует интернет вещей, то вам туда, если вас интересует анализ и обработка данных то туда, и.т.п.
    Определить к какой прикладной области у вас наибольший интерес, может оказаться трудно, особенно если вся сфера для вас в новинку. Но как способ, попробуйте читать весь подряд хабрахабр, и смотрите какие темы у вас вызывают наибольший интерес.
    Ответ написан
    Комментировать
  • Клавиатура для программиста, какую выбрать?

    lxsmkv
    @lxsmkv
    Test automation engineer
    для печати только механика.
    Ответ написан
    2 комментария