LINUX.ORG.RU

Функциональная парадигма

 , ,


2

7

Что-то в последнее время начали хайпить функциональное программирование. Мол, стиль со взглядом в будущее, распараллеливание, оптимизация, замена устаревшему ООП, который не способен идти в ногу с современными процессорами. Есть ли здесь люди, которые пишут на Haskell или тому подобных языках? Есть ли профит переходить на ФП? Или мультипарадигмость С++ и Java исправят ситуацию?


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

Тема про функциональное программирование. Никто тут про с++ толком даже не упоминал. Пришел ты и узрел почему-то «плюсохейтеров», но простенькую программку на плюсах написать отказываешь. Зачем приходил, спрашивается.

Так вот, я хочу понять: какие плюшки дает лютое аскетическое программирование в функциональном стиле?

Плюшки тут приблизительно в том же, в чем и плюшки от замены goto на циклы, а именно — проще делать суждения о работе программ. Иногда состояние (как и goto) тоже бывает полезно. Но в том и прелесть хаскеля, что stateful код не протекает и не мешает чистому коду.

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

Ты пошто школьников обижаешь? Судя по твоей категоричной риторике, ты и сам что-то типа первокурсника.

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

похоже я неправильно выразился. попробую по другому:

яп должен быть удобен. в идеале программа должна разбиваться на иерархию из изменений состояний(ну то есть состояние «рисовать»->«рисовать карандашем»->...) и по идее я должен хорошо отнестись к сабжу.

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

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

пишу с мобилы так что продолжу в след. посте

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

так вот. си был настолько каваен и няшен, что его синтаксису подражают java, js. с с++ и с# это практически 90% софта на десктопе. остальное - баш и питон

а что, нельзя было сделать также?

цацкелю четверть века. за это время на «убогом» с++ написали qt, directx, gtkmm(и gtk на си), браузеры игори тулзы и даже jvm

так что у нас с функциональным программированием? его адепты утверждают что «сложность фп это миф». так где сотни софта?

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

далее. я вообще то пилю собственный ЯП и сама идея «вычислений в стиле фп» мне в общем то интересна в том плане что из неё можно что-то взять.

пилю я его под процессор, который придумал(вернее массивно-непараллельный gpu). у ЯП две цели: а) описание микросхем(system-c убогое говно) б) описание алгоритмов, которые любят паралелизм. до кучи это не ЯП а промежуточный формат, редактор которого пытается мимикрировать под текстовый(я не осилил инкрементальный парсинг при требовании обсчета layoutа микросхемы в «почти реалтайме»)

может быть я и не эксперт в яп, но думаю что съел в этом вопросе если не собаку то как минимум мелкую шавку.

(продолжу в следующем посте)

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

яп должен быть удобен. в идеале программа должна разбиваться на иерархию из изменений состояний(ну то есть состояние «рисовать»->«рисовать карандашем»->...)

Очень странное утверждение. Схера ли?

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

Во-первых, на синтаксис почти плевать, не это главное. Во-вторых, синтаксис Си — говно в сравнении с тем же хаскелем. Бесконечные скобочки и точки с запятой, которые не несут никакой смысловой нагрузки.

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

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

далее. я вообще то пилю собственный ЯП и сама идея «вычислений в стиле фп» мне в общем то интересна в том плане что из неё можно что-то взять.
пилю я его под процессор, который придумал(вернее массивно-непараллельный gpu). у ЯП две цели: а) описание микросхем(system-c убогое говно) б) описание алгоритмов, которые любят паралелизм. до кучи это не ЯП а промежуточный формат, редактор которого пытается мимикрировать под текстовый(я не осилил инкрементальный парсинг при требовании обсчета layoutа микросхемы в «почти реалтайме»)

Черт, с каждым твоим постом все больше и больше убеждаюсь, что ты студент младших курсов.

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

Очень странное утверждение. Схера ли?

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

какие-то программы обрабатывают запросы http, которые могут быть get, post,...

какие-то программы обрабатывают ввод пользователя с мышки.

честно говоря, я думал что для человека который рассуждает о ЯП с понтом типа он хоть когда нибудь программировал, эти варианты работы программы являются очевидными. то есть можно придумать и больше, но очевидно же как работают с GUI и сокетами. или нет?

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

да ты можешь убеждаться в чём угодно.

на с++ написана куча софта. и от с++ бомбит сраки у всяких неудачников.

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

Я просто с ними работал а ты нет. поэтому ты давай дальше пиши хелловорды на своих цацкелях, а мы будет делать тулзы на «отсталом» с++. Да кстати, твой браузер ведь написан на функциональном языке програмиирования, не так ли?

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

Virtuoso нормально работает и стоит не так уж и много. В базовой поставке. Вроде SKILL больше нигде я не видел. Ну в оркаде/аллегро ещё может быть.

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

на с++ написана куча софта [...]

на языках типа лиспа, цацкеля и т.д. написаны ... ой, я даже не знаю, что на них написано

И какой вывод ты из этого делаешь? Есди что, на Коболе и Яве написано софта не меньше, чем на Си++.

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

честно говоря, я думал что для человека который рассуждает о ЯП с понтом типа он хоть когда нибудь программировал, эти варианты работы программы являются очевидными. то есть можно придумать и больше, но очевидно же как работают с GUI и сокетами. или нет?

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

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

у явы синтаксис c++подобный. так что она за нас в данном споре.

а кобол... ну берите кобла в адвокаты цацкелю, они друг друга стоят

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

на иерархию конечных автоматов. так точнее.

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

изменение состояния «прочитана строка» включает в себя много внутренних изменений состояния.

это api может быть использовано в более высокоуровневом коде например сервера pop3 у которого будут свои изменения состояния в процессе работы.

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

так везде.

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

на языках типа лиспа, цацкеля и т.д. написаны ... ой, я даже не знаю, что на них написано

И какой вывод ты из этого делаешь? Есди что, на Коболе и Яве написано софта не меньше, чем на Си++.

у явы синтаксис c++подобный. так что она за нас в данном споре.

Глубокий вывод.

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

А вот два чая этому господину за такой подход к делу.

И раз пришлось к слову, не кажется ли благородным донам, что Golang (на котором я, кстати, совсем ничего не пишу), как раз пытается embrase такой подход?

Чисто такой, концептуальный вопрос, отложив все остальные странности Go в сторону.

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

у нас разговор о ФП и о том, чем они продвинутее «обычных» ЯП

ява это в рамках нашей дискуссии «обычный» ЯП, и синтаксис у него в целом близок к С++ному. Так вот, моё мнение базируется на том, что сишный синтаксис в целом оказался удачен, и софта на ЯП с С/С++-подобным синтаксисом написано over 90%. Теперь расскажите мне про сотни софта написанного на ФП и присутствующего на десктопе. Я сразу скажу, что на ум приходят только плагины для гимпа. Это - показатель.

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

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

у нас разговор о ФП и о том, чем они продвинутее «обычных» ЯП

Нет. У нас разговор о том, что доказывают мегатонны кода, написанные на неком языке. И ответ - да ровно ничего.

ява это в рамках нашей дискуссии «обычный» ЯП, и синтаксис у него в целом близок к С++ному.

Синтаксис не имеет отношения ни к одной дискуссии (ни о «продвинутости», ни о мегатоннах кода). ФП запихивали и в рамки вполне традиционного Паскаль-подобного синтаксиса (ML), и в рамки Си-подобного (Scala).

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

А, так имеет значение только софт для десктопа и/или моего ПэКа? Почему?

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

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

изменение состояния «прочитана строка» включает в себя много внутренних изменений состояния.

Тут есть много составляющих, которые никакое состояние могут и не менять.

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

А ФП пропагандирует убрать состояние, в тех местах, где это возможно, вовсе.

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

у явы синтаксис c++подобный. так что она за нас в данном споре.

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

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

а кобол... ну берите кобла в адвокаты цацкелю, они друг друга стоят

относительно недавно на cobol было написано на порядок больше кода, чем на С++. Если бы все следовали твоей логике, то с++ бы просто даже не появился.

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

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

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

какой софт на твоем пэка написан на коболе?

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

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

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

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

Так вот, я хочу понять: какие плюшки дает лютое аскетическое программирование в функциональном стиле?

Хотел бы - взял и попробовал.

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

Для того чтобы мой браузер стал написан на с++, нужно было, чтобы кто-то в свое время пришел и сказал «плевать, что есть кобол, нужно сделать по-другому». Тогда, конечно, тоже приходили всякие u10_paltsev и говорили «на коболе написаны миллионы строчек кода, а чем вы можете похвастаться с вашим Си?». Такая аргументация была нелепой тогда точно так же, как она является нелепой и сейчас.

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

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

Давай еще выкати нам одну глупость в духе «Программа — иерархия конечных автоматов». Такое ни теоретик нормальный, ни практик сморозить не может. Это даже хуже, чем если бы адепты ФП говорили «выполнение программы — последовательность бета-редукций лямбда выражения».

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

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

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

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

написал бы прямо: мне 13 лет и о коболе я узнал только сегодня, зайдя на ЛОР с папиной учетки

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

Ну почему не угодило, лямбда-исчисление — это прекрасно =)

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

нихрена себе как бомбануло.

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

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

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

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

Кстати, про цацкель: есть люди, которые попытались им обмазаться, и деляться ощущениями. Цацкель уверенно победил питона в битве карликов. Ну и на этом похоже всё. А дальше начинается цырк:

Если в питоновском коде при нужде и сисадмин мог найти и поправить, то теперь код — шайтан-арба ... Поиск программистов является проблемой, как бы апологеты Хаскеля и не говорили об обратном. ... в Хаскеле это обычно некое священнодействие, которое на некоторое время уходит самое в себя

Вооооооот. Цацкель - это такой прикол от бездельников-«чучоных», который решили втюхивать всем подряд патамушта захотелось. А втюхивать его стали потому, что оперативка стала жирная и дешевая, а цацка ведь жрет оперативку не как java - когда выделяем память, но еще и когда считает. Эпик стори под названием «жопоболь» на тему как посчитать сумму чисел всего за гигабайт лишней памяти как бы намекает. А есть еще история как хэштаблицы в цацкеле превращают его в помойку, по которой 70% времени одиноко ползает GC. В коментах к «жопоболи» ползают как опарыши цацкелисты и скулят «язык же ленивый». Ёпта! он не ленивый, он вместо того чтоб считать, жрёт память. Это не язык, это шайтан арба.

Кстати, мне нравятся типовые отмазки, приведённые в посте на хабре, например: «В контраргументы мне приведут изменившийся стиль программирования, большее внимание к мелочам и т.д.». Ой вэй, какая тут политкорректность: изменившийся стиль программирования, или по-русски брейнфак; или: большее внимание к мелочам, или на наши деньги: выстрелить себе в ногу можно любым неосторожным движением. поэтому цацкелисты ооооочень внимательны к мелочам. бугага.

Еще смешное:

С другой стороны, наличие таких вещей привлекает программистов, которым надоело “php+js, отсюда и до обеда”.

А потом они тут на ЛОРе постят посты о том, какой продвинутый язык будущего этот цацкель в частности и ФП - вообще. Вот еще немного поднапрячься и победим!

Кстати, оказывается цацкель не на 7 а всего на 3 года старше С++. И синтаксис у С++ посвирепее будет, да и его компиляторы глючили беспощадно. До сих пор помню borland C++ 4.5, который порождал код вида:

mov eax, ebx
mov ebx, eax
или
cmp eax, что-то там
sete dl
....(много инструкций)
mov bl, dl
....(много инструкций)
mov al, bl
test al,al
je кудато там
В общем, фора у цацкеля была. А был еще лисп который до сих пор тянут то там, то сям. Вон в scriptfu в gimp запихнули вместо того, чтоб 16битный цвет сделать и OpenGL прикрутить.

Так что мы видим по итогам?

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

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

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

Например, чтобы не писать такой бред.

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

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

причем это перл в котором писать брейнфаки в стиле патча бармина это не опция, а единственный способ кодания

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

Кстати, про цацкель: есть люди, которые попытались им обмазаться, и деляться ощущениями.

Есть и другие примеры, которые точно так же ничего, кроме того, что данной команде язык (не) подошёл, не доказывают. Ну и оно, в какой-то степени, справедливо для всех «навороченных» языков. Точно так же, «неосиляторы» ноют про скалу и восхваляют «понятную джаву». Или ругают С++ за сегфолты и убегают на всякие Go. Вот только в одном случае ты вопишь о ламерстве, а в другом демонстрируешь выверты сознания.

Так что мы видим по итогам?

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

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

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

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

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

нихрена себе как бомбануло.

Посмотри на свою портянку бреда и на краткое замечание анона. Теперь подумай, у кого из вас двоих бомбит?)

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

Как ты успел сделать такие выводы, даже не узнав синтаксис языка? =)) Рабинович по телефону напел? =)

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

Кстати, оказывается цацкель не на 7 а всего на 3 года старше С++.

Интересные расчеты. Официальный релиз C++ состоялся осенью 1985 года (выход первого издания книги «Язык программирования C++» и первого компилятора от AT&T). Тогда как работы по проектированию нового функционального языка программирования, который бы не был проприетарным, как тогдашний флагман, Miranda, и который получил название Haskell, начались то ли в 1987-ом, то ли в 1988-ом. И первые несколько лет язык существовал «на бумаге», в виде спецификаций. Публичный релиз Glasgow Haskell Compiler состоялся весной 1991-го. К тому времени уже и C++ успел сильно измениться, и компиляторов C++ стало немного побольше. Ну и добавим сюда, что для многих Haskell начался как Haskell 98.

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

Конкретно в сабже был вопрос:

Есть ли здесь люди, которые пишут на Haskell или тому подобных языках? Есть ли профит переходить на ФП?

Язык программирования - это инструмент. Инструмент которым пользуются для создания изделий, доводят до ума, затачивают под те или иные задачи и т.д. Вот С++ заточили под одни задачи. Java - под другие. Питон - под третьи. Что общего между ними? Эти языки двигались вслед за потребностями программистов.

А вот язык D, который придумал голимый теоретик Александреску. Этот язык... ой а нет его. Он умер не успев родиться. Не успел выйти D1 как теоретики решили пилить D2, а D1 утопить, и D2 похоже тоже умер.

Вот то же самое и с ФП. ФП могло бы быть инструментом для решения ряда задач или подзадач, но люди, которые его «двигают» сделали из ФП вариант религии, мало совместимой с нормальной жизнью:

Два числа за один проход трудно посчитать. Шаблоны траха нужны, иначе O(N) потребление памяти счётчиком цикла.

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

До кучи, мне сообщество сторонников ФП напоминает саентологов. Со стороны посмотришь - срамота кромешная. Но как только кто-то вступил туда - всё, жди его у порога своего дома с образовательными брошурами, рассказами о том, как он счастлив, как преобразила его новая вера и призывами вступить в секту. По ссылке чел на полном умняке сообщает, что verbosity это плохо, а хочется чтоб текст шёл сплошняком, как в патче бармина. Вот в цацкеле аж дух захватывает от траха.

В общем, ФП не для программирования. Это для сектантов.

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

А вот язык D, который придумал голимый теоретик Александреску

Это какая-то альтернативная история. Вообще-то язык D придумал голимый практик Брайт, но, в общем, D оказался никому не нужен. Александреску, который тоже нифига не теоретик, а просто акробат, пришел позже - уже когда D дошел до версии 2 (но более нужным не стал).

люди, которые его «двигают» сделали из ФП вариант религии, мало совместимой с нормальной жизнью:

Functional Programming Has Reached The Masses; It's Called Visual Basic

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

Вот С++ заточили под одни задачи. Java - под другие. Питон - под третьи. Что общего между ними? Эти языки двигались вслед за потребностями программистов.

Это всё не совсем так. Пока не было джавы плюсы занимали её нишу и, наверняка, не всем по нраву пришлось её становление. Чего уж там, ты и сейчас на джаву наезжаешь и только когда того требует ситуация, она становится «союзником против ФП».

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

ФП могло бы быть инструментом для решения ряда задач или подзадач, но люди, которые его «двигают» сделали из ФП вариант религии, мало совместимой с нормальной жизнью:

Что характерно, от тебя в этом топики «религии» (с противоположным знаком) куда больше.

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

ну хорошо уговорил, 7 лет. давай посмотрим, что было написано на С++ 7 лет назад и что на цацкеле сейчас.

и самое главное что С++ с тех пор обзавелся С++11мы фичами и стал тортом. А в цацкеле сложить числа и поделить - уже проблема.

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

Вообще-то язык D придумал голимый практик Брайт, но, в общем, D оказался никому не нужен. Александреску, который тоже нифига не теоретик, а просто акробат, пришел позже - уже когда D дошел до версии 2 (но более нужным не стал).

Александреску подтянулся, когда D1 уже был готов вот-вот зарелизится (емнип, году в 2006-м). И именно с подачи Александреску появился D2. И именно из-за появления D2 предшественник, который D1, оказался мало кому нужен. А уж на дизайн D2 голимый теоретик Александреску оказал влияния больше, чем голимый практик Брайт.

А вдвоем они почти что закопали хорошую вещь :(

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

и самое главное что С++ с тех пор обзавелся С++11мы фичами и стал тортом. А в цацкеле сложить числа и поделить - уже проблема.

Не проблема.

avg xs = let (s', n') = foldl' (\(!s, !n) x -> (s+x, n+1)) (0, 0) xs
          in s'/n'

Ты не знаешь ничего о функциональном программировании, но пытаешься судить о нем. Очень нелепо получается.

Хуже того, ты даже не можешь написать элементарную программу на С++. Складывается впечатление, что ты его не знаешь.

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

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

Тогда как ты можешь судить об инструменте, которым не то что не работал, даже в руках не держал.

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

Александреску подтянулся, когда D1 уже был готов вот-вот зарелизится (емнип, году в 2006-м). И именно с подачи Александреску появился D2

Мне не хочется сейчас копаться в истории, но пойнт в том, что и Брайт, и Александреску ни разу не теоретики. Что, собственно, и было заметно и по D1 и раннему D2 - гибрид Си++ и Java.

А вдвоем они почти что закопали хорошую вещь :(

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

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

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

Что касается «джавы-союзника» то речь шла про синтаксис. Джава очень похожа на С++. Похожа настолько что даже генерики в ней сделаны с такими же треугольными скобками, как в С++. То есть человек, писавший на С, может плавно перейти на С++, на ходу доучивая фичи по мере надобности, а может на жаву после врубания в ряд особенностей. И с С++ на жаву перейти тоже не проблема. Да, в жаве есть аннотации, и это сложная штука для С++ника. Но в целом crash-course проходится за две недели и дальше все понятно. Обратно по идее тоже легко перейти, но некоторые переносят туда подходы, которые в java прощались, а в С++ - нет, и потом вайнят. но это уже оффтоп. То же самое про С#: нет проблем для программиста на С++ или Java перейти на С# и обратно. Это похожие языки, хотя и разные и они занимают 90% доли софта на десктопе. А в вебе есть javascript который тоже вполне си-подобный.

То, что ФП сильно отличается от этих 90% идеологически - это не фатально. А вот то, что его представители еще и синтаксисом отличаются очень свирепо - это уже не усть хорошо. Причем тут вклад не только хацкеля но еще и программистов на нём, которые не любят длинные и внятные имена функций. Вот то, что я вижу когда речь идет про хакель - это почти всегда некоторое подобие обфусцированного перлового скрипта. Собственно, о чем и писали челы, решившие внедрять хакель у себя. Да, работает, да, быстрее. Но - «шайтан-арба».

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

А вот то, что его представители еще и синтаксисом отличаются очень свирепо - это уже не усть хорошо.

Отличие быдло-кодера от программиста в том, что быдлокодер сравнивает языки по синтаксису. Тот же питон так отличается от c++ вовсе не потому, что там другой синтаксис.

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

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

Названия каких функций в хаскеле тебе кажутся невнятными? :D

ЗЫ откуда ты это все берешь, если даже синтаксис хаскеля не изучил? о_О

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