Рекурсивные вычисления -- это сердце декларативного программирования.
#парадигмы_программирования #из_теории
#парадигмы_программирования #из_теории
😱5
А вы знали, что существуют рекурсивные типы данных?
Списки различий -- это частный случай структур различий.
Структуры различий -- это частные случаи аккумуляторов.
#парадигмы_программирования #из_теории
Списки различий -- это частный случай структур различий.
Структуры различий -- это частные случаи аккумуляторов.
#парадигмы_программирования #из_теории
👍1
Персистентные структуры данных -- это структуры данных, для которых хранится история их изменений.
#парадигмы_программирования #из_теории
#парадигмы_программирования #из_теории
👍4
А вы знали, что списки - это рекурсивная структура данных?
Деревья - тоже рекурсивная структура данных!
Раньше для меня список был просто линейной структурой данных, которая содержит какой-то набор значений.
Если это связный список, то каждый элемент имеет ссылку на следующий. Если двусвязный, то каждый элемент имеет ссылку на соседние элементы.
Оказывается список - это еще рекурсивная структура - за каждым элементом списка следует более маленький список!
Дерево - это иерархическая рекурсивная структура данных - за каждым элементом дерева следует произвольное количество более маленьких деревьев!
#парадигмы_программирования #из_теории
Деревья - тоже рекурсивная структура данных!
Раньше для меня список был просто линейной структурой данных, которая содержит какой-то набор значений.
Если это связный список, то каждый элемент имеет ссылку на следующий. Если двусвязный, то каждый элемент имеет ссылку на соседние элементы.
Оказывается список - это еще рекурсивная структура - за каждым элементом списка следует более маленький список!
Дерево - это иерархическая рекурсивная структура данных - за каждым элементом дерева следует произвольное количество более маленьких деревьев!
#парадигмы_программирования #из_теории
😱5
Написать декларативную программу -- значит, спроектировать эту программу как множество определений чистых рекурсивных функций, комбинируя их по правилам программирования высшего порядка.
#парадигмы_программирования #из_теории
#парадигмы_программирования #из_теории
🔥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