Clojure — диалект Lisp, с непривычки читать его совершенно невозможно. Но язык интересный.
В нем просто и безопасно работать с параллельными вычислениям, он поддерживает отложенные вычислниями.
Самым интересным концептом мне видется "данные как код". Любая программа — это просто список. И это дает много интересных возможностей.
С помощью макросов можно конструировать удобные предметно-ориентированные языки.
#языки
  
  
  
  
  
  В нем просто и безопасно работать с параллельными вычислениям, он поддерживает отложенные вычислниями.
Самым интересным концептом мне видется "данные как код". Любая программа — это просто список. И это дает много интересных возможностей.
С помощью макросов можно конструировать удобные предметно-ориентированные языки.
#языки
Много мелких конфликтов в команде происходит из-за разных ожиданий.
Разработчик и менеджер договорились, что форум выкатят до конца недели. Разработчик под этим понимает одно, а менеджер совсем другое. В конце недели они неизбежно столкнуться с непониманием.
При выдаче ожиданий другим людям стоит строго уточнять, что они поняли, и если поняли неправильно, корректировать.
#softskills
  Разработчик и менеджер договорились, что форум выкатят до конца недели. Разработчик под этим понимает одно, а менеджер совсем другое. В конце недели они неизбежно столкнуться с непониманием.
При выдаче ожиданий другим людям стоит строго уточнять, что они поняли, и если поняли неправильно, корректировать.
#softskills
Последний язык в "7 языков за 7 недель" — Haskell. Единственный чисто (фанатично) функциональный язык в книжке.
Писать на нем очень приятно, он невероятно выразителен. Отсутствие изменяемого состояния упрощает любой код, а чистота функций гарантирует их предсказуемость.
Система типов логичная, удобная. Вывод типов работает хорошо и совсем не мешает выражать намерения в коде.
Но реальные программы должны иметь побочные эффекты. Иначе они ничего полезного не сделают. И тут начинаются сложности. Все побочные эффекты реализованы через монады. Это сложный концепт. Но, допускаю, что благодаря этому решению все остальное а языке кристально однозначно.
#языки
  
  
  
  
  
  Писать на нем очень приятно, он невероятно выразителен. Отсутствие изменяемого состояния упрощает любой код, а чистота функций гарантирует их предсказуемость.
Система типов логичная, удобная. Вывод типов работает хорошо и совсем не мешает выражать намерения в коде.
Но реальные программы должны иметь побочные эффекты. Иначе они ничего полезного не сделают. И тут начинаются сложности. Все побочные эффекты реализованы через монады. Это сложный концепт. Но, допускаю, что благодаря этому решению все остальное а языке кристально однозначно.
#языки
Касательно монад, подписчик прислал хорошее объяснение — https://m.habr.com/post/257903/comments/#comment_8429641
  
  Habr
  
  
  
  Нужная книга
Дочитал "Семь языков за семь недель" Брюса Тейта. И она хороша. Рассмотренные языки очень разные. Каждый из них несёт свою идею. Освоить их важно и нужно. Это позволит не зацикливаться на привычном способе программирования.
Не думаю, что кому-то придется в реальной жизни столкнуться с Io, Prolog или Erlang, но те способы мышления, которые прививают эти языки точно пригодятся.
#языки
  Дочитал "Семь языков за семь недель" Брюса Тейта. И она хороша. Рассмотренные языки очень разные. Каждый из них несёт свою идею. Освоить их важно и нужно. Это позволит не зацикливаться на привычном способе программирования.
Не думаю, что кому-то придется в реальной жизни столкнуться с Io, Prolog или Erlang, но те способы мышления, которые прививают эти языки точно пригодятся.
#языки
Мудрость из книги
Рефакторинг важен. Осенью купил курс Рефакторинг.Гуру, сейчас до него добрался.
В первых разделах рассмотрены запахи плохого кода — признаки необходимости рефакторинга.
Самый распространный запах — единица кода (метод, класс, модуль) стала слишком большой.
Это проиходит когда метод-класс-модуль берет на себя больше отвественности чем должен. В таком случае следует пересмотреть дизайн единицы кода и разделить ее по отвественностям.
Не нужно бояться, что это приведет к ухудшению производительности. Чаще всего, это не играет роли.
Конспект интерактивного курса "Рефакторинг.Гуру".
#рефакторинг
  Рефакторинг важен. Осенью купил курс Рефакторинг.Гуру, сейчас до него добрался.
В первых разделах рассмотрены запахи плохого кода — признаки необходимости рефакторинга.
Самый распространный запах — единица кода (метод, класс, модуль) стала слишком большой.
Это проиходит когда метод-класс-модуль берет на себя больше отвественности чем должен. В таком случае следует пересмотреть дизайн единицы кода и разделить ее по отвественностям.
Не нужно бояться, что это приведет к ухудшению производительности. Чаще всего, это не играет роли.
Конспект интерактивного курса "Рефакторинг.Гуру".
#рефакторинг
Мудрость из книги
Еще один запах плохого кода — одержимость элементарными типами.
1. Когда деньги выражаются как float или телефонный номер как string — это проблема. Подобные значения должны быть выделены в класс, вместе с присущим ему поведением.
2. Когда константа используется для кодирования информации (например, USERADMINROLE = 1 для обозначения роли) — это проблема. Вместо этого лучше использовать разные классы.
3. Когда строковый константы выступают ключами ассоциативного массива — это проблема. Такие массивы легко заменяются DTO.
Конспект интерактивного курса "Рефакторинг.Гуру".
#рефакторинг
  Еще один запах плохого кода — одержимость элементарными типами.
1. Когда деньги выражаются как float или телефонный номер как string — это проблема. Подобные значения должны быть выделены в класс, вместе с присущим ему поведением.
2. Когда константа используется для кодирования информации (например, USERADMINROLE = 1 для обозначения роли) — это проблема. Вместо этого лучше использовать разные классы.
3. Когда строковый константы выступают ключами ассоциативного массива — это проблема. Такие массивы легко заменяются DTO.
Конспект интерактивного курса "Рефакторинг.Гуру".
#рефакторинг