Ответы пользователя по тегу Программирование
  • Для чего существуют другие парадигмы программирования?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Нельзя в двух словах сказать зачем нужны парадигмы программирования, потому что для этого нужно иметь опыт программирования, чтобы вы могли усвоить ответ.

    Например, ваше представление: "ООП удобен для бизнеса, можно разделять программу на модули" - неверно.
    Модульность появилась задолго до ООП. Бизнес появился задолго до программирования, и ООП и бизнес не слишком и связаны.

    ООП удобно для длительной многократной разработки крупного продукта таким образом, чтобы определенные части кода были максимально изолированы друг от друга. Это не совсем модульность, это изоляция на уровне данных. Это позволяет получать и меньше конфликтов в случае работы нескольких программистов, и меньшее количество затрат времени в случае рефакторинга, и так далее. Но требует больше времени на первоначальный код. В то время как процедурное программирование позволяет быстро получить первый результат, но насколько будет сложно (дорого) его модифицировать и поддерживать - этот вопрос в самой процедурной или функциональной парадигме не затрагивается.

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

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

    И напоследок - полиморфизм и все другие фичи ООП - это уже следствие того, что парадигму стараются сделать максимально гибкой.
    Самая главная суть ООП заключается в следующем:

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

    Так достигается высокая совместимость, упрощается миграция со старых версий в очень зависимых проектах и такая парадигма позволяет очень легко распарралелить процесс разработки.
    Ответ написан
    Комментировать
  • Учить ли c++ в 2018. Для знающего C#?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Если вы считаете, что за месяц, почитав базовую работу с int/string и циклами вы что-то освоили, вы глубоко заблуждаетесь, особенно учитывая ваши другие вопросы.

    Изучите хотя бы один язык, тот же C# до уровня уверенного джуниора, потом уже будете считать себя "знающим C#", потому что сейчас вы его совершенно не знаете.
    Ответ написан
    5 комментариев
  • Чем отличается анализ бинарного кода от статического и какие у него преимущества?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Похоже, вы путаете "анализ бинарного кода" и "статический анализ кода".

    У них некорректно сравнивать преимущества друг перед другом, так как это совершенно разные вещи.
    Ответ написан
    2 комментария
  • Как научиться учить программирование?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    А просто со временем, до всех доходит, что программирование это не интересные исследования, познания неведомого как в фантастике, прикручивание двумя кликами новых движков.
    А на деле - это еще и множество рутинной и кропотливой работы, которая по сути - скучная, однообразная, И ее процентов 80.

    Вы это наконец поняли. Какую мотивацию вы хотите от нудной и кропотливой работы - неясно. Мотивация может быть в зарплате, в создании своего продукта, если он есть. А так - человек должен уметь мотивировать себя сам, а не ждать пока его рассмешат клоуны.
    Ответ написан
    4 комментария
  • Как получить список IP адресов от DHCP сервера?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Никак.
    DHCP сервер выдает клиенту инфу, которая касается именно этого клиента, а не всех остальных участниках сети.

    Администратор может посмотреть информацию о текущих leases через DHCP админку, но leases это не список текущих IP, это список текущих leases. То есть клиент появился, запросил IP, поработал и отключился. IP все еще на нем "висит". Если подключится другой клиент, то освобожденный IP может быть выдан ему, в зависимости от expiration настроек. Но DHCP не обзванивает клиентов на тему "эй, ты онлайн или нет".
    И для этого нужно иметь права админа этого DHCP.

    Если вы админ - API доступен через тот же powershell - посмотрите Get-DHCPServerv4scope | Get-DHCPServerv4Lease.
    Ответ написан
    1 комментарий
  • Cвоя небольшая удаленная веб-студия, как?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    "Хотел бы себе небольшую удаленную команду по разработке сайтов."
    А вот где искать заказы?"


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

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Добавить еще один сетевой интерфейс?
    Добавить еще один IP на этот же интерфейс?

    round-robin и распределить нагрузку на несколько машин.
    Ответ написан
    2 комментария
  • Как объединить каталоги производителей производящих аналогичную продукцию?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    На этом некоторые создают свой собственный бизнес.

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Музыкальная шкатулка, механические игрушки, механический сумматор.
    Посмотрите
    https://geektimes.ru/post/282990/

    Все это при помощи транзисторов оказалось возможным перевести на уровень электросигналов, уменьшить элементы в размерах в миллионы раз, и получить миллионы подобных узлов. То есть процессор состоит из простых узлов, в очень сложной конструкции. Вот и все.
    Ответ написан
    Комментировать
  • Как можно перевести персонажа игры вместе с реальной одеждой в формат 3д?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Ну или берете 3д редактор и создаете модель.
    Или берете 3д сканер, одеваете предмет на манекен и сканируете.

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Просто подробно почитайте википедию о том, как работают скриптовые языки и все будет понятно.
    https://ru.wikipedia.org/wiki/%D0%A1%D1%86%D0%B5%D...

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Простите, но на работе вам платят деньги не за развитие, а за выполненные задачи.

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

    Развиваться нужно самостоятельно. А работа вам дает возможность на практике пробовать то, что вы узнаете новое.
    Ответ написан
    Комментировать
  • Выбор дистрибутива Линукс для разработчика?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    "Когда отрубают свет - комп вырубается, при повторном включении не может загрузить ОС, а постоянно возиться с восстановлением системы как-то не особо хорошо."

    От такого спасает не ОС, а бесперебойник. Ибо файловая система у многих Линуксов таже самая, и любой Линукс (за исключением embedded вариантов, где внезапное отключение питания специально предусмотрен), может от этого пострадать.
    Ответ написан
    Комментировать
  • Зачем нужна сериализация?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Например, вам нужно передать структуру данных на удаленный сервер.
    Структура данных выглядит примерно так
    struct {
    int age=17;
    string name="Vasya";
    date birthday="01/01/2001"
    }

    На удаленный сервер мы собираемся передавать обычным HTTP запросом, в который в принципе можно зааттачить XML, а можно передать просто одной строкой прямо в заголовке. Для этого мы можем нашу структуру данных серилизовать в строку, передать туда, там распаковать и получить сразу структуру.
    Разница в том, что мы на той стороне будем не "парсить" неизвестные данные, а именно десерилизовать.
    Ответ написан
    Комментировать
  • Как можно двигать курсор при наборе текст, не используя стандартные клавиши?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    vi/vim позволяют перемещаться по тексту кучей различных способов, кроме стрелочек.
    Да и вместо стрелочек можно использовать hjkl
    Ответ написан
    Комментировать
  • Есть ли программа ,которая дает возможность сделать снимок(скриншоты) файловой системы?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Есть так называемые "нулевые архиваторы", создающие архив, в котором хранится файловая структура, внутри файлов - возможно какая-то метаинформация и каталогеры

    Например vvv.exe, который можно добавить в FAR и бегать по таким архивам обычным способом.
    plugring.farmanager.com/plugin.php?pid=758&l=ru

    Каталогер
    https://sourceforge.net/projects/vvvapp/
    Ответ написан
    Комментировать
  • Знаете ли вы площадку для соревнований между ИИ?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Ответ написан
    Комментировать
  • Как спроектировать архитектуру большого проекта с начальным знанием программирования?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    К сожалению с начальным знанием программирования - никак.
    Вы не можете привлекать сторонних разработчиков, но уже привлекаете их через Тостер.

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

    Как говорят - оптимизация до оптимизации не нужна.

    У меня был опыт запуска интернет-магазина во времена, когда их было десяток на всю страну. Первый интернет-магазин мы писали почти полгода, внедрив в него тысячи фич, которые оказались невостребованными. Через год проект себя отбил, и мы заказали не редизайн а весь магазин с нуля. Разработка шла 2 месяца, обошлась в 4 раза дешевле. Функционал стал гораздо удобнее. И мы поняли, что в первый раз надо было тоже пойти по более простому пути, тогда мы мы запустились на 4 месяца раньше и отбились бы за полгода.
    Ответ написан
    1 комментарий
  • Как тестировать функционал 1 раз и быть уверенным, что он не "сломался"?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Никак. regression тестирование как раз и занимается тем, что проверяет не сломалось ли ничего из старого функционала.
    Автоматизируйте.
    Ответ написан
    Комментировать
  • Можно-ли проверить соответствует-ли бинарик исходному коду?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    В зависимости от версии компилятора, от флагов оптимизации и используемых библиотек, конечный бинарник может получаться разным, поэтому вы можете сравнить только воспроизведя оригинальную среду, в которой создавался бинарник.
    Частным случаем проверки можно считать цифровую подпись, как доказательство того, что текущий бинарник компилировался именно автором (компанией), а не кем-то, кто взял исходники и скомпилировал у себя, добавив что-то лишнее.

    А если взять например java, там в .jar файл еще куча timestamp добавляется при сборке, поэтому КАЖДЫЙ раз будет разный хеш у бинарника.
    Ответ написан
    Комментировать