А кто именно реализовывать через наследование просил?
Мне неизвестны иные способы «привести пару примеров […] объекты круга и квадрата с общим методом area».
Если имелось в виду не с «общим методом», а «каждый с методом area» — уверен, вы сами осилите написать такой пример на хаскеле.
третий комментарий пытаюсь
Второй, но я уже заметил, что вам до фени факты,
ему, видимо, приятнее пофилософствовать про ООП, дядю Боба и т.д., вместо того, чтобы реально привести код
Естественно. Это же хабр, а не профессиональный форум. Убеждать лично вас мне без надобности, писать тривиальный код, который бесплатный дипсик за десять секунд может нагенерировать — тем более.
Я развлекаюсь, глядя, как вы пыжитесь. Для этого и существует хабр, разве нет?
википедийное определение, которое более-менее совпадает с общепринятым
«Обще-» это кем конкретно?
ООП-шной инкапсуляции в хаскеле нет […]
Я прочитал «Введение в Хаскель за 7 часов» и знаю на базовом уровне, как там устроена инкапсуляция. А вот что такое «ООП-шная инкапсуляция», простите уж, я не в курсе. Это какая-то особенная инкапсуляция? С блекджеком и методистками?
модули считать объектами нельзя, поскольку в хаскеле они, в отличие от окамла, не first-class
Ого! Окамл-то тут при чем? В Окамле что же, настоящее православное общепринятое ООП?
Я спорю с тем, что хаскель это объектно-ориентированный ЯП.
Очень за вас рад. А кто именно такой тезис высказал? Может быть, нам этого человека тоже позвать?
объекты круга и квадрата с общим методом area
Полиморфизм, реализованный через наследование, — это вообще никаким боком не часть парадигмы, это детали имплементации. Вы просите, чтобы вам повторили слово в слово джавовый код на хаскеле, а лучше бы попытались понять, о чем вообще талдычит собеседник.
набор основных понятий ООП: абстракция данных, инкапсуляция, наследование, полиморфизм подтипов, класс, объект
Давайте я еще раз попробую. «Основных понятий ООП» не существует в аксиоматике нашего мира. Алан Кай под ООП подразумевал одно, Гослинг — совершенно другое. Тут уместно вспомнить еще Матца, доведшего идею «everything is an object» до абсурда в руби.
Потом еще на горизонте появился Боб Мартин, со своими мухоморовыми галлюцинациями. Графомания этого инфоцыгана, в жизни не написавшего ни строки серьёзного кода, внезапно была воздвигнута на хоругви (потому что люди en masse туповаты, и без шор и узды в приниципе ни на что не способны). В результате у нас появилось определение ООП размером не менее трех печатных листов.
Инкапсуляция, полиморфизм и еще добрый десяток «основных понятий ООП» — прекрасно доступны во всех языках, от КОБОЛа до Хаскеля. Остальные — наследование, классы и прочие паттерны — никому нафиг не нужны (единственное разумное «наследование» вместо правильного решения — полиморфизма — реализовано в джаваскрипте).
То ООП, которое придумал Кай ко всему этому никакого отношения не имеет. То, которое предлагал Матц — тем более. Гослинг ну кхм.
В этом смысле, если выбросить в мусорную корзину бобмартиновщину и фаулерщину, — то инстансы тайп-классов в хаскеле — это хорошие, правильные объекты.
Хороший MCP — на ⅔ состоит из Service Discovery. Три кита MCP — Prompts, Resources, Tools. И только первый из них отвечает за беседу с клиентом.
Ваше предложение обойтись без MCP — вероятнее всего, вызванное банальным непониманием, что такое MCP в принципе и как устроен протокол — это предложение писать код в кодах вместо высокоуровневых языков — в результате-то все равно все в коды превратится, так и давайте уберем лишние звенья.
Я работаю без MCP. Нужен инструмент — поднимаю сам или пишу тулзу под задачу в рантайме. grep, ast-grep, git log --all -S, tree-sitter — зависит от того что ищу.
Прекрасно. Набор инструментов, конечно, как у третьеклассника, ну да ладно. А через что Remote Assistant догадывается, как ему уточнить постановку задачи, или получить недостающую информацию в ходе процесса? У меня вот самописный MCP выдаёт более 50 инструментов и модель справляется. А у вас как? Вы останавливаете выполнение и «поднимаю сам или пишу тулзу под задачу в рантайме»?
Это детский сад, который поломается на первой же задачке посерьезнее «раскатить образ убунты по ста железякам».
Service Discovery для SOAP (гуглить по Universal Description, Discovery, and Integration (UDDI)) изобрели 30 лет назад. В UDDI можно было поднять абсолютно новый сервис и все клиенты в ту же секунду про него знали и умели с ним общаться. Сервис!
Для кодовой базы из 3М строк это не решение, а костыль - ты не опишешь всё заранее, кодовая база живая.
Смысл этого заявления не сильно отличается от такого: «REST — это костыль, количество эндпоинтов статично, а количество записей в базе постоянно растет!!!111».
Это очень смешной слоп, в котором единственный кусок «кода» — вызов терраформа, то есть в RAG нет нужды изначально. Остальное бла-бла-бла — ламерская вода. Разумеется, на HN он всем понравился. На хабре бы тоже зашел. Но не на тех форумах, где водятся профессионалы.
Какой инструмент у нас есть, чтобы обойтись без MCP для кодовой базы из 3М строк, написанных за 20 лет пятью разными командами? grep и awk? Вы хоть знаете, что они такое?
Начнем с того, что у термина «объектно-ориентированный язык» есть два практически прямо противоположных друг другу значения: аланокаевское и джеймсоногослинговое.
Вика предлагает определение, списанное под копирку у Лема из «Дневников Ййона Тихого»:
Инстансы тайп-классов в хаскеле очень сложно не назвать объектами по Гослингу.
И вообще, какой язык называть «объектно-ориентированным», а какой «функциональным» в 2026 году, когда в джаве уже не продохнуть от лямбд и ленивых стримов — это теософский спор, как про табы и пробелы.
F#, Haskell, Lisp, Scala — все они уступают Rust в скорости и потреблении ресурсов.
Citation needed. Да и в целом, «язык А быстрее языка Б, вот и пластмассовые бенчмарки подоспели» — это либо глупость, либо вредительство. Если вагон задач, в которых любой из вышеперечисленных языков уделает раст, как бык — овцу.
Раньше ФП ругали за медлительность. «Это не для серьёзных задач», «это только для прототипов».
Citation needed. Да и в целом, хаскель ругают за одно, а скалу — за совсем другое.
[…] попробовать функциональный Rust. Без mut.
Совет прям от Григория Остера. А как насчет стейта в асинхронных тредах? В базу сохранять?
Не, я понимаю, что ваш подход прекрасно работает на примерах в три строки из туториала. Но вы тут заикались про продакшн, а там, знаете, бывает хайлоад, большая конкурентность, долгоживущие треды, и всякая другая непотребщина.
Не нужно тащить в джаву лямбды, в джаваскрипит классы, в раст — иммутабельность, пожалуйста. Возьмите подходящий вашим препочтениям язык (функциональных иммутабельных языков — полно́) — и пишите на нем. А в расте даже акторная модель через жопу сбоку прикручена.
В 1980-е советские инженеры читали зарубежные технические журналы через систему межбиблиотечного обмена и через личные связи с коллегами из соцстран.
В 1980-е советские инженеры из Иоффе имели прямой канал связи по email (UUCP) с коллегами из самых что ни на есть капиталистических стран, я ежедневно начинал утро с проверки почты и ответов на письма.
А мой отец печатался в самых что ни на есть капиталистических журналах, за что получал гонорары чеками ВнешПосылТорга с примерно начала 70-х.
Маргинальные «социальные группки по интересам» плохи тем, что превращаются в уютненький пузырь, из которого гонят всех хоть немного несогласных, быстро выплескивая с водой и всех детей заодно. Хоть вот на хабр посмотрите.
Уточню, в том кейсе клиент просто говорил, что этот элемент программы надо убрать, а все остальное хорошо и правильно.
Ну вот, опять. Причем, вы сами задали вопрос, я на него ответил, а вы продолжаете спорить и защищать свою точку зрения.
Проблема была в том, что без этого элемента все остальное не имеет смысла — это как автомобиль без движка.
Никогда не нужно вести дискуссию с позиции «я умный, ты дурак». Если бы вы поделились подробностями, я бы легко показал, почему этот элемент — основной только в вашей парадигме, и как его можно заменить на стопиццот других без потери общности. Без этого элемента — все остальное было как автомобиль без двигателя внутреннего сгорания. Тридцать лет назад — немыслимо, а сейчас у каждого второго такой.
Но вы уперлись, продолжаете доказывать, что правы (хотя правота здесь определяется простым бинарным свойством: есть контракт, или его нет), и гнете линию «я не слушал и не понял, продолжаю свою мысль».
Ну вы же пытаетесь. Кроме того именно на хабре — интеллектуальный уровень среднеко хомяка настолько низок, что пустые слова гораздо надежнее сложных аргументов.
Я неоднократно пытался перевести наше общение в диалог: уточнял, прояснял, задавал вопросы, объяснял логику и важность этого элемента. […]
Я же не спорил, не обвинял, не защищался.
«Объяснение логики и важности» — это спор. «Уточнения и вопросы» — это защита.
Возможно вы не обвиняли, но это довольно естественно в рамках разговора с заказчиком, я тоже никогда не использовал фразу: «Вот ты мудак, конечно», — ни на каких переговорах.
У меня нет сертификатов, я не оканчивал школ и не никогда посещал никакие тренинги, но я не припомню случая, чтобы мне не удалось переубедить собеседника. Однажды мне пришла в голову правильная идея в машине на пути к заказчику, и я ему честно сообщил: — Мы привезли вам план-проект, техническое задание, договор. Придраться к нам невозможно. Но я хотел бы вам предложить сначала меня выслушать. Я собираюсь сказать вещь, узнай о которой мой шеф — он меня немедленно уволит. В этой папке лежит говно. Но пока мы сюда ехали, я все придумал. У меня нет ни эскизов, ни плана, ни ТЗ, ничего. Но если вы хотите, чтобы все было круто — выслушайте меня.
Как вы думаете, что именно произошло в моём кейсе?
Вам нужно было не «пытаться перевести наше общение в диалог: уточнять, прояснять, задавать вопросы, объяснять логику и важность этого элемента», а просто сказать: «ОК, а какой основной элемент тут видите вы?». А потом — свести два русла воедино.
Ваша ключевая ошибка состояла в том, что вы не сумели (не захотели) хотя бы на минуту допустить, что облажались. Вместо того, чтобы слушать, и пытаться понять, почему и в чем — вы начали спорить и доказывать собственную правоту. Удивительно, что вас в принципе не выгнали спустя десять минут.
Этому тезису никак не мешает то, что раст начали пилить в 2006 (ради Servo, но кто теперь вспомнит), а Go — в 2007?
В целом, с ООП жить можно, — но всегда неприятно.
Мне неизвестны иные способы «привести пару примеров […] объекты круга и квадрата с общим методом
area».Если имелось в виду не с «общим методом», а «каждый с методом area» — уверен, вы сами осилите написать такой пример на хаскеле.
Второй, но я уже заметил, что вам до фени факты,
Естественно. Это же хабр, а не профессиональный форум. Убеждать лично вас мне без надобности, писать тривиальный код, который бесплатный дипсик за десять секунд может нагенерировать — тем более.
Я развлекаюсь, глядя, как вы пыжитесь. Для этого и существует хабр, разве нет?
«Обще-» это кем конкретно?
Я прочитал «Введение в Хаскель за 7 часов» и знаю на базовом уровне, как там устроена инкапсуляция. А вот что такое «ООП-шная инкапсуляция», простите уж, я не в курсе. Это какая-то особенная инкапсуляция? С блекджеком и методистками?
Ого! Окамл-то тут при чем? В Окамле что же, настоящее православное общепринятое ООП?
Очень за вас рад. А кто именно такой тезис высказал? Может быть, нам этого человека тоже позвать?
Полиморфизм, реализованный через наследование, — это вообще никаким боком не часть парадигмы, это детали имплементации. Вы просите, чтобы вам повторили слово в слово джавовый код на хаскеле, а лучше бы попытались понять, о чем вообще талдычит собеседник.
Кто это?
Давайте я еще раз попробую. «Основных понятий ООП» не существует в аксиоматике нашего мира. Алан Кай под ООП подразумевал одно, Гослинг — совершенно другое. Тут уместно вспомнить еще Матца, доведшего идею «everything is an object» до абсурда в руби.
Потом еще на горизонте появился Боб Мартин, со своими мухоморовыми галлюцинациями. Графомания этого инфоцыгана, в жизни не написавшего ни строки серьёзного кода, внезапно была воздвигнута на хоругви (потому что люди en masse туповаты, и без шор и узды в приниципе ни на что не способны). В результате у нас появилось определение ООП размером не менее трех печатных листов.
Инкапсуляция, полиморфизм и еще добрый десяток «основных понятий ООП» — прекрасно доступны во всех языках, от КОБОЛа до Хаскеля. Остальные — наследование, классы и прочие паттерны — никому нафиг не нужны (единственное разумное «наследование» вместо правильного решения — полиморфизма — реализовано в джаваскрипте).
То ООП, которое придумал Кай ко всему этому никакого отношения не имеет. То, которое предлагал Матц — тем более. Гослинг ну кхм.
В этом смысле, если выбросить в мусорную корзину бобмартиновщину и фаулерщину, — то инстансы тайп-классов в хаскеле — это хорошие, правильные объекты.
С чем рифмуется? Какая именно история?
Хороший MCP — на ⅔ состоит из Service Discovery. Три кита MCP — Prompts, Resources, Tools. И только первый из них отвечает за беседу с клиентом.
Ваше предложение обойтись без MCP — вероятнее всего, вызванное банальным непониманием, что такое MCP в принципе и как устроен протокол — это предложение писать код в кодах вместо высокоуровневых языков — в результате-то все равно все в коды превратится, так и давайте уберем лишние звенья.
Прекрасно. Набор инструментов, конечно, как у третьеклассника, ну да ладно. А через что Remote Assistant догадывается, как ему уточнить постановку задачи, или получить недостающую информацию в ходе процесса? У меня вот самописный MCP выдаёт более 50 инструментов и модель справляется. А у вас как? Вы останавливаете выполнение и «поднимаю сам или пишу тулзу под задачу в рантайме»?
Это детский сад, который поломается на первой же задачке посерьезнее «раскатить образ убунты по ста железякам».
Зиновий, вы очень тупой.
Впрочем, и так понятно было, зря я влез.
Service Discovery для SOAP (гуглить по Universal Description, Discovery, and Integration (UDDI)) изобрели 30 лет назад. В UDDI можно было поднять абсолютно новый сервис и все клиенты в ту же секунду про него знали и умели с ним общаться. Сервис!
Смысл этого заявления не сильно отличается от такого: «REST — это костыль, количество эндпоинтов статично, а количество записей в базе постоянно растет!!!111».
Смешно опасаться саботажа в ситуации, когда самая большая опасность — ужасающая некомпетентность.
Это очень смешной слоп, в котором единственный кусок «кода» — вызов терраформа, то есть в RAG нет нужды изначально. Остальное бла-бла-бла — ламерская вода. Разумеется, на HN он всем понравился. На хабре бы тоже зашел. Но не на тех форумах, где водятся профессионалы.
Какой инструмент у нас есть, чтобы обойтись без MCP для кодовой базы из 3М строк, написанных за 20 лет пятью разными командами?
grepиawk? Вы хоть знаете, что они такое?Терминология — мать порядка.
Начнем с того, что у термина «объектно-ориентированный язык» есть два практически прямо противоположных друг другу значения: аланокаевское и джеймсоногослинговое.
Вика предлагает определение, списанное под копирку у Лема из «Дневников Ййона Тихого»:
Инстансы тайп-классов в хаскеле очень сложно не назвать объектами по Гослингу.
И вообще, какой язык называть «объектно-ориентированным», а какой «функциональным» в 2026 году, когда в джаве уже не продохнуть от лямбд и ленивых стримов — это теософский спор, как про табы и пробелы.
Разбор потока байт по любому банковскому протоколу из сокета, например. Там кроме длинных строк и dynamic dispatch ничего нет.
Поскольку меня в консоли не забанили, помогу вам.
Citation needed. Да и в целом, «язык А быстрее языка Б, вот и пластмассовые бенчмарки подоспели» — это либо глупость, либо вредительство. Если вагон задач, в которых любой из вышеперечисленных языков уделает раст, как бык — овцу.
Citation needed. Да и в целом, хаскель ругают за одно, а скалу — за совсем другое.
Совет прям от Григория Остера. А как насчет стейта в асинхронных тредах? В базу сохранять?
Не, я понимаю, что ваш подход прекрасно работает на примерах в три строки из туториала. Но вы тут заикались про продакшн, а там, знаете, бывает хайлоад, большая конкурентность, долгоживущие треды, и всякая другая непотребщина.
Не нужно тащить в джаву лямбды, в джаваскрипит классы, в раст — иммутабельность, пожалуйста. Возьмите подходящий вашим препочтениям язык (функциональных иммутабельных языков — полно́) — и пишите на нем. А в расте даже акторная модель через жопу сбоку прикручена.
В 1980-е советские инженеры из Иоффе имели прямой канал связи по email (UUCP) с коллегами из самых что ни на есть капиталистических стран, я ежедневно начинал утро с проверки почты и ответов на письма.
А мой отец печатался в самых что ни на есть капиталистических журналах, за что получал гонорары чеками ВнешПосылТорга с примерно начала 70-х.
Маргинальные «социальные группки по интересам» плохи тем, что превращаются в уютненький пузырь, из которого гонят всех хоть немного несогласных, быстро выплескивая с водой и всех детей заодно. Хоть вот на хабр посмотрите.
Простите, я не способен воспринимать всерьез мнение, заканчивающееся тремя дегенеративными скобочками.
Ну вот, опять. Причем, вы сами задали вопрос, я на него ответил, а вы продолжаете спорить и защищать свою точку зрения.
Никогда не нужно вести дискуссию с позиции «я умный, ты дурак». Если бы вы поделились подробностями, я бы легко показал, почему этот элемент — основной только в вашей парадигме, и как его можно заменить на стопиццот других без потери общности. Без этого элемента — все остальное было как автомобиль без двигателя внутреннего сгорания. Тридцать лет назад — немыслимо, а сейчас у каждого второго такой.
Но вы уперлись, продолжаете доказывать, что правы (хотя правота здесь определяется простым бинарным свойством: есть контракт, или его нет), и гнете линию «я не слушал и не понял, продолжаю свою мысль».
Ну вы же пытаетесь. Кроме того именно на хабре — интеллектуальный уровень среднеко хомяка настолько низок, что пустые слова гораздо надежнее сложных аргументов.
«Объяснение логики и важности» — это спор.
«Уточнения и вопросы» — это защита.
Возможно вы не обвиняли, но это довольно естественно в рамках разговора с заказчиком, я тоже никогда не использовал фразу: «Вот ты мудак, конечно», — ни на каких переговорах.
У меня нет сертификатов, я не оканчивал школ и не никогда посещал никакие тренинги, но я не припомню случая, чтобы мне не удалось переубедить собеседника. Однажды мне пришла в голову правильная идея в машине на пути к заказчику, и я ему честно сообщил:
— Мы привезли вам план-проект, техническое задание, договор. Придраться к нам невозможно. Но я хотел бы вам предложить сначала меня выслушать. Я собираюсь сказать вещь, узнай о которой мой шеф — он меня немедленно уволит. В этой папке лежит говно. Но пока мы сюда ехали, я все придумал. У меня нет ни эскизов, ни плана, ни ТЗ, ничего. Но если вы хотите, чтобы все было круто — выслушайте меня.
Вам нужно было не «пытаться перевести наше общение в диалог: уточнять, прояснять, задавать вопросы, объяснять логику и важность этого элемента», а просто сказать: «ОК, а какой основной элемент тут видите вы?». А потом — свести два русла воедино.
Ваша ключевая ошибка состояла в том, что вы не сумели (не захотели) хотя бы на минуту допустить, что облажались. Вместо того, чтобы слушать, и пытаться понять, почему и в чем — вы начали спорить и доказывать собственную правоту. Удивительно, что вас в принципе не выгнали спустя десять минут.
Обалдеть, какое скотство со стороны государства.
На Мещанке штоле?