Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Что таится в глубинах Земли? Только Аид знает наверняка. А также те, кто доберётся до дна шахты.

Эпичная Шахта

Мидкорные, Приключения, 3D

Играть

Топ прошлой недели

  • Oskanov Oskanov 9 постов
  • Animalrescueed Animalrescueed 44 поста
  • Antropogenez Antropogenez 18 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
5
djxyz

Ответ на пост «Парадигмы программирования»⁠⁠1

5 лет назад

Ребята, я автор этой статьи, прочитал ваши комментарии, спасибо за критику, я понял, что не смог донести то, что хотел, поэтому постараюсь объяснить коротко цель данной статьи:

да, она далека от полноценного понимания ООП и ФП, так как это настолько обширные темы, что одной короткой статьей(как эта) их не обхватить никак. Посмотреть только на количество статей/роликов на тему "Полиморфизм" - их огромное количество, а это всего лишь часть ООП. Чтобы человеку объяснить тот же полиморфизм, потребуется посвятить его в бесконечный холивар на эту тему, рассказать про все определения полиморфизма, показать подробные примеры - это уже отдельная статья, поэтому тут я постарался написать настолько поверхностно, насколько только можно. Ну а тогда возникает законный вопрос: "А зачем вообще тогда эта статья, какой ее смысл?".

Я хотел донести, что все в программирование взято из жизни, оно построено на нашей жизни. Эти же парадигмы - это то, как ты представляешь мир, кто ты в этом мире, что ты можешь. Мне кажется, что это достаточно интересно, если задуматься. Большинство людей говорят что-то типа: "Мы живем в матрице!", подразумевая под матрицей симуляцию мира (типа мы живем в другом компьютере), так как им кажется, что компьютер очень похож на нашу жизнь, но они даже не задумываются, что этот компьютер и был построен по образу нашего мира.

[моё] Ооп Фп Парадигма Ответ на пост Текст
0
barandyk

Парадигмы программирования⁠⁠1

5 лет назад

В данной статье я постараюсь поверхностно, не углубляясь в дебри, раскрыть понятие “Парадигма программирования”. Стоит отметить, что статья написана простым языком, в ней практически не рассматриваются сложные термины и специфичные для языков программирования понятия, поэтому она подойдет для прочтения как опытным программистам, так и людям, которые никогда не писали код.


Ну что же, приступим. Скорее всего, многим данное словосочетание покажется пугающим, но, на самом же деле, здесь нет ничего сложного. Что же такое “Парадигма программирования”?

Возьмем определение из википедии:

Парадигма программирования – это совокупность идей и понятий, определяющих стиль написания компьютерных программ (подход к программированию). Это способ концептуализации, определяющий организацию вычислений и структурирование работы, выполняемой компьютером”.

- Хмм, непонятно!


Если говорить самым простым языком, то парадигма программирования – это подход к написанию кода. Читатели без опыта программирования, вероятнее всего, зададутся вопросами: “А что это за такие подходы? То есть, например, ты пишешь код сначала левой рукой, потом правой? Или же ты пишешь код час, а потом полчаса отдыхаешь? Что это за подходы?!”. На самом же деле, подходы подразумевают под собой совсем другое и далеки от примеров, описанных до этого.


Чтобы понять, что это такое, давайте рассмотрим два основных подхода, то есть две основные парадигмы: Объектно-ориентированное программирование (ООП) и Функциональное программирование (ФП). ООП основано на том, что все можно представить в виде объектов, у которых могут быть какие-то характеристики (поля) и они могут выполнять какие-то действия (методы/функции). ФП же основано на описание процессов (функций), а не объектов. Понимаю, пока не понятно, поэтому давайте разберем простейший пример. Представим, что нам нужно как-то складывать и вычитать два числа (a и b). На картинке ниже представлен код, реализующий это в ООП и ФП (код был специально упрощен, чтобы сделать упор именно на разнице двух подходов). Вы сразу можете заметить функции “sum” (сложение) и “subtract” (вычитание), которые мы хотели реализовать.

Парадигмы программирования

- Так, ну функции я вижу, а почему в ООП есть еще “class Calculator”, что это значит?


Как уже было сказано выше, ООП основано на том, что все можно представить в виде объектов: например, есть объект “Вселенная”, она состоит из галактик (объект “Галактика”), та, в свою очередь, состоит из планет (объект “Планета”), на каждой планете могут быть люди (объект “Человек”) и так далее. Возьмем, например, объект “Человек”, его характеристиками (полями) могут быть: цвет кожи, пол, рост, возраст (что-то еще). И также он может выполнять следующие действия (методы/функции): бегать, кушать, работать и так далее. Вы легко можете спроецировать такой подход (парадигму) на жизнь, представить все вокруг с помощью объектов и вы поймете, что любое действие (метод/функция) связано с каким-либо объектом, оно не может существовать само по себе, кто-то должен его выполнять. Именно по этой причине наши действия (методы/функции) “sum” и “subtract” находятся внутри объекта “Calculator” (Калькулятор).

- Интересно! Про ООП я понял, а почему в ФП все функции ни к чему не привязаны, находятся сами по себе?


Помните я говорил, что ФП основано на процессах (функциях)? Давайте опять попробуем спроецировать это на нашу жизнь. Например, возьмем процесс (функцию) создания вселенной, галактики, планеты, человека, процесс (функцию) сложения, вычитания и т.д. Сам процесс (функция) никому не принадлежит - он общий, пользоваться может кто угодно, но при этом каждый процесс (функция) имеет определенные условия, в зависимости от которых получается тот или иной результат. Рассмотрим простой пример из жизни, процесс “Приготовление ужина”: данный процесс может осуществить кто угодно, даже ваш кот или собака, но так как опыта у них нет, то, вероятнее всего, ужин просто не будет приготовлен. То есть получается, что воспользоваться могут все, но результат будет разный.


- Фух, ну теперь понятно, что такое парадигма программирования. Ну все-таки остался вопрос: почему где-то используется одна парадигма, а где-то другая?


Вы удивитесь, но на самом деле, две эти парадигмы можно использовать одновременно. Опять-таки, давайте рассмотрим простой пример, спроецированный на реальную жизнь. Представим, что у нас есть:

1) [ООП] Объект “Человек”, который не имеет никаких характеристик (полей) (например, пол, рост и количество лет), но зато умеет готовить (имеет действие (метод/функцию) “приготовить ужин”)

2) [ООП] Объект “Собака”, у которой есть такие характеристики (поля), как цвет шерсти, возраст. И также она умеет бегать (имеет действие (метод/функцию) “бежать”)

3) [ФП] Процесс (функция) “Приготовление ужина”.


И, допустим, нам нужно приготовить ужин. Объект “Человек” умеет это делать сам по себе, так как у него есть такое действие, но также он может воспользоваться и процессом (функцией) “Приготовление ужина”, так как он доступен всем, но в таком случае результат уже может отличаться, так как процесс (функция) ориентирован на всех, а действие (метод/функция) только на этого конкретного человека. Хорошо, а что там с собакой? Так как у нее нет действия (метода/функции) “приготовить ужин”, следовательно, она сделать этого не может, но может воспользоваться общим процессом (функцией) “Приготовление ужина”. Хочу еще раз уточнить, что результат процесса будет зависеть от входных данных и как программист, написавший этот процесс (функцию), обрабатывает эти данные внутри. То есть, в итоге, сможет собака приготовить ужин или нет - решает программист.


Итак, в этой статье мы можно сказать на пальцах, без специфических терминов, разобрали основные различия парадигм ООП и ФП. К сожалению, тут нам пора остановиться. Теперь ваш ход – самостоятельно углублять знания с помощью дополнительной литературы.


Должен сказать, что я немного творчески подошел к написанию данной статьи: упростил терминологию, а где-то и вовсе заменил понятия метафорами, но все это только для того, чтобы любой человек, даже не имеющий никаких знаний в этой области, мог погрузиться в тему парадигм программирования. Я надеюсь, что данная статья была полезна будущем программистам и после ее прочтения удивительный мир программирования стал чуть ближе для каждого.


Автор: Михаил Половов (inst:____x.y.z____)

Редактор: Екатерина Козьмина (inst: enci_ko)

Показать полностью 1
[моё] Ооп Фп Парадигма Длиннопост
12
Rivega
Rivega

Теперь мы захватим мир⁠⁠

7 лет назад

Ура товарищи, я закончил обучение по финансовому планированию, теперь я точно знаю как и что делать для роста моей компании(а не на уровне интуиции и догадок)

Теперь мы захватим мир
Показать полностью 1
Фп Атм 1int Обучение Финансовое планирование
14
8
McHamster
McHamster

Applejack by Elekitelik⁠⁠

10 лет назад
http://fav.me/d8sdig8
Applejack by Elekitelik
My Little Pony Хуманизация Applejack Арт Фп
4
lombass
lombass

Работа друга⁠⁠

11 лет назад
Используй силу шашлыка
Работа друга
Показать полностью 1
Шашлык Star Wars Photoshop Фп Типа длиннопост Длиннопост
1
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии