За рік, що минув з релізу Kotlin 1.0, мови сталися прориви по багатьом фронтах: від підтримки в Gradle Spring до виходу книги «Kotlin in Action». Число Kotlin-рядків на GitHub зросла більш ніж учетверо, перевищивши 10 мільйонів. А тепер вийшла версія 1.1, додає компіляцію в JavaScript, і це виглядає гучного заявкою на нову частку ринку. Чи означає це все, що ось тепер час Kotlin по-справжньому прийшло, і нам всім пора активно використовувати мову в продакшені?

Андрій Бреслав (JetBrains) і Антон Кекс (Codeborne) багато знають про Kotlin (і обидва скоро виступлять на JPoint з доповідями про нього), але при цьому дивляться на нього з різних сторін: поки Антон розробляє на цій мові, Андрій працює над самим мовою. Ми вирішили, що про сьогодення і майбутнє Kotlin цікаво поговорити з ними обома відразу, отримавши повну картину. Почавши з питань про бурхливому зростанні, потім встигли обговорити ще багато що:

  • Взаємодія з розробниками і процес еволюції мови
  • Компіляцію в JS, проект Kotlin Native і мультиплатформеність в загальному
  • Недосконалості
  • Kotlin-паззлеры
  • Очікування і амбіції

Читати далі →

«Як я провів це літо»: відео з літніх зустрічей JUG.ru

Ось і настала осінь. Хтось повертається в місто з центнером яблук в багажнику, хтось — з норвезьким пивом прямо з JavaZone, а ми підготували для вас матеріал, який, сподіваємося, перечекає непогоду. Ми розповімо про трьох літніх зустрічах JUG.ru. Тому розробники, повернувшись із відпусток, мають чудову можливість запастися чашкою гарячого чаю, загорнутися в плед і подивитися відео з наших митапов.

Отже, влітку у нас було три зустрічі:
    — Douglas Hawkins з Azul розповів про особливості роботи JIT-компіляторів в HotSpot JVM;
    — Alvaro Hernandez, розробник ToroDB, розповів про те, як Java працює з PostgreSQL;
    — нарешті, Євген Борисов порадував нас новою порцією загадок на тему Spring.


Читати далі →

Функція reduce

  JavaScript в останні роки набрав неабияку популярність, у зв'язку з чим його підводні камені також стали виразно видні. Справедливості заради, варто відзначити, що будь-яка мова в деякій мірі має як своє legacy, так і підводні камені.
Конкретно JavaScript має цілу городом каменів. Підводним городом.
 
На практиці, підводні камені зустрічаються не так часто, навпаки, хороший код схильний бути описаним в рамках здорового підмножини мови. Це також є і причиною, чому запам'ятати всі заковирка мови досить складно: вони не є необхідними для щоденної практики. Проте, різноманітні граничні випадки використання мовних конструкцій це відмінна розминка для розуму, а також стимул дізнатися мову трохи краще. Сьогоднішній екземпляр попався мені на очі в процесі проходження JavaScript Puzzlers .
 
Мене зацікавив питання номер 3 :
Який результат цього виразу (або кількох)?
 
 
[ [3,2,1].reduce(Math.pow), [].reduce(Math.pow) ]

Як відповідь авторами, на вибір, даються такі варіанти:
* Помилка
*
[9, 0]

*
[9, NaN]

*
[9, undefined]

 
Спробуйте і ви, без запуску інтерпретатора, користуючись тільки своїм розумом відповісти на це питання.
 
Незважаючи на те, що приклад досить відсторонений, аплікація функцій і частково певних функцій до колекцій це поширена практика для JS, і, при здоровому використанні, вона здатна зробити код чистіше, як в плані виконання — позбавити його від зайвих замикань, так і у візуальному плані — менше скобового сміття (питання використання препроцесорів залишимо для іншої статті).
 
А в цій статті ви знайдете:
* Розбір задачки.
* JavaScript
reduce
з суто практичної точки зору.
* Кілька акробатичних етюдів з
reduce
(
reduce
з академічної точки зору).
* Репозиторій з пляшками до статті.
* Кілька інших
reduce
.
 
Читати далі →