• Будет ли scala востребована на российском рынке?

    mrRontgen
    @mrRontgen
    Scala lover.
    Это утверждение не совсем верно
    Но если проект пишется на java, то scala разработчик туда будет не нужен.


    Scala - даже в том виде, в котором она сейчас, раскрывает гораздо больше возможностей JVM, нежели чем Java. Scala - это не Haskell на JVM и утверждение, что jmv общая тоже не совсем корректно. Scala - это попытка совместного примирения императивной и функциональной парадигмы. Все это дает гораздо больше возможностей грамотно и быстро применить какой-нибудь алгоритм для решения задачи. И если на чистой Java потребуется 50 строк кода для решения задачи, то на Scala - половина, а то и меньше :), а код получается более выразительный! (здесь не надо "кусаться", задачи бывают разные)

    Отсутствие 100500 вакансий на hh это не повод паники ( на linkedin ~2k). Язык молодой, но он очень стремительно набирает обороты. Насколько я знаю, Huawei начинают пилить интеграционные решения в России на scala(вместо оракловских продуктов). Так что все не так плохо :)

    У Одерского и компании очень большие перспективы и амбиции! Так что, по моему мнению, Scala(или ее "апдейты") еще удивят программистов!
    Ответ написан
  • Стоит ли изучать Scala начинающему?

    @seth2810
    Название Scala произошло от Scalable Language - и как говорят его создатели, "язык растет в соответствии с Вашими потребностями", а значит мнение о том, что Scala - узкоспециализированная, считаю является ошибочным. Насчет всего остального полностью согласен, т.к. Scala основана на Java, то без понимания особенностей Java код на ней не будет эффективным.
    Ответ написан
    Комментировать
  • Использовать ли ActiveRecord в высоконагруженных проектах?

    p4s8x
    @p4s8x
    ActiveRecord это очень удобный и полезный инструмент и его можно и нужно использовать, одна из замечательнейших частей фреймворка, делающих разработку действительно быстрой и легкой.

    Если возникают проблемы с производительностью:

    1) Во всех проектах используем:CProfileLogRoute с настройкой CDbConnection.enableProfiling=true
    Расскажет много полезного.

    2) Если видим lazy Loading — не забываем добавлять в with("") нужных релейшинов, используем together() принудительно где нужно.

    3) Если используем findAll() на большом количестве записей — используйте CDbCriteria.select и перечисляйте только необходимые колонки, это поможет значительно повысить производительность.

    Рекомендую детально изучить изнутри — как работает CActiveRecord, CActiveFinder
    Используйте расширения типа XDebug для детального профайлинга проекта.
    Основные потери производительности происходят внутри метода
    CActiveRecord.populateRecord — посмотрите — что происходит внутри.

    4) Все редкообновляемые данные очень легко кэшировать связкой:
    CTimestampBehavior + CDbCacheDependency('SELECT MAX(update_time) .... where...');
    Если таблица редко обновляется, то и этот запрос будет отрабатывать мгновенно. Mysql тоже сам кэширует результаты таких запросов.

    В результате — мест, где приходится отказываться от ActiveRecord остается очень мало.
    Скорость отдачи страниц держим на уровне не более 0.1 с.

    Если у Вас будут действительно высокие нагрузки, Вас врятли спасет один только отказ от ActiveRecord:
    Посмотрите:
    Yii: устройство ActiveRecord и Шардинг
    Шардинг MySQL на Yii Framework

    Также задумываем для одного проекта попробывать www.yiiframework.com/extension/yiimongodbsuite/ с auto-sharding
    Ответ написан
    Комментировать