Функциональное программирование - парадигма разработки, в иделе, при которой код должен состояить из чистых функций, которые не будут менять внешнего состояния и их результат не будет от него зависеть.
Если ты думаешь, что FP - это Lisp, Scheme или Clojure -то ты не до конца прав. На этих языках можно писать в функциональном стиле, но они не являются чисто функциональными языками.
Из плюсов - мы имеем код состоящий из маленьких функций, которые понятны и их легко тестировать.
Из минусов - написание этих маленьких и коротких функций сложнее, чем накакать ооп кода.
Я думаю о ФП лучше почитать, что-нибудь связанное с хаскелем.
Абсолютно верно. Но стоит добавить, что в Си кроме функций присутствуют также и структуры, то есть Си одновременно исповедует парадигмы функционального и структурного программирований.
Ну если про PHP, то значит нигде не хранится состояние программы, вызвали функцию, посчитали, вернули результат. Идеальный сфероконь в вакууме, короче, программисты пытаются подвести теорию под свою муть, не бери в голову.
В этом и суть: пилить код который описывается непонятными терминами, но при этом делает тоже самое или что-то совсем оторванное от реальности.
Ты сидишь и поражаешься своей тупости, а разработчики языка просто ржут с тебя.
я поняла, что нет смысла тратить время на изучение tcl, python, perl или php, когда уже есть современные языки программирования собравшие их достоинства и избежавшие их ошибок?
Современный язык это тот который имеет живое сообщество, развивающуюся библиотеку, поддержку компаний и при этом он может быть ужасен в чём-то, как PHP.
Если хочется работать уже сейчас и здесь, то учить надо за что платят, если развиваться, то просто к чему душа лежит (но конечно продолжать работу работать, идеалами сыт не будешь).
нет смысла тратить время на изучение %langname% когда уже есть современные языки программирования
нет смысла тратить время на изучение языков, когда нет базовых знаний CS, например, что такое стейт.
любой язык не оперирует магией и эльфами, а работает по некоторым законам, вот их и нужно учить в первую очередь, а потом уже чё хочешь, хоть питон, хоть груви.
как забанят, иди учить. например занеси денег в https://ru.hexlet.io/ (это реклама)
Это тебе никто не ответит, но если поискать на форумах, то можно составить хронологию примерно в разрезе 10-ти последних лет как пишут о тот что пых не ок и скоро будет не нужен. Да и относиться надо без фанатизма, где-то пхп лучше всего подходит, где-то вообще не взлетит.
Читай внимательно! Один поддерживает чистое функциональное и структурное программирование, а другой - процедурное и записевое. И это по-твоему «ничем не отличается»?!
Это какая-то теоретическая муть, в си нет модулей, в паскале нет заголовочных файлов, это вот первое что неудобно при перегонке кода с одного языка на другой. Остальное один в один переводится.
Мне, как человеко выросшему на java, clojure кажется очень сложным, сам язык кажется простым, но начать писать код на нем я не могу.
Непонятно, что такое «модель вычислений без состояний».
Сама идея уже вышла за рамки функциональных языков. Например RESTfull про тоже самое. Нет внутреннего состояния, значит всегда будет f(X)=Y. Легко понять, легко тестировать.
Вторая вещь - иммутабельность. Состояния объектов после создания не меняется, изменения поражают новый объект. Упрощает создание мультипоточных программ, не надо городить синхронизаций для доступа к общим ресурсам.
Краткая суть clojure, все состояния несут структуры данных, ты их передаешь функциям, функции возвращают результат в зависимости от переданного. Сами функции раскиданы по неймспейсам. Самое большое отличие от ооп - ты не создаешь типов/классов, а пишешь свои функции которые умеют работать с базовыми типами данных.
Ага, к тому же программировать на функциональном языке не освоив работу на функциональной ОС или хотя бы функциональном пакетном менеджере это моветон. Примеры: NixOS, Nix
А вот тут я вас немного посмею поправить. Обычно не говорят рекордное программирование, хотя и есть такие, в обиходе используют залежавшийся иностранный аналог «экстремальное программирование»
Спасибо за поправку, очень занимательно. Но факт остается фактом — не только Паскаль, а и Си поддерживает парадигму экстремального программирования, ведь я точно помню как когда-то писал код на Си для нахождения экстремума функции. Небольшая, но такая важная деталь.