LINUX.ORG.RU

Какое же говнище этот ваш С++

 


11

7

Решил намедни углубить свои знания по плюсам, чувствуя, что скоро нехило так потребуются по работе. Теперь сижу, обмазываюсь тут всякими трупами страусов, Скоттом Майерсом и другими. Г-пди, как же можно на этом писать, особенно после знания божественных лиспов, хаскелей и прочих матанских агд (sic!). Это какая-то пытка, честное слово, мне натурально мерзко и противно читать как люди пытаются вырезать гланды через задний проход да ещё и хвалятся этим, поглядите, мол, как это круто. Такое ощущение, будто плюсисты все поголовно латентные мазохисты.

template <typename T>
class Rational
{
    public:
    ...
    friend const Rational operator*(const Rational& lhs, const Rational& rhs)
    {
        return Rational(lhs.numerator() * rhs.numerator(), // same impl
            lhs.denominator() * rhs.denominator()); // as in Item 24
    }
}

An interesting observation about this technique is that the use of friendship has nothing to do with a need to access non-public parts of the class. In order to make type conversions possible on all arguments, we need a non-member function (Item 24 still applies); and in order to have the proper function automatically instantiated, we need to declare the function inside the class. The only way to declare a non-member function inside a class is to make it a friend. So that's what we do. Unconventional? Yes. Effective? Without a doubt.

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

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

★★★★★

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

Ну наконец-то нашелся тот, кто перепишет фотошоп на лиспе.

thesis ★★★★★
()

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

Кстати, посмотри в сторону Qt/C++. Он куда более приятный, удобный и здравый. Чистый С++ устарел.

observer ★★★
()
Последнее исправление: observer (всего исправлений: 2)

Полчаса всего до пятницы оставалось же.

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

Кстати, посмотри в сторону Qt/C++

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

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

Qt/C++

Два чаю с меня.

ТС, Qt превносит много удобства и плюшек, оставляя возможность юзать фичи самого Ц++.
Кроме того, под C++ уже написаны либы на все случаи жизни.

evilmanul
()

Уныло и слишком толсто. Язабан.

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

зато если посмотреть на с++ в связке с boost'ом, можно здорово сэкономить на касторке и слабительном!

gavlig ★★★
()

А где можно почитать за что так не любят С++?

Ссылку на Линуса (про «C++ is a horrible language») можно не давать, видел.

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

самый главный брат - это сам дедушка Страуструп, наконец-то добившийся, что C++ работает почти так же быстро, как хаскель, и писать на нем почти так же удобно. Ссылочку дать? :3

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

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

Mitre ★★
()

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

Anon
()

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

Поведай, как в нормальных.

tailgunner ★★★★★
()

Страуструпп, к примеру советовал не пользоваться всеми возможностями плюсов, если мозгов не хватает.

Изучите базовые возможности ими пользуйтесь и будет вам счастье.

grim ★★☆☆
()

Странный ты какой-то..

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

Недавняя миниэпопея - сел я на плюсах переписать одно сложное дерево с эрланга. Ускорить думал «простым способом». Ага - щаз. Переписывание в лоб с эрланга на STL/C++ показало при первом же запуске потрясающий результат - плюсовый вариант был тормознее якорного эрланга в 6ть раз. Естественно по причине копирования всего и вся. А если ты разбираешь 100 тыщь объектов в дерево - здесь вам не тут. Конечно выкуривание копирования везде где только можно в указатели устранило проблему тянущегося якоря - догнали тормознутый эрланг по производительности при сохранении алгоритма. Но при это добавили охренно упражнений по ручному управлению памятью естественно. А то что в функции/обекты сортировщиков объекты передаются не по ссылке в STL - это извините меня вообще махровый звездец. Отсортировать вектор из 100к объектов - нарушает все нормы киотского протокола по выхлопу СО2 с процессора. И опять упражнения c указателями и ручное управление памятью. На вопрос че делать - мне предложили «переписать STL». Эта было пять.

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

А то что в функции/обекты сортировщиков объекты передаются не по ссылке в STL - это извините меня вообще махровый звездец.

Насколько я помню, как ты написал, так и будет. Те:

bool c1(const A & a, const A & b) {
...
}

bool c2(A a, A b) {
...
}

std::sort(list.begin(), list.end(), c1);
std::sort(list.begin(), list.end(), c2);

hired777
()

Неосилятор? Пиши на PHP.

Lavos ★★★★★
()

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

Tark ★★
()

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

yu-boot ★★★★★
()

Г-пди, как же можно на этом писать, особенно после знания божественных лиспов, хаскелей и прочих матанских агд (sic!)

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

Лично я после хаскеля по-новому взглянул на плюсы, а С++11х так вообще язык-то неплохой :)

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

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

Фишка в том, что это мало где разумно.

yoghurt ★★★★★
()

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

ranka-lee
()

А я ненавижу кирпичи. Когда их взгромоздишь друг на друга - такая фигня получается. Из такого дом не построишь. То ли дело бетонные блоки.

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

Фишка в том, что это мало где разумно.

Я наоборот, не могу вообразить разумного применения ООП где-то кроме GUI.

yu-boot ★★★★★
()
Ответ на: комментарий от mix_mix
template <typename T>
class Rational
{
    public:
    friend const Rational operator*(const Rational& lhs, const Rational& rhs)
    {
        return Rational(lhs.numerator() * rhs.numerator(),
                        lhs.denominator() * rhs.denominator());
    }
}
instance Num (Ratio a) where
    (x :% y) * (x' :% y') = (x * x') :% (y * y')

55 токенов против 30. И из-за этого такой плач Ярославны?

этот мёртвородженный язычок

ЛОР - место контакта с другой реальностью.

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

Ваш аватар огорчает понифагов.

Он специально для этого сделан.

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

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

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

Далеко не каждый программист способен осилить концепцию функционального языка

а на кой тогда в 11м стандарте плюсов прилепили сбоку соплями элементы функциональщины?

И, да, заводы стоят, одни программисты в стране.

lazyklimm ★★★★★
()

А потому что не надо применять искусственный приём где не надо. Если посмотреть на Item 24, используемый как аргумент, то видно, что он в свою очередь опирается на Item 23. Item 23 говорит, что clearBrowser() надо реализовывать не как мембер, т.к. мембер знает слишком много о классе и это нарушает инкапсуляцию - а ему надо знать лишь про clearCache, clearHistory, clearCookies. ОК, кто мешает реализовать базовый класс WebBrowserCore, скрыть всё что надо в private, затем унаследовать WebBrowser от него?

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

С++11х так вообще язык-то неплохой

плюсам пошёл 4й десяток, в плюсах появились лямбда-функции

Лично я после хаскеля по-новому взглянул на плюсы

как можно после хаскеля вообще глядеть на плюсы?

lazyklimm ★★★★★
()

Толсто. Неосилятор. Язабан.

Xellos ★★★★★
()

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

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