image

Начнем с важной информации: совсем не обязательно перспективные языки являются новыми. Им не так много лет, как вашим любимым Python или Ruby, их нет ни в одной топовой десятке популярных рейтингов (GitHut, RedMonk, TIOBE Index), а знание этих языков не дает пока существенной прибавки к зарплате (за исключением, возможно, Swift). Но и назвать их революцией, набирающей обороты в среде избранных, тоже нельзя. Безусловно, у них есть своя ниша, определенная доля рынка (до 2%) и сложившееся комьюнити. Просто в будущем именно они могут посягнуть на лавры топ-5, если не случится событие типа «черный лебедь».

За последние годы в рейтингах популярности языков мало что изменилось — одни опускаются, другие поднимаются, но никто не врывается в топ под лозунгом «лучший из лучших». Процесс захвата новых территорий для языка чаще всего занимает годы, и за это время успевает сформироваться необходимая база развития. Поэтому никаких эксклюзивов и написанных за вчерашний вечер уникальных языков в обзоре не будет — просто потому, что их время еще не настало. Но в ближайшие годы популярность незыблемых столпов, таких как Java (вся), JavaScript или PHP, будет снижаться, а их место постепенно займут «новички».

Swift


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

В 2014 г. Apple представила ООП-язык Swift, который должен прийти на смену Objective-C, чему способствует возможность перевести на новый язык любое приложение, написанное на Objective-C. Swift, предназначенный в первую очередь для разработчиков iOS и OS X, считается более безопасным и быстрым языком по сравнению с Objective-C.

Что почитать сейчас




Лучшей книгой по языку является официальное издание от Apple — «Swift for Programmers». Книги известных преподавателей и программистов Харви Дейтела и Пола Дейтела в особом представлении не нуждаются — они славятся легким изложением материала любой сложности. «Swift for Programmers» содержит множество примеров реальных программ, которые помогут освоить азы создания собственных приложений. Обновленная версия книги вышла год назад.



Книга «Swift for Beginners: Develop and Design», вышедшая в 2014 г., не только рассказывает об основах Swift, но и знакомит со средой Xcode. Издание подойдет всем, кто обладает хотя бы минимумом знаний о программировании на любом языке высокого уровня и хочет научиться создавать программы для iOS, OS X или watchOS.

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

Что почитать в будущем




В «Swift 2 Cookbook» представлено более 50 рецептов, которые помогут создавать приложения в Swift 2. В учебнике описаны основы установки Xcode и приведены примеры обновления кода со Swift 1.2 до Swift 2.0 с помощью Xcode, а также продемонстрировано, как Xcode помогает тестировать код. Иметь некоторые начальные представления об Objective-C или Swift будет полезно, но изучать представленный в данной книге материал можно и без предварительных знаний Swift. Книга выйдет в апреле этого года.

Scala


Scala — мощный мультипарадигмальный язык программирования, предназначенный для безопасного и быстрого программирования. В Scala полностью поддерживаются возможности функционального программирования. Он является представителем академической среды, за что порой и обвиняется в излишней сложности. Язык был создан в 2001—2004 гг. в одном из самых престижных учебных заведений Европы — в Федеральной политехнической школе Лозанны. Scala — это результат исследований, направленных на разработку улучшенной языковой поддержки компонентного ПО.

Сегодня Scala используется во многих крупных проектах — например, бoльшая часть серверного кода Twitter написана на этом языке. Scala может прийти на смену Java, благодаря тому, что в нем учтены многие ошибки, допущенные при проектировании Java.

Что почитать сейчас




Мартин Одерски, автор книги «Programming in Scala: A Comprehensive Step-by-Step Guide, 2nd Edition», является создателем языка Scala. Помимо этого, он разработал поддержку обобщенного программирования в Java (Generics) и создал текущую версию javac, компилятора Java.

В переводе с итальянского «scala» означает «лестница». Книга от Одерски определенным образом напоминает карабканье по лестнице: ступень за ступенью вы будете осваивать Scala, начиная с основных элементов и заканчивая дополнительными возможностями языка.

Вам также может пригодиться книга «Scala in Depth» (автор — Joshua D. Suereth). Конечно, во многих аспектах она уже устарела, но если вы собираетесь изучить паттерны и алгоритмы, можно рассчитывать на актуальность материалов.



«Scala in Action 1st Edition» — более свежий учебник (2013 г.). В нем содержится хороший обзор инструментов, расширяющих возможности языка. Подробно описаны и разобраны MongoDB, SBT, Scalaz, Squeryl, H2, jQuery UI, ScalaCheck, Specs, Akka, Lift, DSLs.

Что почитать в будущем




«Scala High Performance Programming» — это, по заверению авторов, первая книга, которая исследует возможности Scala по созданию высокопроизводительных приложений. Издание будет полезно разработчикам Scala, знающим Lift, а также Java-программистам, заинтересованным в переходе на Scala, но не желающим отказываться от производительности Java-кода.

Релиз книги намечен на июнь.



«Scala Design Patterns» — еще одна книга для Scala-программистов, которая поможет использовать накопленные знания для создания приложений в реальной жизни — своего рода быстрое справочное руководство. В книге рассматривается возможность применения хорошо известных в отрасли стандартов шаблонов проектирования с указанием, когда именно требуется использовать выбранный шаблон, а когда следует искать что-то более подходящее.

Lua


Lua — скриптовый язык, разработанный в далеком 1993 г. сотрудниками Католического университета Рио-де-Жанейро. По возможностям Lua ближе к JavaScript, однако его отличают более мощные и гибкие конструкции. Он получил известность как язык программирования многих игр (в том числе и World of Warcraft), однако может применяться не только для игр, но и там, где требуется использование данных, хранящихся в других файлах.

Lua является одним из самых производительных скриптовых языков в мире. Он используется в таких проектах, как Redis, nginx, Tarantool, OpenRes.

Что почитать сейчас




Читайте классиков. «Programming in Lua» (3-е издание) — книга, написанная одним из создателей языка Роберто Иерузалимски. Для разработчиков игр издание может стать настольной книгой. В ней рассматриваются практически все аспекты использования Lua, включая необходимые навыки по взаимодействию с С.

Один из самых простых способов изучить Lua вы найдете по этой ссылке: Learn Lua in 15 Minutes.

Что почитать в будущем




К сожалению, на ближайшее время интересных анонсов нет. Относительно новая (по сравнению с другими изданиями) книга вышла в 2015 г. — «Lua Game Development Cookbook». Начинающему гейм-девелоперу в этой книге будет полезно изучить концепцию простых 2D-игр, а затем перейти к современным 3D-проектам. Кроме того, возможности создания сценариев на языке Lua дадут вам полный контроль над игрой.

Однако книга эта не для новичков в Lua — понадобится знание языка, к тому же для создания пользовательских модулей Lua требуются знания С/С++.

Go


Роберт Гризмер, Роб Пайк и Кен Томпсон создали Go в 2007—2009 гг. Язык создавался с прицелом на решение проблем масштабных разработок ПО. Go должен был сделать процесс разработки более эффективным. В отличие от более академических языков программирования, в Go постарались убрать все лишнее. Благодаря лаконичности и простоте языка изучить его будет достаточно просто.

Области применения Go разнообразны. Так, пуш уведомлений во «ВКонтакте» реализован на языке Go. На Go можно писать приложения для iOS и Android, и даже создавать собственную криптовалюту. В общем, где именно использовать Go, вы решите для себя сами, тем более что изучать его можно и без хорошего знания английского языка — существует множество переводов и хорошая подборка статей в хабе на Хабре.

Что почитать сейчас




Один из авторов этой книги — Брайан Керниган — настоящая легенда программирования. Он является одним из соавторов Unix, создателем множества программ под Unix, включая ditroff и cron, автором «The C Programming Language», написанной вместе с Деннисом Ричи в 1978 г.

На данный момент «The Go Programming Language» — наиболее интересный учебник по языку Go. Изучать этот язык вам помогут хотя бы начальные знания JavaScript, Ruby, Python, Java или C++. В книге представлены сотни реальных примеров кода Go, охватывающих все нюансы языка, наиболее важные библиотеки, а также демонстрирующих широкий спектр использования языка.

Что почитать в будущем




Sau Sheong Chang, автор книги «Go Web Programming», написал «Ruby on Rails Web Mashup Projects», «Cloning Internet Applications with Ruby» и еще несколько значимых книг о Ruby. Тем интереснее будет узнать, почему директор лаборатории и прикладных исследований HP Labs в Сингапуре начал писать проекты на Go после Ruby. В «Go Web Programming» рассматривается вопрос создания веб-приложения в Go с использованием современных принципов проектирования. Релиз намечен на 31 мая.

Rust


Rust — мультипарадигменный, функциональный, императивно-процедурный, объектно-ориентированный язык программирования, разрабатываемый с 2006 г. С 2009 г. над Rust работает команда Mozilla Research.

Rust объединяет производительность и безопасность компилируемых языков (С++, не уступая ему в возможностях) со скоростью разработки динамических языков (Python), при этом сохраняет определенный уровень аскетичности. Благодаря действиям большого и открытого сообщества разработчиков в Rust исправлены многие ошибки, допущенные при проектировании C++ и Java.

Что почитать сейчас


Rust продолжает стремительно меняться. Отставание в обучающих материалах на несколько месяцев может поставить ваши знания под угрозу. В обязательном порядке необходимо ознакомиться с официальной документацией — с руководством (также известно как книга «The Rust Programming Language») и с другой документацией.

Что почитать в будущем




Jim Blandy, автор «Programming Rust», майнтенер GNU Emacs и GNU Guile, рассказывает об уникальных преимуществах Rust. В этой книге представлены примеры четкого и экономичного программирования, позволяющего избежать большого количества общих ошибок.



В декабре этого года выйдет книга «Learning Rust», которая позволит C#/C++-разработчикам получить лучшее управление производительностью и памятью. В книге продемонстрированы возможности Rust при разработке крупного и масштабируемого ПО, а также рассмотрены основы языка, включая переменные, процедуры, управление памятью, etc. Прочитав эту книгу, вы сможете создавать сложные приложения в Rust.

Вместо заключения


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

Комментарии (47)


  1. Fafnir
    14.03.2016 13:16
    +3

    Вы как-то о своем опыте умолчали. Какие из перечисленных языков у вас работают в проде и насколько вы ими довольны?


    1. pkruglov
      14.03.2016 13:30
      -4

      Периодически стараемся рассказывать, например, Как выбрать язык программирования. Ну и Tarantool никто не отменял.


  1. ozkriff
    14.03.2016 13:27
    +10

    > Rust продолжает стремительно меняться. Отставание в обучающих материалах на несколько месяцев может поставить ваши знания под угрозу.

    После выхода 1.0 это уже совсем не так актуально. Собственно, большинство статей, написанных после середины 2015ого, вполне себе актуальны и полезны.


  1. anatoly314
    14.03.2016 13:33
    +7

    Никто не обратил внимание что на первой картинке все книги на иврите, или mail.ru как бы намекает? :)


    1. aspirineilia
      14.03.2016 14:00
      -1

      На картинке котик, а книги уже вторичное.


    1. Don_Eric
      14.03.2016 14:25

      зато писатели русские — Братья Карамазовы, например :)


    1. icoz
      15.03.2016 00:46

      Кошерный котик


  1. HunterNNm
    14.03.2016 14:15
    +3

    А как же Kotlin?


    1. 0leGG
      14.03.2016 17:46

      С Kotlin всё гораздо проще, по нему полторы книги всего есть:
      Kotlin for Android Developers
      Kotlin in Action (не только in Action, но и in Progress)


  1. Throwable
    14.03.2016 14:24
    +13

    Если это не реклама книжек, то все очень поверхностно, а посему полемично. Самое основное — нет ни слова о целевой задаче и платформе для каждого языка.
    Swift, благодаря политике Apple, никогда не вылезет из экосистемы iOS.
    Scala — продвигается в основном теми, кому стала тесна Java, а посему всегда будет вторична к ней.
    Lua — вы серьезно?
    Go — в последнее время сильно пиарится Корпорацией Добра. Пытается отъесть кусок у системных сервисов, где царствуют Python и C/C++. Язык очень посредственный, но простой и работает.
    Rust — да, интересный язык. И что дальше?

    Что действительно перспективно:
    Java останется еще очень долгое время столпом программирования: кровавый энтерпрайз, экосистема и все такое.
    C/C++ как платформенные языки, тоже никуда не денутся.
    ECMAScript/Dart/Typescript — никто не знает чем закончится конкуренция и что будет следующим стандартом де-факто для вебплатформы. Но ясно одно — это одна из самых востребованных областей в ближайшем будущем.


    1. Gorthauer87
      14.03.2016 14:38
      -3

      Ну не знаю даже, пока конечно на Линуксе swift неудобно юзать, нехватает биндингов, да и import Glibc vs import Darwin тоже много радости доставляет. Но это всё не фундаментальные проблемы.
      Низкоуровневые и платформозависимые библиотеки обязательно напишутся и сложатся в экосистему.
      Вот кого забыли, так это Kotlin.


    1. terryP
      14.03.2016 14:45
      +1

      Scala — продвигается в основном теми, кому стала тесна Java, а посему всегда будет вторична к ней.

      Не обязательно, Java тоже продвигалась теми кому стал тесен C++, в принципе Scala или Kotlin могут со временем заменить Java по принципу та же Java, только лучше. Я бы поставил на Kotlin, ИМХО.


      1. Throwable
        14.03.2016 15:32
        +3

        Мне очень нравится Kotlin и я желаю ему всего самого наилучшего. Но простой вопрос: что можно (будет) делать на Kotlin? Создатели утверждают: «то же самое, что и на Java (и также как на Java), только чуток лучше». Кроме того, по их словам, у Котлина не будет своего стека технологий, и что он всецело будет полагаться на джавовский (который в свою очередь далеко не идеален: либо кровавый энтерпрайз, либо спрингоподобные костыли). А раз так, то у людей возникает два вопроса: «стоит ли рисковать и подсаживать проект на Котлин?», и «а почему тогда не на Scala», которая уже имеет сформировавшийся стек?

        Общая мысль такая, что язык сам по себе не несет большого смысла. Его можно рассматривать только вкупе: язык + целевые задачи + экосистема.


    1. ko11ega
      14.03.2016 17:30

      По поводу ECMAScript/Dart/Typescript, WebAssembly разве не позволяет избавиться от самой идеи стандарта де-факто, которым сейчас является JavaScript?


    1. z3apa3a
      14.03.2016 19:12
      +2

      А что несерьезного с Lua? У Lua своя ниша, где он вне конкуренции — как встроенный язык для скриптинга/автоматизации в различных движках. Вот только работают с ним чаще всего не профессиональные программисты, а администраторы или даже конечные пользователи.


      1. Throwable
        14.03.2016 20:42

        Если вы программируете геймерскую логику — хорошо. Но какая дальнейшая перспектива у этого языка? Какую серьезную конкуренцию он может составить тому же пайтону вне своей песочницы? А вот в его песочницу уже лезут JS и C# (Unity3d).


    1. rock
      15.03.2016 13:20
      +1

      ECMAScript/Dart/Typescript — никто не знает чем закончится конкуренция и что будет следующим стандартом де-факто для вебплатформы.

      Вы серьёзно?


    1. nehaev
      15.03.2016 22:44
      +1

      > Scala — продвигается в основном теми, кому стала тесна Java, а посему всегда будет вторична к ней.

      Пока что на практике Java как язык вторична по отношению к Scala. Лямбды, REPL, теперь вот автовывод типов предлагают… Ждем когда они у себя «изобретут» кейс-классы и паттерн-матчинг.


      1. Throwable
        16.03.2016 00:19

        Java скорей ориентируется на C#, нежели на скалу. Скала может и имеет некоторые специфичные решения и области применения, но вцелом она все еще полагается на экосистему Java. Самостоятельнось скалы под вопросом.


        1. nehaev
          16.03.2016 10:42
          +1

          > Java скорей ориентируется на C#, нежели на скалу.

          Сомневаюсь, что они ориентируются строго на С#, скорее на некий усредненный запрос от программистов, которому C# в том числе старается соответствовать. И кстати, если посмотреть на некоторые последние фичи C#: self-hosted компилятор, строковая интерполяция, вложенные функции, туплы, паттерн-матчинг… хм… в Scala, например, это все уже есть. Так что, опять же, все указывает на то, что не скала вторична, а как раз-таки наоброт.

          > Скала может и имеет некоторые специфичные решения и области применения

          Есть области применения, где вопрос Scala vs Java не стоит, т.к. Java просто не подходит. А вот примеров Java-проектов, в которых нельзя было бы взять Scala вместо/вместе с Java и получить бенефитов в виде возросшей продуктивности, мне в голову не приходит.

          > но вцелом она все еще полагается на экосистему Java. Самостоятельнось скалы под вопросом.

          Нет, в целом Scala уже довольно давно не полагается на экосистему Java (если не считать JVM). Более того, на мой взгляд Scala как никакой другой JVM-язык (кроме Java) вносит вклад в экосистему Java. Затрудняюсь назвать какие-либо Groovy-, Clojure- или Kotlin-фреймворки, которые использовались бы джавистами так же активно, как Spark, Play или Akka.


          1. grossws
            16.03.2016 11:53

            Есть области применения, где вопрос Scala vs Java не стоит, т.к. Java просто не подходит. А вот примеров Java-проектов, в которых нельзя было бы взять Scala вместо/вместе с Java и получить бенефитов в виде возросшей продуктивности, мне в голову не приходит.
            Разве что приходит в голову, что скала в некоторых случаях не подходит для написания высокопроизводительных библиотек, часто написанных в fortran-стиле либо с использованием сильных предположений о поведении компилятора и JIT'а. В качестве примеров приведу Lucene и Disruptor. Но это довольно редкие кейсы.

            Ещё одно замечание, что скала требует большей дисциплины (и более аккуратной проработки стандартов кодирования), поэтому может несколько хуже подходить для open-source проектов с распределённым ядром комитеров.


          1. Throwable
            16.03.2016 19:11
            +1

            > self-hosted компилятор, строковая интерполяция, вложенные функции, туплы, паттерн-матчинг…
            Большинство из модных фич упрощают написание кода, но далеко не всегда упрощают разработку (включая тестирование, отладку, поддержку кода). Все новые и необычные фичи очень лениво и эпизодически используются девелоперами. Это делает их наличие в языке рудиментарным. Особенно когда есть более привычный стандартный подход к решению.

            > Есть области применения, где вопрос Scala vs Java не стоит, т.к. Java просто не подходит.
            То есть Вы хотите сказать, что существуют некоторые задачи общего назначения, которые можно решить на Scala и нельзя на Java? Навскидку (только не плагин для sbt)?

            > взять Scala вместо/вместе с Java и получить бенефитов в виде возросшей продуктивности, мне в голову не приходит.
            Почему-то все мыслят продуктивность исключительно в контесте написания кода: мой код короче, я пишу быстрее, поэтому я продуктивнее. Если взять качество кода, читабельность, простоту, сопровождение, тулинг, и совместную разработку, то все профиты резко уйдут в минус.

            > Spark, Play или Akka.
            Священная троица TypeSafe. Play и Akka изначально были написаны на Java и к Scala вообще не имели никакого отношения. Интерес к Play резко упал после того как к нему прилепили скалу и выпустили несовместимую ветку 2.x. Огромное количество тех, кто использует Play, до сих пор сидят на ветке 1.x и отказываются переходить, ибо разработка на 1.x в разы продуктивней, хоть и на Java. Spark ессно имеет API на Java. А вот чисто скаловский фреймворк — это Lift. Ну и много на нем пишут?

            > Затрудняюсь назвать какие-либо Groovy
            Gradle, например.


  1. UA3MQJ
    14.03.2016 14:26
    +7

    А я вот для себя на днях открыл отличную книгу по Erlang:
    Томпсон С., Черазини Ф.
    Программирование в Erlang/Пер. с англ. Холомьёва А.О. — М.: ДМК Пресс, 2012. — 488с.


  1. mkpankov
    14.03.2016 14:44
    +8

    Shameless plug: про Rust читать перевод официальной книги на русский, перевод книги о макросах, перевод Растономикона (в процессе работы; содержание не переведено, но примерно половина глав уже на русском).


  1. NeoCode
    14.03.2016 14:56

    Интересно бы такой же обзорчик по перспективным IT-технологиям вообще, а не только по языкам программирования...


  1. Source
    14.03.2016 16:23
    -2

    По-моему с перспективами Scala и Lua давно уже всё понятно.
    А вот почему забыли про Elixir и Nim непонятно...


    1. PavelMSTU
      15.03.2016 09:02
      +4

      Source, напишите свой пост про Elixir и Nim. Мы почитаем.


  1. tangro
    14.03.2016 17:31

    Читать, конечно, можно разное, но я очень слабо представляю себе путь "выучил Lua -> нашел фултайм работу на Lua". И это справедливо для большей части указанного списка языков. Примеры с модулями на Go и Scala, которые используются в твиттере и ВК ни о чём не говорят, поскольку там их, очевидно, писали профи уровня изрядно выше среднего, которые и на С++\Java\C# написали бы их не хуже.


    1. ozkriff
      14.03.2016 18:32

      На то они и перспективные языки, а не мейнстримовые)

      Хотя мне странно, что lua в этом списке, вот уж связанную с ним работу в игрострое точно не сложно найти.


    1. j_wayne
      14.03.2016 22:12

      Меня тоже пример со Scala удивил. А вот вариант Apache Spark + Scala вполне естественный и распространенный. В т.ч. и в плане работы.


  1. andrcmdr
    14.03.2016 17:50

    Роб Пайко — уже почти наш чувак! =) Роб Пайк, поправьте пжлст =)
    А статья весьма информативная! Большое Спасибо!


  1. man4j
    14.03.2016 17:55
    -6

    Не верю ни в один из этих языков.


    1. HunterNNm
      14.03.2016 18:04
      +4

      Вспоминается фраза, не помню откуда:
      -Ты в гномиков веришь?
      -Нет.
      -А они в тебя верят.

      Scala уже состоялась, про Swift вообще молчу. Go тоже на сервере шуршит тихонько…


  1. PavelMSTU
    15.03.2016 08:46

    Он [Lua] получил известность как язык программирования многих игр (в том числе и World of Warcraft), однако может применяться не только для игр, но и там, где требуется использование данных, хранящихся в других файлах.

    Писал на Lua плагин для Wireshark + встраивал в один проектик в одной конторке.
    Язык замечательный — очень удобный для своих задач!
    И встраивается легко! (по крайней мере в связке C# + Lua)

    На уровне 3+ учиться чуть дольше Python'а.


    1. grossws
      15.03.2016 09:14

      Меня в lua вечно раздражало использование исключительно float'ов, но сейчас ещё добавили integer-представление для number.


      1. ozkriff
        15.03.2016 09:24

        Почему раздражало?


        1. grossws
          15.03.2016 09:57
          +2

          Использование на камнях без fpu — боль, сравнение float'ов — боль (и потенциальное место для ошибок); и иногда очень не хватало простых человеческих битовых операций, но их можно вынести в мини-библиотеку.


          1. ozkriff
            16.03.2016 10:53

            > Использование на камнях без fpu — боль

            Хм, для такой, как по мне, экзотики можно было собрать с переопределением `lua_number` в `int`.

            > сравнение float'ов — боль

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

            > иногда очень не хватало простых человеческих битовых операций

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

            > их можно вынести в мини-библиотеку

            Еще у luajit было нечто приличное — http://bitop.luajit.org — но это, конечно, не стандартный интерпретатор и не везде заработает.

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


            1. ozkriff
              16.03.2016 11:59

              > и потенциальное место для ошибок

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


            1. grossws
              16.03.2016 12:27
              +1

              Кейс, когда меня это зацепило — использование lua, как встроенного языка для микроконтроллера. Соответственно, я не имел возможности:

              • пересобрать lua (а если бы и имел — float для других вещей там всё равно был нужен, т. к. измерения с датчиков обычно нецелые);
              • подсунуть стороннюю библиотеку.

              Библиотека с битовыми операциями там естественно была, но не зная её реализации сложно сказать, что выдаст a=1; b=2; bit.xor(a, b): 3, как ожидаешь, или что-нибудь типа (float)((*((int*)(&a))) ^ (*((int*)(&b)))). И что будет, если операнды для битовых операций должны были быть 32-битными числами, которые в точности не влезают в мантиссу float32.

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


              1. PavelMSTU
                17.03.2016 13:51

                Кейс, когда меня это зацепило — использование lua, как встроенного языка для микроконтроллера

                Очень интересно!
                А можно немного поподробнее!
                (или это гостайна?)

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

                Основной упор Lua, как я понимаю, это очень легкая, быстрая и надежная встраиваимость.
                А на счет недостадков — то, разумеется, они есть.


                1. grossws
                  19.03.2016 02:45

                  Не гт. Контроллер, который я имею ввиду, делается совместно российской и немецкой компаниями. С российской стороны это Эвика.

                  По назначению — всякий умный дом, домашняя автоматизация. Я использовал для реализации WebSCADA для пары простых промышленных вентустановок, но пришлось несколько помучиться.

                  В принципе, на контроллере linux, веб-интерфейс и для пользователя, и для разработчика. Вся конфигурация лежит в sqlite, есть набор библиотек, доступных из lua, которые являются обёртками над сишными библиотеками + плюс библиотека для взаимодействия с коммуникационным ядром контроллера (который может выступать в качестве шлюза) и простой userstorage, через который можно обмениваться данными между разными скриптами.

                  Скрипты могут запускаться по таймеру, по событию и т. п. В последнем случае в системной таблице доступен объект, описывающий событие.

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


  1. zim32
    15.03.2016 14:01
    -2

    Ну и кто из этих новичков и почему вдруг должен заменить джаваскрипт?


  1. Sixshaman
    15.03.2016 14:44

    Жаль, что PACKT не осуществляет доставку на физические адреса в Россию. Я бы купил у них пару книжек.


  1. scifix
    15.03.2016 20:35

    Интересно кто в итоге останется в живых из этого Зоопарка


    1. PavelMSTU
      17.03.2016 13:53

      Lua и Scala — однозначно останутся.
      (Возможно с дальнейшей эволюцией во что-нибудь более мощное)

      Про остальные — не в курсе.


  1. SadJoker
    20.03.2016 10:11

    По scala именно для ознакомления, как мне кажется, намного лучше подходит Scala для нетерпеливых Хорстмана (Scala for impatient, Cay S. Horstmann). По объему она в 2 раза меньше Programming in Scala и местами поверхностна, но дает хороший обзор основных возможностей языка, легко читается и на удивление неплохо переведена (не уверен, как сейчас обстоят дела с русскоязычными книгами по программированию, может хорошие переводы стали стандартом).