Написать декларативную программу -- значит, спроектировать эту программу как множество определений чистых рекурсивных функций, комбинируя их по правилам программирования высшего порядка.
#парадигмы_программирования #из_теории
#парадигмы_программирования #из_теории
🔥4
А вы знали, что рекурсии бывают прямыми и непрямыми?
Прямая рекурсия означает, что функция явно вызывает себя в своём теле.
Непрямая рекурсия означает, что функция вызывает другую функцию, которая вызывает исходную функцию.
#парадигмы_программирования #из_теории
Прямая рекурсия означает, что функция явно вызывает себя в своём теле.
Непрямая рекурсия означает, что функция вызывает другую функцию, которая вызывает исходную функцию.
#парадигмы_программирования #из_теории
🔥5
Коллекция - это разновидность АТД, которая группирует набор значений в одну составную сущность (контейнер).
Разновидности коллекций:
- кортежи и записи - в декларативной модели;
- массивы и словари - в state-full модели (императивной);
#парадигмы_программирования #из_теории
Разновидности коллекций:
- кортежи и записи - в декларативной модели;
- массивы и словари - в state-full модели (императивной);
#парадигмы_программирования #из_теории
🔥3
Виды и свойства АТД
Безопасность:
1) Открытый АТД - внутреннее представление доступно;
2) Защищенный (безопасный) АТД - внутреннее представление скрыто/недоступно;
Состояние:
3) Stateless-АТД - экземпляры АТД недоступны для изменений, создаются новые сущности;
4) Stateful-АТД - экземпляры АТД доступны для изменений, имеют явное состояние.
Бандлинг:
5) Распакованный АТД - данные отделены от операций;
6) Запакованный АТД - данные и операции хранятся вместе (ООП);
Различные комбинации этих 3-х свойств дают разные способы реализации АТД.
#парадигмы_программирования #из_теории
Безопасность:
1) Открытый АТД - внутреннее представление доступно;
2) Защищенный (безопасный) АТД - внутреннее представление скрыто/недоступно;
Состояние:
3) Stateless-АТД - экземпляры АТД недоступны для изменений, создаются новые сущности;
4) Stateful-АТД - экземпляры АТД доступны для изменений, имеют явное состояние.
Бандлинг:
5) Распакованный АТД - данные отделены от операций;
6) Запакованный АТД - данные и операции хранятся вместе (ООП);
Различные комбинации этих 3-х свойств дают разные способы реализации АТД.
#парадигмы_программирования #из_теории
🔥4👍1
5 способов реализации АТД
1) Открытый, декларативный, распакованный.
2) Защищённый, декларативный, распакованный. (Скрываем содержимое - оно напрямую недоступно);
3) Защищённый, декларативный, запакованный. (Stateless версия ООП);
4) Защищённый, stateful, запакованный. (Классический ООП);
5) Защищённый, stateful, распакованный. (Распакованная версия ООП);
#парадигмы_программирования #из_теории
1) Открытый, декларативный, распакованный.
2) Защищённый, декларативный, распакованный. (Скрываем содержимое - оно напрямую недоступно);
3) Защищённый, декларативный, запакованный. (Stateless версия ООП);
4) Защищённый, stateful, запакованный. (Классический ООП);
5) Защищённый, stateful, распакованный. (Распакованная версия ООП);
#парадигмы_программирования #из_теории
🔥3
DON'T STOP AND CODE
Кстати, каналу сегодня ровно год. :) 15 августа прошлого года создал канал в телеге и аккаунт на GitHub. Быстро время летит.
Кстати, 15-го августа каналу исполнилось 2 года! 😊
Классно пересматривать историю в канале. Смотреть на свой прогресс.
Да, из меня блогер не очень хороший. Но я надеюсь это исправить когда-нибудь. Возможно, просто ещё не наступило время. =) Иногда хочется много чего написать, но... не пишу.😅
Спасибо всем кто подписан на канал. Намного приятнее писать заметки тут, зная что я здесь не один.😅 Иногда звезды складываются и с кем-то из вас удаётся пообщаться в комментариях или в личке))
Классно пересматривать историю в канале. Смотреть на свой прогресс.
Да, из меня блогер не очень хороший. Но я надеюсь это исправить когда-нибудь. Возможно, просто ещё не наступило время. =) Иногда хочется много чего написать, но... не пишу.😅
Спасибо всем кто подписан на канал. Намного приятнее писать заметки тут, зная что я здесь не один.😅 Иногда звезды складываются и с кем-то из вас удаётся пообщаться в комментариях или в личке))
🔥7👍2🎉1🏆1🦄1
👆С такими словами моя супруга поинтересовалась моими планами на день. =)
Фраза очень понравилась.😊
Фраза очень понравилась.😊
🤗1
Кто-то из вас контролирует цикломатическую сложность?
Anonymous Poll
36%
Да
27%
Нет
36%
Что это такое?
Отчитываюсь о своем прогрессе в освоении программирования.
1) За последние несколько месяцев познакомился с различными парадигмами программирования:
- декларативная модель;
- императивная модель;
- объектно-ориентированная модель;
Это дало очень мощную прокачку мышления и позволило разрозненные знания привести в систему. Разобрался в вопросе состояний. А также для себя понял когда следует применять ООП, а когда этого делать не нужно.
2) Познакомился с основами функционального программирования. Теперь меня не пугают такие понятия как:
- функции как объекты первого класса;
- функции высшего порядка;
- замыкания;
- композиции функций;
- состояние и побочные эффекты;
- чистые функции;
- ссылочная прозрачность;
- функторы и монады;
- персистентные структуры данных;
- и многое другое;
3) В дополнение разбираюсь с цикломатической сложностью в программировании. Измеряю данный показатель. Пытаюсь переписывать функции и методы, понижая цикломатическую сложность.
Идем дальше.👨💻
1) За последние несколько месяцев познакомился с различными парадигмами программирования:
- декларативная модель;
- императивная модель;
- объектно-ориентированная модель;
Это дало очень мощную прокачку мышления и позволило разрозненные знания привести в систему. Разобрался в вопросе состояний. А также для себя понял когда следует применять ООП, а когда этого делать не нужно.
2) Познакомился с основами функционального программирования. Теперь меня не пугают такие понятия как:
- функции как объекты первого класса;
- функции высшего порядка;
- замыкания;
- композиции функций;
- состояние и побочные эффекты;
- чистые функции;
- ссылочная прозрачность;
- функторы и монады;
- персистентные структуры данных;
- и многое другое;
3) В дополнение разбираюсь с цикломатической сложностью в программировании. Измеряю данный показатель. Пытаюсь переписывать функции и методы, понижая цикломатическую сложность.
Идем дальше.👨💻
👏4🔥2
Спасибо всем кто принял участие в опросе про цикломатическую сложность.
Цикломатическая сложность - это метрика с помощью которой можно выявить сложные функции/методы в рабочем коде. Это одна из ключевых метрик простоты кода, показывающая его запутанность.
Код с высокой цикломатической сложностью сложно тестировать, вносить изменения, находить ошибки.
Обычно это функции, которые содержат большое кол-во условных операторов и циклов.
Решил измерить данную метрику на работе. Нашел функции и методы, которые имеют высокую цикломатическую сложность. Банально сложно было понять что происходит в коде, не говоря уже о том, как безболезненно внести в него изменения. Во время рефакторинга прочувствовал всю эту сложность.
Поэтому нужно следить за данной метрикой и стараться писать код с низкой цикломатической сложностью.👨💻
#из_теории #советы #из_практики
Цикломатическая сложность - это метрика с помощью которой можно выявить сложные функции/методы в рабочем коде. Это одна из ключевых метрик простоты кода, показывающая его запутанность.
Код с высокой цикломатической сложностью сложно тестировать, вносить изменения, находить ошибки.
Обычно это функции, которые содержат большое кол-во условных операторов и циклов.
Решил измерить данную метрику на работе. Нашел функции и методы, которые имеют высокую цикломатическую сложность. Банально сложно было понять что происходит в коде, не говоря уже о том, как безболезненно внести в него изменения. Во время рефакторинга прочувствовал всю эту сложность.
Поэтому нужно следить за данной метрикой и стараться писать код с низкой цикломатической сложностью.👨💻
#из_теории #советы #из_практики
🔥4
Всем привет!
На работе последний месяц старался быть максимально полезным и активным. Закрывал много задач, помогал коллегам, активно взаимодействовал с пользователями. На последней встрече 1:1 с Product owner- ом он отметил мою активность и выразил мне поддержку.
Также сказал, что хотел бы, чтобы мой голос на командных встречах был громче. Вот такие дела.
В целом хочу отметить некоторый эмоциональный и энергетический подъём, который длится уже больше месяца. =)
На работе последний месяц старался быть максимально полезным и активным. Закрывал много задач, помогал коллегам, активно взаимодействовал с пользователями. На последней встрече 1:1 с Product owner- ом он отметил мою активность и выразил мне поддержку.
Также сказал, что хотел бы, чтобы мой голос на командных встречах был громче. Вот такие дела.
В целом хочу отметить некоторый эмоциональный и энергетический подъём, который длится уже больше месяца. =)
🔥6👏2🏆2
Удивительно как меняется мышление и постепенно увеличиваются способности после знакомства с парадигмами программирования:
- на этапе анализа задачи в голове начинают рождаться различные способы решения, используя разные парадигмы;
- все чаще становятся видны элегантные способы реализации очередного метода или функции с помощью рекурсий;
- при определении переменных чаще задаешь себе такие вопросы: "Здесь точно нужна очередная переменная?", "Можно ли здесь обойтись без нее?", "Какой тип данных здесь будет более уместен? Изменяемый или неизменяемый?", "Какие плюсы и минусы у этого типа данных?"
Раньше такого не было.😁
- на этапе анализа задачи в голове начинают рождаться различные способы решения, используя разные парадигмы;
- все чаще становятся видны элегантные способы реализации очередного метода или функции с помощью рекурсий;
- при определении переменных чаще задаешь себе такие вопросы: "Здесь точно нужна очередная переменная?", "Можно ли здесь обойтись без нее?", "Какой тип данных здесь будет более уместен? Изменяемый или неизменяемый?", "Какие плюсы и минусы у этого типа данных?"
Раньше такого не было.😁
🔥3👏3👍2