Ответы пользователя по тегу Программирование
  • А вы знаете стандартные структуры и алгоритмы?

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

    Вообще все упирается в знание сложности алгоритмов, из этого вытекает что вы должны знать хотя бы примерно как эти алгоритмы работают. Скажем вы должны знать что при таком-то случае, с которым у вас чаще сталкивается программа, алгоритм А имеет сложность O(N) а другой при таком же случае всего то O(logN).... при том что в большинстве других задач тот же самый алгоритм A c определенными допущениями может иметь сложность O(1).

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

    Сейчас вот собираюсь перечитать Кромена, "Алгоритмы: построение и анализ". Ибо поймал себя на мысли что я уже плохо помню все это дело.
    Ответ написан
    6 комментариев
  • Какие существуют направления в программировании?

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

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

    Шифрование, криптография... рано или поздно в любом направлении сталкнетесь хотя бы с базовыми вещами. Как минимум будете слышать всякие штуки типа SHA12, RSA, SSL и т.д. с чем бы вы в итоге не работали (разве что в embedded меньше этого, хотя я не могу точно сказать).

    Что до функционального программирования... это парадигма программирования, на ряду с процедурным и объектно-ориентированным. Это как бы не привязано к направлению разработки. Более того, масса языков совмещают в себе все эти парадигмы или дают возможность писать в том стиле, в котором вы хотите (например PHP, Haskel, Pyhon, Java с 8-ой версии вроде как лямбда-вычисления поддерживает)...

    Короче... просто занимайтесь тем, что вам интересно. Языки программирования, технологии и т.д. выбираются исходя из задачи, которая кажется вам интересной. Да и перейти из одной области в другую относительно непложно, особенно когда вы еще не обременены заботой о семье и детях.

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    С++, D, Java, Objective C, C#, PHP, perl, Nemerle, scala... ды тыщи их.

    Смотря что вы подразумеваете под "изучением С". Знания Си подразумевают знания архитектуры компьютера и кучи других веселых вещей. Вообще если вы знаете основные структуры данных, можете писать алгоритмы... то никаких проблем выучить еще пару языков не составит.
    Ответ написан
    11 комментариев
  • Насколько сейчас актуален c++ ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    На C++ можно написать все что угодно.

    Реалии таковы, что несмотря на появление всяких новых языков типа D, Rust, Go и т.д. C++ остается единственным системным языком программирования для кросплатформенной разработки, который можно смело брать в продакшен. То есть если у вас будет стоять задача написать библиотеку для обработки каких-то данных, причем производительности критична и работать эта библиотека должна на десктопах и мобильных платформах... выбора особо нету.

    Так же с использованием библиотек типа QtQuick можно реализовывать действительно красивые и интересные приложения с использованием UI.

    Знать C++ невозможно, во всяком случае это очень тяжко. Еще проблема состоит в том что литература по C++ довольно устарела. То есть как, для быстрого обучения современным реалиям, типа использование C++11/C++14 и прочие вещи которые появились за последние лет 15, вы не найдете литературу. Вообще обучение самостоятельное будет весьма тяжким.

    Если брать именно рынок труда, сильные разработчики на C++ будут нужны всегда. Да и перейти потом на какой D/Go/Rust/java/c#/objective c будет не так уж и сложно.
    Ответ написан
  • Нужно поделить код на файлы C++. Где ошибка?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    en.wikipedia.org/wiki/Include_guard

    Ну и как-то у вас трешачек, классов не хватает и все такое...
    Ответ написан
  • Как распланировать классы для приложения а-ля pastebin.org?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    guesstype вообще не должно быть в базовом классе, ибо это не логично. Можно сделать в базовом классе абстрактный метод isMatches (просто пустой метод который выкидывает исключение) и в потомках перегружать его. Этот метод будет определять, подходит ли данный кусок кода под выбранный язык. Хотя еще лучше было бы в отдельный компонент эту логику запихнуть.
    Ответ написан
    1 комментарий
  • Как добиться нужного fps?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    А зачем ждать? Это вы так бережете CPU?
    Ответ написан
  • Какой язык программирования(библиотеку) выбрать для редактирования звуковой дорожки?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    C# норм. узкие места (декодирование/кодирование, фильтры, FFT и прочее) можно написать на C++ и сделать биндинг, хотя для всего этого биндинги скорее всего уже есть. А дальше уже идет UI.
    Ответ написан
    Комментировать
  • Как организовать очередь на Python?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Вам нужно реализовать простой менеджер очередей. В стандартной библиотеке Python есть несколько реализаций очередей, вам нужно сделать по простой FIFO очереди на каждый датчик. Можно сделать так же объект-заявку с тремя состояниями - pending, processing, done. Соответственно все новые заявки впихиваются в pending, как только заявка ушла на обработку в датчик - ей ставится статус processing, и затем, по получению данных - done и она выкидывается из очереди.

    Можно так же сделать обертку-менеджер таких очередей. Если вы хотите сделать ее еще и асинхронной... то тут надо либо вешать обработчики результатов либо добавлять результаты в свою очередь. Эдакий конвейер.
    Ответ написан
    Комментировать
  • Какими технологиями должен обладать backend разработчик (уровень начальных знаний - новичок+)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Так как вы не указали язык программирования... напишу то, что не особо от него зависит.

    архитектура клиент-серверных приложений

    HTTP (базовые понятия, Http verbs, формат записи заголовков и основные заголовки, такие как Content-type)

    Реляционные БД - SQL, нормализация данных, понимать разницу между inner join, left join, outer left join и т.д (в зависимости от выбранной СУБД).

    nosql БД (опционально) - денормализация данных, понятие о агрегации данных (в случае MongoDB/CouchDB и т.д.). На начальном этапе можно не замарачиваться штуками типа шардинг/репликация. Так же рекомендую потыкать какой reddis как простенькое key-value хранилище.

    По архитектуре приложений можно погуглить "GRASP паттерны". Правда по началу можно так же не особо замарачиваться и обратить внимание только на такие штуки как "сильная/слабая связанность системы".

    Ну... остальное зависит от языка программирования. Как определитесь - для всех основных языков тут уже составлялся план развития.
    Ответ написан
    1 комментарий
  • Какая сфера программирования перспективнее: web или десктоп?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    WEB разработка так же сильно разнится. У вас может быть разработка серверных решений, сетевых сервисов и т.д. А может быть просто сайтики лепить или клиенты писать. Десктопная разработка так же может быть системной и прикладной (програмки-клиенты фигачить). В любом случае языки программирования по большому счету и там и там одни и те же (С++/D/Go/Rust/Java/C#), и перейти в итоге из одной сферы в другую не составит труда.

    Если вас интересует клепание сайтов... то решайте сами.
    Ответ написан
    Комментировать
  • Как сегодня востребована специальность "Программист. Бизнес-аналитик"?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Как выпускник этого ВУЗа (КСиС, ВМСиС), могу только сказать что все очень зависит от факультета и специальности. Ничего не могу сказать по поводу "ИСиТ БМ" (так как она первый год как вводится), но те же инженеры-программисты выходят достойные только за счет аспирантов и лаборантов и отдельных преподавателей (сужу по КСиСу), и то только в том случае, если человеку это нужно. Ну и судя по специальностям связанным с маркетингом, бизнес-анализу вас так же врят-ли достойно будут обучать (у нас в стране вообще беда с бизнес-аналитиками, их мало).

    На том же ПОИТе периодически бывают лекции от организаций, где люди имеющие немалый опыт готовы поделиться знаниями. Но в любом случае 80-90% знаний придется получать самостоятельно, а 50% учебной программы будет вызывать у вас тоску и удивление (особенно в связи с последними реформами).
    Ответ написан
    Комментировать
  • Как реализовать контролируемый доступ к API из приложения на JS & HTML?

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    я не думаю что вам будет понятнее такой код:
    класс ПростойКласс {
        приватно:
            свойство строка названиеПеременной
        публично конструктор (строка названиеПеременной) {
             контекст.названиеПеременной = названиеПеременной;
        }
        // ...
    }
    
    ПростойКласс[] массивКлассов = создать ПростойКласс[10];
    пока (беззнаковое целое итератор = 0; итератор < 10; итератор++) {
        массивКлассов[итератор] = создать ПростойКласс("строка передаваемая в конструктор);
    }


    Вообще все эти понятия типа "функция может возвращать значение" (точнее наоборот, она обычно возвращает значение но может и не возвращать) родом из математики, и там никто не ноет что "почему все называют эти все штуки буквами греческого алфовита". Никто не кричит "почему синус принято обозначать sin а не син" и т.д.

    Тут так же. Знание самого языка не поможет вам понять смысла конструкций типа for.
    Ответ написан
    3 комментария
  • Где найти примеры JavaScript плагинов?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну наверное потому что "плагинов" под javascript именно нету. Есть библиотеки, полифилы... Плагины же обычно пишут под какие-то библиотеки. Самый популярный вариант - jQuery.
    Ответ написан
    2 комментария
  • High-Level + Multithreading + GUI + Crossplatform ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Java, C# (Mono), D, golang.

    Не совсем понятно что именно в многопоточности python вам не понравилось.
    Ответ написан
    Комментировать
  • Что использовать вместо goto?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Смотря для каких целей. Если у вас там парсер какой, то goto нормально канает, конечные автоматы... все то где нужно быстро и удобно менять состояния. Можно конечно и без goto но это будет не так эффективно с точки зрения производительности.

    В 95% случаев же плохим тоном будет goto, большая вложенность условий, кучи ifelse, switch-case-ы и т.д. Но все же есть случаи когда без этого всего не обойтись.

    p.s. если вы обратите внимание на блок "похожие вопросы", там есть пара полезных ссылок.
    Ответ написан
    Комментировать
  • Каково положение языка C# в IT-индустрии, в том числе в России, а также платформы .NET в целом?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Нет, ,NET-чики голодают.

    Естественно я шучу, вакансии есть, востребованы как в WEB разработке так и в мобильной/десктопной разработке. Так же с появлением таких штук как Xamarin имеется возможность выйти и на рынки мобильных приложений (ну и конечно же Windows Phone).

    Да и миграция в Java чуть что не так уж и сложна будет.
    Ответ написан
    Комментировать
  • Как писать оптимальный PHP код?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    SOLID, тесты и рефакторинг. А микрооптимизациями заниматься не стоит, точнее как, стоит знать то что там предлагается, но писать код только потому что "вот эта штука генерит на один опкод меньше" явно не стоит. Всеравно все упрется в базу и I/O.
    Ответ написан
    1 комментарий
  • Почему функция возвращает такое странное значение?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    А в чем смысл внутреннего цикла? Вы же получается считаете на каждой итерации заново, просто на один элемент меньше...

    В любом случае виной всему условия выхода из цикла.
    Ответ написан