Pull to refresh
254
0
Костюков Владимир @spiff

Пользователь

Send message
Я бы сказал 5-7% по последним данным:

— Очень много опитизаций было сделано Тревисом в Circe
— В Finch как минимум две вещи помогли сократить разрыв: TooFastString и быстрые ридеры

Но, на удивление, этот тест не использует ни того ни другого. В любом случае оч крутой результат!
и именно в ЯП со статической типизацией оно может случиться от любого неаккуратного обращения с памятью, и приводит к чему угодно, вплоть до выполнения случайного кода

Вам 70ые звонили, просили книгу K&R вернуть.
Кстати. Вот пример того как на Shapeless решена задача о башнях Ханое. Что такого? — Скажете вы. А вот что — задача решается пока программа компилируется. Те. Scala компилятор решает ее за вас до того как вы запускаете эту программу!
Отличный ответ!

Добавлю свои пять копеек. Shapeless — это скорее библиотека не для конечного пользователя а для разработчиков библиотек. Shapeless помогает атворам библиотек избавиться от boilerplate кода и макросов при решении типичных задач. Задач №1, с которой успешно справляется HList: у вас есть два типа A и B как их собрать в месте во что-то с чем вы можете потом работать. Можно собрать из них Scala tuple (A, B) и этого бывает достаточно в большинстве случаев, но когда речь идет о трех, четырех, и тд типов — появляются nested tuples (A, (B, (C, D))) с которыми уже не очень удобно работать как автору библиотек так и ее пользователю. Эта проблема частично решается с помощью некоторго количества boilerplate кода который нужно поддерживать и тестировать. Идея Shapeless (HList в честности) — это как раз дать разработчикам библиотек единый инструмент для решения этой проблемы. Т.е. boilerplate код о которым мы говорили ранее — переносится в Shapeless а значит нам его уже поддерживать не надо.

Еще одна очень интересная особенность Shapeless. При правильном ее использовании автором библиотеки, ее пользователи никогда не догадаются что там где-то в недрах привычного API трудится HList. Примерами таких удачных внедрений я могу назвать scodec, Spray, parboiled2.

На последок, есть отличная презентация от Трэвиса Брауна (#1 Shapeless эксперт на SO) о том как и почему Shapeless был внедрен в Finch.
Можно добавить в список ScalaCheck.
Спасибо! Буду стараться :)
В основном, пользователи Finch это бывшие пользователи Finatra. Люди жалуются на то, что Finatra почти полностью скрывает Finagle API (даже фильтры), тем самым теряя очень много функционала. Finch — ничего не скрывает а лишь добавляет несколько абстракций поверх finagle-http. И благодаря тому, что слой получается очень тонкий и неизменяемый — производительность Finch очень хороша:

Отзыв одного из инженеров Globo.com:
And speaking of where we are using Finch, we are currently rebuilding our users platform on top of Finagle and Finch. We started with Finatra, but after doing several benchmarks, we decided to stop using it, and moved to Finagle, until I found Finch, which is quite straightforward. It responds 16X faster than Finatra on a simple /healthcheck endpoint, responding “OK”. Crazy isn’t it?
Еще проще: пост в хабе Scala :)
Мой скромный совет по именованию методов:
GET http://api.code.re/snippets/{id} — получить сниппет
PUT http://api.code.re/snippets/{id} — обновить сниппет
DELETE http://api.code.re/snippets/{id} — удалить сниппет
GET http://api.code.re/snippets — все сниппеты
GET http://api.code.re/highlights — все схемы подсветки (или schemas)
Господа, но колбэки не компонуются! Это гребаный приговор.


Браво!
А как в этом рюкзаке с отделом под 17 дюймовый ноутбук чувствует себя MB Pro 13''?
Я даже боюсь представить (в хорошем смысле) что будет со Scala к тому времени как выйдет Java 15.
Как написал Erik Meijer у себя в твиттере:

Congrats to all my friends at #oracle. Functional programming is now officially mainstream,and my mission complete.


По поводу «парсинга PHP кода» и генерации C++ кода. Не забывайте, что С++ язык со статической типизацией а PHP — нет. И трансляция динамического языка в статический вообще говоря проблема неразрешимая в общем смысле. Приходится применять кучу эвристик чтобы сократить количество типов void* в генерируемом коде. И Facebook и MathWorks делали нечто подобное и насколько мне известно, поле это почти не паханное — серебряной пули нет.

Так вот. Теперь представьте ОПП во всей его красе (sub-type полиморфизм как минимум) и все становится еще печальнее.
О. Тогда прошу прощения :) Деревня я — не слышал про Твитч, думал вы так Твиттер искаверкали.
Твиттер работает на Scala стеке.
Забавно обыгран логотип!

У нас в Новосибирске тоже есть Scala тусовка: www.meetup.com/ScalaNsk/. Успели провести 5 встреч: 40-50 человек участников в среднем.
C++, как и любой другой язык программирования не более чем инструмент. Я не говорю, что его вообще не надо изучать. Изучение конкретных инструментов должно протекать в контексте решения конкретных задач. Например: учим ИИ, пишет лабораторные на С++ (или любом другом языке). Для этого хватит и базового владения языком. Остальное (как и другие инструменты) можно изучить уже в рабочей среде и по мере необходимости. Кажется это называется «опыт».
Если фундаментальное образование будет включать годовой курс по С++ то это, простите, финиш.
Вот например его легендарный PhD Guide.

Information

Rating
Does not participate
Location
San Francisco, California, США
Date of birth
Registered
Activity