LINUX.ORG.RU

Функциональное программирование должно вытеснить ООП.


3

2

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

ЗЫ: Немного пьян, так что повествование местами бессвязное.

Перемещено true_admin из talks


Ответ на: комментарий от ioway

А если я скажу что серебрянная пуля есть?

Если бы она была, всех остальных пуль бы не было.

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

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

Ввод новых фич без удаления старых ограничивает набор решаемых задач? Серьезно?

Да.

Свои аргументируй. Со своими я как-то сам справлюсь.

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

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

Зато с использованием того же хаскеля количество дурацких ошибок уменьшается. Просто из-за строгой типизации и выноса в монады всего с сайд-эффектами. Для тех кому неохота упарываться монадами и прочими порождениями сумрачного гения хаскеллистов есть sml/ocaml/F# которые несколько проще в восприятии. Про лисп не говорю, он где-то есть, как Ленин, вечно живой. Хотя конкурентов той же tinyscheme с рантаймом и интерпретатором в 100к я как-то не наблюдаю.

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

А собственно зачем хоронить? Вот как буд то от того, что вы откажетесь от subtype polymorphism как-то легче жить станет.

dizza ★★★★★
()

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

anonymous
()

Пришел к такому выводу

практика и выводы - две большие разницы, вон Кармак до сих пор дремучий Wolfenstein на Haskell не может переписать, а раньше клепал новые игры и движки на примитивном С как пироги

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

...«скоро будет кругом одно телевидение»...

А где ты это сейчас написал? Или ты про героя Ширвинда? Не немного не в тему.

Какого, нахрен, Ширвиндта? Проспись сначала, а потом спорить берись.

sleepflint ★★★
()

Фтопку, процедурное программирование вытеснит и то и то.

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

И где там конкуренция? Хотя бы Linq уже запилили?

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

Ладно, чёрт с ним с Linq — язык это не только и нестолько синтаксис, сколько удобный набор базовых библиотек. У шарпа оно есть, даже под онтопик. Как с этим у Go? А никак.

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

практика и выводы - две большие разницы

Серьезно?

вон Кармак до сих пор дремучий Wolfenstein на Haskell не может переписать

Кармак - просто ОЧЕНЬ хороший программист, решающий проблемы. Заставить его следовать «трендам» это как заставить бородатого байкера одеть узкие розовые штаны, зеленый пиджак в клеточку, очки а-ля «сп#жжено у стрекозы» и назвать хипстером и байкера не будет и хипстер из него никакой.

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

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

Топовая производительность процессоров уже достигнута.

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

Внезапно он как обычный программер не обязан поддерживать этот проект всю свою жизнь.

и, внезапно, он с год назад по своей инициативе начал таки переписывать «дремучий Wolfenstein на Haskell», до сих пор результата нет, видно первоначальные оптимизм и энтузиазм быстро пропали после той самой практики

wota ★★
()

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

anonymous
()

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

детка, ты свои php сначала изучи нормально.

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

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

no way.

Т.е. можно конечно, вот только результат немного предсказуем: процессоры заточены под имеративщину. Потому ФП в чистом виде будет сосать. С другой стороны, gcc функциональный факториал с лёгкостью в императивный цикл разворачивает для x86, т.ч. результат получается монопенисуальный.

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

Ты не поверишь, но решать-то надо именно проблемы и именно с помощью проблемо-ориентированных программ. А универсальные саморасширяемые монстры могут лишь универсально расширяться

теоретически они могут универсально расширятся в императивщину, которая и будет работать IRL. Но на практике так получается(пока) только для тривиальных случаев (типа факториала).

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

фп это как двигатель винкеля. Вроде экономичнее и мощнее

это смотря как считать. Износ там больше by design, потому совокупная стоимость владения не факт, что ниже. Дизель вот тоже экономичнее, но бензопила работает на бензине. Как и множество автомобилей.

электромобили

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

Та же хрень с ФП, вроде всё хорошо, но на практике получается «трамвай». Хорошо конечно, вот только народ платит за такси/маршрутки.

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

ооп, как таковое, не требует поддержки в языке

4.2

если не веришь, попробуй написать что-то ООПшное на сишечке.

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

кухарка должна уметь управлять страной

знаешь, что в русском языке означает выделенное слово? Очевидно — нет, ибо ты читаешь фразу без этого слова.

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

если не веришь, попробуй написать что-то ООПшное на сишечке.

#include <stdio.h>

typedef struct
{
    int x;
}
A;

typedef struct
{
    A a;
	
    int y;
}
B;

typedef struct
{
    union
    {
        A a;
        B b;
    };

    int z;
}
C;

int main()
{
    C c;
    A* a = (A*) &c;
    a->x = 1;
	
    printf( "%d\n", c.b.a.x );
}

добавить макросов для читабельности, методов через хранение указателей на функции - вот и недо-ООП

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

Покажи всем дешёвые батарейки большой ёмкости и завтра вся страна на электричество пересядет.

ещё не забудь про сеть зарядок, время зарядки (от обычной розетки часов 20 будет заряжаться), ну и цену электричества посчитай.

emulek
()

ООП и ФП не конкуренты и прекрасно сочетаются вместе. Это описано еще в SICP и доказано еще общелиспом хренову кучу лет назад. Серебряной пули нет, но можно собрать кучу других разных пуль и сделать свою.

Некоторые здесь отписались про универсальный язык и наличие в языке разных видов абстракций, так вот CL и есть такой язык.

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

Ты на этот компилятор смотрел?

Немного.

Там императивщина во все щели.

А подробнее? Именно про компилятор.

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

цену электричества посчитай.

Выходит таки дешевле бензина.

сеть зарядок, время зарядки

Это актуально для длительных поездок. Для регулярных поездок на работу или выбраться на пикник в выходные сгодится и электромобиль. У меня суточный пробег свыше 200км бывает всего несколько раз в году.

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

Ну и зачем если можно сразу заниматься решением проблемы?

потому-что «сразу» это фактически перекладывание решения на программиста. Причём при таком подходе программист должен учитывать не только детали алгоритмов, но и особенности железа. На одной железке список реализуется одним образом(в виде связанных областей памяти например, типа сишными структурами с next), на другой есть аппаратный список который можно и нужно использовать (но не всегда. Например стек на x86 быстрее по любому чем структуры), на третьем железе лучше всего юзать простой массив в в качестве списка.

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

ФП не просто «разворачивается», а разворачивается в оптимальный для этого железа код. Это тебе не C++ ООП, которое требует для себя x86 или чего-то подобного. Уродская архитектура x86 потому-то и живее всех живых, потому-что заточена на C++. ФП напротив: пофиг куда разворачивать(потому-что всё равно нужно разворачивать).

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

ещё не забудь про сеть зарядок, время зарядки (от обычной розетки часов 20 будет заряжаться), ну и цену электричества посчитай.

30-минут конечно долговато, но прогресс идет и кроме зарядки они предлагают просто сменить аккумуляторы, что быстрее обычной заправки бензобака. И всё это (пока что) бесплатно.

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

потому-что заточена на C++

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

Stahl ★★☆
()
Ответ на: комментарий от feofan

GTK же

о да. Образец функциональности. Открой любую чисто GTKшную/сишную программу, и охреней. Тебя ждёт увлекательное погружение в мир Windows95.

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

добавить макросов для читабельности, методов через хранение указателей на функции - вот и недо-ООП

ты наверное и сам знаешь, почему так никто не пишет(разве что для совместимости с кодом 30и летней давности).

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

ООП и ФП не конкуренты и прекрасно сочетаются вместе.

как я понял, ТС противопоставляет ФП и разные императивные php.

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

Выходит таки дешевле бензина.

это если ты готов заряжаться 20 часов в сутки.

Это актуально для длительных поездок. Для регулярных поездок на работу или выбраться на пикник в выходные сгодится и электромобиль. У меня суточный пробег свыше 200км бывает всего несколько раз в году.

если ты думаешь, что электромобиль в городе жрёт столько же, как в тестах (при равномерной скорости все 200км), то ты заблуждаешься. Чудес не бывает. Автомобиль не электричка, да и электричка отдаёт назад совсем не 100% при торможении, а хорошо, если 20(с учётом того, что КПД аккумулятора тоже ниже 50%. А если его сделать дешёвым и лёгким, то КПД будет как у паровоза, процентов 5). Я так подозреваю, что электромобиль вообще не работает как генератор, когда тормозит, а значит расход энергии будет на столько же больше в городе, как и у ДВС.

Ну и потом, совершенно непонятно, когда появятся одновременно дешёвые(учитывая срок службы), ёмкие, небольшие, и с высоким КПД аккумуляторы. Очень тяжело конкурировать с таким девайсом, как топливный бак(цена — 0, срок службы — бесконечность, КПД — 100%, размер — 0).

Это надо ждать, пока нефть будет стоить как уран. Ну лет 500 примерно.

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

Micropython

Это же железка, при чем тут интерпретатор/рантайм?

Ни разу не железка. «интерпретатор/рантайм» питона для МК

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

Это же железка, при чем тут интерпретатор/рантайм?

«Micro Python is a lean and fast implementation of the Python 3 programming language»

А «железка» - это «Micro Python board».

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.