Ответы пользователя по тегу Программирование
  • В чем разница между массивом и ArrayList в Java?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    int[] cats = new int[10] в памяти выглядит как непрерывная область память заполненная значениями и равная sizeof(int) * 10. Преимущества - если вы часто обращаетесь и бегаете по коллекции элементов то массивы обеспечат вам максимальную производительность только за счет индексной адресации и меньшего количества кэш-мисов (гуглить свойство локальности данных). Минусы - фиксированный размер, заресайзить можно до не удобно и дорого в плане производительности.

    ArrayList же это список, обычный такой вот список. То есть каждый элемент связан друг с другом через указатели. Плюсы - легко добавлять и удалять элементы. Минусы - элементы созданные в разное время могут оказаться в память черти где, что может привести к большому количеству кэш-мисов. Короче траверсинг по списку банально медленнее.

    В зависимости от задачи имеет смысла выбирать то или иное решение.

    Updated: справедливости ради поправлю себя же. ArrayList это реализация списка на массивах, так что все чуть сложнее. Описанный мной случай - LinkedList, но суть все та же - просто массивы - фиксированный размер, ArrayList - размер динамический.
    Ответ написан
    3 комментария
  • Какой аналог php функции is_string() в ЯП С++?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Собственно интересны все функции проверки введенных данных в переменную

    is_string в php проверяет что переменная имеет именно такой тип. В C++ в этом нет смысла так как в отличии от PHP в C++ переменная объявлена с каким-то типом.

    Если же вас интересуют проверки аля is_numeric которые проверяют содержит строка число или что-то другое - то в std такого нет и придется либо подключать библиотеку либо реализовывать самостоятельно (просто пробежаться по массиву чаров и вощвращать false если встретили чары из неверного диапозона. Ну или регулярки. Но опять же мало кто этим загоняется так как при пользовательском вводе можно это все разрулить и в этих проверках опять же нет никакого смысла.
    Ответ написан
  • Расскажите про python,что он,кто он?С чего начать?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Python может все. Ну или не меньше чем любой другой язык программирования. А за счет огромного количетсва готовых модулей, развитого комьюнити, наличия альтернативных реализаций (PyPy, Cython и т.д.) на нем еще и довольно комфортно можно писать высокопроизводительные системы. Половина убунты на python написана (утилитки) чего уж там.

    Я лично применяю Python для ресерчей (DSP, класстеризация)
    Ответ написан
  • Для чего нужны побитовые операции?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Побитовые операции нужня для того, что бы менять отдельные биты в значениях. По большей части, если не брать в расчет быстрые алгоритмы, то чаще всего побитовые операции необходимы для работы с масками. Частенько при помощи оных задают какие-то флаги, или как указал Человек я та же маска подсети зная которую и зная IP адрес текущей машины можно узнать IP адрес хоста и весь диапозон IP адресов сети за счет банальной операции побитового и. Есть еще задачи связанные с кодированием информации, есть бит/байт стаффинг, упаковка данных (привет сдвиги) и т.д.

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Синтаксис больше бы сказал... хоть примерно в дополнение к сказанному.
    Ответ написан
    Комментировать
  • На чем можно писать программы под Windows?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    декомпилировать в ASM, как это можно делать с C#

    то есть с дизассемблерами вы не знакомы? Это можно сделать с либым бинарником содержащим исполняемый код. И для справки, в случае шарпов там не ассембелр а байткод по сути для CLR (виртуальная машина, рантайм). И да, обфускация должна помочь, как и в случае с компилируемыми языками.

    C# тяжелый? Тогда просто забейте. Можно конечно глянуть в сторону Rust но... боюсь и он будет вам сложным в таком случае.
    Ответ написан
  • Как организовать бенчмарк?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    нагрузочные тесты для hello world несколько бесполезны. Да и делали их уже 100 раз (не нагрузочные тесты а простые бенчмарки)
    Ответ написан
  • Существуют ли задачи в программировании, для которых нужно решать дифференциальные уравнения?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Дифуры с частными производными часто применяют при решении задач связанных с computer vision. Вообще в DSP в целом и в частности для моделирования различных процессов.
    Ответ написан
    Комментировать
  • Какой серверный язык программирования перспективней изучить на данный момент?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Джуниор с ЗП от 90т.р.? Жирно. Настолько жирно что тут уже влияют другие факторы нежели выбор технологии. То есть если вы нулевой а вас берут за такие деньги значит вы обучаемы или проект очень жирный. А на чем проект, на PHP или на .NET роли уже сильно не играет.

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

    UPDATED

    Ну опять же, с учетом того что вы хотите от 90К уже когда будете не нулевым, то опять же. Листики, кружок, подкинуть и смотреть куда прилетит. Получать от 90К можно хоть на PHP хоть на Java. Вопрос только в вашем развитии. Больше кодить, больше опыта, больше скилов - проще разговаривать о повышении зп. А если посчитаете что выбрали не верную стезю - переход на другой язык дастся вам относительно легко так как большая часть стэка технологий (СУБД, SQL, NOSQL, основные принципы) перейдут почти без изменений.
    Ответ написан
  • Литературу по структурам данных и алгоритмам читать перед изучением ЯП или параллельно с изучением?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Теорию эффективнее подкреплять практикой. Выучили хэш-мэпу - реализовали. Выучили бинарные деревья - реализовали.

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Рейтинг самых распространенных ошибок при деплое:
    - Выключена директива short_open_tags
    - Не совпадает версия PHP (использование короткой записи массивов когда на хостинге еще php5.3, и прочие радости жизни).

    Лечится просмотром логов.
    Ответ написан
    3 комментария
  • Как дальше совершенствовать свои навыки программирования?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Архитектурные аспекты - @Aen дал вам ответ.
    Алгоритмизация - порешайте задачки из книги "Алгоритмы: построение и анализ" Кормена.
    Ответ написан
    Комментировать
  • Какой достаточный и необходимый набор навыков и умений формирует понятие "настоящий программист"?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Зависит от трактовки. Это может быть как профессионал своего дела так и человек, которому лишь бы код пописать и ему до лампочки на нужды клиентов.
    Ответ написан
    Комментировать
  • Существует ли хороший gui для dlang?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Которую не забросили.
    У которой есть документация.
    И не Gtk.


    Как не прискорбно... но у всех проектов плохо хотя бы по одному пункту. Либо еще проекты могут быть в активной разработке.

    https://github.com/buggins/dlangui - основная идея заимствована у Android-а. Есть трудности со сборкой, но окошки рисует. Вроде даже можно рискнуть и попробовать, код не такой уж и сложный так что чуть что можно контрибьютить.
    https://github.com/D-Quick/DQuick - чуваки пытаются реализовать QtQuick на D.
    https://bitbucket.org/dgui/dgui/ - только windows
    https://github.com/d-widget-toolkit/dwt - вот этот еще ничего... был бы... да походу заброшен.

    Что до Qt - есть qtD но он уже год как мертв хотя вроде работало что-то...

    Вообще ситуация с GUI более чем не радостная. У меня даже почесывалась в голове мысль написать очередной фреймворк и собрать последователей но как представляю объемы работы.... становится страшно. Ну и да, я не могу похвастаться своими знаниями openGL. Возможно в следующем году попробую подключиться к dlangui. Сама идея мне дико нравится.

    Я пока обхожусь несколько извращенным способом. Логика на D, GUI на QtQuick + c++.
    Ответ написан
  • Какая проверка работает быстрее?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Какая проверка работает быстрее?

    Которая вызывает переход, предсказанный предсказателем переходов (поскольку ветвь по которой пойдет код уйдет в конвеер)

    Если в контексте PHP/Python/Ruby то разницы нету вообще, потому что поток команд формируется по мере выполнения и в итоге не особо получится что-то такое разруливать и тут вообще пофигу какое из перечисленных условий вы будете выполнять. А если говорить о java/javascript/c#/c++/etc то тут большее значение имеет то, как часто будет срабатывать одна или другая ветвь кода. Скажем если условие всегда выполняется или не выполняется, то современный процессор будет после первых двух итераций всегда угадывать какая ветвь кода будет грузиться и оверхэда вообще не будет. Не знаю как на AMD но на интеловских так же неплохо работает предсказание того, что ветви будут выполняться по переменно, один раз одна, другой раз другая.

    Так что совсем не важно что будет выполняться в условии. Важно что бы это было предсказуемо, поддавалось каким-то шаблонам. И тогда это будет максимально производительно. А сама операция сравнения это одна операция. и не важно какая это будет операция. Намного важнее что бы весь поток команд который идет на выполнение был в кеше процессора.

    И да, если это вообще разовое условие то можно просто забить. Это важно только в циклах.
    Ответ написан
    Комментировать
  • C# to Java или Чего стоит выучить новый язык, зная прежний?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну выучить Java хорошо зная c# не сильно сложно.

    Что бы стать крутым .NET-чиком нужно (да и Java-разработчиком и вообще) стоит:
    - понимать как работает CLI (или JVM, короче понимать что такое рантайм и как он устроен).
    - понимать как работает компьютер (можно почитать например архитектуру ЭВМ Таненбаума). Мол понимать что есть еще такие волшебные вещи как кеши процессора, реордер буферы, векторные инструкции, предсказание переходов, как работают потоки и т.д. Вы должны понимать что все это

    Собственно последний пункт говорит о том что вы можете писать на Си. Так сказать практическое применение знаний. Пописать потоко-безопасные lock-free структурки например (это у вас не сразу будет получаться). Ну как-то так...
    Ответ написан
    Комментировать
  • Как на C# Получить список ip из диапазона ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ip адрес представляет собой 4 октета бит (4 байта), так что для начала загоните IP адреса в int32. Затем простым инкрементом в цикле.

    string from = textEdit1.Text;
    string to = textEdit2.Text;
    // todo: нужно хэндлить исключения так как пользователь может ввести чушь
    int ipFrom = BitConverter.ToInt32(IPAddress.Parse(from).GetAddressBytes(), 0);
    int ipTo = BitConverter.ToInt32(IPAddress.Parse(to).GetAddressBytes(), 0);
    
    IEnumerable<int> ipRange = Enumerable.Range(ipFrom, ipTo);


    что бы перевести int обратно в string можно опять же сделать так:
    string address = new IPAddress(BitConverter.GetBytes(intAddress)).ToString();
    Ответ написан
    2 комментария
  • В чем проблема с роутингом ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    есть мнение что вы используете относительные ссылки при подключении css...
    Ответ написан
    2 комментария