От функционального к oop к модульному к функциональному

я программировал в течение десятилетий, начиная с C, и мне нравится то, что я делаю, но C++ был очень мощным, его легко структурировать, тогда я начинаю осознавать реальные различия между этими двумя похожими языками, почему класс иногда лучше, чем структура, и как его легко расширить и добавляя методы, инкапсуляция была волшебной.

оба c/c++ хороши, но сложны, быстро работают, но медленно программируют, общего назначения, но почти невозможно построить бизнес-логику, программист среднего возраста должен начать со своего собственного бизнеса.

затем я начинаю изучать веб-технологии, с помощью php я создал свой веб-сайт и представил себя миру, laravel был великолепен, выбирая его легко учиться и реализовывать идеи, создавать API - это здорово, но когда все становится сложнее, контроллер группы, моделей и миграции было слишком много для меня, поэтому я решил построить модульную систему, создав для этого пакет https://github.com/mhmdasli/kyzin.

Конечной целью каждого разработчика программного обеспечения должно быть написание надежного кода. Ничто другое не имеет значения, если код содержит ошибки и ненадежен. И как лучше всего писать надежный код? Простота. Простота противоположна сложности. Поэтому нашей первой и главной обязанностью как разработчиков программного обеспечения должно быть уменьшение сложности кода.

Затрачивать много усилий и времени на разработку паттернов и ООП-программирование — тяжелая обязанность для каждого программиста, поэтому для этого должно быть решение. Скажу честно, я не ярый поклонник объектной ориентации. Конечно, эта статья будет необъективной, однако у меня есть очень веские причины не любить ООП.

Черт, я сам много боролся, работая над проектами ООП. И я понятия не имел, почему я так боролся. Может быть, я был недостаточно хорош? Мне пришлось выучить еще пару шаблонов проектирования (как мне показалось)! В конце концов, я полностью выгорел.

Этот пост подводит итог моего десятилетнего пути от объектно-ориентированного к функциональному программированию. Я все это видел. К сожалению, как бы я ни старался, я больше не могу найти варианты использования ООП. Я лично видел, как проекты ООП терпели неудачу, потому что их стало слишком сложно поддерживать.

C++ — ужасный [объектно-ориентированный] язык… И ограничение вашего проекта рамками C означает, что люди не напортачат с какой-нибудь идиотской «объектной моделью» c&@p.
— Линус Торвальдс, создатель Linux

также laravel и все oop-фреймворки, java spring, .net и многие другие сложные фреймворки.

Что такое функциональное программирование? Некоторые люди считают, что это очень сложная парадигма программирования, которая применима только в академических кругах и не подходит для «реального мира». Это не может быть дальше от истины!

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

Единственное, что функциональное программирование делает действительно хорошо, это то, что оно помогает нам писать надежное программное обеспечение. Необходимость в использовании отладчика почти полностью отпадает. А что самое лучшее? Если вы уже знаете, как использовать функции, то вы уже являетесь функциональным программистом. Вам просто нужно научиться наилучшим образом использовать эти функции!

javascript — один из лучших, я могу создать свою клиентскую часть, если это веб-приложение или мобильное приложение, и серверную часть с помощью node.js. Используете JavaScript? При правильном руководстве и анализе JavaScript может стать хорошим функциональным языком.