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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Автор пишет

    Ну и пример: вот есть у меня программа, которая делает простой инкремент числа, допустим. По сути это равносильно тому, что в некий регистр запихали значение и сделали инкремент в цикле, а ля
    mov ax, 0
    inc ax.
    Будет ли данная программа получать какой-то выигрыш от увеличения количества транзисторов на кристалле при равной тактовой частоте процессора и если да, то как?


    В данном конкретном случае никаих миллиардов транзисторов не нужно. Задача инкремента
    действительно решается на десятках лампочек и реле или если хотите транзисторов.

    Но технологически, число транзисторов это метрика которая грубо показывает сложность
    устройства на кристалле. И ядерность. Технологически, компании производящие железо заинтересованы
    делать кристалл меньше и число транзисторов больше. Это показывает их техно-превосходство.
    Почему кристал меньше - понятно? Иначе он был-бы размером с чемодан или шкаф например.
    Что уже десктопом не может быть. И энергопотреблял бы как хорошая электроплитка.

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

    Но это метрика очень грубая. Такая же как сжигание каллориев еды в печке для оценки
    каллорийности мяса или колбасы.
    В общем метрика рабочая но не стоит ее брать за
    самую главную.
    Ответ написан
  • В чём смысл равного ограничения времени для разных ЯП в спортивном//олимпиадном программировании?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В олимпиаде ЯП не очень важен. Обычно задание подгоняется под удачный выбор
    алгоритма.
    И если повезло - то и Python и С++ укладываются в нормальное
    время. А если студент использовал комбинаторный алгоритм то здесь не поможет и
    Ассемблер с GPU.
    Ответ написан
    Комментировать
  • Задание на учебную практику у программистов колледжа?

    mayton2019
    @mayton2019
    Bigdata Engineer
    уровень студентов максимально разнообразный (от прям серьезный умников и умниц, до слабоватых ребят, но которые, тем не менее, что то пытаются делать)

    Такое задание для всех придумать невозможно. Попробуй сегментировать студентов на
    одаренных которые будут делать что-то фундаментальное. Машинное обучение или зрение.
    И середнячков которым веб-апишечка и базячка или хомяко-тапалка на мобилах.
    Ответ написан
    5 комментариев
  • Возможно ли создать универсальное решение для процесса синхронизации данных от разных поставщиков?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если кратко - то да. Можно.

    Если более подробно - то это долго. Мучительно. И где то в конце вы создадите свой собственный
    язык (DSL)
    который будет описывать все бизнес-преобразования данных.

    Общая идея такая. Вы пишете одинаковый софт на Python для всех поставщиков данных а различия
    реализуете как часть конфигураций. Пример (совершенно выдуманный):

    datasources:
      - datasource: Bitcoin
        format: xls
        header: on
      - datasource: Market
        format: csv
        header: off
    
    transformations:
      - name : Bitcoin
        filter: "WHERE payload is not null"
    
    sink:
      - name : Bitcoin
        dest: jdbc:thin:oracle@....

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

    В качестве основы для DSL не обязательно нужен Yaml. Это можно делать на Python, Lua, Lisp
    и вообще даже на основном языке. Главное чтобы конфигурационная часть была декларативной
    и не содержала циклов и проверок условий.
    Ответ написан
    1 комментарий
  • Сколько вообще целых и дробных чисел с неповторяющимися цифрами существует?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дробные числа можно рассматривать как те-же самые целые только с множителем 10 в степени -1
    и потом -2 и так далее. Результаты - объединить.
    Ответ написан
    1 комментарий
  • Как правильно написать условие запрета повторного ввода символа "." в Action Script 3.0?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Action Script - это как Cobol в наше время. Разработчики отрастили седые бороды и померли.

    Проверь что
    имя_текстполя.text
    не пустое.

    Проверь какое числовое значение возвращает
    имя_текстполя.text.indexOf(".")

    Это и будет скорее всего ответ на твой вопрос
    Ответ написан
  • Актуален ли ассемблер на сегодняшний день?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ассемблер полезен при анализе прошивок на безопасность.
    При изучении того как работает софт без исходного кода (обратный инжинеринг)
    и при решении задач интеграции разных слоёв софта.

    Ассемблер также очень близко стоит к разработке компилляторов. И если у вас нет
    соотвествующих знаний то строить свой компиллятор вы не сможете. Или вам нужно
    будет изучать готовые back-ends, virtual-machines.

    Ассемблер помогает при анализе узких мест в коде. В частности например
    векторизация вычислений ставит в первую очередь вопросы на которые ассемблер
    отвечает а ЯВУ - нет.

    Знания ассемблера помогают сделать бинарник компактнее. Это важно при разработке
    встраиваемых систем.
    Ответ написан
    Комментировать
  • Полезность моделей памяти которые отличный от linear?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Любая оптимизация начинается от проблемы. Из проблем памяти я могу отметить технологический предел
    на пропускную способность. (так называемая Стена Фон-Неймана). Она частично решается
    кешамя для горячих участков кода но никак не решается в обобщенной постановке.

    Непонятно что дает двух-трех или много-компонентный указатель если эта проблема по прежнему остается.
    Ответ написан
    Комментировать
  • Как создаются трансляторы?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Такая грамматика уже создана. Называется язык Prolog.

    Сразу скажу что сама затея создания словесных экспертных систем обречена на провал.
    Растущая комбинаторная сложность и сложность задавания вопросов этой системе
    свела на нет все усилия лет 30 назад.

    Сегодня такие системы считаются legacy, и языковые модели-чаты их полностью заметили.
    Потому что обучить модель легче чем человеку описать сет рулов. И еще все это потом протестировать.
    Ответ написан
    7 комментариев
  • Какой инструмент может превратить схему БД в панель управления или админку?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Практически такое решение будет очень небезопасным. Обычно вебу дается минимум доступа к БД и то
    через всякие сервисы и прослойки. А вы прям открываете вообще все что только есть. Это я думаю - плохой
    дизайн по безопасности. И пользователь может грохнуть целую таблицу случайно.

    Графические инструменты для работы с БД есть. Например JBeaver. Универсален и удобнее веба.
    Ответ написан
  • На чем пишутся современные десктопные приложения?

    mayton2019
    @mayton2019
    Bigdata Engineer
    java - "не подходит для десктопа"

    На платформе Java (Groovy, Kotlin) написана среда разработки Jetbrains Idea.
    Правда есть у меня подозрение что из библиотек там использован не Swing а SWT
    но я уж не помню я слишком давно этот вопрос изучал. За много лет многое могло поменятся.
    SWT не слишком кроссплатформенный.

    На Java написан менеджер закачек Vuze (Azureus) и такая векторная рисовалка как Yed
    которой я пользуюсь иногда.

    Еще OracleDeveloper, Beaver, SOAP-UI, и много всяких тулов программисткого толка.

    По поводу JavaFX но я честно говоря не видел чтоб кто-то
    активно что-то графическое на нем разрабатывал. Скорее всего это была наивная попытка
    исправить недостатки Swing. И сделать его ... более мультимедийным чтоли.

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

    Для окон остается что-то очень хардовое типа Photoshop, 3dMax, AutoCad где можно грузить на 200%
    клиентский CPU и ты реально будешь хотя-бы чувствовать пользу от такой отдачи.

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

    Поэтому не звучит вопрос что на Java десктопы не пишут. А их щас реально уже НИ НА ЧЕМ не пишут.
    Даже на С++. Реально только игры и редкие приложения типа там 1С или какие-то клиент-банки.
    Ответ написан
    7 комментариев
  • Как обрабатывать переполнение счетчиков и индексов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В классических языках программирования происходит обнуление переменных int, long.
    Тоесть ошибки не будет но счетчик пойдет снова с нуля. Чтоб детектировать - надо
    делать проверку условия на максимум.

    На уровне языка Ассемблер и процессора существует флаг переполнения (OF) который взводится в
    состояние true если в результате сложения или инкремента последняя операция детектировала
    переполнение. Тоесть обработать это технически возможность существует. И далее - условный переход
    на обработку.

    В реальных приложениях такого лучше не допускать. Лучше не жадничать и вводить long счетчики.
    Их хватит на тысячи лет как-бы вы там интенсивно не делали инкременты. В базах данных типа Oracle
    NUMBER тип хранит 38 десятичных знаков числа. Надолго хватает. И я не слыхал чтоб у кого-то в обычном
    режиме бизнес-транзакций эти счетчики переполнялись.

    У Постгреса была проблема с 32 битными счетчиками XID. Не знаю как они ее порешали. Кажется
    как-то они сбрасывают их для всей таблицы. Толи в вакууме толи еще как-то я не помню. Пускай
    постгресщики скажут точнее.

    Чтобы уйти от мелких счетчиков попробуйте использовать SnowflakeId (64bit) или GUID(128bit). Их надолго
    хватает и никто не жаловался. Git использует 160-bit идентификаторы коммитов в графе коммитов
    и тоже пока никто не жаловался.
    Ответ написан
  • Есть ли необходимость или очевидные плюсы перехода на linux?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В целом острой необходимости нет. Особенно если ты работаешь с веб-дизайном например.
    Я перешел когда мне стало интересно разворачивать Ораклы и Hadoop и прочие вещи
    и мне нужна была нативная интеграция bash. Не на уровне виртуалок или докеров или WSL
    а мне нужна была истинная система. Делить ресурсы 50 на 50 между гостем и хостом я не хотел.
    И задачи я себе придумывал такие которые требовали hardware нагрузить на сто процентов.

    Корпоративные ноуты еще долго будут под Windows11. Это стандарт де факто для офиса. И я с ним
    вобщем согласен. Я-бы сказал что не звучит вопрос переходить или не переходить. А в современном
    мире, в мире где допустим командная строка как способ оперативного решения задач снова возвращается
    в руки разработчику (после периода забвения от Windows95) или девопсу, быть неграмотным в этой
    строке просто неприлично. Нужно быть грамотным в юниксовой строке независимо от того что у вас
    хост-система на декстопе.
    Ответ написан
    Комментировать
  • Как хранить и обрабатывать отображение Id на адрес узла в кластере?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Смысл рафта в том чтобы выбрать лидера. Как только лидер выбран - можно пересылать всех
    клиентов на его IP адрес как в балансировщике. В этом случае все клиенты будут видеть единую
    табличку свойств. Как в зукипере.

    Больше в рафте никакого смысла нет.

    Поэтому безразлично к какому узлу подключается клиент.
    Ответ написан
    Комментировать
  • Как создать мессенджер?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если гуглить по ключевому слову С++ socket server то обычно находят приложение клиент-сервер
    который по TCP/IP передает текстовые сообщения. Я считаю что это - минималистичный мессенджер.
    Вот бери его и думай как развивать дальше.
    Ответ написан
    Комментировать
  • Есть ли хорошие пошаговые туториалы проектов на С++ для новичков?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Обычно С++ в вакууме не существует. Его учат сразу применительно к программированию UI под Windows,
    или к Unreal Engine, или к сетевому программированию под Linux/Unix. Или еще более специфичный
    сегмент - сетевое оборудование и микроконтрллеры. Это неизбежно.

    Особенно когда ты доходишь до дисковой подсистемы, сетей или мультизадачности - ты просто выходишь за рамки С++ и нужно разбираться во всем остальном. И мне кажется что в этом главный челлендж. Не сам язык а
    системная архитектура и прикладные фреймворки.

    Тоесть в самом вопросе ты должен сам решить куда ты дальше со знаниями С++ пойдешь.

    P.S. С++ за 14 дней... - это завсегда можно найти.
    Ответ написан
    3 комментария
  • Редактор кода, удобный для больших длинных файлов -?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Да. Atom и Sublime, Notepad++ - это хорошие кандидаты на роль универсального редактора на все
    случаи жизни. Многие из них работают с Markup/Markdown языками.

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

    Вот. Все современные IDE (Visual Studio Code, Eclipse, Netbeans) тоже являются текстовыми редакторами
    и автору я советую их тоже проверить и приходить сюда с выводами. Споры об годности IDE - это
    вкусовщина. Я о них уже не спорю никогда и всегда соглашаюсь с выбором любого участника.

    Выбирай. Проверяй.

    Насчет AST деревьев, синтаксиса и графов и прочее. Автор должен понимать что все эти техники нагружают
    оперативную память и такой редактор может стать узким местом в системе похуже браузера
    Интернета. Откроешь проект на 100 файлов и уйдешь гулять и пить кофе пока он все откроет
    и проиндексирует.
    Ответ написан
  • Шаблонный код: Чем можно удобно генерировать код для автоматизации сборки по шаблону?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я использовал Apache Velocity https://velocity.apache.org/ он правда не для кодо-генерации,
    а для отчетов, но в некоторых простых кейсх подходит. В шаблон можно добавлять проверки условий и циклы.

    Есть еще Mustache https://mustache.github.io/ , он более простой. Там просто строковые замены. Но, поддерживает все языки разработки для запуска.
    Ответ написан
    Комментировать
  • Нужно ли делать защиту при делении на ноль?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вообще ты сам себе ответил на вопрос
    в разных отраслях для личного пользования.


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

    Какие вообще у тебя варианты по отработке неопределенностей? Я вижу такие.
    1) Возвращать бесконечность +Inf. Это нормально для floating-point. Но влияние результата на стек
    вызовов дальше надо учитывать. Эта бесконечность пойдет в другие формулы порождая новые бесконечности и т.п.

    2) Бросать исключение. Это не в духе С++ и не всегда удобно для выскокой производительности. Но языки высокого уровня этим часто пользуются. Здесь мы предполагаем что такой результат - крайне нежелателен и работа стека расчета векторов будет аварийно прервана.

    3) Возвращать специальный контейнер с результататом (Optional или Either) или пустой контейнер. Это в духе функционального кодинга. Но весь твой стек должен тоже быть адаптированным к таким Optional параметрам результатов.

    И есть еще вариант - просто найти такой базис вычислений в котором нет такой проблемы. Пускай допустим векторы так и остаются основным типом данных но расчеты ты будешь делать в каком-нибудь другом типе где эта операция на уровне математики - безопасна и всегда определена. Грубо говоря как в углах Эйлера. Чтоб не писать всякие проверки условий (if) - можно перейти к кватерниону и там вроде как вращение легче идет.
    Ответ написан
    Комментировать
  • Возможно ли оптимизировать Inline метода с throw с помощью директив препроцессора?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не скажу насчет C# но в других языках и технологиях обработка Exception когда оно уже случилось
    приводит к тяжелым последствиям для производительности. Мне кажется лучше возвращать код
    ошибки или как-то по другому проверять capacity.
    Ответ написан