• ПЛИС, в каком сейчас состоянии?

    @potan
    Функциональный программист
    Рынок в России очень маленкий и зарплаты на нем не очень высокие (работодателей мало и им просто договориться).
    ПЛИСы занимают три ниши - между микроконтроллерами и заказными системами на кристалле (SoC), замена большого количества "рассыпухи" и прототипирование SoC и отдельных узлов микросхем.
    В целом в микроэлектронике эти ниши перспективны и осваивать тужные там технологии полезно.
    Ответ написан
    Комментировать
  • Что делать после изучения С++?

    @potan
    Функциональный программист
    После изучения C++ саое оно заняться изучением Rust!
    Ответ написан
    Комментировать
  • Какую среду выбрать Matlab vs Mathematica vs Maple vs python?

    @potan
    Функциональный программист
    Mathematica - удобный и мощный язык, огромная стандартная библиотека, замечательный интерфейс. Минусы - цена и сложность начального вхождения. Для моделирования динамических систем есть отдельная реализация языка Modelica (SystemModeler), но только под винду и я не слышал что бы ей кто-то пользовался.

    Matlab - хорош для численных вычислений, в символьных слабоват. Для моделирования есть пакет Simulink, который знакомые очень хвалили. То же стоит денег.

    Python - популярный и простой, много готовых пакетов, хороший интерфейс ipython (сдутый с Mathematica). Но как язык слабоват - обобщенные алгоритмы на нем тяжело пишутся, высокая эффективность обеспечивается только с помощью библиотек на C.

    Octave: бесплатный относительно приличный клон Matlab. Про системы моделирования к нему не слышал.

    SciLab: бесплатный, но кривоватый и недоделанный клон Matlab. За то к нему относительно приличная система моделирования Xcos.

    R: удобный язык для обработки данных и статистики. Огромная и хорошо организованная внешняя библиотека.

    Julia: Объединяет лучшие черты Matlab, R и python (а так же кое что из Lisp). Но разработчики пока не заявили о стабильной версии. Если стабильность Вам не критична, очень рекомендую.

    Про остальное ни чего не знаю.
    Ответ написан
    Комментировать
  • На чем писать back-end, в котором много математики?

    @potan
    Функциональный программист
    Я рекомендую посмотреть Julia. Язык сравним с матлабом в плане математики, и мощнее питона как общего назначения.
    Ответ написан
    Комментировать
  • Какие математические дисциплины нужны, или будут большим плюсом в программировании?

    @potan
    Функциональный программист
    Линейная алгебра и методы оптимизации (и в графике и в ИИ активно применяются).
    Теория категорий - полезна что бы лучше понимать семантику языка и востребована в некоторых направлениях ИИ.
    Ответ написан
    Комментировать
  • Как правильней: учить то что популярней или то что хочешь?

    @potan
    Функциональный программист
    1. Лучше учить то что хочешь. Популярность меняется, а эффективность обучения принесет пользу.
    2. Питон сейчас один из самых популярных языков.
    3. На мой взгляд популярность не оправдана. Правильнее использовать Julia (в науке, робототехнике и инженерных приложениях), Scala/F# в пользовательских приложениях и Rust или Erlang в системах реального времени.
    Ответ написан
    Комментировать
  • Что необходимо знать перед изучением языка программирования?

    @potan
    Функциональный программист
    Выучить язык программирования можно ни чего не зная.
    Но для понимания хорошо бы иметь представление о теории множеств, булевую алгебру, некий минимум обычной алгебры. Для интересных приложений (анализ данных, робототехника) полизны будут минимум из матана, аналитическая геометрия и оптимизация.
    Ответ написан
    Комментировать
  • А что можно написать на Rust?

    @potan
    Функциональный программист
    Хорошие задачи, в которых я бы сам с удовольствием поучаствовал:
    Области, где много унаследованного, но слишком мало нового - СУБД (типа Virtuoso), САПР, ОС.
    Программы, баги и тормоза в которых могут сильно мешать жить - эмулятор терминала, оконный менеджер, shell, аналог iPython/Jupiter.
    Робототехника и встраиваемые системы на базе 32-разрядных процессоров с небольшой памятью.
    Виртуальные машины типа JVM, .NET, Parrot.
    Ядро системы компьютерной алгебры.

    Скорее всего Rust приживется в gamedev, но эта тема мне мало интересна (если сама игра не заитересует).
    Ответ написан
    2 комментария
  • Как НЕ учить языки?

    @potan
    Функциональный программист
    Знающему Haskell и умеющиму на нем программировать не составит труда выучить питон и джаву на юниорском уровне. При этом писать на них он будет качественней, чем те, кто начинал знакомство с программированием именно с них.
    Основная проблема будет освоить библиотеки (и фреймвоки). Здесь действительно лучше помогает обучение именно на том языке, на котором придется работать. Язык и инфраструктура очень сильно влияют на импользование и подходы к изучению библиотек (я не могу понять, как джавапрограммисты живут без REPLа, но они от его отсутствия похоже не очень страдают).
    Ответ написан
    3 комментария
  • С каким языком программирования может найти работу и новичок?

    @potan
    Функциональный программист
    Можно взять что-нибудь относительно редкое, что бы конкуретнов с опытом было не слишком много.
    Например Scala.
    Ответ написан
    Комментировать
  • На каком языке удобней писать websocket сервер?

    @potan
    Функциональный программист
    Scala и Play Framework вполне подходят. Когда потребовались web-сокеты, мне их удалось прекрутить без труда.
    Правда, сама Scala - не самый простой язык, может потребоваться некоторое время, что бы с ним разобраться.
    Ответ написан
    Комментировать
  • Какой язык выбрать для дальнейшего развития?

    @potan
    Функциональный программист
    Если хочется именно ООП - Effel. Если все-таки чего-то практичного - Scala.
    Rust практически избавился от ООП и приемы программирования на нем могут оказаться непривычны.
    Ответ написан
    Комментировать
  • Чем отличаются буферизированные каналы от небуферизированных?

    @potan
    Функциональный программист
    В небуферизованном канале посылающий может опреределить факт получения сообщения. Иногда это важно, например для синхронизации вместо семафоров, хотя не гарантирует что получатель его сможет обработать, а не сразу упадет.
    Ответ написан
    Комментировать
  • Как и когда вы повышаете квалификацию?

    @potan
    Функциональный программист
    Я достаточно много освоил, читая в общественном транспорте.
    Ответ написан
    Комментировать
  • Какой план обучения программирования можно предложить школьнику на лето?

    @potan
    Функциональный программист
    Рекомендую старый-добрый SICP. Очень хорошо продуманный учебник.
    Ответ написан
    Комментировать
  • Что такое нарушения принципов ООП?

    @potan
    Функциональный программист
    Основное нарушение в чужем коде, которое очень мешало мне мешало когда я программировал на ОО-языках - игнорирование принципа подстановки Лисков.
    То есть код, корректно работающий с объектом базового класса, должен так же корректно работать с отъуктом класса-наследника.
    Пример нарушения - SSL-сокет в библиотеке Qt унаследован от простого сокета, но для корректного завершения соединения требует других плясок с бубном.
    Ответ написан
    Комментировать
  • Язык для олимпиадного программирования?

    @potan
    Функциональный программист
    Scala, F#, Haskell.
    Писать легко, работает относительно быстро.
    Учить сложнее, но оно того стоит.
    Ответ написан
    Комментировать
  • Несколько вопросов по Scheme и языкам функционального программирования?

    @potan
    Функциональный программист
    Scheme используется в "Инфосистемах Джет" - на ней (Racket) написан один из продаваемых ими продуктов. Но сейчас там больше используют Scala. Еще я видел примеры скриптов для какого-то САПРа для микроэлектроники (в распечатке руководства приводились примеры на TCL и Scheme). Есть достаточно пощный форматер SGML (и XML) - DSSSL с входным языком, близким к Schema.
    Пожалуй это все, что можно сказать про Scheme. Язык очень приятный, но учить его можно только just for fun или чтения SICP. Применить на практике врядли удасться.

    У Erlang есть достаточно специфическая область - телеком. Так же его активно применяют для распределения видеопотоков. Есть мощные фреймвоки для web, например Zotonic. Почему он мало применяется в других областях (он бы хорошо подошел для робототехники и корпоративных приложений) я не понимаю.

    Scala (как правило с Play framework) активно используется в вебе и корпоративных приложениях. Для совсем новичка язык сложный, но имея небольшой опыт на других функциональных языках освоить его можно.

    Про Clojure слышал про ее применение в анализе данных. Но язык приятный и может быть применен вместе с Java (или даже со Scala).

    Еще стоит обратить внимание на F#. .NET платформа активно развивается, а этот язык мощный и не слишком сложный.
    Ответ написан
    Комментировать
  • Как дела в системном программировании?

    @potan
    Функциональный программист
    На сколько я знаю, биндингов к OpenCV еще нет. И управление памятью в OpenCV довольно таки запутанное, что мешает разработать хорошие биндинги. Если ресурсов системы хватает, для компьютерного зрения можно использовать Julia или Scala - к ним необходимые биндинги есть.
    Для работы в ограниченных ресурсах, типа однокристальных компьторов на ARM, Rust подходит лучше всего. Если смириться со сложностью интелгации с OpenCV, то от C/C++ можно отказываться.
    Ответ написан
    Комментировать