Ответы пользователя по тегу Программирование
  • Как делать страшное лицо как в этом видео https://www.youtube.com/watch?v=c_LNJToB74Q а еще мне интересно как сделать такой голос?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Голос проще всего сделать. Кажется этот эффект называется pitch или pitcher. Звуковушки раньше типа CreativeLabs комплектовались софтом всегда. Ну если нет то можно поискать всякие Nuendo с плагинами. Могут стоить денег. Вообще весь качественный звуковой софт стоит денег.

    По поводу лица - ХЗ. Наверное тут еще поболее денег надо заплатить. Пока таких приложух в бесплатном доступе я не видел.
    Ответ написан
    1 комментарий
  • Теория графов и нейронные сети в распознавании объектов - в чем преимущество графов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я попробую рассказать своё видение проблемы. Я не уверен что я прав но напишу как мне кажется.

    Есть две модели представления нейронных сетей.

    1) Матрицы (иногда называют тензоры). Имеют аппаратную реализацию в новых TPU (Tensor processor unit). Кажется Гугл сейчас продает услугу аренды таких сетей для задач обучения. Подходят для плотного заполнения нейронных слоём когда нейроны связаны каждый-с-каждым. При этом даже если связи нет (коэффициентик равен 0.0) тем не менее пространство все равно используется и этот ноль участвует в расчете.
    Расчет обучения (как я его себе понимаю) должен сводится к перемножению входного векртора на всю полседовательность матриц. И также к применению функции активации между слоями. Имеено за счет функции активации и идет обучение (там есть своя доказательная база) и идет декомпозиция на слои. Если бы функции не было - тогда можно было-бы все слои (константы) схлопнуть в 1 большую матрицу. Вот так и бегает умножение туда-сюда. Обучение - проверка ошибок. Коррекция. И снова обучение.

    2) Графы. Это вырожденный вариант матриц когда нулей оооочень много то чтоб зря не меремножать нули можно модель вычислений представить в виде графов. Математически это дает экономию в виде пропуска ненужных вычислений. И должна быть экономия в виде памяти для коэффициентов каждого слоя. На практике представить граф компактно очень сложно. Если кто из вас делал свои графы - то вы знаете что жрут они память как в не в себя, и никогда не угадаешь сколько надо выделить под вершину или под ребро чтоб не было пере-аллокаций и потерь.

    Если вы хоть раз открывали учебники по НС типа Каллана или Хайкина то там с первых страниц идет описание
    персептрона или 1-слойного нейрона в виде рисунка со стрелочками. Это и есть граф. Таки рисунки любят преподаватели в универах и всякие теоретики.

    В старых математических пакетах (еще в 80х годах) есть целые мат-библиотеки которые работают с разреженными матрицами (sparsed matrices). Это - тоже наивные попытки создать экономию. Такая дырявая матрица как раз отражает граф где вершины - это столбцы и строки а рёбра - это ненулевые коэффициенты.
    Реализаций их - целая куча. Математики любят решать системы дифуров в таких структурах. Там своя специфика. Тоже есть много нулей. Тоесть между графом и дырявой матрицей есть полиморфизм.

    Есть поддержка таких дырявых структур (Vector.sparse) и в биг-дате (Spark). Тоже для нужд ML.

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

    Все что я написал это просто моё чортово ИМХО. И не стоит это воспринимать за правду.
    Ответ написан
    2 комментария
  • Как должна выглядеть UML диаграмма компонентов для функционального подхода?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Во первых. Функциональное программирование не запрещает дата-объекты. Вот к примеру если у вас есть таблица Employee из стандартного учебного набора Oracle то она может быть отражена таким образом в Haskell:

    data Employee = Employee {
     empno :: Integer,
     ename :: [Char],
     job :: [Char],
     mgr :: Maybe[Integer],
     hiredate :: Day,
     sal :: Integer,
     comm :: Maybe[Integer],
     deptno :: Integer
    }


    В том что Haskell это достаточно строгий язык который лежит в категории ФП я надеюсь никто не сомневается.

    А в мультипарадигменных языках типа Scala с объектами
    вообще нет проблем. Берите - делайте объекты сколько надо.

    Во вторых, UML проектирование - это такой-себе уровень абстракций, который удобно
    обсуждать с бизнесом и показывать на слайдах. Но он вовсе не обязан следовать буква-в-букву коду.
    Архитектура - это вообще не про код. Это про намерения, про взаимодействие, про стандарты и смыслы.

    Методы UML объектов вы можете сделать функциями. Я не вижу в этом чего-то нерешаемого.
    Рассматривайте метод как функцию где первый аргумент - это сам объект. Это такой легкий
    троллинг ООП. Типа ООП - это функции где первый аргумент == this.
    Ответ написан
    Комментировать
  • Когда в hashtable нужно хранить и ключ и значение?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Но если у нас вдруг совпадут хэши то возникнет коллизия, и тогда у нас есть 2 метода её обхода, 1 - открытая адресация 2 - связанный список.


    Да. В связном списке всегда хранятся и ключи и значения. В противном случае вы не докажете что нашли верно.

    UPD: Обновление. Поскольку я был неверно понят комментаторами - я обновляю цитату. Мой комментарий относится ко второму алгоритму. А точнее к структуре данных. В данном случае к связному списку который реализован в 99% хеш-таблиц в Java/DotNet.
    Ответ написан
    8 комментариев
  • Существует такое понятие, как "Ассоциативный список"?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Как всегда непонятен контекст. На каком языке автор пишет? Единого ООП не существует.
    Тебе по смыслу подходит много вариантов. Вернуть коллекцию пар. Вернуть мапу.

    Вот бери что по душе.
    public Iterable<Pair<String,String>> takeListOfPairs();
    
    public Map<String,String> takeMap();
    Ответ написан
    Комментировать
  • Как писать код на android?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Нужна нормальная клавиатура. Купи себе недорогое устройство класса "нетбук".
    На телефоне писать не надо. Это просто неэффективно. Зря портить себе зрение и пальцы.
    Ответ написан
    Комментировать
  • API xhr/fetch/rest/soap альтернативы друг другу?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Автор, намешано конечно у тебя в списке.. ой-ой. Но если интересуешся веб-протоколами - посмотри
    еще на GraphQL https://graphql.org/ я думаю он очень интересен для современного разработчика.

    Еще посмотри на QUIC для общего развития https://cloud.google.com/blog/products/gcp/introdu... там интересно.

    REST - это вобщем-то не протокол а скорее философия или архитектурный подход к работе с http. У него - очень размытые границы в реализациях. И иногда сложно взять приложение и классифицировать что оно такое. Рест или не-рест. Рест использует коды ошибок из HTTP и поэтому существует только в слое http.
    В теле REST сообщения может быть что угодно. XML, JSON или просто текст. Неспецифицировано короче. Наивные попытки внести в рест спецификации появились сравнительно недавно. Рест хорошо интегрируется с балансерами и реверс-прокси (nginx).

    SOAP - это именно "протокол". Базируется на XML с жесткой схемой. Причем работающий почти на всех слоях сетей. Может на не только по HTTP но и по сырым сокетам бегать. Хотя в настоящее время - непопулярен. Типизирован. Имеет специальный файл спецификации (WSDL) который точно описывает все сигнатуры методов. Требует большой аккуратности в реализациях. И обычно никто не пишет SOAP клиент-сервер вручную а пользуются генераторами API. Часто используется в банках и крайне консервативных ведомствах.
    Ответ написан
    Комментировать
  • Написание кода коротко плохо?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Оба варианта хорошие. Но обычно если ты работаешь отладчиком и тебе
    интересно где логика ведет себя не так - то второй вариант удобнее.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Алгоритмы и структуры данных тесно связаны с зубо-дробительными бенчмарками. Как-то отсортировать терабайтный текстовый файл или найти два одинаковых числа в файле из чисел тоже большого размера.
    Иногда такие задачи задают на собеседованиях Google и Microsoft.

    И если вы будете изучать эти алгоритмы на js, то вы не сможете продемонстрировать эффективность этих
    алгоритмов. Python машина - просто медленная. У нее конечно есть надстройки например над векторной
    алгеброй которые позволяют быстро считать рутину вроде циклов над векторами. Но является ли это
    программированием Python - чорт его знает. Как по мне - нет. Тут - другая экспертиза нужна.

    В структурах данных важно также оценивать память "на глазок".

    В этом смысла кодер С++ имеет много преимуществ т.к. он видит и понимает как распределяется память
    в узле бинарного дерева например (два указателя по 64 бита + какой-то размер для ключа который тоже
    можно посчитать). Какой аллокатор брать? Встроенный в язык new или нужно делать собственный.
    Такой расчет важен для оценки например - применима ли структура данных вообще?
    Какой толк от дерева если оно не влезет в оперативную память? А падение памяти в swap - тут-же замедляет
    алгоритм в разы.

    JS и Python не предоставляют тонкого контроля над памятью. У них своя модель построенная для комфорта
    самого процесса разработки а вовсе не для струткуры данных.
    Ответ написан
    Комментировать
  • Как лучше проводить анализ исходного кода?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Скорее всего вам это не надо. Внешний анализ заказывают банки например чтобы подтвердить что софт - безопасен и не боится эксплоитов. Из таких систем я помню платную Veracode. Она находила у нас ошибки безопасности в логгировании (!).

    Вот. Из безсплатных - посмотрите SonarQube. Он работает с плагинами.

    Да и очень полезно указывать конкретные теги языков. Что там у вас? 1С? Кобол? Или Лого?

    Я серъезно! Почему не указываете?
    Ответ написан
    Комментировать
  • Что значит выучить язык программирования?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вопрос лишен смысла.

    С точки зрения современного собеседования знания языка являются просто началом собеседования. На самом деле собеседуют по стеку технологий который нужен на проекте. И из 2х часов технического собеса где-то 30 минут тебя могут гонять по языку. Всё остальное - по сопуствующим технологиям. Тоесть например ты заявил что Java developer уровня Junior. Окей - расскажи что такое Object, какие у него методы. Зачем нужен hashcode. Ответив на эти вопросы тебя пойдут гонять по другим технологиям. Spring. Hibernate. Beans. Базы данных. Web. Html/CSS. Json/Xml. CI/CD. Тестирование. Алгоритмы и структуры данных. Отладка.

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

    И не существует других кейсов применения языка. Тоесть программист просто выучивший язык никому (!) не нужен вообще.
    Ответ написан
  • Что такое шаблон консольного приложения и что он в себя включает?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не хватает тегов в вопросе. Это относится к конкретному языку программирования. Например в С++ шаблон такой. В Rust - другой. В golang - третий.

    Обычно консольное приложение - не создает окон. Обычно оно в себя включает обработку консольных аргументов. Например если юзер печатает "--help" вторым аргументом - то приложение печатает справку по командам. И обычно (99%) приложение оперирует потоком вывода (STDOUT) для облегчения взаимодействия с другими CLI приложениями.

    Например когда вы делаете cat (concatenate)
    $ cat file1.txt file2.txt > union.txt
    и "птичкой вправо" выводите сцепление двух файлов в новый файл.

    Еще приложение может в качестве input читать STDIN и еще может в случае ошибки возвращать
    ненулевые коды возврата. Это - полезно чтобы CLI приложение интегрировать с bash скриптами
    и проверять был ли успешен последний вызов.
    Ответ написан
    Комментировать
  • В какой последовательности лучше учить паттерны проектирования?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Как говорят "дорога ложка к обеду".

    Design patterns надо учить применительно к вашему проекту. Вот как они у вас возникают в проекте - так и учите.
    И никакой учитель или теоретик все равно не знает где оно у вас полезно а где - оверинжинеринг.

    Не забывайте про YAGNI/KISS.
    Ответ написан
    Комментировать
  • Какую среду/язык выбрать для написания управляющей программы, работающей под Windows и Linux?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В задаче есть такая матрица выбора. По горизотнали - технологии работы с USB/COM/TCP/UDP. Их много. Но в простом варианте (если бы ком-порты стояли в железе) то линукс бы видел такие устройства-файлы.
    /dev/ttyS[0123]
    И это было-бы прекрасно. В духе линукс. С переходниками и адаптерами - сложнее но принцип наверное такой-же.

    И второе измерение матрицы - это собсно на чем делать UI. Конешно если автор знает делфи - то пускай берет лазарус и кодит. Но я-бы предложил рассмотреть вариант веб-интерфейса. Это - более современно и вообще веб-интерфейсы сейчас имеют вид - более привлекательный чем Windows95/Delphi лет 20 назад. По картинке с железной дорогой - вроде ничего сложного нету. Сейчас браузерны игры и то посложнее выглядят. Вот как-то так.
    Ответ написан
  • Где опубликовать игру если тебе 12?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Что вы издеваетесь над парнем. Пускай найдет скан-копию любого паспорта. Кто там проверять-то будет :)
    Ответ написан
  • Как работает данный фрагмент кода?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    обязательно ли именовать пакеты в Java именно так "com.javastart.NAME"

    Их можно именовать как угодно. Просто если делать интеграцию твоего приложения с другими
    библиотеками то конфликтов имен можно избежать если всегда добавлять домен + твое имя.
    Это практически всегда уникально.
    Ответ написан
    Комментировать
  • Как получить диплом сред-спец образования программисту без техникума и 4 лет впустую?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я уже устроился на работу по специальности в крупную официальную компанию по специальности и успешно прошёл стажировку

    Ну вот если устроился и работаешь - то тебе вроде как оно и не надо. За образованием идут в двух случаях. Первое - это корочка которую требуют родители например или консервативное общество. Или гос-контора обязательно спросит ксиву при попытке туда устроиться (я-бы эту возможность не отбрасывал). И второе - эт собственно технический пласт знаний. Люди по разному учатся. Я-бы не смог учится УЖЕ работая. Это как мне кажется такой разрыв смыслов. Вот на работе тебя поставят за станок с ЧПУ и ты будешь знать досконально как ДАННЫЙ станок работает. Может даже станешь мастером по наладке. Но вот принципы на которых этот станок работает - тебе никто никогда на работе не расскажет. И не потому что это тайна. Просто всем некогда. На работе е6ошить надо как говорил мой шеф. А не книжки читать.

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

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Если автор знает Python - это очень хорошо. Мне кажется что под него щас проще искать работу. В том смысле что он - широкоформатный. Есть и девопс и электронная коммерция и дата-саенс и автоматизация тестирования и нейросети с роботами и железяки.
    Ответ написан
    Комментировать
  • В чем практический смысл тестирования?

    mayton2019
    @mayton2019
    Bigdata Engineer
    У багов есть разный impact. Или степень влияния на качество продукта. Вот какое влияние сдвинутых иконок?
    Я думаю их увидели только жители стран которые используют перевод с английского и этот перевод оказался на несколько символов длинее оригинала из-за чего произошел развал дизайна. Можно сказать что аудитория некоторых стран ощутила легкое неудобство.

    Тоесть impact - так себе.

    А что будет если программист 3Д графики допустил ошибку, которая приводит к крашу игры? Тут влияние посильнее. Я-бы сказал что это провал релиза. Как такое пропустили тестировщики (автоматизаторы или ручники) неважно) - ХЗ. Но тут важно срочно бежать в студию и выкладывать на steam экстренное обновление игры. И счет идет не на недели а на считанные дни. Кое-кому из отдела разработки и тестирования придется провести несколько безсонных ночей перед багфиксом.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Для проведения уроков хочу написать простенький симулятор процессора

    Нужно делать тот минимум который нужен для уроков. Если например это арифметика - то
    сойдет процессор без регистров. Можно считать что разрабатываем систему команд для
    стековой машины. Как Java.
    Ответ написан
    Комментировать