develop7

9 октября 2017

# Понедельник 10 твитов

Прывітанне из солнечной Беларуси. На этой неделе у микрофона я, @develop7.

9:41

Пишу веб с 2005, бэкенд по большей части на Ruby, до этого на PHP. Краткая характеристика - «оба хуже»©

10:58

На этой неделе - посягаем на устои, пропагандируем хорошее и осуждаем плохое. Не переключайтесь.

11:37

Тем временем неуклонно заканчиваются билеты для early birds на fby.by.

19:15
@backendsecret почему оба хуже, можно развернутый ответ? и что тогда "лучше"?

Оба — динамически типизированные ЯП, вследствие чего контракты проверяются в рантайме, что вынуждает писать вагоны… twitter.com/i/web/status/9…

19:21

На практике приходится ограничиваться интеграционными тестами, т.к. поддерживать ещё и юнит-тесты неотчуждаемого кода никаких сил нет.

19:25

Вагоны — небольшое преувеличение, т.к. каждый code path необходимо покрыть, т.к. иначе можем пропустить в нём регрессию.

19:29

В обоих языках вместо средств метапрограммирования — PHP, то есть обычный M4.

19:33

Сгенерить им синтаксически некорректный код — как два байта переслать. И если в PHP кодогенерят тупо файлы (правильно ведь?), то в Ruby…

19:35

…в Ruby пошли дальше, и генерят код в рантайме и тут же его выполняют. In "Metaprogramming Ruby" Q stands for "readability".

19:50

# Вторник 3 твита

@backendsecret вопрос по #ruby и #php - порекомендовали бы их как первые языки для начинающих? Если нет, то почему… twitter.com/i/web/status/9…

Сложно сказать. С одной стороны, это плохие языки, с другой - не уверен, что есть разница, на чём писать лабораторн… twitter.com/i/web/status/9…

10:58
@backendsecret @kelin2025 расскажи про Reason

OCaml с фигурными скобками (js-подобным синтаксисом), компилируется в JS. reasonml.github.io/community/blog… twitter.com/7buyer4/status…

11:33
Уточните критерии "хорошести" языка программирования. twitter.com/backendsecret/…

Не заставляет программиста делать работу, для которой изобретали компьютеры. twitter.com/pavel_prischep…

12:01

# Среда 14 твитов

@backendsecret а преобразовывать требования заказчика в код это не работа для машины?)
Рано или поздно, ведь, ИИ займёт эту нишу.

Зависит от проекта :) twitter.com/last_khajiit/s…

7:11
@backendsecret >Кейсы покрываются sum types aka ADT

вы не по назначению используете инструменты

За неимением гербовой (зависимых типов) пишем на обычной – fsharpforfunandprofit.com/posts/designin… twitter.com/last_khajiit/s…

10:17
@backendsecret Какую работу заставляет программиста делать Ruby, для которой изобретали компьютеры?

Запоминать тучи фактов вроде сигнатур функций, типов принимаемых значений, ключи и типы значений в splat argument и… twitter.com/i/web/status/9…

10:27

К слову, по сравнению с наносимой пользой, стоят лицензии @rubymine/@intellijidea довольно скромно.

10:31

Безусловно, это вроде как документируется средствами YARD, но разработчики библиотек спецификации типа как-то всё больше игнорируют.

10:33

Осталось ещё совсем немного о плохом.

10:41
@backendsecret Интоксикация пхп

Кстати да, я что-то увлёкся представителями пыхоплеяды. Наболело, видимо :) twitter.com/ruxeg/status/9…

11:19

Вместо type annotation comments рельсоводами, похоже, предлагается перечитывать guides.rubyonrails.org или простыни github.com/rails/rails/bl…

11:27

Не, надоело о плохом

13:08

youtube.com/watch?v=sT6VJk… сборщики мусора избавили нас от управления памятью вручную; Саймон Марлоу избавил от распараллеливания задач вручную

13:11

blog.mozilla.org/security/2017/… формально верифицированной крипты всем

14:53

ruby-doc.org/core-2.1.1/doc… а вот правильный способ манкипатчить всё и вся в Ruby. Им, конечно, никто не пользуется уже 5 лет, но надежда тлеет

17:07
Every. Single. Software developer. Must. Take. Note.

YOU can go to jail for the code YOUR BOSS tells you to write. twitter.com/reuters/status…

Хорошее повтори и ещё раз повтори. twitter.com/tedneward/stat…

18:44

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

18:53

# Четверг 1 твит

#funcby Call for Papers! If you wish to speak at F(by) 2017 or you have friends-speakers, please fill in or share >… twitter.com/i/web/status/9…

The CFP's still up! twitter.com/EventSpaceBy/s…

14:37

# Суббота 5 твитов

Прошу прощения за незапланированное отсутствие, оказалось немного некогда.
Продолжаем о хорошем.

14:16

Вот fsharpforfunandprofit.com — ресурс, собственно пропагандирующий всё хорошее, что есть в современной разработке ПО.

14:28

Боюсь ошибиться, но F#, похоже, полностью покрывает функциональность C#, при этом являясь полноценным функциональным ЯП.

15:00

Почти полноценным — вроде как нет type classes aka traits.

15:00
@backendsecret Да, очень интересно, что такое полноценные фп, и какие из яп полноценные.

Хорошо, поймали на слове.
Приемлемая компонуемость обеспечивается первоклассными функциями и partial application:… twitter.com/i/web/status/9…

21:26

# Воскресенье 11 твитов

Реализация помянутых фич при помощи хелперов а-ля papply в Lisp или lambda в Ruby мне не подходит, т.к. зашумляет код.

12:24

Таким образом, полноценными *функциональными* языками программирования являются Haskell, OCaml, F#, PureScript, Idris и проч.

12:26

Полноценными же ЯП вообще я считаю сильно строго типизированные функциональные языки со следующими фичами:

12:29

0) abstract data types
1) type inference
2) pattern matching
3) (всё-таки опционально) type classes

12:30

Таким образом, полноценными ЯП являются помянутые Haskell, OCaml, F#, PureScript, Idris, ReasonML и сотоварищи.

12:32

Вот я тут топлю за эксплутацию компьютеров по назначению, на что аболиционисты возражают «зачем это умничанье, мы и сами можем!»…

12:42

…«Если ты не можешь, значит ты
— тупой
— профнепригоден
— ленивый
— ещё какой-нибудь плохой

12:45
@daunnc вроде как да, но у меня они стоят на одной полке с javascript
13:00

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

13:03

Если бы он справлялся с ней хотя бы приемлемо, не возникло бы потребности даже в C, не говоря уж про высокоуровневые технологии.

13:05
Когда путаешь абстрактные типы с алгебраическими, но всё равно лезешь вещать в массы twitter.com/backendsecret/…

Конечно же, Algebraic Data Types. Благодарю. twitter.com/_komaz/status/…

13:07

other