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)

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

что там осиливать?

там много чего осиливать. Рекомендую к прочтению Джеффа, C++ ++. Просто для обзора того, что тебе предстоит осилить в течении ближайших лет. Ну или возвращайся в свой уютный бейсик (или что там сейчас модно у неосиляторов?)

Он всегда думает что если он выбрал себе стилем жизни трахать себе мозг инструментом да еще непонятно зачем - то считает это достоинством

ну если тебе непонятно, то откуда тебе знать, достоинство это или недостаток? Вот будет понятно — поговорим.

C++ эта такая вещь, которая либо прогибается под тебя, либо ты прогибаешься под неё. Пока тебя корёжит.

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

Если задача будет требовать, я, например, буду использовать java, хоть опыта у меня с ней немного. Будет тормозить, буду юзать JNI и plain C. И ассемблер буду использовать,в случае необходимости, и Lua, и Фортран. И даже REXX.

да. C++ это плохой ЯП. Его не только надо знать, но ещё и _понимать_. Понимание приходит только с опытом, которого у тебя нет.

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

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

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

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

там много чего осиливать.

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

Просто для обзора того, что тебе предстоит осилить в течении ближайших лет.

Посмешил.

Ну или возвращайся в свой уютный бейсик (или что там сейчас модно у неосиляторов?)

Скала, Хаскел, Ерланг.

ну если тебе непонятно,

Мне все ясно как раз. С диагностической точностью - в морг.

C++ эта такая вещь, которая либо прогибается под тебя, либо ты прогибаешься под неё.

Ты совершенно прав. Пишущие на С++ прогнулись под него и думаю что это нормально. Некоторые правда осознают что он говно - и изобретают руст или пишут qt.

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

Его не только надо знать, но ещё и _понимать_.

Это приблизительно как избы без гвоздей строить. Не понимаешь как - хер построишь. От этого не перестает быть кактусом.

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

Дык это - я это говорю. Простое решение: кладем объекты в вектор. Сортируем. Херня.

STL vector это шаблон. Шаблон этот такой макрос на стероидах. Он хорош для простых объектов, для которых накладные расходы велики (int, std::string, etc...). Но если у тебя накладные расходы ничтожны, то использования шаблонов не даст профита, а как раз наоборот. Надо использовать уже указатели на функции, а в C++ это реализовано как таблицы виртуальных функций. Да, в отличие от шаблонов они не разворачиваются. Накладные расходы получаются огромными, если так хранить int'ы. Но если объект у тебя большой и сложный, то всё работает очень даже и хорошо. Даже лучше, чем во всяких явах/питонах.

И да, в тестовых/обучающих примерах постоянно юзают std::vector, но жизнь — это не пример. В жизни не только int'ы надо сортировать.

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

С какой это радости оно неправильное? В С++ так сказали? Это _копирование_ ненормальное поведение объектов. Расскажи человеку который вообще не связан с программированием что если ты васе даш мешок шариков с номерами а он его даст пете и попросит отсортировать - то шарики должны «скопироваться», а назад он получит совсем другой мешок, а свой должен кудато задеструктить. Это ж шизонутая логика.

ты давно спал? Похоже уже неделю без сна... Как ты представляешь себе «мешок с отсортированными шариками»???

Вот лично я представляю себе только в виде такой «сосиски», т.е. мешок шириной В ОДИН шарик. Очевидно, что если надо отсортировать, то проще взять, высыпать шарики, и пихать их в другой мешок по порядку. Ну или там простыми вставками, перекатывая шарики с малыми номерами в начало колбасины. В любом случае, освободить мешок придётся. Если второго нет.

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

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

Да, я не мазохист.

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

И да, в тестовых/обучающих примерах постоянно юзают std::vector, но жизнь — это не пример. В жизни не только int'ы надо сортировать.

Вот именно. Я сортирую совсем не инты. И у меня их 100кx25. И сортировок и партишенов в процессе производства к-размерного дерева - дохрена. И с решением в лоб C++ проиграл эрлангу. А с переводом на указатели он всего лишь догнал эрланг. На STLе. Это _не_ смешно.

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

Пишущие на С++ прогнулись под него и думают что это нормально.

Еще два чая.

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

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

Почему шариков становиться в N раз больше во всем процессе? Почему для сортировки шариков надо производить такие же шарики?:)

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

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

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

Просто для обзора того, что тебе предстоит осилить в течении ближайших лет.

Посмешил.

а ты всё же почитай.

Скала, Хаскел, Ерланг.

молодец. В этих ЯП существуют жёсткие решения, которые прибиты к этим ЯП гвоздями. И их не изменить. А в C++ всё что угодно ты можешь изменять как тебе хочется. В том и сила C++. Ну а дефолт там только для тестов, да для демонстрации возможностей. Ну типа того, что ++ может перемещать вперёд итератор, >> может выводить в файл, а ::delete может делать бекапы в облаках.

Мне все ясно как раз. С диагностической точностью - в морг.

мне лениво тебя в чём-то убеждать. Конечно, дебилов везде хватает. В особенности среди программистов. Там все олигофрены, и используют этот твой C++. И только ты один умный используешь Хаскель. А что написал-то? 3.5 хелловорлда и форум за полгода, который я на пхп за неделю сделаю? Ну и кому ты нужен?

Ты совершенно прав. Пишущие на С++ прогнулись под него и думаю что это нормально. Некоторые правда осознают что он говно - и изобретают руст или пишут qt.

ну Qt это и есть C++ в том виде, как я говорю — специально заточенный под окошки KDE. Да, для гуя типа как в кедах, только сБиШ — лучше Qt не бывает.

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

Вот именно. Я сортирую совсем не инты. И у меня их 100кx25. И сортировок и партишенов в процессе производства к-размерного дерева - дохрена. И с решением в лоб C++ проиграл эрлангу. А с переводом на указатели он всего лишь догнал эрланг. На STLе. Это _не_ смешно.

Шок! Сенсация! Микроскоп проиграл молотку соревнование в закручивании шурупов!

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

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

Классический пример борьбы с языком. Можно список бенефитов ради чего мне возвращатся в этот ацкий котел?

а ты всё же почитай.

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

В этих ЯП существуют жёсткие решения, которые прибиты к этим ЯП гвоздями.

Слово «решения» тут ключевое.

А в C++ всё что угодно ты можешь изменять как тебе хочется.

Как мне реализовать паттерн матчинг?

А что написал-то?

Дохрена всего. Сейчас увлекаюсь сетевыми распределенными системами(тыщи нод), высокопроизводительными сетевыми кластерами, и дохренагигабайтными распределенными базами.

Ну и кому ты нужен?

Ты не поверишь:)

ну Qt это и есть C++ в том виде, как я говорю

Нет Qt - это обритый кактус. Его уже добрились до «не пишите даже на QT/C++ - пишите на QML + qtscript».

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

Шок! Сенсация! Микроскоп проиграл молотку соревнование в закручивании шурупов!

Можно мне список микробов для которых этот микроскоп предназначен? Я как-то не обозреваю что-то в последнее время.

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

Почему шариков становиться в N раз больше во всем процессе? Почему для сортировки шариков надо производить такие же шарики?:)

понимаешь тут какая штука... Структуры != шарики. Ты когда своими бейсиками пользуешься, у тебя там тоже (на самом деле) есть умные указатели. Т.е. некий объект X из твоего бейсика, это на самом деле некий абстрактный класс C++, являющийся Smart Pointer'ом. И именно потому-то их и не становится больше, потому, что когда ты пишешь X=Y, то у тебя на самом деле получается X.operator=(Y), а в этом operator=() у тебя объект копируется «как надо». А ты, почему-то, использовал сырые адреса в памяти, которые копируются совсем не так, как тебе надо, а как обычные встроенные числа. Естественно, тебе для этого пришлось сделать какие-то костыли, дабы это всё у тебя заработало. Ну просто в твоих беййсиках и нет доступа к обычным числам, ты получаешь просто интерфейс к классу умных указателей, и всё. Если типизация строгая, то там только один operator=() определили, а если не строгая, то целую кучу нафтыкали(ну типа как в php). Всё это ты можешь провернуть и в C++, и даже лучше, т.к. только здесь ты задаёшь СВОИ правила.

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

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

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

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

В очередной раз задаю вопрос - что именно и кому облегчает с++? Не в середине 80х не в начале 90х, а сейчас?

Всё это ты можешь провернуть и в C++, и даже лучше, т.к. только здесь ты задаёшь СВОИ правила.

Я даже на ассемблере могу это написать. Нафига?

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

Нет Qt - это обритый кактус. Его уже добрились до «не пишите даже на QT/C++ - пишите на QML + qtscript».

Я к стати одних таких знаю. Как их...этих...А! Точно - мозилла. XUL+JS. Потом докатились что XUL->HTML. А сейчас эти «неосиляторы С++» пилят rust.

Не - ничего поожего не видно? Лозунг Qt5 - «dont use C++^H Qt Quick - new way developing applications». Прям так черным по сайту и написано. Месседж типа «Qt 5 continues to offer all of the power of native Qt C++, and we don’t want Qt 5 to be disruptive for existing code developed for Qt 4. » Ага. Уже других местах native C++ встречается со словечком «compatibility» - чтобы хомячки не волновались. Еще чуть чуть и до словечка legacy доберутся.

Как по твоему сколько аппликух в течении следующих 2х лет перепишут на QtQuick? А через сколько лет появится серьезные намерения послать его весь нахрен потому что c++ кодебейс уменьшится до маленького ядра, и народ достанет трахаться с микроскопом в пользу нормальных инструментов для закручивания шурупов вроде изобретения своего собственного руста или чужого руста? Когда осознают что они таки тулкит делают, а не с с++сом упражнения ради упражнений.

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

Классический пример борьбы с языком. Можно список бенефитов ради чего мне возвращатся в этот ацкий котел?

правило только одно: ты САМ придумываешь СВОИ правила.

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

большое != сложное. Профит C++ только в сложных проектах, которые вообще говоря не обязаны быть большими. Взять ту же STL, это на самом деле совсем не C++, это ЧАСТЬ C++. Да, важная, годная, нужная. Но только часть. Ты кроме неё хоть что-то знаешь? Я в этом сомневаюсь. Хотя точно знаю, что для многих _больших_ проектов достаточно одной STL.

В этих ЯП существуют жёсткие решения, которые прибиты к этим ЯП гвоздями.

Слово «решения» тут ключевое.

не. Тут ключевое «прибиты». Причём прибиты намертво.

А в C++ всё что угодно ты можешь изменять как тебе хочется.

Как мне реализовать паттерн матчинг?

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

Дохрена всего. Сейчас увлекаюсь сетевыми распределенными системами(тыщи нод), высокопроизводительными сетевыми кластерами, и дохренагигабайтными распределенными базами.

интересно, а зачем для этого нужен такой сравнительно низкоуровневый C++?

Нет Qt - это обритый кактус. Его уже добрились до «не пишите даже на QT/C++ - пишите на QML + qtscript».

ну... Когда хотят прочитать что-то из Сети, то тоже не вынимают побитно данные из сетевой карточки. Всегда имеется множество разных уровней абстракции, и C++ годен на достаточно низком уровне. Это конечно не ассемблер, но и не скрипт. И даже не жабоскрипт.

ЗЫЖ я так и не понял, зачем ты вообще полез в C++ со своими задачками? Пару лет назад тут уже был такой школоодмин, хотевший переписать скрипты на своём сервере на сишечке. Я его уями тогда обложил. Вот ты мне его напомнил.

Да... А потом появился systemd...

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

Можно мне список микробов для которых этот микроскоп предназначен? Я как-то не обозреваю что-то в последнее время.

вот ты не поверишь: именно на C++ пишутся всякие твои php.

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

правило только одно: ты САМ придумываешь СВОИ правила.

Преймущества, пожалуста - ради чего мне брать С++?

большое != сложное.

Сложные, сложные.

Профит C++ только в сложных проектах, которые вообще говоря не обязаны быть большими.

Профит слово расшифруй.

не. Тут ключевое «прибиты». Причём прибиты намертво.

Это все FUD. В ++ вообще нихрена реализовать нельзя благодаря особенностям синтаксиса.

Набросай мне возможный синтаксис библиотеки акторов на С++?

как хочешь.

В смысле никак?

Может возьмёшь готовый?

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

интересно, а зачем для этого нужен такой сравнительно низкоуровневый C++?

Я по глупости своей надеялся за пять минут и три рубля добиться некоторого ускорения тормознутого эрланга просто смиррорив алгоритм на плюсы. Как я ошибался!

Всегда имеется множество разных уровней абстракции, и C++ годен на достаточно низком уровне.

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

я так и не понял, зачем ты вообще полез в C++ со своими задачками?

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

вот ты не поверишь: именно на C++ пишутся всякие твои php.

php не мои. И еще - ты не поверишь но они пишутся на с++ потому что начали писаться в середине-конце 90х. Сейчас глупостями народ не страдает больше.

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

В очередной раз задаю вопрос - что именно и кому облегчает с++? Не в середине 80х не в начале 90х, а сейчас?

да всё тоже самое: большие и сложные проекты. Большие не потому, что там Over9000 нод, и не потому, что там Over90000 строчек. А потому, что там Over9000 программеров, и каждый со своими тараканами. Ну а на выходе имеем таких монстров типа KDE4, или там Windows7. Которые на твоём бейсике в принципе не написать. Да, я понимаю, что ты не понимаешь, зачем например нужно слово final. И не поймёшь, пока будешь свои хелловорлды клепать. Тама такие вещи и не нужны.

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

а на чём твой фотошоп-то написан? А что не на хаскеле?

Всё это ты можешь провернуть и в C++, и даже лучше, т.к. только здесь ты задаёшь СВОИ правила.

Я даже на ассемблере могу это написать. Нафига?

не можешь. Просто не понимаешь значение слово «правила». В ассемблере НИКАКИХ правил нет. Тама число 12345 можно трактовать так, как тебе захочется. В твоих бейсиках правила есть, ЧУЖИЕ. Сказано Integer, значит Integer. Ну а в C++ ты можешь сделать СВОЙ Integer, который будет работать по ТВОИМ правилам. А все программисты, которые юзают твой Integer, будут этим ТВОИМ правилам подчиняться. Вот сегодня твой Integer при делении на ноль выдаёт как в 8086 исключение, а завтра, как в 8087 будет давать бесконечность (или -бесконечность, если делить на -0).

А вот отвечать на вопрос «нафига» — тебе. Я-то откуда знаю?

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

Не - ничего поожего не видно? Лозунг Qt5 - «dont use C++^H Qt Quick - new way developing applications». Прям так черным по сайту и написано.

написано. А вот сами они упорото НЕ следуют своим же правилам. А как ты думаешь — почему?

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

C++ кодебейс не уменьшится, а станет ещё больше. Другое дело, что эти твои бейсики станут НАМНОГО больше. И лично я не вижу в этом ничего плохого. Всё правильно: апликухи писать на C++ не нужно. Это другой уровень. Да, приходилось раньше, но сейчас компьютеры не настолько убоги. Мы уже можем себе позволить на лету собирать код, даже в мобильных девайсах (в llvm), это хорошо и годно.

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

правило только одно: ты САМ придумываешь СВОИ правила.

Преймущества, пожалуста - ради чего мне брать С++?

я написал уже. А баг это или фича — решать тебе.

Профит слово расшифруй.

выгода. Монстра типа Windows7 на хаскеле ты не напишешь. Никогда.

Набросай мне возможный синтаксис библиотеки акторов на С++?

разве нельзя сделать на C++ реализацию этих твоих акторов?

А разве она уже не сделана? А разве не на C++?

как хочешь.

В смысле никак?

в смысле — я не понял вопроса.

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

задачи разные бывают. Для написания решателя твоих задач используется именно C++.

Я по глупости своей надеялся за пять минут и три рубля добиться некоторого ускорения тормознутого эрланга просто смиррорив алгоритм на плюсы. Как я ошибался!

а ты попробуй наоборот смиррорить, и я ставлю 10 против одного, что твой эрланг будет не в 6 раз, а в 666 раз медленнее. Если вообще заработает. И что это доказывает?

На достаточно низком уровне в ядре живет С.

на самом деле, C это вообще _другой_ язык.

А в подобных поектах как Qt этого низкого уровня все больше меньше становится, все остальное обкладывается скриптами. А моззиловцы вон вообще до ручки дошли.

и что в этом плохого?

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

да всё тоже самое: большие и сложные проекты.

По сравнению с? В 80х и 90х он облегчал по сравнению с Си.

А потому, что там Over9000 программеров, и каждый со своими тараканами.

Вот там С++ точно способ застрелить проект.

Ну а на выходе имеем таких монстров типа KDE4, или там Windows7.

KDE:

Qt Quick Support

The use of Qt Quick within Plasma continues to expand. Many components have been updated to use Qt Quick exclusively for the user interface; this also makes it easy to extend and customize Plasma Workspaces. Plasma now also allows Containments (which are responsible for presenting widgets on the desktop and in panels) to be written using only Qt Quick's easy-to-learn language. This gives developers the ability to produce custom Containments for experimentation or special use cases. With this capability, Plasma is a valuable, universal user interface toolkit.
Scripting Desktop Effects

Scripting interfaces for window effects, behavior and management make KWin Window Management a useful tool for developers wanting to address a particular use case. In addition, this modular approach minimizes the size of the core of KWin. It also improves maintainability by moving specialized code into external scripts Compared to the C++ code they replace, scripts make it easier to write, maintain and ensure quality of code.

Верной дорогой идут товарищи!

Compared to the C++ code they replace, scripts make it easier to write, maintain and ensure quality of code.

Compared to the C++

easier to write, maintain and ensure quality of code.

Дада.

Которые на твоём бейсике в принципе не написать.

Конечно. Андроид не сущетствует, андроид не существует.

Ждем когда отомрет десктов в таком виде как сейчас вместе с кедами?

Да, я понимаю, что ты не понимаешь, зачем например нужно слово final

Ты чувак заговариваешься.

а на чём твой фотошоп-то написан? А что не на хаскеле?

В 90х то? Я там тоже на ++ писал. С тех пор повзрослел.

В ассемблере НИКАКИХ правил нет.

Это ты мне с убогой системой типов С++ рассказываешь про «правила»?

Я-то откуда знаю?

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

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

И еще - ты не поверишь но они пишутся на с++ потому что начали писаться в середине-конце 90х.

ага. Унылое говно мамонто всякое, типа эрланга твоего. Оно правда из конца восьмидесятых. Как и этот ваш хаскель.

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

вот именно. Не изобретает ненужные псевдоязычки, которых и так Over9000.

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

Которые на твоём бейсике в принципе не написать.

Конечно. Андроид не сущетствует, андроид не существует.

Как будто dalvik/webkit/sqlite/... написаны на «ваших бейсиках».

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

я написал уже.

Ты написал хрень полную. Мистицизм. Система типов убога. Набор абстракций убог. Свойства языка убоги. Синтаксису убог. Легкость разработки ниже плинтуса.

выгода. Монстра типа Windows7 на хаскеле ты не напишешь. Никогда.

Монстр типа Linux написан без C++. Зачем нужен С++?

разве нельзя сделать на C++ реализацию этих твоих акторов?

Давай. Нарисуй «правила» которые будут удобнее «прибитых гвоздями» эрланговых или возможостей скалы в качестве библиотеки. Просто синтаксис.

в смысле — я не понял вопроса.

Ты знаешь что такое паттерн матчинг?

Для написания решателя твоих задач используется именно C++.

Нет не используется. Или как легаси из 90х.

а ты попробуй наоборот смиррорить, и я ставлю 10 против одного, что твой эрланг будет не в 6 раз, а в 666 раз медленнее.

В большинстве случаев на С++ такие проекты реализовать в принципе не возможно. И под словом «в принципе» я понимаю «в разумное время и за разумные ресурсы». Именно потому никто так и не делает. Нечего миррорить.

на самом деле, C это вообще _другой_ язык.

Именно. И вот там он и живет.

и что в этом плохого?

В этом нет ничего плохого. Это показывает что этот кактус уже всех достал.

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

Унылое говно мамонто всякое, типа эрланга твоего.

Даже это унылое говно написано на C.

Не изобретает ненужные псевдоязычки, которых и так Over9000.

Да нет - не пишет больше на C++.

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

да всё тоже самое: большие и сложные проекты.

По сравнению с? В 80х и 90х он облегчал по сравнению с Си.

ты как-то видишь всё в чёрно-белом цвете. Ну да, облегчал. И сейчас облегчает. А твой erlang облегчает ещё больше. И кто спорит? Если ты пишешь блондинко-софт, то пиши дальше на своих скриптах, всё правильно делаешь. А вот сами скрипты уже пишутся на C++. Ну или с использованием C++ либ. А, в свою очередь C++ являются обёртками всё к тем же, старым и добрым memcpy(3), которые на сишечке. Но если присмотреться внимательнее, то и они на самом деле на асме.

А потому, что там Over9000 программеров, и каждый со своими тараканами.

Вот там С++ точно способ застрелить проект.

венда живая? Огрызок жив? Кеды живы? Кто застрелился-то?

Верной дорогой идут товарищи!

да. Верной. Но это всё обёртка над C++ кодом.

Конечно. Андроид не сущетствует, андроид не существует.

что «андроид»? Думаешь там memcpy(3) на чём написана? На go? А ты возьми, и посмотри.

В 90х то? Я там тоже на ++ писал. С тех пор повзрослел.

ну а кто-то до сих пор пишет. И неплохо зарабатывает, кстати.

Это ты мне с убогой системой типов С++ рассказываешь про «правила»?

блжад! НЕТ там никаких типов! Сам придумывай сбиш, или юзай STL|Qt ещё чё-нить.

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

для апликухи, загружаемой в телефон блондинки, C++ не нужен. Точнее нужен, но этот код уже в google для тебя написали. Т.е. у блондинки в телефоне нужный C++ код УЖЕ есть. А тебе осталось написать скрипт, что-бы этот код использовать. Ну типа как bash для всяких printf. Только красиво.

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

Как будто dalvik/webkit/sqlite/... написаны на «ваших бейсиках».

Ты исходники хоть далвика то видел? Там от плюсов только расширение файлов. Там не то что темплейтов - там даже классов нет.

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

бизнес-то тут при чем? там проекты не публичные.

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

Ты написал хрень полную. Мистицизм. Система типов убога. Набор абстракций убог. Свойства языка убоги. Синтаксису убог. Легкость разработки ниже плинтуса.

ты всё правильно говоришь: у Бога. И этот «Бог» — ТЫ. Какие типы ТЫ сделаешь, такие и будут. Ты — царь и Бог любых типов и синтаксисов.

Монстр типа Linux написан без C++. Зачем нужен С++?

да не звезди: без C++ написано _только_ ядро(ну и ещё glibc может быть). А вот linux никому сам по себе на хрен не нужен. К нему ещё какое-нить KDE нужно, иначе никак. Иначе у тебя только роутер получится, розетка на два компьютера. Или кофемолка. Ну или даже суперкомпьютер, что по сути Over9000 кофемолок сразу.

Давай. Нарисуй «правила» которые будут удобнее «прибитых гвоздями» эрланговых или возможостей скалы в качестве библиотеки. Просто синтаксис.

Зачем? Если тебе так нравится эрланг, напиши компилятор эрланга. (только непонятно нафига, если он уже есть?)

Ты знаешь что такое паттерн матчинг?

ну то, что ты понимаешь под этим термином я знаю. Вот только зачем это в C++? Что-бы такие как ты миррорили код «для повышения скорости»? Это мечты. Хоть в ассемблер миррорь, у тебя получится в лучшем случае тоже самое.

В большинстве случаев на С++ такие проекты реализовать в принципе не возможно. И под словом «в принципе» я понимаю «в разумное время и за разумные ресурсы». Именно потому никто так и не делает. Нечего миррорить.

да ладно! Ну напиши мне скажем Qt на эрланге. На C++ же написали? Тебе что, Qt мало?!

Да и вообще, вы на хаскель даже qsort смиррорить не можете, о чём тут вообще можно говорить?

В этом нет ничего плохого. Это показывает что этот кактус уже всех достал.

ага. Как микроскоп, которым гвозди забивают.

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

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

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

Даже это унылое говно написано на C.

на C++ ИМХО было-бы проще. Ну вам виднее...

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

Если ты пишешь блондинко-софт, то пиши дальше на своих скриптах, всё правильно делаешь

Чувак у тебя что батхерт дошел до мозга? Если так иди спать.

венда живая? Огрызок жив? Кеды живы? Кто застрелился-то?

А куда ветер дует ты не видишь? Сколько микрософтовского тырпрайзного софта было написано на С++ а сейчас на чем? На моем бейсике? Как кеды скатываются в жабаскрипт ты не заметил? Как мозилла пилит собственный язык чтобы никогда больше дел с плюсами не иметь - это о чем тебе говорит? Как эппл послал плюсы нахер и все пишет на свое бейсике - ты тоже не замечаешь?

Но это всё обёртка над C++ кодом.

Пока. Посмотри на мозиллу и увидь.

что «андроид»? Думаешь там memcpy(3) на чём написана? На go?

Думаешь на С++?

ну а кто-то до сих пор пишет.

Мои соболезнования.

НЕТ там никаких типов! Сам придумывай

Бенжамин Пирс готов лечь в могилу чтобы там переворачиваться.

для апликухи, загружаемой в телефон блондинки

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

Т.е. у блондинки в телефоне нужный C++ код УЖЕ есть.

У блондинки в телефон _Си_шный код.

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

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

задачи-то те же. Только жрут те же задачи в разы больше. А всё из-за ваших говнобейсиков. Впрочем, у меня нет никакого баттхерта, это хорошо и годно. Мне нравится. На этих ваших говнобейсиках тоже можно писать. Причём быстро и хорошо.

У блондинки в телефон _Си_шный код.

ну яхз. Поковыряю на досуге.

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

Какие типы ТЫ сделаешь, такие и будут. Ты — царь и Бог любых типов

Ты что обкурился?

К нему ещё какое-нить KDE нужно, иначе никак.

Или какой нибудь гном. Или Е или.... 'список всего что без плюсов". И?

Если тебе так нравится эрланг, напиши компилятор эрланга.

На чем на плюсах? Я что раненый?

Вот только зачем это в C++?

Затем же зачем и везде.

Ну напиши мне скажем Qt на эрланге.

Тебе что показать вагон и маленькую тележку тулкитов не на С++?

ага. Как микроскоп, которым гвозди забивают.

Это не микроскоп. Это непонятная хрень которая хорошо никакой раобты не делает. В 80х была лучше простого Си для больших проектов. С тех пор осталась как опухоль которую не отрезать и не заменить. Те кто могли бы - попали с ним. Хотя до многихї уже дошло и изобретаю всякие D/Go/Rust.

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

там был аналог, если что. просто не были явно написаны типы, т.к. они видны из :i Num

а тут ты привел не аналог:

{-# LANGUAGE TypeOperators, TypeFamilies #-}
-- from-library:
data Z  
data S n 

type family (:+:) a b :: *
type instance (:+:) Z n = n
type instance (:+:) (S m) n = S (m :+: n)
-- /from-library
data Matrix a b = Matrix b

foo :: (Matrix a c) -> (Matrix b c) -> (Matrix (a:+:b) c)
foo = undefined

скоро выйдет 7.8 и там будут включены typelevel-naturals нормальные

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

там был аналог, если что. просто не были явно написаны типы

Если функция является частью API, то я ее типы всегда описываю явно и считаю такую возможность важной, а отсутствие такой возможности - недостатком. Я и в Haskell часто описываю типы функций.

скоро выйдет 7.8 и там будут включены typelevel-naturals нормальные

Круто=)

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

Какое имеют отношения копипасты и «запиливание одного и того же» к Си? У него куча проблем, но вроде содание библиотек там никто не отменял.

У него очень мало средств управления сложностью кода. Использование проверенных практик - ООП, обобщенного программирования, Inversion of control, Dependency injection и др., а также таких милых плюшек вроде функций(с замыканием) как объектов, обобщенных алгоритмов, перегрузки операторов, исключений и пр. при попытке использовать(эмулировать) их в С не уменьшает сложность, а увеличивает. При этом в С++ это все применяется достаточно широко, не вызывает проблем и действительно позволяет управлять сложностью. Ты мог бы сказать, что это не нужно для уровня С/С++, но, во-первых, это не так, а во-вторых, в Си нет ни шаблонов, ни RAII, ни умных указателей, ни нормальной концепции аллокаторов. А это все крайне уменьшает сложность разработки систем.

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

Вообще-то от использования ++ отказывались сознательно

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

Нет в плюсах красоты и изящества.

В си этого еще меньше.

Незаконченный язык какой-то, недоделанный, «уродец» вообщем.

Потрясающие аргументы, показывающие всю глубину осознанности отказа от С++=)

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

Средства абстракции в c++ - унылы чуть более чем полностью на сегодняшний день

Добавь к этому примеры и аргументы.

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

Он всегда думает что если он выбрал себе стилем жизни трахать себе мозг инструментом да еще непонятно зачем - то считает это достоинством. Я уже не делаю на ++ большие проекты больше 10 лет - и слава богу забыл этот страшный сон.

Кстати, 10 лет назад я писал еще на С. С тех пор много воды утекло. С++ лучше С. Просто по определению.

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

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

Вы каким компилятором пользуетесь? Вообще эта проблема всегда была детской.

Расскажи это разрабам gcc почему она вообще есть.

Не поверишь. Из-за си и его оператора >>

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

Он не умеет потому что считает что это не нужно

А считает, что это не нужно, потому что не умеет.

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

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

С какой это радости оно неправильное? В С++ так сказали? Это _копирование_ ненормальное поведение объектов.

С какой это радости оно неправильное? В Erlang так сказали?

Расскажи человеку который вообще не связан с программированием что если ты васе даш мешок шариков

Инструментом нужно уметь пользовться. Ты разучился, обломался и сейчас тужишься оправдаться. Для этого ты поливаешь Си++.

Следовательно ручное управление памятью.

Нет.

В каком смысле нет?

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

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

Отличная аналитика, спасибо forCe.

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

ООП
обобщенного программирования
Inversion of control
Dependency injection
функций(с замыканием) как объектов
обобщенных алгоритмов
перегрузки операторов
исключений
шаблонов
RAII
умных указателей
нормальной концепции аллокаторов

Красота.

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

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