LINUX.ORG.RU

Производительность C++

 ,


7

13

Как насчёт производительности у C++ по сравнению с C? Мои предположения на текущий момент:

1) Код, не использующий возможности C++ (то есть по сути plain C), скомпилированный C++ компилятором будет иметь абсолютно ту же производительность, что и код на С.

2) Исключения и dynamic_cast медленные. Если нам важна производительность, лучше их не использовать.

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

4) Класс с виртуальными методами полностью аналогичен пункту 3, но при вызове виртуальных методов добавляется небольшой оверхед. Сишный эквивалент obj->vtable->func(obj, ...). Если сравнивать с plain C кодом, реализующим ООП в той же манере (каждая структура-объект имеет поле, указывающее на структуру, содержащую адреса функций работы с ней), то оверхеда по сравнению с plain C не должно быть.

5) При использовании атрибута класса final (если компилятор поддерживает соответствующий стандарт) даже при наличии виртуальных методов в нём, их вызов будет превращаться в прямые вызовы функций вместо обращения к vtable, если переменная имеет соответствующий тип, а не указатель/ссылка на его предка (который не final).

6) Шаблоны могут привести к разбуханию кода. Впрочем, #define-ы и inline-функции в C++ могут устроить то же самое. Вопрос: будет ли использование шаблона с одинаковыми параметрами создавать 2 копии реализации или же всё-таки компилятор догадается сделать её лишь один раз. А если шаблон используется с одинаковыми параметрами в нескольких объектных файлах? Будет ли реализация расшариваться между ними или у каждого своя?

7) Что насчёт inline-методов класса? (те, которые описываются прямо в момент определения самого класса, внутри блока class). Может ли их реализация расшариваться между модулями или в каждом будет своя копия (допустим, метод слишком длинный, чтобы инлайнится в момент вызова)?

Я не претендую на правоту, какие-то утверждения могут быть ложными. Хотел бы узнать, как обстоят дела на самом деле. А также какие подводные камни я ещё не знаю. Разумеется, речь идёт о последних версиях gcc/clang с включённой оптимизацией не ниже -O2.

★★★★★

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

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

В С все это есть?

А когда ты работаешь с железом, буферами и байтами, нагромождение абстракций нужно не всегда.

Кто заставляет их лепить?

Люди в 2016 году выбирают си и ассемблер не потому, что им захотелось, а потому что для их задачи оно реально проще. Другого рода простота.

Что заставляет вас думать, что люди в 2016-ом году что-то более менее понимают в C++?

Я вот наблюдаю, что уже лет 10 про C++ народ знает лишь какие-то городские легенды. А уж если и берутся что-то писать, что получается либо чистый C, либо Java, но в синтаксисе C++ (с голыми указателями, забытыми delete, возвратом ссылок на временные объекты и т.д.).

Т.е. реально про возможности C++ не знают, но мнение имеют. А из этого мнения выходит, что проще взять C, чем C++.

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

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

Я вот наблюдаю, что уже лет 10 про C++ народ знает лишь какие-то городские легенды. А уж если и берутся что-то писать, что получается либо чистый C, либо Java, но в синтаксисе C++ (с голыми указателями, забытыми delete, возвратом ссылок на временные объекты и т.д.).

Т.е. за 10 лет наблюдений ты так и не увидел стремление людей писать на C++ :-) Интересно, о чём это тебе говорит? :-)

Т.е. реально про возможности C++ не знают, но мнение имеют.

Мнение такое, что идиоматично и правильно писать на нём дорого и долго, потому то и

А из этого мнения выходит, что проще взять C, чем C++.

PS. Ещё C++ строчку во время компиляции так и не научился генерировать несмотря на заявления экспертов о том, что «компилятору C++ передаётся больше информации, чем компилятору C» :-)

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

В С все это есть?

Нет, веб на си пишет только эдди. На крестах тоже, кстати, кроме страуструпа мало кто пишет, наверное.

Я вот наблюдаю, что уже лет 10 про C++ народ знает лишь какие-то городские легенды.

Ну то есть маргинальный язык?

Тут еще множество факторов можно вспомнить.

Можно. Но главное, си = высокоуровневый ассемблер, и иногда (достаточно часто, судя по TIOBE), людям просто нужен высокоуровневый ассемблер.

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

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

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

Мнение такое, что идиоматично и правильно писать на нём дорого и долго

Идиоматично _и_ правильно как раз проще.

auto p(make_unique<Foo>())

вместо

auto p(new Foo());

...

delete p; // не нужно с unique_ptr
tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от anonymous

Нет, веб на си пишет только эдди. На крестах тоже, кстати, кроме страуструпа мало кто пишет, наверное.

Google, Facebook, как минимум. Еще туча совсем мелких проектиков, которые используют разработки вроде Wt для Web-морд на разных умных устройствах. А если еще и WebAssembly взлетит, то для C++ место найдется не только на бэк-энде.

Ну то есть маргинальный язык?

Вы уж определитесь, доверяете ли вы TIOBE или нет (хотя в приличных компаниях за упоминание TIOBE бьют кандилябром). По показаниям TIOBE С++ более чем мейнстрим.

Это сложный язык, который должен использоваться в определенных прикладных нишах. И таки 70% нынешних разработчиков эти ниши совсем не упали.

Да, но зачем, когда есть акка или эрланг.

Затем, что стоимость развертывания и эксплуатации прожорливого софта на Akka или Erlang может быть дороже, чем аналога на C++. В некоторых случаях. Подчеркну отдельно: в некоторых случаях.

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

Ну а кто пихает? Речь в данной теме по поводу C vs C++. Пока что эти языки плотно делят между собой одни и те же ниши.

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

Интересно, о чём это тебе говорит?

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

Мнение такое, что идиоматично и правильно писать на нём дорого и долго

Ниже tailgunner уже показал, что правильно писать как раз и не долго, и не дорого.

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

Идиоматично _и_ правильно как раз проще.

Так вроде это же ты как раз и пользуешься picojson? :-)

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

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

говнокод на Си++ писать проще, чем нормальный код, поэтому Си++ говно

okay.jpg

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

Ниже tailgunner уже показал, что правильно писать как раз и не долго, и не дорого.

Так писать может любой, идиома не только в смарт-поинтерах :-)

О том, что миллионы мух не могут ошибаться.

Забавно, но такой же ответ любят давать лисперы, когда речь заходит о маргинальном Лиспе :-)

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

Ещё более, чем забавно, но такие слова я слышал, кажется, от Пола Грэма, знаменитого лиспера :-) С каких пор эксперт по C++ повторяет за лисперами? :-)

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

Еще туча совсем мелких проектиков, которые используют разработки вроде Wt для Web-морд на разных умных устройствах.

А ты сам то эту Wt пробовал? :-) Попробуй сделать с её помощью хотя бы аналог ЛОРа :-) За громкими возможностями, часто заявляемыми разработчиками, стоит тьма багов, как правило, которые ещё больше усложняют и замедляют разработку готового продукта :-) Попробуй, ага :-)

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

Так писать может любой

Практика показывает, что не любой.

С каких пор эксперт по C++

Я не эксперт, мне можно.

Попробуй сделать с её помощью хотя бы аналог ЛОРа

Специально для малолетних дебилов: «используют разработки вроде Wt для Web-морд на разных умных устройствах

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

Я не эксперт, мне можно.

За 20 лет программирования на C++ не стать по нему экспертом?! :-) Ого :-)

Специально для малолетних дебилов: «используют разработки вроде Wt для Web-морд на разных умных устройствах.»

Вроде как не эксперт за 20 лет практики по собственному признанию, а других обзываешь :-) Логика превратилась в nullptr :-)

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

Facebook

Про гугл не знаю, фейсбук на пыхе.

https://www.quora.com/What-is-Facebooks-architecture-6

WebAssembly взлетит, то для C++ место

Сдается мне, 99,(9)% веб-ассембли кода будет генериться не из с++ кода.

Еще туча совсем мелких проектиков, которые используют разработки вроде Wt для Web-морд на разных умных устройствах.

И какое процентное соотношение всего этого к жабе, пыху, питону, рубям и т д?

В некоторых случаях. Подчеркну отдельно: в некоторых случаях.

Можно пример. Учитывая, что сервак стоит дешевле месячной зп одного программиста, мне даже интересно.

плотно делят между собой одни и те же ниши.

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

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

Сдается мне, 99,(9)% веб-ассембли кода будет генериться не из с++ кода.

А из чего еще? Какие еще широко распространенные языки умеют в нативную компиляцию?

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

А из чего еще? Какие еще широко распространенные языки умеют в нативную компиляцию?

V8 компилирует JavaScript в нативный код :-) Ты не знал? :-) Как он был главным языком в вебе, так и останется :-)

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

используют разработки вроде Wt для Web-морд на разных умных устройствах.

Ну там и си активно используется, та же luci, поди, еще популярнее. Речь шла про веб в целом, а не одностраничные мордочки для микроволновок.

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

V8 компилирует JavaScript в нативный код :-) Ты не знал? :-)

V8 - JIT-компилятор. Ты не знал?

Как он был главным языком в вебе, так и останется :-)

Надо быть реально улыбчивым дурачком, чтобы предложить компилировать JS в Web Assembly.

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

А из чего еще?

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

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

V8 - JIT-компилятор. Ты не знал?

Первый слышу, ибо оно всегда было и есть, что «V8 compiles JavaScript to native machine code (IA-32, x86-64, ARM, or MIPS ISAs; has also been ported to PowerPC[7] and IBM s390[8][9] for use in servers)» https://en.wikipedia.org/wiki/V8_(JavaScript_engine) :-)

Надо быть реально улыбчивым дурачком, чтобы предложить компилировать JS в Web Assembly.

Надо реально отстать от жизни, чтобы предположить иначе :-)

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

Про гугл не знаю, фейсбук на пыхе.

Во-первых, PHP не сам HTTP парсит. Во-вторых, погуглите про HipHop и HHVM от Facebook.

Сдается мне, 99,(9)% веб-ассембли кода будет генериться не из с++ кода.

Вот поживем и увидим.

Можно пример. Учитывая, что сервак стоит дешевле месячной зп одного программиста, мне даже интересно.

Разница в стоимости устройства (для примера можно взять даже виртуалки у хостеров) может составлять 2-3 и более раз. Когда счет устройств идет на тысячи, это выливается в приличные суммы.

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

Если сравнивать с нишами какого-нибудь Python-а, JavaScript-а или VisualBasic-а, то разница не большая.

Меня лично больше интересуют не драйвера или части ядра, а ПО промежуточного слоя, вроде HTTP-серверов, MQ-брокеров, СУБД и т.д. Тут C и C++ на одном поле играют. А местами и с Java/Erlang конкурируют.

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

Ну вот если запилят быстры компиляторы для шарпа, жавы,

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

жабаскрипта

фейспалм

Иначе не взлетит просто.

Ну да, а если в брузере можно будет запустить Kafka - тогда о-го-го.

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

Речь шла про веб в целом

А разве такая штука существует?

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

Ну понятно... о компиляторах ты читал в Википедии.

Понятно, что ты облажался :-) V8 компилирует JavaScript-код в нативный код :-)

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

про HipHop

Суть в том, что веб логика написана на пыхе.

Разница в стоимости устройства (для примера можно взять даже виртуалки у хостеров) может составлять 2-3 и более раз.

Примеры можно, когда джава на бэкенде выходит дороже крестов?

местами и с Java/Erlang конкурируют.

Ну вообще не думаю. Слишком разная стоимость разработки и т д.

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

Кто, зачем?

After the minimum viable product (MVP) release, there are plans to support garbage collection[5] which would make WebAssembly a compilation target for garbage collected programming languages like Java and C#.

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

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

И Java, и .NET. И, естественно, никто, кроме тебя, этого не знал.

Теперь съезжаешь с темы :-) Признавать свою неправоту - это не просто :-) Особенно очень опытным :-)

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

Ты какой-то реально угашенный.
https://en.wikipedia.org/wiki/Just-in-time_compilation
После прочтения поймешь к чему про V8 написали

The compiled code is additionally optimized (and re-optimized) dynamically at runtime, based on heuristics of the code's execution profile.

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

Суть в том, что веб логика написана на пыхе.

Суть в том, что без C++ обслуживать тяжелый Web не получается. Или от меня требовалось показать сайты, где вообще все на C++?

Примеры можно, когда джава на бэкенде выходит дороже крестов?

При чем здесь бэкэнд?

Ну вообще не думаю. Слишком разная стоимость разработки и т д.

Что не думаете? Есть MQ-шные брокеры на разных языках, с разными возможностями и производительностью.

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

Ты какой-то реально угашенный.
https://en.wikipedia.org/wiki/Just-in-time_compilation
После прочтения поймешь к чему про V8 написали

Нет, не пойму :-) Вопрос tailgunner звучал: «какие компиляторы распространённых языков умеют генерировать нативный код?» :-) JavaScript - распространённый язык, а компилятор V8 умеет генерировать нативный код :-) Был, есть и будет JavaScript языком за номером один в вебе :-)

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

Или от меня требовалось показать сайты, где вообще все на C++?

Логика. Не ``о, сайт использует imagemagick — сишка рулит в вебе", а веб. Понятно, что в вебе косвенно используется код хоть на окамле.

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

Логика.

То, что HTML используется на 100% сайтов означает, что остальные языки в вебе просто сосут?

Или наличие JavaScript на фронте означает, что Ruby в вебе нет?

Что вообще значит «в вебе»: фронт, энд, лоад-балансер, http-сервер?

Какой, блин, вопрос, такой и ответ.

Ну и, насколько могу судить, C в вебе несколько больше, чем C++.

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

Признавать свою неправоту - это не просто

Да. Ты так и не смог.

Хотя... может, ты и правда считаешь себя правым? Тогда тебе должно быть 15 лет.

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

Да. Ты так и не смог.

Неправота твоя в том, что на аргументированный ответ про компиляцию JavaScript в нативный код, ты взбрыкнулся с неуместной и несущественной поправочкой про JIT :-) Непонятно, на что именно ты этим поспешил возразить, но это никак не меняет того факта, что V8 компилирует JavaScript в нативный код :-) Прямо в работающем браузере :-) Лол :-)

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

на аргументированный ответ про компиляцию JavaScript в нативный код, ты взбрыкнулся

Ты реально угашенный. Речь идет о Web Assembly и нативной компиляции, и тут ты такой весь в белом «V8 компилирует в натив». Это фейспалм.

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

Еще туча совсем мелких проектиков, которые используют разработки вроде Wt для Web-морд на разных умных устройствах.

Такое себе.

А если еще и WebAssembly взлетит,

вебасм - это днище. Ты реально думаешь, что эти упоротые сделают что-то вменяемое? Их же сожрут жс-хомячки с потрохами.

Сейчас жс жив(хотя уже мёртв д/кофе/тайпскрипт) только потому, что конкурентов ему нет. Т.е. пистонист/пхпист не может писать под браузёрку. Всё равно нужен жс"ер.

Нода в этом плане ещё более принижает не жс"еров, т.е. если раньше надо было держать ждангиста+жс"ер - сейчас можно держать одних жс"еров.

то для C++ место найдется не только на бэк-энде.

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

Сейчас есть емскриптен, но писать на С++ с ним не представляется возможным, ибо он предназначен для эмуляции не броузера в броузере. Т.е. чисто для конпеляции десктопных приложений/кода.

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

Как пишущий сайтик на С++ - заявляю - писать адская боль.

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

Аледятел, тупица ты чмошная, WebAssembly на роль IR для JIT вообще не канает. По тем же самым причинам, почему не канает LLVM.

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

Насколько я помню asmjs не jit, а сразу компилируется, не? Зачем вообще для «IR» нужен jit? Кода в броузерке 5копеек кода, оптимизировать не надо - это можно делать на уровне ллвм.

Там ir нужен только для то, чтобы поцаны не вставили syscall - собрал-запустил. Там эти 200кило кода соберутся быстрее, чем текущий jit.

При этом вебчик это такая штука, что там лишнего кода мало и от жита профита мало.

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

Причём тут я? :-) И откуда в тебе столько злости? :-) Небось, и ладошки мокренькие у тебя, нервного :-) Не стоит оно того, ведь если ты не обоснуешь сейчас свой взбрык, и что ты лично мне сказать хотел, то всё что ты о себе оставить в моей памяти - плотные ладошки от нервного перенапряга :-) Лол :-) Теперь давай, пыхти и обосновывай :-)

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

А как ты думаешь, примазываться к эксцентричным и харизматичным персонами - это признание собственной слабости или особенность мышления? :-)

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

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

Что такое tracing JIT понимаешь, тупица? А что такое basic block понимаешь? И какого размера basic block в SSA догадываешься?

Никому вообще в голову никогда не придет делать tracing JIT поверх LLVM, WebAssembly, C-- и тому подобного. Все эти IR годятся только для статической компиляции.

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

Только дебил может предложить транслировать js в webassembly. Идиотизм примерно того же порядка, что транслировать smalltalk в llvm.

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

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

Дёшево, не напрягайся и протри ладони :-) Это пустое :-)

Что такое tracing JIT понимаешь, тупица? А что такое basic block понимаешь? И какого размера basic block в SSA догадываешься?

Какое отношение весь этот набор элементарных предложений с терминами, вырванными из разных контекстов, а потому, имеющих разное значение в разных случаях, имеет ко мне? :-) Лол :-)

Никому вообще в голову никогда не придет делать tracing JIT поверх LLVM, WebAssembly, C-- и тому подобного. Все эти IR годятся только для статической компиляции.

Не знаю, причём тут я вообще, но согласно этому треду, есть персоны, которым в голову пришло std::string использовать как класс для ошибки, а также персоны, которые такой стиль одобряют :-) А V8 таки компилит JavaScript в нативный код :-)

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

Только дебил может предложить транслировать js в webassembly. Идиотизм примерно того же порядка, что транслировать smalltalk в llvm.

Ну так если ты умница и у тебя есть светлые предложения, ты обоснуй их, дай ссылку на свои труды и обоснования, хотя бы на бложик какой-нибудь свой, тогда твоё мнение по поводу JavaScript для WebAssebmly, или для мало кому нужного Smalltalk для LLVM и будет хоть как-то убедительно :-) Лол :-)

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

Никому вообще в голову никогда не придет делать tracing JIT поверх LLVM, WebAssembly, C-- и тому подобного. Все эти IR годятся только для статической компиляции.

Как минимум 3 раза приходила в голову мысль сделать JIT на для динамических языков на LLVM: Unladen Swallow, FTL JIT, Pyston. И, вроде, какой-то JIT для Ruby

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

Аледятел, кроме тебя, дебила, никто и не предлагает жопаскрипт в webassembly транслировать.

И почему вообще такие IR не годятся - читай тут: http://qinsb.blogspot.co.uk/2011/03/unladen-swallow-retrospective.html

Архитектуру трассирующего жыта читай тут: http://jayconrod.com/posts/51/a-tour-of-v8-full-compiler

Особенно обрати внимание на аргументацию в «Why no bytecode?»

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

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

Але, дебил, не отмазывайся теперь, это был ТЫ кто предлагал жопаскрипт в webassembly компилировать.

А V8 таки компилит JavaScript в нативный код

А вот это уже к твоему обсёру никакого отношения не имеет.

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

Ни один не был трассирующим. Для жопаскрипта это обязательно.

Не был?

«The first execution of any function always starts in the interpreter tier. As soon as any statement in the function executes more than 100 times, or the function is called more than 6 times (whichever comes first), execution is diverted into code compiled by the Baseline JIT. This eliminates some of the interpreter’s overhead but lacks any serious compiler optimizations. Once any statement executes more than 1000 times in Baseline code, or the Baseline function is invoked more than 66 times, we divert execution again to the DFG JIT.»

Архитектуру трассирующего жыта читай тут: http://jayconrod.com/posts/51/a-tour-of-v8-full-compiler

«There is no interpretation and no bytecode. Compilation is done one function at a time (as opposed to trace-based compilation as used in TraceMonkey, the old FireFox VM).»

Где там трассировка? И почему ни в одной из 4-х статей нет заявления «мы написали tracing JIT»?

Какая трассировка без интерпретатора? https://morepypy.blogspot.com.by/2009/03/applying-tracing-jit-to-interpreter....

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

Так ты еще и дислексик, дятел? Читать не умеешь?

V8 тут *backend* к WebAssembly, а вовсе не наоборот.

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

На нервной почве?

А некоторые на нервной почве смайлики сыплют.

Читай лучше здесь http://v8project.blogspot.ru/2016/03/experimental-support-for-webassembly.html

И где там написано о компиляции JS в WebAssembly? Процитируй.

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

А некоторые на нервной почве смайлики сыплют.

Это на почве веселья :-)

И где там написано о компиляции JS в WebAssembly? Процитируй.

Так а кто предложил компилировать JavaScript в WebAssembly? :-) Тобой был задан вопрос о том, какой распространённый язык имеет компилятор в нативный код :-) Одним из корректных ответов был JavaScript и V8 соответственно :-) Также было сказано, что JavaScript является языком номер один в вебе :-) Зачем ты сейчас напрасно тратишь время? :-) Лол :-)

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

А некоторые на нервной почве смайлики сыплют.

Это на почве веселья :-)

Это у тебя нервное.

И где там написано о компиляции JS в WebAssembly? Процитируй.

Так а кто предложил компилировать JavaScript в WebAssembly? :-)

Ты. Причем не предложил, а сказал, что так и будет.

Зачем ты сейчас напрасно тратишь время?

Интересно же понять, как мыслит подросток.

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

V8 тут *backend* к WebAssembly, а вовсе не наоборот.

Да, но V8 таки умеет JavaScript в нативный код :-) Ты же с этим спорить не будешь? :-) Вот и молодец, гуляй чаще, это полезно для здоровья :-)

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

Ты. Причем не предложил, а сказал, что так и будет.

Конечно же было сказано, что JavaScript был и будет языком номер один в вебе, а не то, что ты пытаешься кому-то приписать :-) И вообще, тратить время на дискуссию с тем, кто трёт неудобные комментарии и банит по IP считаю ниже своего достоинства :-) Всего хорошего :-)

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

И вообще, тратить время на дискуссию с тем, кто трёт неудобные комментарии и банит по IP считаю ниже своего достоинства :-) Всего хорошего :-)

Бгг. Ну, скатертью.

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

Да кого ипет нативный код, утырок? Ты про webassembly тявкал, который никаким боком к JITам динамических языков не относится.

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

Да, v8 таки тупо profile-driven, а не трассирующий. Не хочу в сортах говна разбираться - что spiderminkey, что v8, один динамический кал. Все равно, SSA-based низкоуровневые IR не годятся ни для одного из этих типов JITов. Только для статической консервативной компиляции без какой либо динамики (как в mono).

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

Да кого ипет нативный код, утырок? Ты про webassembly тявкал, который никаким боком к JITам динамических языков не относится.

Но ведь вопрос был о том, какие широко распространённые языки программирования можно компилировать в нативный код :-) V8 может компилировать JavaScript в нативный код :-) Каков привет, таков ответ, как говорится :-) Ты столько уже пены выпустил, а понять элементарного вопроса так и не смог :-) Всего хорошего :-)

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

Да положить мне на жопаскрипт и нативную компиляцию, не интересно это. Ты тявкал про компиляцию жопаскрипта в webassembly, и вот конкретно за этот базар и должен отвечать. Остальное меня не колышет. Не отмазывайся теперь, сучонок, что мол это был не ты, тебя по твоим дебильным лолам узнать легко.

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

Но ведь вопрос был о том, какие широко распространённые языки программирования можно компилировать в нативный код

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

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

Да положить мне на жопаскрипт и нативную компиляцию, не интересно это. Ты тявкал про компиляцию жопаскрипта в webassembly, и вот конкретно за этот базар и должен отвечать. Остальное меня не колышет. Не отмазывайся теперь, сучонок, что мол это был не ты, тебя по твоим дебильным лолам узнать легко.

Хочет рассказать про компиляцию Js в WebAssembly, да передумал. Стало лень. :-)

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

Примеры можно, когда джава на бэкенде выходит дороже крестов?

При чем здесь бэкэнд?

Всё, что требует больших куч, в Java приходится выносить в off-heap. Например, базы данных хранят данные в DirectByteBuffer. Сериализация там довольно быстрая, но в случае С++ её бы не было вообще, там есть обобщенный value object. Машинное обучение сюда же.

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

//Психиатр

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

Все это так, но мой комментарий был про другое. Сейчас у многих разработчиков есть представление, что софт — это либо ядра и embedded, либо десктоп, либо Web с делением на фронт- и бэк-энд. Представление это неправильное, не упирается все на свете в разработку бэк-энда для Web-а. Ну и, собственно говоря, то, чем я занимаюсь, оно не про Web.

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

Можно полюбопытствовать, что понимается под динамическим метапрограммированием? Беглый гуглёж ничего не дал.

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

Все это так, но мой комментарий был про другое.

Я понимаю. Мой ответ получился немного не в контексте обсуждения. Java лишь на начальных этапах заметно дешевле С++. В устоявшемся режиме (когда неопределенное поведение перестало выходить из под контроля, подобраны библиотеки и налажены все сопутствующие разработке процессы) я бы эти языки рассматривал как примерно одинаковые. Два главных плюса С++ (RAII и GP) могут сделать разработку на С++ сильно дешевле там, где требуется детерминированное управление ресурсами. Java выходит сильно дешевле там, где большие и динамичные кодовые базы, и не нужен RAII.

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

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

Правильнее было бы сказать run-time metaprogramming. Я соглашусь с претензией в случае чего)

//Психиатр

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

Два главных плюса С++ (RAII и GP) могут сделать разработку на С++ сильно дешевле там, где требуется детерминированное управление ресурсами.

Это если брать технологические аспекты. Но в разработке ПО, зачастую, гораздо большее значение имеют около технологические аспекты: наличие библиотек; уровень удобства, которые предоставляют IDE, системы сборки и управления зависимостями; рынок рабочей силы и наличие специалистов, имеющих в конкретную технологию; предпочтения людей, стоящих у руля разработки и т.д.

Для каких-то задач намного проще набрать Java-разработчиков, которые с помощью IDEA, Ant и Maven будут собирать приложение из кучи готовых библиотек, делать это достаточно быстро и с более-менее нормальным уровнем качества. При этом еще будет обеспечиваться довольно высокая взаимозаменяемость разработчиков (если не говорить про ключевые роли).

Вот по этим показаниям C++ сильно проигрывает Java, C# и не только. Маленькая команда с хорошим уровнем разработчиков, наличие заточенных под предметную область библиотек — и на C++ все идет нормально. Но если не так, то можно нажить себе приключений.

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

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

Можно и так сказать: «команда с хорошим уровнем разработчиков, наличие заточенных под предметную область библиотек — и на Си все идет нормально.» Разработчики с «хорошим уровнем» квалификации и являются самой большой проблемой. Если эту проблему решить и собрать команду квалифицированных разработчиков (а не экспертов по паттернам банды 4-х и прочей...), то они предпочтут скорее Си.

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

Если эту проблему решить и собрать команду квалифицированных разработчиков (а не экспертов по паттернам банды 4-х и прочей...), то они предпочтут скорее Си.

Для каких задач?

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

Но если не так, то можно нажить себе приключений.

Совершенно верно.

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

Для каких задач?

Точно не для обработки данных. Сеть (HTTP, MQ) еще себя неплохо чувствует с С, а вот базы данных уже страдают.

//Психиатр

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

Для каких задач?

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

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

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

базы данных уже страдают.

Так страдают, что бурно развиваются, особенно в последние 2-3 года. Посмотри в список рассылки того же Postgres. Там небывалый подъём, много чего делается прямо сейчас, пока мы бабаболим. На Си делается. А страдают больше от использования Си++.

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

Команда квалифицированных специалистов, которая хорошо знает и Си и Си++ для решения поставленной задачи никогда не возьмёт Си++

Всяких Chrome, V8 и прочих GCC с LLVM не существует O_o

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

Команда квалифицированных специалистов, которая хорошо знает и Си и Си++ для решения поставленной задачи никогда не возьмёт Си++

Надо же, а мужики из GCC взяли и переехали с С на С++, во дураки.

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

Всяких Chrome

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

V8

Такая же песня, только во имя промоутинга JavaScript. При этом, сейчас делается WebAssembly.

и прочих GCC

Там от Си++ гулькин нос.

с LLVM не существует

Ну и что он в сравнении с GCC?

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

Сеть (HTTP, MQ) еще себя неплохо чувствует с С, а вот базы данных уже страдают.

Смотря какой MQ и какой уровень MQ. Если работа с сетью внутри MQ еще нормально себя чувствует, то вот то что выше, подписки, распределение сообщений по ним... Вот там в код на C просто страшно заглядывать.

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

Посмотри в список рассылки того же Postgres. Там небывалый подъём, много чего делается прямо сейчас, пока мы бабаболим. На Си делается. А страдают больше от использования Си++.

Находи первый загугленный рейтинг:

http://db-engines.com/en/ranking

1.	1.	1.	Oracle	Relational DBMS	1449.25	-12.78	-17.11
2.	2.	2.	MySQL 	Relational DBMS	1370.13	-1.69	+91.78
3.	3.	3.	Microsoft SQL Server	Relational DBMS	1165.81	+22.99	+47.76
4.	4.	5.	MongoDB 	Document store	314.62	-5.60	+35.57
5.	5.	4.	PostgreSQL	Relational DBMS	306.60	-1.01	+25.70
6.	6.	6.	DB2	Relational DBMS	188.57	+2.61	-10.12
7.	7.	8.	Cassandra 	Wide column store	131.12	-3.38	+22.21
8.	8.	7.	Microsoft Access	Relational DBMS	126.22	-5.35	-20.27
9.	10.	9.	SQLite	Relational DBMS	106.78	-0.48	-1.19
10.	9.	10.	Redis 

Oracle - использует С++, MySQL - использует С++, Microsoft SQL Server - С++, MongoDB - С++. И только потом Postgre. Сдается мне ты хочешь выдать частный случае за общую картину ;)

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

Там от Си++ гулькин нос.

Нет, там С++ во все поля. Правда они почему-то расширение файлов не поменяли, но внутри уже код, который на С уже ну никак не соберется.

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

Oracle - использует С++
Microsoft SQL Server - С++

Мне вот интересно, ты сотрудник этих корпораций? Или тебя никогда туда не возьмут, потому что ты не сможешь писать для них на Си++?

MySQL - использует С++, , MongoDB - С++.

Что они в сравнении с Postgres?

Сдается мне ты хочешь выдать частный случае за общую картину ;)

:-)

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

Нет, там С++ во все поля. Правда они почему-то расширение файлов не поменяли, но внутри уже код, который на С уже ну никак не соберется.

В какие ещё поля? Там примитивный C++03, который используется очень-очень сдержанно.

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

Мне вот интересно, ты сотрудник этих корпораций? Или тебя никогда туда не возьмут, потому что ты не сможешь писать для них на Си++?

Отвечу на твое любопытство - я и сейчас имею отношение к разработке одной из СУБД за С++, причем за деньги, а не в виде хобби.

MySQL - использует С++, , MongoDB - С++.

Что они в сравнении с Postgres?

Они - рабочие проекты и решения по всему миру.

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

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

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

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

Ну а по поводу вашей пространной сентенции, вы, видимо, излили какую-то свою персональную боль. И речь идет не столько о технической стороне, сколько об организационном бардаке. Который приводит проекты к коллапсу как на C, так и на C++, так и на Java, так и на Ruby, так и на JavaScript и список этот можно продолжать.

Уж не знаю, какой у вас опыт, а вот то, что доводилось видеть и делать мне, от использования C только проигрывало. Ибо там, где в C++ проблемы решаются с помощью RAII и типобезопасности за счет шаблонов (не говоря уже про исключения, которые, не везде можно использовать), в C пишут простыни тривиального кода с кучей мелких ошибок, да еще и усугубляют ситуацию копипастой и макросами.

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

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

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

В какие ещё поля?
Там примитивный C++03

Окай.

Который используется очень-очень сдержанно.

Он используется достаточно, чтоб однозначно считать, что это не код на С.

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

Отвечу на твое любопытство - я и сейчас имею отношение к разработке одной из СУБД за С++, причем за деньги, а не в виде хобби.

А к этому проекту имеет отношение Стоунбрейкер? :-)

Они - рабочие проекты и решения по всему миру.

Которые уступают Postgres.

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

Так страдают, что бурно развиваются, особенно в последние 2-3 года. Посмотри в список рассылки того же Postgres.

Только Постгрес. Который всё никак не может выбраться из аутсайдеров. Из того, что имеет какой-то шанс называться базой данных (а не хранилищем), всё делается на С++. Или на Java/С#, что странно, но факт.

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

//Психиатр

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

Посмотри в список рассылки того же Postgres. Там небывалый подъём, много чего делается прямо сейчас, пока мы бабаболим. На Си делается.

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

Ну а из совсем недавнего: https://clickhouse.yandex/ В компании, которая не может пожаловаться на недостаток квалифицированных кадров, сделала свою специализированную СУБД на C++.

И, сдается мне, один из местных анонимов имеет к ней отношение :)

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

Это софт, который можно ваять как попало

Царь, залогинься.

LLVM не существует

Ну и что он в сравнении с GCC?

Ты не поймешь.

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

Который всё никак не может выбраться из аутсайдеров.

Давай пруфы, подтверждающие аутсайдинг Postgres.

Из того, что имеет какой-то шанс называться базой данных (а не хранилищем), всё делается на С++.

Ты про MySQL, который на C++? Или просто не знаешь, какую целостность данных Postgres обеспечивает?

В базах данных, которые современные, а не архаика для вращающихся дисков a-la PostgreSQL

Огласи-ка список, если не трудно.

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

В этом Си виноват будет? Чем спасёт от «эпических абстракций» Си++?

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

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

Какая разница из какой древности растут ноги, если проект успешно развивается командой грамотных сишников?

Ну а из совсем недавнего: https://clickhouse.yandex/ В компании, которая не может пожаловаться на недостаток квалифицированных кадров, сделала свою специализированную СУБД на C++.

Ну вот когда эта СУБД обслужит столько же, сколько обслужил Postgres, тогда и будем посмотреть.

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

Какая разница из какой древности растут ноги, если проект успешно развивается командой грамотных <подставьте свой язык>?

Дополнено.

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

Дополнено.

Нет. Проекту несколько десятков лет. Начинали они с Лиспа + Си, потом переписали весь лисповый код на Си. Когда-то там был Си++, который был выпилен.

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

И, сдается мне, один из местных анонимов имеет к ней отношение :)

Если ты про меня, то я к Яндексу отношения не имею вообще) Но к подобным вещам — да, имею.

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

Какая разница из какой древности растут ноги

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

Ну вот когда эта СУБД обслужит столько же, сколько обслужил Postgres, тогда и будем посмотреть.

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

И да, примеры кода, который на C лучше, чем на C++, будут или вы продолжите лужи газифицировать?

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

Когда-то там был Си++, который был выпилен.

Пруф? Как-то читал их историю, там было написано, что С++ рассматривался, но не был взят т.к. на то время (80-е) еще не было качественных компиляторов.

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

Когда-то там был Си++, который был выпилен.

Это где-то он там был? В самом PostgreSQL или в клиентской либе для него?

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

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

Тогда и не следует говорить про мужиков, которые удумали вдруг «перевод GCC с Си на Си++».

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

Ой, да что ты. Что за задачи такие?

И да, примеры кода, который на C лучше, чем на C++, будут или вы продолжите лужи газифицировать?

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

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

Чем спасёт от «эпических абстракций» Си++?

Наличием полного по Тьюрингу обобщенного программирования с мономорфизацией шаблонов и мономорфизируемым же value object. Благодаря которому можно вычислять раскладки данных по памяти, и всё это охватывается оптимизирующим компилятором.

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

Наличием полного по Тьюрингу обобщенного программирования с мономорфизацией шаблонов и мономорфизируемым же value object.

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

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

Что это?

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

> Громадная. Никто в здравом уме не будет просто так переписывать код, который отлажен и работает. Причем шансы старого кода быть переписанными обратно пропорциональны объему и возрасту кодовой базы.

Тогда и не следует говорить про мужиков, которые удумали вдруг «перевод GCC с Си на Си++».

У вас бинарное мышление? Из моей фразы не следует, что старый код никогда не будет переписан. Следует лишь то, что шансы невелики и без особой причины этого не будут делать. Вот у разработчиков GCC причин накопилось достаточно.

> Ну вот когда Postgres будет столь же успешно работать на тех же самых задачах, что и ClickHouse, тогда и можно будет о чем-то говорить.

Ой, да что ты. Что за задачи такие?

https://habrahabr.ru/company/yandex/blog/303282/ Там была ссылка на тестовые данные. Можете сами попробовать загнать все это в свой любимый Postgres и рассказать про результаты.

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

О как. Да, у меня низкая квалификация, и я вообще уже давно не программист. Тем не менее, с той же конкатенацией здесь было продемонстрировано два решения: одно от царя, которое требует использования либо -std=c++1z, либо расширений GCC, второе мое, низкоквалифицированное, работающее в рамках C++14.

Так что как-то уныло вы слились. «А как дышал, как дышал» (с)

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

У вас бинарное мышление? Из моей фразы не следует, что старый код никогда не будет переписан. Следует лишь то, что шансы невелики и без особой причины этого не будут делать. Вот у разработчиков GCC причин накопилось достаточно.

Как никто и никогда достаточно квалифицированные не будет брать Си++.

https://habrahabr.ru/company/yandex/blog/303282/ Там была ссылка на тестовые данные. Можете сами попробовать загнать все это в свой любимый Postgres и рассказать про результаты.

Открыл статью. Увидел заголовок «Как перестать бояться и начать использовать ClickHouse». Закрыл статью.

О как. Да, у меня низкая квалификация, и я вообще уже давно не программист. Тем не менее, с той же конкатенацией здесь было продемонстрировано два решения: одно от царя, которое требует использования либо -std=c++1z, либо расширений GCC, второе мое, низкоквалифицированное, работающее в рамках C++14.

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

Так что как-то уныло вы слились. «А как дышал, как дышал» (с)

Мне это до лампочки.

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

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

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

Что это?

Вот-вот. Ты не в теме, зачем оно вообще в С++.

//Психиатр

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

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

Тем, что писать не надо? Тем, что учить ничего, кроме шаблонной лавировки в цепепе ничего не надо? О, да, аргумент великий. Или чем лучше?

Вот-вот. Ты не в теме, зачем оно вообще в С++.

Так раскрой тему, чтобы было понятно.

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

Как никто и никогда достаточно квалифицированные не будет брать Си++.

Скажите, пожалуйста, те люди, которые делают на C++: GCC/Clang/JVM, Chrome/Firefox/Edge, MySQL/MariaDB, MongoDB/RethinkDB, HHVM/HipHop, Microsoft Office и т.д. — вот они недостаточно квалифицированные?

Открыл статью. Увидел заголовок «Как перестать бояться и начать использовать ClickHouse». Закрыл статью.

И чего вы ждете? Что вам здесь на пальцах все объяснят?

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

Так его, в подавляющем большинстве, для таких целей и не используют.

Вот давайте так: вы не хотите показывать код на C и понятно почему. Но может вы тогда на примере реализации PostgresSQL расскажите, где и как это самое метапрограммирование вообще и конкатенация строк в компайл-тайм в частности, помогло бы Postgres-у?

Или вы просто перестали смайлики в тексте ставить дабы за умного сойти?

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

Или чем лучше?

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

Так раскрой тему, чтобы было понятно.

Тема следующая. Сейчас в БД все гонятся за производительностью аналитики и хотят выжимать из серверов всё по максимуму. На объемах данных больше размера кэша производительность сильно зависит от того, как данные разложены по памяти. А сама раскладка должна минимизировать время выполнения на открытом множестве запросов (не на каком-то одном конкретном запросе). Поэтому внутренняя схема данных (раскладка данных по памяти) не может быть фиксированной. Мономорфные шаблоны С++ позволяют худо-бедно, через ёптвоюмать, но аппроксимировать требуемые раскладки объектами. И всё это хорошо интегрируется (охватывается оптимизатором) с обобщенными алгоритмами, работающими над этими самыми раскладками данных по памяти.

Грубо говоря, там, где у тебя на С будет одна база данных, на С++ потенциально будет 100500, под разные вариации основной задачи. Издержки на поддержание обобщенного кода, безусловно, будут заметно больше таковых для кода заранее специализированного. Зато можно достичь лучшего результата на потоке задач из-за лучшей адаптируемости.

//Психиатр

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

Скажите, пожалуйста, те люди, которые делают на C++: GCC/Clang/JVM, Chrome/Firefox/Edge, MySQL/MariaDB, MongoDB/RethinkDB, HHVM/HipHop, Microsoft Office и т.д. — вот они недостаточно квалифицированные?

Скажи, пожалуйста, у тебя есть в распоряжении хотя бы тысячная часть бюджета какого-либо из этих известных программных продуктов, составляющих каких-нибудь 6 * 10^-10 от общего числа программ? За деньги можно и на брайнфаке программировать.

И чего вы ждете? Что вам здесь на пальцах все объяснят?

Просто не хочу тратить время на ещё одну статью промоутинга.

Так его, в подавляющем большинстве, для таких целей и не используют.

Потому что это нереально.

Вот давайте так: вы не хотите показывать код на C и понятно почему. Но может вы тогда на примере реализации PostgresSQL расскажите, где и как это самое метапрограммирование вообще и конкатенация строк в компайл-тайм в частности, помогло бы Postgres-у?

Так это ты спроси у «психиатра». Это же он говорит, что кресты для СУБД самое оно.

Или вы просто перестали смайлики в тексте ставить дабы за умного сойти?

Нет, по другой причине.

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

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

С++ очень хорошо подходит для метапрограммирования там, где требуется его мономорфный by design вариант. По причине того, что других таких языков нет. Есть Rust который как еще посмотреть, лучше он С++ или не особо в плане сбалансированности абстракций. И есть D, который за свою долгую историю только-только вышел из аутсайдеров.

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

Я к чему. Идеальных языков, к сожалению, нет. Что же касается С++, то страшилки, что про него рассказывают, не соответствуют действительности. Всё, что на нем пока еще проблематично делать — это программирование (и метапрограммирование) в большом. Остальное же вполне управляемо.

//Психиатр

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

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

А на шаблонах цепепешных писать не работёнка? Зато (если программист прокачан), написав генератор кода, можно делать вещи, которые на шаблонах делать опухнешь. Даже вон, AnonCxx использовал нестандартную фичу GCC, и код стал хоть как-то более понятным для банальной конкатенации.

Грубо говоря, там, где у тебя на С будет одна база данных, на С++ потенциально будет 100500, под разные вариации основной задачи. Издержки на поддержание обобщенного кода, безусловно, будут заметно больше таковых для кода заранее специализированного. Зато можно достичь лучшего результата на потоке задач из-за лучшей адаптируемости.

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

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

А на шаблонах цепепешных писать не работёнка?

Это как посмотреть. Вообще — нет. Они не такие страшные, как рассказывают. Просто очень многословные, особенно относительно языков, прямо заточенных под обобщенное программирование. И уже не такие низкоуровневые, как раньше (С++03). Кроме того, есть вполне себе хорошие библиотеки метапрограмм.

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

Слов много, смысла мало. В общем, ты понял.

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

Как я сказал, я к Яндексу и его БД отношения никакого не имею, но таки в этой области работаю.

//Психиатр

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

Мономорфные шаблоны С++ позволяют худо-бедно, через ёптвоюмать, но аппроксимировать требуемые раскладки объектами

Есть где-нибудь в открытом доступе примеры этого?

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

Кроме того, есть вполне себе хорошие библиотеки метапрограмм.

Осталось только упомянуть Hana или Spirit, чтобы я тебя понял окончательно :-)

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

Не будет, если не выкручивать себе руки типами.

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

Да, верно. Я просто не понимаю реальную выгоду.

Как я сказал, я к Яндексу и его БД отношения никакого не имею, но таки в этой области работаю.

SciDB?

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

Не будет, если не выкручивать себе руки типами.

Ну так в них-то всё и дело. В типо-зависимой специализации. Тут кое-какая матчасть присутствует, так что просто найти популярный пример в интерентах не получится.

Да, верно. Я просто не понимаю реальную выгоду.

Выгода проявляется на потоке задач. Обработка данных — это очень динамичная и довольно высоко-конкурентная область. Тут тоже нужно уметь что-то типа «быстро прототипировать». С++ сложен, многословен, плохо предсказуем, но с задачами, в целом, справляется. Хотя стоны боли мозга при этом идут по всему Интеренту.

SciDB?

Неа, не пытайся. А то деанонимизируешь меня))

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

Команда квалифицированных специалистов, которая хорошо знает и Си и Си++ для решения поставленной задачи никогда не возьмёт Си++

Надо же, а мужики из GCC взяли и переехали с С на С++, во дураки.

Команда gcc перешла на C++, по причине того, что произошла обычная смена поколений программистов. Причина до смехоты проста, удельный вес тел пишущих на C++ перевалил удельный вес тел «старых пердунов». Погроммист привыкший к классам никогда не освоит структурный метод. Так и новое поколение «приобщённых к C++» не смогут писать код на классическом Си.

Для разработки компиляторов, идеален структурный метод представленный ныне такими языками как Си и Оберон. Ну а, что касается разработки ядра, то Линус по этому поводу сказал своё авторитетное мнение. Так, что те кто хвалит C++ пусть завалят свои «хлебальники» и сидят смирно по лавочкам.

Так для справки добавлю, что первый так называемый «GNU C Compiller» был написан на Паскале.

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

Есть где-нибудь в открытом доступе примеры этого?

Вообще есть, но я сейчас не хочу сейчас деанонимизироваться. Подожди немного.

//Психиатр

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

Скажи, пожалуйста

Не скажу, и не пожалуйста. Вам был задан конкретный вопрос: эти люди некомпетентны?

Потому что это нереально.

Можно и так сказать. Не суть важно. Метапрограммирование в C++ — это некая случайно получившаяся нашлепка сбоку. Применяется там, где уместно, но таких мест мало.

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

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

Для разработки компиляторов, идеален структурный метод представленный ныне такими языками как Си и Оберон.

Да-да-да. Расскажите это функциональщикам, приверженцам Haskell-я, OCaml-а, Scala и т.п. Они поржут.

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

Так для справки добавлю, что первый так называемый «GNU C Compiller» был написан на Паскале.

Не был. Это распространенный миф.

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

Ну вот из того, что первое на память пришло:

Introduction to the Intel® SIMD Data Layout Templates (Intel® SDLT)

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

//Психиатр

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

Грубо говоря, там, где у тебя на С будет одна база данных, на С++ потенциально будет 100500, под разные вариации основной задачи.

Чё? Раскрой тему. С минимальными примерами.

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

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

Какая ещё нахрен ракладка - это кастыль для лсных макак.

Т.е. макаке из point{x, y, z}[] - делают point{x[], y[], z[]}, чтобы амёбка могла это юзать как обычные поинты.

Зачем тут нужны кресты? Правильно - низачем. Зачем тут нужен интел? Правильно - низачем. Героическое решение проблемы вызванной терминальной лсностью адептов.

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

Не скажу, и не пожалуйста. Вам был задан конкретный вопрос: эти люди некомпетентны?

Не знаю.

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

А зачем тогда Си++ в тех задачах, с которыми с тем же успехом справился Си?

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

Не знаю.

Тогда как вы собираетесь доказывать свой тезис «Как никто и никогда достаточно квалифицированные не будет брать Си++.»? Или вам достаточно было всего лишь пёрднуть в лужу?

А зачем тогда Си++ в тех задачах, с которыми с тем же успехом справился Си?

Да вот не видно, чтобы с таким уж успехом. Старые проекты, которые дорого переписывать — да, живут на C. Старые библиотеки, которые используются из других языков — да, живут. Мелкие вставки для динамических ЯП (вроде Ruby или Erlang) — да, живут. Но вот так, чтобы большой проект начали делать полностью на C... Примеры у вас есть?

Если не брать нишу embedded-а и ядра Linux/FreeBSD, то разработка на C будет обходиться, минимум, в 1.5-2 раза дороже. Потому, что там, где на C++ достаточно написать:

rapidjson::Document document;
document.parse(input);
return document["connectionString"].GetString();
На C придется делать что-то вроде:
int result = -1;
json_document * doc = json_create_document();
if(!doc)
  goto cleanup;
result = json_parse_input(json_document, input);
if(result == -1)
  goto cleanup;
result = -1;
json_value * value = json_find_element(json_document, "connectionString");
if(!value)
  goto cleanup;
if(JSON_VALUE_TYPE_STRING != json_value->type)
  goto cleanup;
char * connstring = malloc(strlen(json_value->data) + 1);
if(!connstring)
  goto cleanup;
strcpy(connstring, json_value->data);
*output = connstring;
result = 0;

cleanup:
  if(json_document)
    json_destroy_document(json_document);

return result;

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

Тогда как вы собираетесь доказывать свой тезис «Как никто и никогда достаточно квалифицированные не будет брать Си++.»?

Доказывается очень просто :-) Либо программист разбирается с тем, как работает машина, как управлять её ресурсами - и для этого изучается Си, а программист становится квалифицированным, ибо он знает как реально работают его строки, массивы, как выделяется память, когда пишет на Си :-) Либо изучается Си++ с его 1300 страницами стандарта, тоннами книжек про то, как надо, а как не надо и т.д., на что уходит огромное количество времени :-) При этом, начать писать на Си++ после многолетней борьбы с ним можно, но квалификации и просветления это не приносит, а становится лишь понятным, как надо программировать на Си++ :-) Можно стать мастером Си++, потратив декаду своей жизни, и ничего не узнать про то, как реально всё работает :-) В Си так не получится :-)

Или вам достаточно было всего лишь пёрднуть в лужу?

Запомни, весь твой пафос - ничто :-)

Если не брать нишу embedded-а и ядра Linux/FreeBSD, то разработка на C будет обходиться, минимум, в 1.5-2 раза дороже. Потому, что там, где на C++ достаточно написать:
На C придется делать что-то вроде:

Весь представленный выше сахарный Си++-код вызывает на деле тонны кода как на Си++, так и на Си :-) А представленный код на Си можно завернуть в 1-2 кулл-функции и показывать коллегам, как всё коротко и ясно :-)

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

При этом, начать писать на Си++ после многолетней борьбы с ним можно, но квалификации и просветления это не приносит, а становится лишь понятным, как надо программировать на Си++ :-)

Можете показать на примерах, что именно в C++ требует многолетней борьбы?

А представленный код на Си можно завернуть в 1-2 кулл-функции и показывать коллегам, как всё коротко и ясно :-)

Можете показать, как будет выглядеть этот велосипед?

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

Можете показать на примерах, что именно в C++ требует многолетней борьбы?

Любой раздел в Си++ возьми, у новичка от него голова кругом пойдёт. А разделов очень много. А уж тонкостей и нюансов... А уж всяких приёмчиков, методик, паттернов... Чтобы это уложить с своей голове нужно много практики, а это борьба на долгие годы :-) Неспроста же большинство работодателей выкатывают требование для Си++-программистов - наличие опыта на Си++ от 5 лет.

Можете показать, как будет выглядеть этот велосипед?

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

return json_parse_input_get_string(input, "connectionString");

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

Любой раздел в Си++ возьми,

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

return json_parse_input_get_string(input, «connectionString»);

Прекрасно. Просто прекрасно. Для одного частного случая вы написали целую функцию, которая возвращает что?

Если вам потом потребуется сделать что-то похожее, но с целью извлечь целочисленный «defaultPort», вы скопипастите содержимое своей json_parse_input_get_string в json_parse_input_get_ushort?

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

Конкретнее, пожалуйста.

Любой раздел. Хоть стримы, хоть шаблоны с инстанцированием и специализацией, хоть абстрактные классы и классовые иерархии, хоть исключения, хоть пространства имён, хоть перегрузки, хоть STL... Море разделов. Мне много раз доводилось слышать, что основную книгу Страуструпа про Си++ новичкам не рекомендуют. Даже сам Страуструп выпустил другую толстенную книгу, кажется, «Программирование принципы и практика использования Си++», адресованную новичкам. Для разминки, так сказать. А ты дай новичку почитать TC++PL. Посмотри, сколько времени займёт его знакомство с Си++. Кстати, я вообще с неё и начинал :-)

Прекрасно. Просто прекрасно. Для одного частного случая вы написали целую функцию, которая возвращает что?

Да. Я тебе больше скажу. Любой проект или стартап - это частный случай. Генератора уникальных программных продуктов не бывает. Бывают генераторы бложиков или сайтов-визиток, или CMS, но генераторов ЛОРа не бывает. Жизненный цикл любого серьёзного продукта или системы измеряется десятками лет. При этом такой продукт или система является частным случаем. Поэтому в таком проекте мне не зазорно написать функцию, решающую конкретную задачу.

Если вам потом потребуется сделать что-то похожее, но с целью извлечь целочисленный «defaultPort», вы скопипастите содержимое своей json_parse_input_get_string в json_parse_input_get_ushort?

А то ты не знаешь, что существуют приёмы декомпозиции и выделения общего кода в отдельную функцию :-) Хватит прикидываться.

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

Вас 1 или 2 человека? :-)

Больше, но разве это как-то меняет тот факт, что ты занимаешься клоунадой (в лучшем случае, если ты не совсем идиот)?

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

Больше, но разве это как-то меняет тот факт, что ты занимаешься клоунадой (в лучшем случае, если ты не совсем идиот)?

Да, но так можно сказать и применительно к стартапу :-)

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

Да, но так можно сказать и применительно к стартапу :-)

Сказать можно вообще что угодно. Ты этим и занимаешься.

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

Сказать можно вообще что угодно. Ты этим и занимаешься.

Ну покажи стартап тогда :-) Давай его оценим :-)

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

Любой раздел.

Еще раз: что именно вам не понятно?

Мне вот приходилось учить людей C++ и как раз по книге Страуструпа TC++PL. Процесс нормальный, т.к. те, кто может программировать, делится на две категории: понимающие указатели и не понимающие указатели. Те, кто понимает указатели, осваивает C++ нормально. Те, что не понимаю, не могут и в обычный C.

Да.

Ок. Так что ваша функция возвращает? Указатель на динамически сформированную строку?

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

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

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

Ну покажи стартап тогда :-) Давай его оценим :-)

Выслал тебе на почту. Вместе со всем кодом и документацией.

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

Еще раз: что именно вам не понятно?

Мне понятно всё из вышеперечисленного. Только хардкорно метапрограммировать шаблоны на Си++ не приходилось. Но на это понимание было затрачено масса времени. Непомерное количество.

Ок. Так что ваша функция возвращает? Указатель на динамически сформированную строку?

Указатель на какой-нибудь struct String в куче.

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

Никакой копипасты не будет. Будет либо 3 функции, одна общая, две для конкретных случаев, либо макрос.

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

Выслал тебе на почту. Вместе со всем кодом и документацией.

Клоунада засчитана :-) Ч.т.д.

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

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

Лучше ссылочку на стартап, вся команда которого читает флеймы на ЛОРе :-)

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

Но на это понимание было затрачено масса времени. Непомерное количество.

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

При должном процессе обучения люди начинают нормально использовать современный C++ очень быстро. Всякие тонкости, конечно, требуют больше времени. А уж до уровня написать свою реализацию stl-ого контейнера вообще добираются не многие. Но это вообще не столько из-за сложности C++, сколько из-за сложности и противоречивости требований.

Указатель на какой-нибудь struct String в куче.

Вот и еще один источник багов. Старательно подготовленные грабли, на которые кто-нибудь наступит.

Никакой копипасты не будет. Будет либо 3 функции, одна общая, две для конкретных случаев, либо макрос.

Покажите.

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

Теперь учим, что такое сарказм

Лучше ссылочку на стартап, вся команда которого читает флеймы на ЛОРе :-)

А ты быстро учишься. Тебя бы в ПТУ или институт.

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

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

А вот в этом то всё и дело :-) Откуда столько комплексов? :-)

При должном процессе обучения люди начинают нормально использовать современный C++ очень быстро. Всякие тонкости, конечно, требуют больше времени. А уж до уровня написать свою реализацию stl-ого контейнера вообще добираются не многие. Но это вообще не столько из-за сложности C++, сколько из-за сложности и противоречивости требований.

Ну вот, и я об этом же :-) Очень немногие специалисты по Си++ обладают высокой квалификацией :-) Им лишь бы doc[«blabla»] можно было писать, остальное не важно :-)

Вот и еще один источник багов. Старательно подготовленные грабли, на которые кто-нибудь наступит.

Кто-нибудь из неквалифицированной шпаны? :-) Такие нам не нужны :-)

Покажите.

До свидания :-)

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

С таким примитивным юмором в клоуны не возьмут :-)

Без вопросов, в данном вопросе полностью полагаюсь на твой авторитет.

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

А вот в этом то всё и дело :-) Откуда столько комплексов? :-)

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

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

Очень немногие специалисты по Си++ обладают высокой квалификацией :-)

Вы настолько тупы, что не понимаете простой вещи: дабы безопасно использовать C++ не нужно иметь столь же высокую квалификацию, как для написания библиотек уровня STL или Boost-а.

До свидания :-)

Да куда ж вы денетесь? Как миленький прибежите в очередную тему с дебильными агитками отказаться от C++ в пользу C. Скорее всего прям в эту же тему и вернетесь.

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

Но на это понимание было затрачено масса времени. Непомерное количество.

Ну вот и причина всего этого негатива. Ожидания не сошлись с реальностью. Да, С++ — намного сложнее других языков в освоении. Потому что это инструмент экспертного уровня. У него высокий входной порог. Всем, кто не понимает, ради чего вся эта сложность, С++ будет как чемодан без ручки.

... либо макрос.

Привет, шаблончики :) Всегда хватало макросов? А если не хватает?

//Психиатр

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

С++ — намного сложнее других языков в освоении. Потому что это инструмент экспертного уровня. У него высокий входной порог.

Объясни пожалуйста тогда, почему академики любят Паскаль?

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

Объясни пожалуйста тогда, почему академики любят Паскаль?

Я, честно говоря, не знаю, что тут объяснять. Если я правильно знаю расклад, академики любят Haskell, а не Паскаль.

//Психиатр

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

Ну хорошо, а вот тут ты наверно хотел сказать ...

С++ — намного запутанее других языков.

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

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

О! Так ты опять здесь изливаешь мамкину лапшу, следовтельно ты все же малолетний нокрепший отрок! Божественное объебос)

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

Если я правильно знаю расклад, академики любят Haskell, а не Паскаль.

Это если академики от Computer Science. А если от математики, то Фортран, в лучшем случае.

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

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

Нет. Всю модель языка. Противоречивость и несогласованность — лишь неизбежное в реальном мире свойство сложных систем. Ты, наверное, думаешь, что можно создать идеальный язык уровня С++?

//Психиатр

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

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

Для смайлика, как следует из общения с ним в других темах, таким языком является Common Lisp. Только вот на Common Lisp зарабатывать себе на жизнь он не может.

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

Только вот на Common Lisp зарабатывать себе на жизнь он не может.

Потому-то язык и кажется идеальным, что человек на нем не пишет за деньги и с дедлайнами, а только для своего удовольствия. Классика жанра :)

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

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

Незнаю, думаю ненужно этого делать.

Но если бы Страуструпу сказали: "... на твоё усмотрение, выкинь всё лишнее из C++". Чтобы было тогда?

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

Чтобы было тогда?

Ну, я не знаю, что там реально лишнее. Там всё в системе работает. Все трудности идут от передачи объектов по значению. Появляются области видимости, деструкторы, RAII. Далее — мономорфные шаблоны, охватывающие value. В совокупности это дает много дополнительных степеней свободы, не все значения их пространства которых являются допустимыми. Это и составляет сложность языка.

Выкинем передачу объектов по значению, и можно выкинуть деструкторы, RAII, можно сделать шаблоны полиморфными. До кучи немного снизить их выразительность, ибо нефиг компилятор выводом загружать. С исключениями станет всё намного проще. Правда, придется прикрутить сборщик мусора, но сейчас все так живут. В итоге получим Java, только с прямым доступом к памяти. Зачем? Если Java уже есть.

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

Объясни пожалуйста тогда, почему академики любят Паскаль?

Смотря где.

Во франции любят окамль, в латинской америке пролог, в мите лисп, но идиотам приходится на пистоне преподавать.

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

Ну, я не знаю, что там реально лишнее.

Препроцессор, как минимум. Как максимум - сырые указатели в том виде, как они были взяты из С.

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

Как максимум - сырые указатели в том виде, как они были взяты из С.

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

Вообще, с моей точки зрения, С++ сейчас не самодостаточен. Прикладное программирование на нем относительно трудоемкое (особенно - в большом), ввиду отсутствия модульности и пакетных менеджеров. На С++ выносится поднимание тяжестей (GUI, обработка данных), тогда как динамично меняющаяся логика пишется на Java/Python/JavaScript/etc. В результате можно и быстро двигаться вперед на высококонкурентных рынках, и пользоваться высокой производительностью.

По моему опыту, Java очень так неплохо сопрягается с C++, в обе стороны.

//Психиатр

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

Прикладное программирование на нем относительно трудоемкое (особенно - в большом), ввиду отсутствия модульности и пакетных менеджеров.

Проблема не столько в модульности и пакетных менеджерах. Больше мешают другие вещи:

- разные подходы, используемые в разных библиотеках. Кто-то использует исключения, кто-то нет. У кого-то один подход к владению ресурсами, у кого-то другой. Причем все это не просто так появилось, а как следствие широкого использования языка в разных нишах;

- зоопарк компиляторов и систем сборки. Плюс зачастую разработчики просто не думают о кроссплатформенности того, что они делают: работает на одной системе с одним компилятором, да и ладно.

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

Больше мешают другие вещи:

Совершенно верно. Но даже если мы добьемся приведения подмножества языка для всего используемого кода к общему знаменателю, проблема модульности всё равно останется. Гугл всю свою кодовую базу С++ рекомпилирует целиком при изменениях. Все модули сразу. В Java легко можно получить сотню-две мегабайт подключенных библиотек. С JIT-ом всё просто, а вот AOT-система для пересборки такого проекта потребует билд-фермы.

//Психиатр

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

проблема модульности всё равно останется. Гугл всю свою кодовую базу С++ рекомпилирует целиком при изменениях. Все модули сразу.

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

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

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

А это значит, что просто огромный кусок имеющегося кода (даже на C++14 стандарте) не сможет быть преобразован в модули.

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

Я лично для себя проблему модульности решил через Java и NAR Maven Plugin. NAR упаковывает как исходный код C++, так и скомпилированные библиотеки в jar-подобные архивы (.nar), которые подключаются Maven-ом так же, как и обычные ресурсы. Очень даже юзабельно, если ты уже знаком с Maven и С++ используешь совместно с Java.

//Психиатр

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

Что я хочу подчеркнуть. Мы не можем получить одновременно полноценную инкрементную AOT-компиляцию, модульность и мономорфные, полные по Тьюрингу, шаблоны. Тут есть фундаментальное технологическое ограничение, накладываемое на применимость С++. Это относительно дорогой язык для программирования в большом, так как требуется полная рекомпиляция проектов, что не все могут себе позволить.

//Психиатр

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

Да, С++ — намного сложнее других языков в освоении. Потому что это инструмент экспертного уровня.

Академический уровень — Haskell — статейки, грантики.

Инженерный уровень — Common Lisp — не видно, не слышно, все спокойно работает.

Уровень ПТУ — C++ — гуру, евангелисты, философы, скандалы, истерики.

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

Common Lisp — не видно, не слышно, все спокойно работает.

Ага, все спокойно работают, используя С, Java, C# и С++. Раньше устраивали бурные лиспосрачи (при том работая с С и С++), а теперь уже смирились и просто иногда вяло пытаются напомнить о существовании такого языка.

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

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

Это ты про местных? Так это же Россия, тут культуры такой нет.

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

Поржали всем отделом в BMW

А кто сказал, что птушники не нужны?

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

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

Ну сказал гадость, что в итоге ты приобрёл? :-)

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

Чего? :-)

Вы настолько тупы, что не понимаете простой вещи: дабы безопасно использовать C++ не нужно иметь столь же высокую квалификацию, как для написания библиотек уровня STL или Boost-а.

Так за это и речь, что для того, чтобы писать на Си++ квалификации большой не требуется :-) Я это и говорил, но до тебя трудно доходит походу :-) Сам спросил про квалификацию неких Си++ программистов, которые делают известные продукты, и тут же сам признался, что «дабы безопасно использовать C++ не нужно иметь столь же высокую квалификацию» :-) Ну что же ты такой непоследовательный? :-)

Да куда ж вы денетесь? Как миленький прибежите в очередную тему с дебильными агитками отказаться от C++ в пользу C. Скорее всего прям в эту же тему и вернетесь.

Так я же сказал «до свидания» :-) Не проводить же тут целый день с тобой :-)

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

Напомню что было при прошлых попытках гнать на сишку и заявлять «нельзя в стримы»:

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>

typedef struct {
  uint32_t x, y;
} struct_t;

inline char * struct_to_string(char * str, struct_t s) {
  return str + sprintf(str, "{x: %u, y: %u}", s.x, s.y);
}

inline char * int_to_string(char * str, int i) {
  return str + sprintf(str, "%i", i);
}

inline char * string_to_string(char * str, char * s) {
  uint64_t len = strlen(s);
  return memcpy(str, s, len) + len;
}

#define to(type, x) ({__auto_type ret = x; *(type *)((void *) &ret);})

#define to_string(str, x) _Generic((x),\
  int : int_to_string(str, to(int, x)),\
  char * : string_to_string(str, to(char *, x)),\
  struct_t : struct_to_string(str, to(struct_t, x))\
)

#define FIRST(a, ...) a
#define SECOND(a, b, ...) b

#define EMPTY()

#define EVAL(...) EVAL32(__VA_ARGS__)
#define EVAL32(...) EVAL16(EVAL16(__VA_ARGS__))
#define EVAL16(...) EVAL8(EVAL8(__VA_ARGS__))
#define EVAL8(...) EVAL4(EVAL4(__VA_ARGS__))
#define EVAL4(...) EVAL2(EVAL2(__VA_ARGS__))
#define EVAL2(...) EVAL1(EVAL1(__VA_ARGS__))
#define EVAL1(...) __VA_ARGS__

#define DEFER1(m) m EMPTY()
#define DEFER2(m) m EMPTY EMPTY()()
#define DEFER3(m) m EMPTY EMPTY EMPTY()()()
#define DEFER4(m) m EMPTY EMPTY EMPTY EMPTY()()()()

#define IS_PROBE(...) SECOND(__VA_ARGS__, 0)
#define PROBE() ~, 1

#define CAT(a,b) a ## b

#define NOT(x) IS_PROBE(CAT(_NOT_, x))
#define _NOT_0 PROBE()

#define BOOL(x) NOT(NOT(x))

#define IF_ELSE(condition) _IF_ELSE(BOOL(condition))
#define _IF_ELSE(condition) CAT(_IF_, condition)

#define _IF_1(...) __VA_ARGS__ _IF_1_ELSE
#define _IF_0(...)             _IF_0_ELSE

#define _IF_1_ELSE(...)
#define _IF_0_ELSE(...) __VA_ARGS__

#define HAS_ARGS(...) BOOL(FIRST(_END_OF_ARGUMENTS_ __VA_ARGS__)())
#define _END_OF_ARGUMENTS_() 0

#define MAP(m, first, ...)           \
  m(first)                           \
  IF_ELSE(HAS_ARGS(__VA_ARGS__))(    \
    DEFER2(_MAP)()(m, __VA_ARGS__)   \
  )(                                 \
    /* Do nothing, just terminate */ \
  )
#define _MAP() MAP

#define op(x) str = to_string(str, x);

#define fprintf_proturbo(file, ...) ({\
  char * str = malloc(1000500), * s = str;\
  EVAL(MAP(op, __VA_ARGS__));\
  *str = 0;\
  int i = fprintf(file, "%s", s);\
  free(s);\
  i;\
})


int main(void) {
  struct_t st = {10, 23};
  fprintf_proturbo(stderr, 234235, " ", 523523, "\n", st, " ", 423523, "\n");
}

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

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

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

Надо нам, крестовикам, дружить - кто защитит нас в битве с лиспонечестью? Они так и победят нас, пока мы будем сраться друг с другом. А вообще надо понять - критика бывает обоснованная, критика не определяет что-то дерьмом - критика нужна для понимания слабых сторон, чтобы далее устранить их. Чего ты добьёшься, если и дальше будешь фанатично отрицать реальность. ^_^

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

Типичный царский код - бессмысленная акробатика, ни на что реальное не годная (и к тому же явно краденая). Ради использования «стрима» предлагается каждый раз определять макрос to_string. Верх удобства.

Надо нам, крестовикам, дружить

Ты не крестовик. А дружить с тобой - зашквар.

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

явно краденая

А вот такие гнилые предъявы надо бы пруфцами подкреплять. Хотя, чего это я? Где ты, а где пруфцы...

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

зашквар

Я слышал, сейчас это очень модное слово.

Сам не люблю блатной жаргон, но не смог подобрать близкое по значению слово из литературного русского :/

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

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

//Психиатр

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

и к тому же явно краденая

Действительно краденная.

Ради использования «стрима» предлагается каждый раз определять макрос to_string. Верх удобства.

Подожди, а где ты был когда мне предлагалось это: https://godbolt.org/g/nDbkL0. Я что-то тебя не видел, а тут вдруг вылез.

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

Да и в любом случае что там что тем требуется определить «оператор», а доопределить в to_string не особо чего-то стоит.

Ты не крестовик.

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

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

А дружить с тобой - зашквар.

Естественно - для тебя. Пока что у тебя, да и любого другого есть единственное оправдание «царь идиот». Есть факт - ты слабее, но как это оправдать? Ты давно для себя определился, что лезть ты не будешь, но при этом будешь делать вид, что царь ничего из себя не представляет, но не идёшь с ним ты на конфронтацию не потому, что он сильнее, а потому - что ты его за оппонента не считаешь.

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

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

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

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

Эти разоблачители комнатные. Стоит ли в нынче щас учить язык Си? (комментарий)

Даже не поленился - гуглим/пишем разворачивалку __VA_ARGS__ + кладём чутка дерьма + 3минуты времени и вуаля - готово.
гуглим

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

гуглим/пишем разворачивалку __VA_ARGS__ + кладём чутка дерьма + 3минуты времени и вуаля - готово.

кладём чутка дерьма

Царский рецепт!

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

Разоблачи эту пасту.

#define eval(args...) eval32(eval32(args))
#define eval32(args...) eval16(eval16(args))
#define eval16(args...) eval8(eval8(args))
#define eval8(args...) eval4(eval4(args))
#define eval4(args...) eval2(eval2(args))
#define eval2(args...) eval1(eval1(args))
#define eval1(args...) args

#define zero() 0
#define nas_zero_0() 1, 0
#define second(a, b, args...) b
#define concat(a, b) a ## b
#define invoke(f, args...) f(args)
#define has_args_helper(first, args...) invoke(second, concat(nas_zero_, first)(), 1)
#define has_args(args...) has_args_helper(zero args ())

#define __if1(f, b) f
#define __if0(a, f) f
#define __if(cond, a, b) invoke(concat(__if, cond), a, b)

#define empty(args...)
#define for(op, first, args...) op(first) _for empty() (args)(op, args)
#define _for(args...) __if(has_args(args), for, empty)
#define for_each(op, args...) eval(for(op, args))
AnonCxx
()
Ответ на: комментарий от anonymous

Ну подожди, это рецепт крестов - я сделал по рецепту крестов пасту на сишке - в чём проблема?

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

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

у пацанов закрадутся сомнения - ведь царь не собачка

«On the internet, nobody knows you're a dog» (ц) Но любой знает, что ты балабол: Книга по алгоритмам (комментарий) Книга по алгоритмам (комментарий)

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

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

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

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

Да, пожалуй тут возражать сложно. Поэтому не буду.

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

Балабол я в чём и почему.

superhackkiller1997> Я уже работаю над убийцей сишки, подожи полгодика и мы сравним мою реализацию и гццешную.

tailgunner> Опубликуй ссылку на нее здесь.

superhackkiller1997> Да, так и будет

Разговор был в 2013 году. Ссылку ты не опубликовал. Поэтому ты балабол.

Кстати, а как насчет блога - написал уже?

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

char * str = malloc(1000500)
Надо нам, крестовикам, дружить - кто защитит нас в битве с лиспонечестью? Они так и победят нас, пока мы будем сраться друг с другом.

Етить-колотить, да ты совсем больной.

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

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

Жрёшь что дают - жри и не чавкай. Зачем мне мне тут что-то кукарекаешь, если ничего в теме не понимаешь? О очередной раз показать свою осведомлённость на уровне сектанта с набор убогих догматов с первого курса? Ну смешно, смено, а что дальше?

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

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

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

Поэтому ты балабол.

Ну почему сразу балабол? Скорее, человек осознал бесперспективность этого занятия и не стал тратить время. Я тут вижу признаки здравого разума. А вот если бы он выкатил ссылочку, да на что-то законченное... вот тогда бы возникли вопросы :)

//Психиатр

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

Ну почему сразу балабол?

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

Скорее, человек осознал бесперспективность этого занятия и не стал тратить время.

Персонаж с «уровнем компетенции „Господь“» (ц), и ему написать компилятор непосильно? Как же так...

Я тут вижу признаки здравого разума.

Если ты почитал топик 3-летней давности, сравнил с сегодняшним, и всё еще видишь «признаки здравого разума»... I respectfully disagree.

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

superhackkiller1997> Да, так и будет

Я уже отвечал на этом сотни раз:

(01.06.2013 23:23:41)
Блокирован 02.06.2013 11:42:12

Ты защищал меня, когда меня банили? Нет - ну дак вот, ты сам же способствовал моему забану. Вот с superhackkiller1997 и спрашивай.

Кстати, а как насчет блога - написал уже?

Не беспокойся. Меня мало это интересует. Мне не нужна ни убийца сишки, ни бложик, ни что-либо ещё. Зачем я буду делать то, что мне надо ради тебя, который мне не интересен и который ведёт себя как ублюдок.

Когда я увижу, что вы достойны того, чтобы я что-то там делал, тратил своё время, что-то вам показывая/доказывая - тогда возможно.

Мне даже лорбатл лень пастить, ибо нахрена? Скучно, основная аудитория малоразвитых лсов - что мне это даст?

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

Мне вообще проще сидеть на жопе, чем что-то тут пастить.

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

Скорее, человек осознал бесперспективность этого занятия и не стал тратить время.

Человек тратит время на то, что ему нужно - доказывать что-то плебеями человеку не нужно.

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

А вот если бы он выкатил ссылочку, да на что-то законченное...

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

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

Я даже не поленился написал на лоре, спросил - мне поцаны помогли с моей идеей. Ну выкатил я реализация которая на порядки быстрее ботлнека в fasta - кто-то это понял, кто-то это оценил? Да никому это не надо.

В конечном итоге мне даже лень стало выкатывать саму fasta, ибо будет то же самое, а кукарекалки будут мне орать про 386-й.

Это глупо - это не имеет смысла. Нет той аудитории, которой было бы интересно то, что делаю я. Зачем мне что-то выкатывать?

вот тогда бы возникли вопросы :)

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

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

Да причём тут жестокий мир. Всё это надо адаптировать для вас, ибо если вам выкатишь что-то - вы просто не поймёте. Зачем мне что-то адаптировать для тебя, если у тебя нет желания посмотреть на мою сишку - у тебя есть только желание уличить меня.

Я уже сказал - уличай - мне насрать. Будет аудитория и у меня будет время - я буду что-то делать. Нет - мне насрать - пойду на завод заниматься другими делами.

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

I respectfully disagree.

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

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

Что я хочу подчеркнуть здесь. Есть куча народа просто невротиков. Социльно дезадаптированных. Получивших эмоциональную травму (реальная, между прочим, вещь). Кто хочет просто элементарного принятия, но не знает, как подойти. Среди нас, программистов, их тоже много. Психология на ЛОРе не в моде, но эти вещи нужно учитывать, когда имеем дело с человеческим материалом. Мы ведь разумные люди, так?

//Психиатр

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

Выкачу я сишку - он будет мне орать «ты же обещал убицу - почему на твоей сишке не пишут все поцаны - не сделал - наврал».

Понимаешь, чувак, какое тут дело. Программистское сообщество — оно сугубо меритократическое. Тебя принимают по тому коду, который ты написал, по тем проблемам, которые ты решил, и никак не иначе. Красивое лицо, накачанное тело, успех у женщин, умение затыкать собеседника убедительно говорить, даже «работа в Гугле» — не аргумент. Только код. Да, и обязательно найдутся такие, кто твой код обосрет. Кто будет считать, что внимание, которое ты к себе привлекаешь, совершенно незаслуженно. В этом смысле программистское сообщество в своей массе не сильно далеко ушло от обезьяньей стаи. Ты вот тоже тут зачем-то играешь в царя горы альфа-программиста. На ЛОРе, бгг)).

Проблема в чем? Проблема в том, что сейчас как-то выделиться заслугами стало очень трудно. Лет 20 назад опенсорса было очень мало и любой проект встречался на ура. А сейчас каждые сраные курсы по программированию кладут код на гитхаб. Люди открывают сложнейшие СУБД под пермиссивными лицензиями и знаешь что? Всем пофиг. Слишком много кода, слишком мало ресурсов внимания куда-то смотреть. Ну и, конечно, читать говнокод — то еще удовольствие. Поэтому стиль, читаемость — наше всё.

Но тебя это не должно останавливать. Если твой код обосрали — это сейчас нормально. Это, я бы сказал, вообще отлично. Куда хуже, если тебя просто проигнорируют. Так что не ссы — действуй. Наш код — это всё, что после нас останется.

//Психиатр

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

Тебя принимают по тому коду, который ты написал, по тем проблемам, которые ты решил, и никак не иначе.

Я только и делаю что пишу код и решаю проблемы. Проблема не в этом, это враньё.

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

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

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

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

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

Все должны верить, либо все кто против - будут дискредитированы.

Ты вот тоже тут зачем-то играешь в царя горы альфа-программиста. На ЛОРе, бгг)).

Нет. Это полезно мне - это мотивирует меня изучать что-то новое. Мне не нужно быть ни альфабабуином, ни царём горы - мне наоборот хочется быть более слабым.

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

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

Будут кресты. Будет что-то понятное пацанам. Меня не мотивирует «царь горы», «победы» и прочее - меня мотивирует делать что-то ради пацанов.

Поэтому стиль, читаемость — наше всё.

Мой код эталон стиля и читаемости. Естественно мой стиль предполагает под читателем осилятора - остальное меня не волнует.

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

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

Но тебя это не должно останавливать. Если твой код обосрали — это сейчас нормально.

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

Пацан верит в миф «сишка не может - кресты могут всё» - естественно, когда он видит мой код - ему нужно оправдать своё балабольство. Что ему делать? Правильно - кукарекать что-то в адрес моего кода(а этого он не может - кукарекает в основном он в адрес меня).

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

«днище не может прочитать», «пацаны так не пишут», «ко-ко-ко маллок на 100500» и прочее. Т.е. он пытается противопоставить мне авторитет партии.

А далее всё просто. Он будет взывать «покажи код», но даже если ты его покажешь - он точно так же будет взывать к партии. Соответствует ли мой код её линии - нет. Он не являтся кодом, а является дерьмом.

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

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

Ах да.

Наш код — это всё, что после нас останется.

Я не ограничен кодом. Моё умение и талант в понимании. Я не какой-то там талантливый ваятель, балабол или ещё кто - я в этом деле посредственен. У меня нет никаких способностей.

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

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

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

Это «понимают» все, кто срался со мною изначально. Они видели, что моё понимание все выше и выше, а причина в этом - они. Они пытались показать своё превосходство, но вышло так, что накормили им они меня.

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

Это чуть более усложненная тактика всех боловов - сводить тему к тому, чтобы оппонент оправдывался.

Я не знаю нахрена они это делают. Зачем они так боятся конкуренции со стороны идиота. Лучше бы занимались реальными вещами и росли в своём понимании, чем боролись против остальных не давая им это понимание получить.

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

Типичная защита своей жопы от новой крови.

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

Тылгунька опять решил эпично слиться? И не надоело?

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

Слишком как-то слабо. Ты своими пастами лишь питаешь в нём надежду - ведь он верит в то же самое. Это не имеет смысла.

Мне вот интересно как из этого определения может вообще получится я.

Психология

Прям воспоминания навевает. Как в детстве убогая система меня пыталась победить. Это было так мило. А ведь были такие срачи как на лоре между мною и винтиками.

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

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

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

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

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

Каким образом идиот может тебя победить? Я всю жизнь пытался найти ответ на этот вопрос - как слабые мира сего для себя этот факт объясняют.

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

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

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

В конечном итоге жопы винтиков трещали в жалких попытках что-то против меня предпринять.

В конечном итоге я всю жизнь серьёзное не говорил, кроме попыток в детстве. Минимум 10лет вообще.

Но что-то жена и лор меня заставили - бывает. Смогу ли я научится?

Печально жить в мире. Я страдаю хернёй вместо того, чтобы что-то делать, ибо никого нет. Жил я в среде, которая не способствовала моему развитию. Мечты-мечты жить в мире, где можно что-то делать, а не сраться с кем-то.

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

Кстати, Психиатр, а тебе падаван не нужен? Я буду служить.

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

Почему тебя так заботит чужое мнение? Бери да делай что душе угодно: убийцу сишки, убийцу fftw и т.п.

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

Ну а зачем мне нужно это? Мне это не нужно, понимаешь. Ну сделаю я убицу сишки - что дальше? Зачем это нужно?

Вот было бы кому-то нужно - другое дело, а так зачем? Я делаю то, что интересно мне. Мне не интересно кого-то побеждать, что-то там кому-то доказывать - мне интересно помогать пацанам.

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

В этом моя проблема - мне ничего не нужно, я ничего не хочу. Я ищу мотивацию на стороне - может кому-то это нужно.

Я искал задачи типа fftw как тесты для своей куллсишки, fft не особо для этого подходит, а в fftw как оказалось реализованы те идеи для которых я и искал задачи типа fftw. Точно так же, у меня нет времени разбираться в коде fftw для его копирования.

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

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

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

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

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

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

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

Тебя сишка на 100% удовлетворяет? Нет? Не хватает чего-то? Вот и делай *для себя*.

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

«Пациент» тебя реально порвал, как Тузик грелку, причем несколько раз. И вот эта самая способность порвать тебя и тебе подобных в любом месте и по любому поводу и дает ему моральное право так с тобой разговаривать. Кто сильнее - тот и прав. Не знал?

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

Вот с superhackkiller1997 и спрашивай.

https://gist.github.com/superhackkiller1997/c479a4216b3ab15171db
Что с такого вообще можно спрашивать?

Мне вообще проще сидеть на жопе, чем что-то тут пастить.

http://www.kprf-don.ru/file/news/2012/mart/1_1439.jpg

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

Эм... Мне тоже лень читать, но судя по первым 30 строкам на экране, приходит какая-то строка типа '-554-44'/'5545-55'/'55545'/whatever и свитчами по каждому символу решается какой идентификатор отдать. Что-то типа...

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

Эм... Мне тоже лень читать, но судя по первым 30 строкам на экране, приходит какая-то строка типа '-554-44'/'5545-55'/'55545'/whatever и свитчами по каждому символу решается какой идентификатор отдать. Что-то типа...

А ты, наверное, сделал бы на регулярках :-) Правда ведь? :-)

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

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

Позвольте полюбопытствовать, а что означает «порвать» в контексте LOR-овских флеймов?

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

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

Тылгуннер прав.

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

Ну да, заполнил бы массив key-value, где key может быть примитивным регом (а-ля substr(*)). Массив засунул бы куда удобнее (но скорее в РАМУ, ибо строк там всего 31к+, значит и список будет не такой большой) и в нем бы уже искал по частям, причем размер части (N) напрямую зависел бы от входящего запроса.

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

Ну да, заполнил бы массив key-value, где key может быть примитивным регом (а-ля substr(*)). Массив засунул бы куда удобнее (но скорее в РАМУ, ибо строк там всего 31к+, значит и список будет не такой большой) и в нем бы уже искал по частям, причем размер части (N) напрямую зависел бы от входящего запроса.

Ясно :-) Ясно и то, что ссылка, представленная тобой, ведёт к выхлопу какого-то генератора кода :-) Неужели кто-то думает, что это написано вручную? :-)

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

Неужели кто-то думает, что это написано вручную? :-)

Нет, все же думают только о производительности, ибо Царь. На способ генерации кода мне как-то лево :)

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

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

Так и не надо убирать. Вон даже M$ зашевелилась:

http://research.microsoft.com/en-us/projects/checkedc/default.aspx

Логично и в С++ ввести новые типы указателей плюс позаимствовать наработки Rust.

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

Вроде всякое такое уже было в cyclone. Очень много чего прикольного. Интересно, почему он не взлетел? Не время?

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

Вроде всякое такое уже было в cyclone. Очень много чего прикольного. Интересно, почему он не взлетел? Не время?

Тут стоит спросить tailgunner'a, он вроде его тыкал. Я только сейчас бегло про него прочитал, из замеченного - не стоило добавлять многие новые плюшки, «много чего прикольного» тут скорее минус для тех, кто искал просто безопасный С. Во-вторых - проверки в рантайме, да это уже и обычные сишные компиляторы умеют.

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

Это «шевеление» - чисто для Си-легаси. Но даже для него вряд ли взлетит.

Ес-но, речь шла про то, что эта тема таки подымается.

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

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

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

Какой именно? Если Царьковский, то быстрее в плане чего? Реализации или выполнения? Если выполнения, то тут все не так однозначно.

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

Только Постгрес. Который всё никак не может выбраться из аутсайдеров. Из того, что имеет какой-то шанс называться базой данных (а не хранилищем), всё делается на С++. Или на Java/С#, что странно, но факт.
В базах данных, которые современные, а не архаика для вращающихся дисков a-la PostgreSQL, очень важно обобщенное программирование. Язык Си тут можно впихнуть, но собственных костылей абстракций команда наделает эпических, и будет их потом тянуть как чемодан без ручки. Вручную. Как когда-то бурлаки на Волге.
//Психиатр

Жизнь показывает другое: в «Мэйле.ру», например, свою базу данных «Тарантул», работающую в оперативной памяти, пишут на Си. И ведущий разработчик «Тарантула» объяснил почему.
Основная проблема «Крестов», что их придумали теоретики, насаждающие ложную мысль о том, что в исходном коде важна красота и малое число строк, а не сам путь прохождения и преобразования данных, о чём толкуют практики в лице игродела Майка Эктона.
Надежда на исправление положения у «крестоносцев» появилась, потому как ведущий разработчик «Крестов» устроился, наконец, на нормальную работу к практикам в банк «Морган Стенли».
Мне любопытно другое: кто из ведущих разработчиков «Яндекса» так одержим «Крестами»?

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

Основная проблема «Крестов», что их придумали теоретики, насаждающие ложную мысль о том, что в исходном коде важна красота и малое число строк

Кто ж тогда придумывал Haskell с OCaml-ом? Или Scala?

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

Кто ж тогда придумывал Haskell с OCaml-ом? Или Scala?

Скажу о языке Си - его придумали в телефонной конторе «Эй-Ти-энд-Ти».

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

Скажу о языке Си - его придумали в телефонной конторе «Эй-Ти-энд-Ти».

А вы знаете, где работал Страуструп, когда создавал C++?

Ну и да, почему не ответили на вопрос о Haskell/OCaml/Scala?

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

Строго говоря, его придумали в исследовательском подразделении AT&T. Bell Labs интересное заведение с богатой историей открытий и изобретений.

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

но кому опять же это надо?

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

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

Всё, что было полезного в Cyclone, вошло в Rust.

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

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

Надежда на исправление положения у «крестоносцев» появилась, потому как ведущий разработчик «Крестов» устроился, наконец, на нормальную работу

Какой бред.

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

Учи конечные автоматы.

Проблема с пониманием таких примитивных вещей, как этот пример, - серьёзный «звоночек».

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

Пример хреновый, если переписать на goto, будет в 100 раз короче.

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

И, да. Кто насрал тебе на кукундер и потом сфотографировал? Мерзкий тяпок...

anonymous
()
14 августа 2017 г.
17 сентября 2017 г.
Ответ на: комментарий от Enthusiast

Чувак не понял C++ memory ordering и посчитал, что это ненужно. Ну чо, правильно. Настоящие паца^H^Hпрофи именно так и делают.

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

И ведущий разработчик «Тарантула» объяснил почему.

И вот эти 3 минуты невнятного бэканья и мэканья теперь называются «объяснил почему»? Okay.jpg

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

Мне любопытно другое: кто из ведущих разработчиков «Яндекса» так одержим «Крестами»?

практически все разработчики яндекса С++ программеры,https://www.youtube.com/channel/UCNuItlOR3qXZBtMRwb4GoBg/videos больше половины видео про С++ разработку в яндексе, несколько разработчиков присутствуют в группе по формированию предложений по улучшению С++ и так же бывают в комитете С++

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

Зашёл - увидел опять экспертов, ну ничего.

Чувак не понял C++ memory ordering и посчитал, что это ненужно.

Не верно. Дело в том, что понявшие «C++ memory ordering» - зовут мамку и пишут хелворды за партой.

Давай я тебе объясню в чём проблема. Есть реальный мир, есть свойства реального мира. Они прозрачны и ясны для людей в теме, ведь они, как и весь реальный мир, целиком и полностью логичны.

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

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

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

Давай ещё проще. Тебе вместо понимания, вместо фундаментальных знаний дают некие правила, в рамках которых тебя обязывают существовать. Это привала не отражают реальности, эти правила не заменяют понимание. Это такой кастыль для не осиливших.

Из понимания выводятся правила, выводятся свойства. Из обобщённых правил не выводится ничего.

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

И вот эти 3 минуты невнятного бэканья и мэканья теперь называются «объяснил почему»? Okay.jpg

Я смотрю на то, что человек создал, а не как рассказал об этом. Докладчик создал и развивает работоспособную базу данных, выбрав языки Си и Луа. А что кроме книжек создал Страуструп?

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

Я смотрю на то, что человек создал, а не как рассказал об этом.

Это прекрасно. Просто прекрасно.

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

Объяснение-то где?

А что кроме книжек создал Страуструп?

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

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

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

А что кроме книжек создал Страуструп?

Модель памяти для C++ разрабатывал, кстати, не Страуструп, который в этой области может быть даже не силён. Это делали такие люди, как https://isocpp.org/wiki/faq/wg21#hans-boehm, https://isocpp.org/wiki/faq/wg21#clark-nelson, https://isocpp.org/wiki/faq/wg21#herb-sutter, https://isocpp.org/wiki/faq/wg21#michael-wong

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