LINUX.ORG.RU

ооп и функциональщина кратко, внятно.

 , , ,


11

7

Дабы не слать напраслину на любителей создавать классы и объекты, пытаюсь разобраться в плюсах, которые отличаются от родителя, на первый взгляд, только названиями файлов, функций и приемами организации мышления погромиста. Так вот, эти ваши классы даже в учебнике называют почти структурами, а мизерное отличие сомнительного профита легко можно решить и в анси си(далее - ансися) при ближайшем обновлении. Ансися страдает перегрузкой названий функций для каждого из подлежащих обработке типов, отсутствием удобной иногда перегрузки функций, что, конечно минус, но не критично, ибо решаемо. Сиплюсик конечно удобен школьникам, тяжело принимающим всякие %s %d %x и так далее в качестве аргументов принтфов и сканфов, но зачем создавать для этого отдельный язык? Ведь << и >> становится лишним препятствием при освоении, если параллельно сдвиги битов читать. Итого, я вывел для себя, что в попытке облегчить участь программиста, разработчики языка усложнили его до степени родителя, не получив особенного профита. Чем же ооп так всем нравится, если оно не облегчает код?

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

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

vromanov ★★
()

стал плеваться в с++, а попал в ооп

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

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

О ком о нас? Я тут один, а эта ваша ассоциативность и абстрактность больше напоминают астрологию, чем хладнокровный точный расчет функционального яп'а

minakov ★★★★★
() автор топика

тяжело принимающим всякие %s %d %x

Ты что, смеешься? Ты пробовал пользоваться плюсошным iomanip? Формат printf вообще кроссязычный, в каждом языке есть аналог («%s %d».format(«hello», 100500), например).

И вообще, у тебя псто какой-то ниочинь, потому что критики как-то и нет.

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

Пробовал - инстинкт говорит 'ансися'!

У тебя очень немногословный инстинкт, я его не понимаю. Что «ансися»?

anonymous
()

Всё, что можно сделать на си, можно сделать на си++.

Всё, что можно сделать на си++, можно сделать на си. Но на си++ будет короче и наглядней. Для этого и сделали новый язык.

Ivan_qrt ★★★★★
()

ооп и функциональщина

c++

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

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

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

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

foreach {

void
print
функциональщина

} divide 0 fold right

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

:-)

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

Чем этот ооп хорош, субъективно?

Чем хороша лопата по сравнению с палкой-копалкой, субъективно?

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

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

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

Ну почему?

Еще раз повторяю, потому что: «ооп и функциональщина» != «c++»

чем классы лучше структур

Чем молоко лучше одеяла?

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

Один из богов (багов?) ООПшников трудно реализуется — наследование.

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

чем классы лучше структур

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

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

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

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

тред по выбору наижирнейшего жава веб-фреймворка там ————————>

с другой стороны.

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

Мне сложно разобраться в логике создания плюсов

самому автору сложно. Он даже решил записать ее на корпусе холодильника перманентным маркером, но не влезло. Автор знал про Ферма, поэтому все свои наблюдения переписал в книжечку и озаглавил http://ru.wikipedia.org/wiki/Дизайн_и_эволюция_C++

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

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

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

Спп позиционируется как ооп язык

И что же? Почему тред про опп, а ты пишешь про c++?

стандартный си, который функциональный

Я пойду прилягу. Что-то мне поплохело.

geekless ★★
()

Так вот, эти ваши классы даже в учебнике называют почти структурами

В плюсах классы вообще не отличаются от структур. И те и другие могут одно и то же. Разница лишь в спецификаторах доступа по-умолчанию.

Сиплюсик конечно удобен школьникам, тяжело принимающим всякие %s %d %x и так далее в качестве аргументов принтфов и сканфов, но зачем создавать для этого отдельный язык? Ведь << и >> становится лишним препятствием при освоении, если параллельно сдвиги битов читать

Если принципиальная разница для тебя заключается именно в этом, то стоит ещё почитать книжек.

Чем же ооп так всем нравится, если оно не облегчает код?

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

И, к слову, С++ не принуждает тебя писать именно в ООП-стиле.

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

Короче - да, наглядней - если мозгу плевать, что одно и то же - не одно и то же

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

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

емнип нельзя template<struct T> ...

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

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

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

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

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

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

емнип нельзя template<struct T> ...

Это не означает, что на месте T не может стоять структура. Да, в этом месте пишут class либо typename, но в качестве типа могут быть указаны и базовые типы, вроде int.

yoghurt ★★★★★
()

Если кратко, то ни ООП, ни функциональщина в 99% случаев, когда они применяются не нужны.

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

Ну разницы на уровне типов между структурой и классом нет. Например, в чем смысл запрещать передавать структуру, если написано class? А уловить все прелесть синтаксических изысканий class vs typename между которыми нет разницы, мне тоже не удалось.

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

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

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

Всё, что можно сделать на си, можно сделать на си++.

научи как сделать в с++ нормальные макросы, идиоматичные для с++

хочу синтаксис под задачу адаптировать немного

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

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

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

А уловить все прелесть синтаксических изысканий class vs typename между которыми нет разницы, мне тоже не удалось.

В данном контексте её нет, но у typename есть ещё одно применение - когда надо сослаться на «зависимый» от шаблонного аргумента тип, чтобы объявить переменную этого типа, например (typename T::value_type x)

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

Сплошная магия, а не серьезный язык

О да, простыни макросов, несомненно, лучше.

перегрузка, классы и объекты, тайпдефы как в си,

Повторюсь ещё раз, если вы не осилили перегружать только функции с действительно одинаковыми функциями и даёте одно и тоже имя всему, до чего дотянетесь, то ваш Си-код ужасен, инфа 146%.

А в возможности иметь функцию с названием add, способную добавлять объекты разных типов без возни с void* и ... я вижу одни плюсы (хе-хе). Непонятно, почему не упомянуты шаблоны и исключения.

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

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

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

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

minakov ★★★★★
() автор топика

Ансися, ансисю, ансиси, ансисей

batbko
()

очевидно, чем проще фундамент (описание языка и его базовых конструкций), тем легче порог вхождения, чёткое понимание процесса, наглядность, адаптируемость. Стандарты, которые не могут уместиться в 1К страниц, вообще не понятно для кого пишутся - вероятно, чтобы не дать возможности сконцентрировать силы и регулярно угнетать молодецкий пыл новыми преградами (в плане наглядности, простоты и прагматизма всегда советую взглянуть на язык Lua, который можно считать развитием ANSI C)

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