LINUX.ORG.RU

Продуктивность разработки на C++.

 , ,


6

12

Уважаемые программисты!

Предлагаю порассуждать о продуктивности разработки на C++ по сравнению с так называемыми скриптовыми языками. Вот, принято считать, что языки на вроде Python позволяют работать программисту более продуктивно по сравнению с C++. И что, дескать, на C++ надо писать только узкие места и всё такое.

Мне же хочется четкого понимания. Может быть это миф? А может быть это просто инерция, потому что так вот принято считать и все тут. Вот сегодня в C++ уже не надо думать об освобождении памяти, так как есть умные указатели. Сегодня есть уже более-менее нормальные IDE для C++. Так? Так.

Так что же тогда мешает писать на C++ столь же продуктивно, как на том же Python? Какие будут рассуждения? Может быть есть какие-то реальные обоснования на этот счёт, кроме как «в конторе Y так делают, значит смысл есть, они умные, им виднее». А может быть есть какие-то рецепты по продуктивности работы на C++?

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

Только Java обогнала C++. Такие дела.

Проще работать на C++ с руководством по стилю.

Ага, не выходя за пределы std, ака без внешних либ.

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

Настолько нетривиальное, что только на C++ возможно и никто ещё такое не реализовал в виде готовой либы?

И бойлерплейта меньше.

4.2

отсутствие половины возможностей C++ выстрелить себе в ногу

fixed

PS: тема вообще про продуктивность, которой у C++ нет.

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

Rust — это обрезанный С++ с возможностью местами писать безопасный код. Эдакие умные указатели на стероидах.

Какое из этих трех утверждений описывает плохое качество?

«Обрезанный C++».

Я пишу на Си++ по работе и очень хорошо понимаю слова Страуструпа «inside C++, there is a much smaller cleaner language struggling to get out». «Необрезанный C++» просто не нужен.

И это я еще дал тебе фору - не стал спорить, что Rust - якобы обрезанный C++. Твое утверждение очевидно ложно, потому что в Rust есть модули и более-менее приличный сопроцессор.

Предыдущий Rust назывался Java.

Вижу, ты уже принял. Ну, приятного трипа.

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

А уже писал, и не раз, что единственная причина, почему я пишу на C++ - это Qt.

Ты не пишешь на С++.

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

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

А вот и свидетели истинной ипостаси С++ пожаловали.

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

Только Java обогнала C++. Такие дела.

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

PS: тема вообще про продуктивность, которой у C++ нет.

Тихо, а то еще лисперов скастуешь.

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

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

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

Это вера в то, что твоё неосиляторство - это следствие не того, что ты слаб, а просто С/С++ говно. Ты ведь не такой как все. А раст это именно анти С/С++. Пусть он и обосрался тыщу раз, но кого это волнует.

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

Но это и неважно. Особенно после того как я увидел то, что они пишут в оправдания.

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

И похожие недостатки: многословность, отсутствие половины возможностей C++.

Последнее скорее преимущество, как минимум на то время, это сейчас джаверы заматерели и посматривают на всякие скалы, котлины и пр. И, точно так же, и Rust мог бы совершить мальнькую революцию и потеснить С, но проскочил эту возможность. Ну и Rust вышел слегка маргинальным, и (специально для tailgunner'а) нельзя не отметить, что его автор сейчас работает над более простым в использовании swift.

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

Я в чем-то неправ? Я рад, что ты нашел веру, что тебе это нравиться и всё такое. Но почему вы со своей верой везде лезете? Ведь у тебя нет ни аргументации, ни способностей, нихрена нет. Ты можешь ретранслировать какую-то ахинею, которую все уже( и даже я) тысячу раз слышал от других адептов, да что там адептов - вы все 1в1 повторяете рекламные агитки.

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

Это прям какая-то реальная болезнь. Раст настолько вбил комьюнити в палеолит, настолько эти сектанты наглые и охреневшие. Такого раньше не было. Хотя может это к лучшему. Чем больше амёбок перестанет приписывать себя к С/С++ - тем лучше. Конечно, через пару лет они канут в забвение вместе со своей поделкой, но что поделать. Такова судьба всех идиотов.

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

(специально для tailgunner'а) нельзя не отметить, что его автор сейчас работает над более простым в использовании swift

Я знаю. Я так же знаю, что Грейдон отошел от дел еще до Rust 1.0. А еще я знаю, что в Swift постепенно проникают идеи Rust.

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

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

В реальности нет никакой возможности потеснить C с подобным подходом. Раст - это просто убогий хацкель адаптированный под паскалик. А потом пошла явная жопа.

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

Пришлось выпиливать ГЦ, заниматься все этой ансейв-хернёй.

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

Раст «развивается» так же. Нужно было срочно тащить туда всё дерьмо, чтобы показывать фичи. Это типичный путь «развития» любого дерьма, которое хочет отмыть инвестиции. Естественно никто не верит в то, что это дерьмо что-то сможет, но раз бабки идут - их надо отмывать.

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

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

постепенно проникают идеи Rust.

Например ГЦ, да? Или крестовый синтаксис, да?

Можно мне узнать, что это за такие «идеи rust»?

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

Или крестовый синтаксис, да?

И у Rust, и у Swift, конечно, есть заимствования из C/C++, но таки Swift больше похож на Rust чем на С++.

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

но таки Swift больше похож на Rust чем на С++.

Ну дак покажи это. Что вообще такое «похож на rust»? В чём это «похож» заключается? Т.е. что от раста есть в расте? Ничего?

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

Раст из той же оперы. Ничего нового.

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

Я не имел в виду «полной заменой». Они позволяют заменять сишные макросы в большинстве случаев (аналог STL на препроцессоре тоже возможен, но на шаблонах им пользоваться гораздо легче).

Чушь несёшь. Аналог STL на макросах сделать нельзя из-за чего и появились темплейты. Если взять какие-нибудь другие макросы, например из nasm или внешние, то может быть что-то бы вышло, через задницу. Макросы (генератор текста) и шаблоны (обобщённый «утиный» кусок кода) это не одно и тоже и одно не заменяет другого.

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

Аналог STL на макросах сделать нельзя

Так сделан. http://attractivechaos.github.io/klib/

Работает чуть быстрее, чем Boost и значительно быстрее, чем STL.

Всё неудобство сводится к явному инстанцированию. То есть если на C++ можно сразу писать map<int, int> m = ..., то на Си надо перед кодом написать KHASH_MAP_INIT_INT(map_int_int, int), а уже потом в коде khash_t(map_int_int) *m = ...

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

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

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

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

Так сделан

более того, до того, как появился STL, было множество аналогичных библиотек. некоторые живы и поныне.

а я как-то ещё во времена программирования на маздае, нашла в STL баг, который мелкософт не мог пофиксить лет десять. причём они о нём знали и знали, что это баг жёсткий и весьма неприятный (сегфолт), но ничего не предпринимали, потому что были заняты пропихиванием сишарпа. когда очухались и пофиксили, мне пришло письмо от мелкософта с уведомлением, что баг, который я нашла, исправили. я удивилась, потому что уже много лет не юзала маздай :)

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

PS: тема вообще про продуктивность, которой у C++ нет.

У меня есть два вопроса. Насколько Rust по твоим оценкам продуктивнее C++? Чем обусловлена такая разница?

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

Ну так десяток строк мусора мне не нужны.

Это факт, но это придирка. Опытный C++-ник (например, я) эти «строки мусора» не читает и не испытывает проблем.

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

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

Нееее. Было бы всё так просто. Тут дело не столько в самом языке, а в его адептах.

Всё это работает очень просто. Раст порождает и способствует деградации очень большому числу людей. Он даём им веру, веру в то, что деградация - это нормально, веру в то, что их неосиляторство - это лишь следствие того, что у крестов/си плохой дизайн и прочее.

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

И при этом таких закомплексованных большинство. Это тренд. Новая волна деградации. Да, если ты не из числа, если ещё кто-то не из числа, то этому мало что даёт. В конечном итоге ты останешься «одна» в мире полного неадеквата. Да, они ничего не смогу, но уже поздно будет что-то менять. Людям проще верить в сказки.

Пример я приводил выше. https://habrahabr.ru/post/340176/ - людям впаривают явную ахинею, пруфцуя явными фейками и манипуляциями.

119 плюсов и ни один не догадался пойти и проверить. Они просто верят. Верят в ахинею, верят в красивые картиночки. Я уже не знаю что это - это клуб домохозяек, либо «иллитная аудитория»(тм).

Особенно меня удивляют их оправдания. Они не понимают - какого уровня херню они несут. «в хроме на тот момент было 15фпс(во-первых враньё. Там было 50фпс)». И вот что ты им не объясняй - они не поймут в чём фейл.

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

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

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

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

Люди теряют связь с реальностью. Сознание людей вгоняют в палеолит. И что самое печальное - они среди нас, они большинство в этой сфере. И в их «сознании» ломают последнее, что их сдерживало.

Всегда С/С++ было вершиной, никто не мог спорить. Не мог жабист с хоть каким остатком мозга прийти и начать рассказывать как правильно писать броузеры, ОС и прочее. И эта новая наркота даём им эту возможность. Вчера ты мыл полы где-то, а сейчас ты уже ваяешь на расте. И раз раст > C/С++, то ты больше С/С++-ваятелей.

И что дальше? А дальше всё просто. То, куда раньше они не лезли - они полезли. И сейчас обговнякивают всё там.

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

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

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

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

Я уже там приводил примеры. Маркетинг раста рассчитан совсем на дошколят. Наш движок самый быстрый(по сравнение с нашим прошлым говнодвижком, да и то это враньё, ибо он не работает). Ничего не напоминает?

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

И если в Rust допустить похожую ошибку:

6 |     let path = Path::new(123);
  |                          ^^^ expected reference, found integral variable
  |
  = note: expected type `&_`
             found type `{integer}`
  = help: try with `&123`

то тебе выдадут не «простыню», а абсолютно бесполезный мусор.

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

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

Мда, а аддон-то для подсвечивания юзернеймов новорегистрантов (и потенциальных вернувшихся троллей одновременно), который я пишу для RazrFalcon'а, пригождается. Увидел портянку, промотал, увидел красненькое — можно не читать. Надо ещё рамку сообщения помечать, а то некоторые целый экран текста пишут.

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

Ещё раз, khash

Еще раз - это не STL. Даже не близко.

работает быстрее любой C++'ной реализации хеша.

Где-то быстрее, где-то медленнее.

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

Суть в том, что весь unsafe уже написали и проверили. Осталось только его использовать, а не ходить по граблям, как в С/С++.

Любопытное утверждение. На чём основано? Просто опыт, или были какие-то заявления от разрабов?

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

Суть в том, что весь unsafe уже написали и проверили. Осталось только его использовать, а не ходить по граблям, как в С/С++.

Помоги бедолагам, разрабатывающим Servo. Там больше 100 мест с unsafe. Типа такого

pub unsafe fn drop_style_and_layout_data(data: OpaqueStyleAndLayoutData) {
    let ptr = data.ptr.get() as *mut StyleData;
    let non_opaque: *mut StyleAndLayoutData = ptr as *mut _;
    let _ = Box::from_raw(non_opaque);
}
monk ★★★★★
()
Ответ на: комментарий от monk

Помоги бедолагам, разрабатывающим Servo. Там больше 100 мест с unsafe. Типа такого

На первый взгляд, это всё биндинги ка внешним тулкитам. Убеди, например, Яббл, переписать свои Core* на Rust - часть unsafe исчезнет.

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

Это масштабная модель, стояла раньше у ЭМЗ им Мясищева. Хз, стоит ли сейчас, ибо многое изменилось за последние три года (появились аэропорт и ангар иркута).

В интернетах все пишут, что это модель для трубы. Единственная труба, куда бы эта модель поместилась — это Т-101. А найти какие-либо свидетельства об испытаниях этой модели в Т-101 мне не удалось. Так что вполне возможно, что она так и не была дута, если она вообще для испытаний в трубе была сделана.

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

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

Убеди, например, Яббл, переписать свои Core* на Rust - часть unsafe исчезнет.

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

        linux-vdso.so.1 (0x00007ffe525d3000)
        libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/7.2.0/libstdc++.so.6 (0x00007f282625b000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f2826044000)
        libdbus-1.so.3 => /usr/lib64/libdbus-1.so.3 (0x00007f2825dfd000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f2825bf9000)
        libssl.so.1.0.0 => /usr/lib64/libssl.so.1.0.0 (0x00007f282598b000)
        libcrypto.so.1.0.0 => /usr/lib64/libcrypto.so.1.0.0 (0x00007f2825551000)
        libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007f2825328000)
        libGL.so.1 => /usr/lib64/libGL.so.1 (0x00007f28250b5000)
        libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007f2824e8a000)
        libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f2824b4c000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f2824944000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f2824724000)
        libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/7.2.0/libgcc_s.so.1 (0x00007f282450d000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f282415e000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f282665f000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f2823e56000)
        libsystemd.so.0 => /lib64/libsystemd.so.0 (0x00007f2823bc7000)
        libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007f28239c3000)
        libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00007f28237bd000)
        libxcb-dri3.so.0 => /usr/lib64/libxcb-dri3.so.0 (0x00007f28235ba000)
        libxcb-present.so.0 => /usr/lib64/libxcb-present.so.0 (0x00007f28233b7000)
        libxcb-sync.so.1 => /usr/lib64/libxcb-sync.so.1 (0x00007f28231b0000)
        libxshmfence.so.1 => /usr/lib64/libxshmfence.so.1 (0x00007f2822fae000)
        libglapi.so.0 => /usr/lib64/libglapi.so.0 (0x00007f2822d7d000)
        libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007f2822b6b000)
        libXdamage.so.1 => /usr/lib64/libXdamage.so.1 (0x00007f2822968000)
        libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x00007f2822762000)
        libX11-xcb.so.1 => /usr/lib64/libX11-xcb.so.1 (0x00007f2822560000)
        libxcb-glx.so.0 => /usr/lib64/libxcb-glx.so.0 (0x00007f2822344000)
        libxcb-dri2.so.0 => /usr/lib64/libxcb-dri2.so.0 (0x00007f282213f000)
        libXxf86vm.so.1 => /usr/lib64/libXxf86vm.so.1 (0x00007f2821f39000)
        libdrm.so.2 => /usr/lib64/libdrm.so.2 (0x00007f2821d27000)
        libgcrypt.so.20 => /usr/lib64/libgcrypt.so.20 (0x00007f2821a09000)
        liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f28217e3000)
        liblz4.so.1 => /usr/lib64/liblz4.so.1 (0x00007f28215ce000)
        libcap.so.2 => /lib64/libcap.so.2 (0x00007f28213c8000)
        libbsd.so.0 => /usr/lib64/libbsd.so.0 (0x00007f28211b3000)
        libgpg-error.so.0 => /usr/lib64/libgpg-error.so.0 (0x00007f2820f9e000)

Что из этого является «яббл», либо «внешним тулкитом»? gl, дбас, системд, линуксячье? Это капля в море. Остальное когда перепишешь?

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

часть unsafe исчезнет.

В мечтах. Они все просто переместятся на уровень ниже и это ничего не поменяет. Хотя пыль в глаза пускать можно, да.

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

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

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

Она деревянная (или фанерная, ХЗ). Так же и klib - фанерная модель STL.

Да, но к карго-культу эта модель не имеет отношения (возможно, в отличии от klib).

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

Надо ещё рамку сообщения помечать, а то некоторые целый экран текста пишут.

А царь то уже научился разбивать портянки ахинеи на абзацы! Покорми его что ли за это.

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

Я тебе даже больше скажу — он и пишет грамотно, в отличие, к примеру, от тебя, но это не суть главное. Корма ему хватает и без того :-)

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

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

Ну это ты зря, даже на ЛОРе наверняка можно откопать как явисты доказывают что ява бысрее c/с++, что это правильный ЯП для разработки на микроконтроллерах и DE тоже нужно делать на яве (помним jDE в Solaris?). Сейчас всего этого почти нет потому что ява с тех пор многократно обделалась на всех поприщах, но до этого у хомячков были точно такие же надежды.

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

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

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

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

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

Ну это ты зря, даже на ЛОРе наверняка можно откопать как явисты доказывают что ява бысрее c/с++

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

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

Точно так же линковали всякие там java card. И ты точно так же им не докажешь, что это не та жава. Что жаву можно заменить хоть на пхп. Это ничего не изменит, ведь что от жавы, что от пхп - там останется только название.

Такие же упоротые мне доказывали «жс так же быстр как сишка», линкуя asmjs не понимая вообще что это такое. У них мышление на уровне ключевых слов. Они в чём-то увидели знакомое слово - ба, да это то же самое. Там же js. Там же java.

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

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

Раньше у них не было всех этих знамений с сервами и иже с ним. «серво самый быстрый/серво быстрый» - ты их спрашиваешь - где? Там. - Ну там же ничего не работает? - Да насрать, оно и не должно работать.

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

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

Хотя казалось бы. У сишки/крестов множество недостатков и дыр. Буквально 5-7лет назад кресты были тотальным убожеством. Кресты требуют полного редизайна. Их база, их основа - их фатальный недостаток.

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

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

Эта схема работает очень просто. Лису пишут ламерки, полная жопа. Нужно срочно что-то менять. Статистика в жопе, скоро сольём ослу, да и уже сливаем. Что делать?

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

И тут появляется нечто, что пощупать нельзя. Нам нужно придумать некий критерий, который нельзя будет пощупать, который не будет присутствовать в user experience, но о котором все будут знать.

Такая золотая кобыла есть - безопасность. Объективно её очень сложно измерить, вообще никто не знает - что это такое. Поэтому ты всегда можешь написать «мои трусы самые безопасные». И если ты в подкорку потребителя вбил то, что «безопасно > всего остального» - ты победитель.

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

И всё что тебе нужно - попугать домохозяйку всякими «опасностями» и она твоя, её бабки - твои. Всё просто.

И мозилла с растом пытается оседлать эту кобылу. Совместно с другой более примитивной кобылой - простым враньём.

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

А далее это всё очень просто доить. Это такое раздолье для оправданий. Почему твой проект не взлетел? Слишком «инновационен». Почему ты просрал уже столько времени и бабла? Дак инновации же. Почему ты проигрываешь Васе? Дак это просто прототип. А так моя новая супер-схема обгонит васю в тыщи раз, ну через тыщу лет. Когда про меня все забудут, а бабки будут уже попилены.

Достаточно сравнить эту поделку с любыми инновационными трусами. Лозунги 1в1, оправдания 1в1, результаты 1в1.

В конечном итоге у тебя есть множество вариантов развития событий. Кормить хомячков завтраками ещё 10лет. Слиться на «безопасность не бывает бесплатной». Называть все прямые сравнения с конкурентами несостоятельными по причине «у нас-то безопасней и инновационней».

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

Допустим, хром однопоточный(на самом деле нет), а если мы будем жрать все 10ядер, то возможно мы будет быстрее. Хром плохо юзает видяху, а если мы будем её юзать на фул, то возможн омы будем быстрее. Всё это попытка подхалявить. Получить откуда-то новые ресурсы. Всё так и происходит.

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

Так сделан. http://attractivechaos.github.io/klib

О. Я когда-то загорелся сделать STL на си, про этот проект не знал. Написал vector по тому же принципу, увидел как выглядит клиентский код, ужаснулся, форматнул винт.

Серьезно, принципиальная возможность сделать аналог есть (так же как эмулировать классы и отчасти исключения), но пользоваться этим можно только из мазохизма.

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

зато есть очень важные и необходимые вещи вроде std::variant или std::optional

std::optional

Суть плюсовиков. optional для них не нужен

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

Неверно. В этом заключается основная манипуляция - ты на неё купился, хотя как я уже говорил - никуда ты не покупался.

Дело в том, что везде существует safe/unsafe. В мире существует два разных типа разработки. Разработка функциональных модулей и скриптуха. Скриптуха это просто перегонка данных между модулями и их компоновка. В основном 80% программирования - это скриптуха, но для этого даже есть специальные языки.

Скриптуха по умолчанию safe, ведь ты гоняешь данные в абстракциях между модулями, либо в рамках модуля. Единственная мантра, которая работает в рамках подобного подхода - это управление памятью, но это уже десятки лет как не актуально.

В том же кути ты насувал все кишки в parent и раии - у тебя нет никаких проблем. Так же и везде.

Во всех языках на уровне скриптухи существует safe, они все safe.

Единственная разница с растом в том, что он просто запретил тебе писать лоулевел первый случай тупым засовыванием всего в unsafe. Это ничего не поменяло. Это просто явное указание того, что было всегда.

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

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

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

optional - дурное влияние неуверенных в себе хаскелистов: maybe что-то есть, maybe нет... У хорошего плюсовика в переменной обязательно что-то есть!

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

Серьезно, принципиальная возможность сделать аналог есть (так же как эмулировать классы и отчасти исключения), но пользоваться этим можно только из мазохизма.

Сделай хотя бы простой std::copy(...) с фолбеком на memcpy для POD. Или какое-нибудь рекурсивное вычисление в compile-time.

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

Суть плюсовиков. optional для них не нужен

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

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

Суть плюсовиков. optional для них не нужен

Не надо оюоющений. optional не нужен недоучкам, которые пишут на плюсах.

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