• Пять перспективных языков программирования со светлым будущим

    • Перевод

    КДПВ


    Если разделять языки программирования по популярности, то они делятся на три эшелона. Первый эшелон включает мейнстрим-языки, такие как Java, JavaScript, Python, Ruby, PHP, C#, C++ и Objective-C. Несмотря на то, что некоторые из ведущих языков возможно увядают, вам лучше знать один или несколько из них, если вы хотите иметь возможность легко найти работу.


    Языки второго эшелона пытаются пробиться в мейнстрим, но ещё не добились этого. Они доказали свою состоятельность путем создания сильных сообществ, но они до сих пор не используются большинством консервативных IT-компаний. Scala, Go, Swift, Clojure и Haskell — языки, которые я бы отнёс ко второму эшелону. Некоторые компании используют эти языки для отдельных сервисов, но широкое применение встречается редко (за исключением Swift, который начинает обгонять Objective-C в качестве основного языка для iOS). Go и Swift имеют хорошие шансы на переход из второго эшелона в первый в течение ближайших двух-трёх лет.


    Большинство языков в первом эшелоне прочно укоренились на своих позициях. Поэтому выпадение языка с лидирующих позиций занимает ощутимое время, а для языка второго эшелона очень трудно пробиться в первый.


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


    Читать дальше →
  • Elixir: Как выглядит ООП в функциональном языке?

      В последнее время участились статьи и обсуждения на тему прощания с ООП и поиски смысла, который Алан Кэй изначально вкладывал в это понятие.

      Несколько высказываний Кэя для тех, кто пропустил
      I made up the term “object-oriented”, and I can tell you I didn't have C++ in mind

      OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things.

      I’m sorry that I long ago coined the term “objects” for this topic because it gets many people to focus on the lesser idea. The big idea is “messaging”.

      The key in making great and growable systems is much more to design how its modules communicate rather than what their internal properties and behaviors should be.

      Late binding allows ideas learned late in project development to be reformulated into the project with exponentially less effort than traditional early binding systems (C, C++, Java, etc.)

      I’m not against types, but I don’t know of any type systems that aren’t a complete pain, so I still like dynamic typing.

      В связи с этими обсуждениями, часто всплывает мысль о том, что Erlang/Elixir очень хорошо удовлетворяют критериям, которые Кэй предъявлял к понятию «объектно-ориентированный». Но далеко не все знакомы с этими языками, поэтому возникает непонимание как функциональные языки могут быть более объектно-ориентированными, чем популярные C++, Java, C#.

      В этой статье я хочу на простом примере с exercism.io показать как выглядит ООП на Elixir.

      Описание задачи
      Напишите небольшую программу, который хранит имена школьников, сгруппированные по номеру класса, в котором они учатся.

      В конце концов, вы должны быть в состоянии:

      • Добавить имя школьника в класс
      • Получить список всех школьников, обучающихся в классе
      • Получить отсортированный список всех учащихся во всех классах. Классы должны быть отсортированы по возрастанию (1, 2, 3 и т.д.), а имена школьников — по алфавиту.

      Читать дальше →
    • Маслобойка

      • Перевод

      Ты слышал про парня, который попрощался с OOП?


      О нет. Ещё один? Что же он сказал?

      Он описал все обещания OOП, и как ни одно из них на самом деле не было исполнено, и что все возможности ООП обходятся дороже, чем они реально стоят, и функциональное программирование лучше, и ...


      Ох. Да, я слышал всё это раньше...

      Таким образом, OOП окончательно умерло, и мы можем двигаться дальше.


      Двигаться дальше к чему?

      Ты чего? К следующему технологическому прорыву, конечно!


      А, к этому… И что там у нас на очереди?

      Читать дальше →
    • Пришло время попрощаться с Rails

      • Перевод

      В прошлом году я принял решение, что не буду больше использовать Rails, и не буду поддерживать Rails в своих гемах. Кроме того, я буду делать все возможное, чтобы мне никогда не пришлось снова столкнуться с Rails на работе.


      Так как я вовлечён во множество Ruby-проектов, люди часто спрашивают меня, почему я не люблю Rails, какие проблемы у меня есть с ним и так далее. Поэтому я решил написать этот длинный пост, чтобы подвести итоги и все объяснить.


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


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

      Читать дальше →
    • Новый релиз платформы для создания интернет-магазинов Synergy 0.60.0

        Synergy Logo Intro: Synergy является кумулятивным Open Source расширением Spree, ориентированным на создание интернет-магазинов в России.
        Миссия проекта состоит в том, чтобы предоставить весь необходимый фунционал, специфичный для российских интернет-магазинов, а также упростить интеграцию рекомендуемых расширений.

        Список изменений по сравнению с Synergy 0.50.0:
        Читать дальше →
      • Вышел Spree 0.60.0

        • Перевод
        Релиз Spree 0.60.0 официально выпущен. Основной целью этого релиза является упразднение использования resource_controller. Это было долгое путешествие с этой библиотекой, но на данный момент она уже устарела. Особая благодарность Neeraj Singh, Roman Smirnov и Brian Quinn за их напряженную работу по этому вопросу.

        Мы приложили существенные усилия, чтобы сохранить большую часть функциональности resource_controller, которая использовалась в коде Spree, реализовав её более подходящим для «Rails Way» способом (с использованием наследования и т.д.). Однако в некоторых случаях, мы не смогли сохранить 100% совместимость с предыдущими версиями Spree. Это может повлиять на некоторые существующие расширения, а также на магазины, которые полагаются на эту функциональность. Кроме того новый подход использует respond_with вместо respond_to. Более подробно всё это описано в руководстве по настройке и в примечаниях к релизу 0.60.0.

        Также Вы можете посмотреть на Github полный список изменений, вошедших в релиз 0.60.0.

        От переводчика:
        Также напоминаю о существовании Synergy — сборки Spree, адаптированной специально для России. На данный момент сборка поддерживает Spree 0.50.2 и 0.60.0. Более подробно я рассказал о ней в статье «Synergy — платформа для создания интернет-магазинов»
      • Synergy — платформа для создания интернет-магазинов

          Synergy Logo По сути Synergy является кумулятивным Open Source расширением Spree, ориентированным на создание интернет-магазинов в России.
          Миссия проекта состоит в том, чтобы предоставить весь необходимый фунционал, специфичный для российских интернет-магазинов, а также упростить интеграцию рекомендуемых расширений.

          В свою очередь Spree – это полнофункциональная платформа электронной коммерции, работающая на фреймворке Ruby on Rails 3. Она создана с целью упростить разработку интернет-магазинов путем включения в нее всего базового функционала, необходимого разработчикам.
          Читать дальше →
        • Вышел Spree 0.50.0

            Intro: Spree — мощный и гибкий движок для создания интернет-магазинов, написанный на Ruby on Rails, распространяющийся под лицензией New BSD.

            Рад сообщить хабровчанам о выходе релиза Spree 0.50.0.
            В нём нет крупных изменений по сравнению с 0.40.x, вместо этого есть более 50 небольших улучшений и багфиксов.
            Рекомендую всем, кто задержался на Spree 0.11.x, переходить именно на Spree 0.50.0

            Из значительных изменений можно выделить:
            • Добавление возможности задавать порядок вариантов, опций и изображений в админке
            • Замена SearchLogic на MetaSearch
            • Расширение покрытия интеграционными тестами

            Release Notes

            Но это ещё не всё…
            Читать дальше →
          • Вышел Spree 0.30.0

              Intro: Spree — мощный и гибкий движок для создания интернет-магазинов, написанный на Ruby on Rails, распространяющийся под лицензией New BSD.

              Спустя 5 месяцев напряжённой работы вышел первый релиз Spree, работающий на Ruby on Rails 3.0.

              Основные изменения — структурные:
              • расширения стали gem'ами, да и сам движок стал набором из нескольких gem'ов: spree_core, spree_auth, spree_api, spree_dashboard, spree_promotions, spree_sample
              • для настройки конкретного магазина больше не нужен site_extension, теперь все настройки можно сделать прямо в Rails.root
              • из способов развёртывания исключен «Vendor mode», т.к. благодаря Bundler больше нет необходимости клонировать исходники Spree в директорию проекта, даже если Вы используете edge-версию или свой собственный форк

              Кроме того улучшена работа с платежами, упрощена работа с надбавками, ну и конечно же сделано множество багфиксов и мелких улучшений.

              Официальные примечания к релизу
            • Аннонсирован новый релиз-план для Ruby 1.9.2

                Согласно новому плану, релиз состоится примерно в середине августа.

                Подробнее:
                • 31 марта будет заморожен список возможностей Ruby 1.9.2
                • 30 апреля будет заморожен код, все возможности не реализованные до этого времени не войдут в релиз
                • 31 мая — выход 1.9.2-preview2: возможности, которые не будут завершены и стабильны к этому моменту, не войдут в релиз
                • 30 июня — выход 1.9.2-rc: все найденные на предыдущих этапах баги должны быть исправлены
                • 31 июля — выход 1.9.2-p0: в течении двух недели будут собирать багрепорты и допиливать релиз, прежде чем выпустить его

                Что ж будем надеяться, что на сей раз разработчики справятся с намеченными сроками и мы получим стабильный релиз ветки 1.9.x до осени :-)

                P.S. Если кто-то хочет высказать пожелания к релизу 1.9.2, то поторопитесь оставить тикет в Ruby Issue Tracking System