Задать вопрос
Ответы пользователя по тегу Программирование
  • Из-за чего программа C++ на amd работает быстрее чем на intel?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Из-за того, что процессоры от разных производителей обладают разной производительностью, внезапно, из-за отличий в архитектуре, командах, транзисторах, частотах, кэшах и во всём остальном. Сюрприз! А еще есть такие факторы как: кэши, оперативная память, дисковая подсистема, запущенные приложения, сервисы, разные ОС, разные чипсеты, разные биосы, да даже вентилятор на процессоре может влиять на производительность, из-за которого турбобуст какой-нибудь включится или выключится, и еще целый вагон других факторов.
    Ответ написан
    5 комментариев
  • Как декомпозировать задачи, с которыми ты впервые сталкиваешься?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Искать, читать, анализировать, исследовать, делать выводы. Какие тут еще могут быть варианты-то? Ну, кроме варианта напрячь кого-то, а самому пойти пить чай/кофе с пончиками. Логика плюс научный метод в помощь.
    В целом же, касательно задачи именно декомпозиции есть следующие основные подходы: сверху вниз, снизу вверх и совмещённый - часть делается сверху, часть снизу. Берёте листочек бумаги и рисуете на нём все элементы вашей задачи и вообще всё, что по ней известно. Ваша задача - это ведь не просто одно слово какое-то или фраза какая-то, а что-то типа "если на входе А - то на выходе Б, если В - то Г". Далее рисуете связи между ними - что, к чему, куда и как. Вот вам и готов первый уровень декомпозиции. Если что-то неизвестно или висит в воздухе - ничего страшного, значит надо просто изучить вопрос глубже, собрать дополнительные данные и прочее. И далее повторяете в таком же духе. Берёте один элемент и делите его на составляющие таким же способом.
    Еще один тоже достаточно неплохой подход: слева рисуете исходные данные - то, что у вас есть, а справа результат - то, что должно получиться в итоге. Вот где-то между ними и есть решение. Рисуем стрелочку слева направо и думаем - что это за стрелочка? Как она работает? Что она делает такого, чтобы получился нужный результат? В центре рисуем известные части/элементы сей головоломки и потихоньку создаём между ними связи в процессе размышлений и исследований.
    Реальные примеры декомпозиции:

    Киоск для онлайн-магазина
    Ответ написан
    8 комментариев
  • Какая самая простая для программирования среда на Windows XP?

    VoidVolker
    @VoidVolker Куратор тега Windows
    Dark side eye. А у нас печеньки! А у вас?
    Ну, самый простой ЯП - это Форт. Проще уже некуда: просто слова разделённые пробелами. Известный мне рекорд минимальной реализации: 254 занятых байта из 256 байт оперативной памяти в каком-то МК и целых два свободных байта для использования. И SciTE-Ru в качестве IDE - он очень гибкий, плагины, множество поддерживаемых ЯП, огромная куча настроек, автоматизация и прочее. В общем, почти как VSCode - только шустрый нативный интерфейс без браузерных движков и жаваскрипта.
    А если что-то более сложное - то C# и .Net 4.7.
    Ответ написан
    Комментировать
  • Как сделать такое приложение для пожарных, суть- пожарные водоисточники?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Уже давно существует готовый сервис для добавления объектов на существующую карту: wikimapia.org - регистрируетесь, открываете карту вашего города и спокойно добавляете туда гидранты, пожарные водоёмы и все что захотите в категорию "Объекты пожарной охраны", например. После добавления объектов открываете вашу категорию и все нужные объекты будут обозначены на карте. И никакого программирования вам здесь не нужно. Причем там используются 4 разных источников карт: гугл, яндекс, yahoo, OSM.
    Наша альтернатива: 2Гис.
    UPD: пример карты гидрантов на гугл-карте, используемой в реальной работе: https://youtu.be/JzgiEn3uyIs?t=65
    Ответ написан
  • Вычитаю одно округленное число из другого, в ответе выдается число с кучей знаков после запятой, как это исправить?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Добро пожаловать в реальный мир вычислений чисел с плавающей запятой с погрешностью! Если вам нужны точные вычисления - используйте тип decimal или аналогичный для вашего ЯП.
    https://habr.com/ru/articles/266023/
    https://learn.microsoft.com/ru-ru/office/troublesh...
    https://0.30000000000000004.com/
    Ответ написан
    2 комментария
  • Задание на учебную практику у программистов колледжа?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Обычный десктопный или веб калькулятор: от простой считалки до математического, инженерного или для программистов, как с простыми фичами, так и с более сложными: поддержка нескольких языков, тем и стилей, кроссплатформенности (win, mac, *nix, ios, android), истории вычислений, поддержка экзотических форм записи - стек с обратной польской записью, синхронизация и объединение между машинами (управление на телефоне/планшете/клавиатуре, экран - на мониторе ПК/планшете/другом телефоне), построение графиков 2D/3D и прочее. Разные платформы - dotNet, C++, Python, Web и т.п. Кому на что фантазии хватит - хоть до экселя встроенного. Главное - чтобы студентам было интересно. Можно даже на базе такого проекта диплом подготовить. Или, как вариант, взять все фичи, но разделить их на всех: сделать общий для всех проект - как для команды, что тоже будет очень полезным опытом. Можно даже взять реальный таск менеджер, в него завести все задачи проекта и провести всех студентов через реальный опыт работы в команде над общим проектом.
    Ответ написан
    2 комментария
  • Как практиковаться в программировании?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Решать реальные задачи. Написание кода - это всего лишь небольшая часть в разработке ПО. Язык программирования - это инструмент. Рекомендую присмотреться к готовым схемам изучения ЯП. Например: https://roadmap.sh/ А так же пробовать не только решать разные задачи, но и разные ЯП и разными способами. Так же имеет смысл присмотреться к играм с мощными редакторами и системами модификации: создать свой квест/карту/игру очень даже неплохо мотивирует делать что-то большее. Ну и, конечно же, учиться, учиться и учиться. Причем еще и учиться учиться. И обязательно учить английский и математику. IT меняется и развивается очень быстро и без навыков и способностей к самостоятельному обучению тут очень быстро можно оказаться за бортом и уйти на дно как топор.
    Ответ написан
    Комментировать
  • Как игра понимает, что используется не физическая клавиатура?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Проблема с эмуляцией ввода в играх в том, что в винде существует несколько разных АПИ и методов получения пользовательского ввода - возраст ОС, легаси, обратная совместимость и все такое прочее. И каждый разработчик использует то, что нравится/нашел/встроенное в движок/попалось под руку, а некоторые специально усложняют возможности программной эмуляции для блокировки ботов. Поэтому надо пробовать несколько вариантов, а если не работает - то остается либо свой драйвер в ядре ОС либо эмуляция с внешнего устройства.
    Ответ написан
    Комментировать
  • Как сделать из локального чата публичный?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Вам следует описать конкретно, что именно у вас не получается. В целом ваша задача состоит из следующих подзадач:
    1. Арендовать сервер
    2. Арендовать домен
    3. Подключить сервер к домену
    4. Сделать дополнительные настройки на сервере в соответствии с требованиями вашего приложения
    5. Разместить приложение на сервере
    6. Запустить приложение
    Ответ написан
    8 комментариев
  • Какая есть бесплатная библиотека на C# для воспроизведения и записи аудио на Linux+Windows?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Дык VLC же есть, прям первая ссылка в гугле на биндинг: https://github.com/videolan/libvlcsharp
    Да даже если не можете найти конкретно либу или вот VLC биндинг завести, то что мешает тупо в командной строке запускать любой бесплатный плеер для воспроизведения/записи?
    Ответ написан
  • Как проверить запросы, которые пришли в Postman?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Postman manual -> Designing and developing your API -> Mocking an API -> Setting up mock servers:
    https://learning.postman.com/docs/designing-and-de...
    Ответ написан
    Комментировать
  • Почему код не правильно работает?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Просто отформатируйте код в нормальный вид - это не просто так придумали, а для удобства. Кроме того, вам IDE даже точное место ошибки показывает - выделяет красным и подчеркивает. Что именно тут непонятного?
    Ответ написан
  • Как реализовать эту блок схему в код?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Для реализации алгоритма потребуется использовать константы, переменные, операторы ветвления и цикл. Или https://freelance.habr.com/
    Ответ написан
    Комментировать
  • Как погрузиться в начала/фундамент программирования?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Как построенн язык программирования, например: Как понять, как устроенны ключевые слова; Препроцессорные процессы: define, include и др.; - Я правильно понимаю, нужно опустится на ещё более низкий уровень до ассемблера? - Ассемлер является той фундаментальной сущностью в программировании (не считая машинный код, который и так человек не должен понимать)?

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

    Возможно достичь понимания работы программ не физически, а программно. (Я не знаю как это точно сказать.) То есть не как в комп’ютере выполняется программа, а как работает отдельная сущность - программа? - И вообще это возможно, либо я просто многое чего хочу от жизни?

    Любая программа - это просто алгоритм. Так что смотрим что делает программа и спокойно разбираем её алгоритм. А если есть исходный код - то вообще все полностью можно разобрать.

    Ну и вообщем, какие-то фундаментальные знания - на чём базуется/построенна програмированние и IT, тоже не помешало. Например рекомендуют SICP почитать, правильно ли я тогда пойду или это не то. Если да, можете ещё набросать ваши варианты? Буду признателен.

    Фундамент - бинарная логика. Над ней - процессорные инструкции или машинный код. Далее - ассемблер, минимально простая абстракция для составления инструкций для процессора. Следующий этаж - язык программирования высокого уровня, который в своем составе имеет какой-то типовой набор абстракций (переменные, функции, операции с памятью, блоки и разные типы данных), функций и алгоритмов для более человечного описания алгоритмов и для работы с данными. ЯП бывают разные и решают проблему в какой-то определенной области или для какой-то цели. Также существуют предметно/проблемно-ориентированные ЯП (DSL - domain-specific language) - более узкие решения. Дальше - стандартные и дополнительные библиотеки для упрощения работы с определенными данными, алгоритмами и прочее. Выше лежат фреймворки реализующие какой-то определенный каркас/функционал для реализации программ/алгоритмов для решения задач в рамках какой-то специфической области.
    Ответ написан
    4 комментария
  • Как процессор ''понимает'' машинный код?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Никак не понимает - у него нет сознания для понимания чего бы-то ни было. Биты сами по себе реализуются на физическом уровне: есть сигнал - есть бит, нет сигнала - ноль. И далее сигнал либо идет дальше либо нет. Есть транзисторы - на базе транзисторов строятся другие логические элементы, которые перенаправляют сигнал дальше в зависимости от состояния. И вот это все вместе позволяет делать вещи такого типа: если вот тут такое-то сочетание битов, то сложить содержимое вот этих двух регистров, если другое - то вычесть и т.д. (примерно, конечно). В процессоре есть декодер команд - вот в нем и реализована вся эта логика по выполнению команд. Рекомендую изучить основы компьютерной схемотехники, устройство процессоров, транзисторов и как оно все работает.
    Ответ написан
  • Как реализовать условные конструкции в языке Форт?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Как мне реализовать оператор ветвления так, чтобы он поддерживал вложенность.

    Стеком, конечно. Для этого, обычно, используется т.н. стек управления или управляющих структур. Он существует только во время компиляции. Точный механизм не помню, но то ли кладем в этот стек код операции то ли адрес точки ветвления для вычисления смещения ветвления то ли все вместе.
    И ещё, не подскажите ли, как разбить код на функции? А то функция eval-forth-program слишком большая и сложная.

    Традиционно форт реализуется с использованием т.н. шитого кода. Так же есть и вариации шитого кода и другие механизмы. В целом логика такая: есть список - это словарь слов. Логика интерпретатора крайне проста:
    1. Получить следующий символ из входного потока
    2. Если ноль или конец строки - выход
    3. Если не разделитель - перейти к следующему символу
    4. Если разделитель - искать слово в словаре
    5. Если слово найдено - выполнить его
    6. Не найдено - сообщить об ошибке

    Далее, организовываем два стека - основной, возврата, переменную STATE (интепретация/компиляция), основной словарь или список словарей, минимальный набор слов для компиляции - двоеточие, точка с запятой и далее по мере надобности все остальное. Главное запустить интерпретатор, от него компилятор, а далее уже можно средствами самого форта реализовать остальной минимальный набор слов, затем учим форт компилировать и собирать самого себя и получаем самодостаточную систему. Рекомендую книги Лео Броуди к прочтению и регистрацию на форт-форуме - там тоже очень много материалов по теме реализации форта )
    Ответ написан
    1 комментарий
  • Как сделать программу которую невозможно закрыть?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Максимум, что можно сделать - при получении сигнала/сообщения об остановке/закрытии окна не останавливать приложение/не закрывать окно. В случае остановки процесса - перезапускать его сторонним приложением. Сам процесс легко убивается таск-менеджером или ОС. За исключением редких некоторых багов на уровне системы (конкретно windows), когда процесс завис наглухо либо что-то в системе и система по каким-то причинам не способна его завершить.
    Ответ написан
    Комментировать
  • Как написать функцию с параметрами от нуля до бесконечности?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Создать бесконечный блок памяти и использовать его в системе/языке программирования для передачи параметров для данной функции.
    Ответ написан
    Комментировать
  • Как программируют телекоммуникационное оборудование?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Вообще-то, это не так работает. Сначала ставится задача типа "Разработать устройство такое-то с такими-то функциями". Далее это все прорабатывается до полноценного ТЗ со всеми подробностями. Далее это ТЗ передается инженерам, которые уже под требования ТЗ подбирают оборудование и ПО. Программисты сразу получают плату разработчика с тем же процессором и на ней уже могут производить отладку ОС и ПО. Инженеры тем временем проектируют плату, электронику, тестируют это все. В большинстве роутеров сегодня работает обычный линукс и на обычном процессоре типа ARM. Большая часть того, что там используется стандартизировано и легко покупается и компонуется в один девайс. ПО там зачастую обычный веб сервер с кучей скриптов для настройки стандартных линуксовых прогамм.
    В более сложных и больших сетевых устройствах, которые работают на магистралях, например, все несколько сложнее — там могут использоваться специальные процессоры и ПЛИС, которые программируются несколько иначе. Так же там может быть вообще полностью своя прошивка или какие-то другие специфические системы.
    Ответ написан
    Комментировать
  • Как назвать папку своих конфигов?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    MyConfigs
    Ответ написан
    Комментировать