LINUX.ORG.RU

functional programming for eva

anonymous
()
Ответ на: комментарий от Crocodoom

Он ещё не закончил читать статьи про Perl 5 и Perl 6.

anonymous
()

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

Если ты думаешь, что FP - это Lisp, Scheme или Clojure -то ты не до конца прав. На этих языках можно писать в функциональном стиле, но они не являются чисто функциональными языками.

Из плюсов - мы имеем код состоящий из маленьких функций, которые понятны и их легко тестировать.

Из минусов - написание этих маленьких и коротких функций сложнее, чем накакать ооп кода.

Я думаю о ФП лучше почитать, что-нибудь связанное с хаскелем.

https://www.ohaskell.guide/

nihirash ★★★
()

Например, в си есть только функции, то есть он чистый функциональный язык и все его любят. А в паскале еще процедуры, поэтому он и непопулярен.

anonymous
()
Ответ на: комментарий от anonymous

Абсолютно верно. Но стоит добавить, что в Си кроме функций присутствуют также и структуры, то есть Си одновременно исповедует парадигмы функционального и структурного программирований.

anonymous
()
Ответ на: комментарий от Eva

Ну если про PHP, то значит нигде не хранится состояние программы, вызвали функцию, посчитали, вернули результат. Идеальный сфероконь в вакууме, короче, программисты пытаются подвести теорию под свою муть, не бери в голову.

ilovewindows ★★★★★
()
Ответ на: комментарий от nihirash

И еще вопрос, написано что у clojure очень простой синтаксис и этот язык можно очень быстро выучить? Это правда?

Eva
() автор топика
Ответ на: комментарий от Eva

В этом и суть: пилить код который описывается непонятными терминами, но при этом делает тоже самое или что-то совсем оторванное от реальности.
Ты сидишь и поражаешься своей тупости, а разработчики языка просто ржут с тебя.

Exmor_RS ★★★
()
Последнее исправление: Exmor_RS (всего исправлений: 1)
Ответ на: комментарий от Exmor_RS

я поняла, что нет смысла тратить время на изучение tcl, python, perl или php, когда уже есть современные языки программирования собравшие их достоинства и избежавшие их ошибок?

Eva
() автор топика
Ответ на: комментарий от Eva

Современный язык это тот который имеет живое сообщество, развивающуюся библиотеку, поддержку компаний и при этом он может быть ужасен в чём-то, как PHP.
Если хочется работать уже сейчас и здесь, то учить надо за что платят, если развиваться, то просто к чему душа лежит (но конечно продолжать работу работать, идеалами сыт не будешь).

Exmor_RS ★★★
()
Ответ на: комментарий от Eva

нет смысла тратить время на изучение %langname% когда уже есть современные языки программирования

нет смысла тратить время на изучение языков, когда нет базовых знаний CS, например, что такое стейт.
любой язык не оперирует магией и эльфами, а работает по некоторым законам, вот их и нужно учить в первую очередь, а потом уже чё хочешь, хоть питон, хоть груви.
как забанят, иди учить. например занеси денег в https://ru.hexlet.io/ (это реклама)

system-root ★★★★★
()
Последнее исправление: system-root (всего исправлений: 1)

Функциональное программирование бывает разным.

olibjerd ★★★★★
()
Ответ на: комментарий от Eva

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

chrisred
()
Ответ на: комментарий от ilovewindows

Читай внимательно! Один поддерживает чистое функциональное и структурное программирование, а другой - процедурное и записевое. И это по-твоему «ничем не отличается»?!

anonymous
()
Ответ на: комментарий от system-root

нет смысла тратить время на изучение языков, когда нет базовых знаний CS

не надо включать стиральную машинку, когда нет базовых знаний электротехники :)

Eva
() автор топика
Ответ на: комментарий от Eva

нет, не надо работать инженером конструктором стиральных машин, когда нет базовых знаний электротехники
погромист — не пользователь, а инженер.

system-root ★★★★★
()
Ответ на: комментарий от system-root

А если человеку нужно автоматизировать свою работу? Как он это сделает без написания программы?

Eva
() автор топика
Ответ на: комментарий от anonymous

Это какая-то теоретическая муть, в си нет модулей, в паскале нет заголовочных файлов, это вот первое что неудобно при перегонке кода с одного языка на другой. Остальное один в один переводится.

ilovewindows ★★★★★
()
Ответ на: комментарий от Eva

Как он это сделает без написания программы?

написанием yml конфигов в декларативном стиле и запуском специального ПО — ansible.
для этого не нужно быть погромистом.

system-root ★★★★★
()
Ответ на: комментарий от Eva

А если человеку нужно автоматизировать он берёт bash, ahk, какой нибудь софт для макросов и автоматизирует. На крайняк питон.

Тут ни php, ни computer science, ни ФП совершенно ни причём.

Ну или таки как человек выше сказал.

energetix_user ★★
()
Последнее исправление: energetix_user (всего исправлений: 1)
Ответ на: комментарий от Eva

Мне, как человеко выросшему на java, clojure кажется очень сложным, сам язык кажется простым, но начать писать код на нем я не могу.

Непонятно, что такое «модель вычислений без состояний».

Сама идея уже вышла за рамки функциональных языков. Например RESTfull про тоже самое. Нет внутреннего состояния, значит всегда будет f(X)=Y. Легко понять, легко тестировать. Вторая вещь - иммутабельность. Состояния объектов после создания не меняется, изменения поражают новый объект. Упрощает создание мультипоточных программ, не надо городить синхронизаций для доступа к общим ресурсам.

Aber ★★★★★
()
Ответ на: комментарий от Eva

Краткая суть clojure, все состояния несут структуры данных, ты их передаешь функциям, функции возвращают результат в зависимости от переданного. Сами функции раскиданы по неймспейсам. Самое большое отличие от ооп - ты не создаешь типов/классов, а пишешь свои функции которые умеют работать с базовыми типами данных.

Aber ★★★★★
()
Ответ на: комментарий от anonymous

Ага, к тому же программировать на функциональном языке не освоив работу на функциональной ОС или хотя бы функциональном пакетном менеджере это моветон. Примеры: NixOS, Nix

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от Eva

Читаю статью «От PHP к Clojure». Много непонятных определений.

может, для начала, стоит, хотя бы мельком, глянуть на 15-20 самых популярных языков?

anonymous
()
Ответ на: комментарий от anonymous

Паскаль поддерживает парадигму не записевого, а так называемого рекордного программирования.

Какой смысл заложен тут заложен? Или это стеб?

nvl ★★★★
()
Ответ на: комментарий от anonymous

А вот тут я вас немного посмею поправить. Обычно не говорят рекордное программирование, хотя и есть такие, в обиходе используют залежавшийся иностранный аналог «экстремальное программирование»

anonymous
()
Ответ на: комментарий от Eva

У него есть будущее, чтобы тратить на него время?

а вы, случаем, не крымско-сочинский маркитоид, пытающийся научиться программировать?

настоящее программирование - это не только зарабатывание денег, но ещё и искусство. нельзя тупо вызубрить один язык и называть себя прошаренным.

anonymous
()
Ответ на: комментарий от nvl

Какой смысл заложен тут заложен? Или это стеб?

аноним имеет в виду, что паскаль записывает в файлы юниты данных. т.е. паскаль представляет файл как массив некоего типа.

но, емнип, и в C так можно... просто разная реализация..

так что, это всё просто выпендрёжь того анонима. существенной разницы нет.

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()

В чем его выгода

Прокачивает ЧСВ.

bread
()
Ответ на: комментарий от Eva

Это когда твоя программа принимает на вход World и возвращает новый World в результате вычислений, не меняя оригинальный World.

theNamelessOne ★★★★★
()
Ответ на: комментарий от anonymous

Паскаль поддерживает парадигму не записевого, а так называемого рекордного программирования.

рекордного - это экстремальное

записевого - это что имелось в виду?

nvl ★★★★
()
Последнее исправление: nvl (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.