PJ>А вот если бы тебя позвали, то все было бы по-другому?
А почему ты так уверен, что нет?
PJ>Совершенно правильный вывод. Вывод, что во всем виноваты люди совершенно бесполезный. Так можно было и дальше ассемблера не ходить.
Все ошибки с памятью, которые можно допустить в C++, давно известны. Неужели так трудно научить своих сотрудников их не делать? Да, лучше, если компилятор будет бить по рукам, если делаешь, что-то нетак. Но в приведённой статье есть более интересный момент
For complex C/C++ code bases, often there are only a handful of people capable of developing and reviewing the fix, and even with a high amount of effort spent on fixing bugs, sometimes the fixes are incorrect.
complex C/C++ code bases — сложный C/C++ код.
there are only a handful of people capable of developing and reviewing the fix — немного людей, кто в состоянии устранить ошибку.
Иными словами гугл подтверждает, что в их коде чёрт ногу сломит.
Насколько мне известно, чтобы из сложного кода сделать код проще, требуется приложить определённые умственные усилия, а не просто поменять язык программирования.
Прежде чем начать читать статью, я пробежал глазами по коду. Первое за что я зацепился было это
if ((size_t)(mDataSource->readAt(*offset, buffer + size, chunk_size))
< chunk_size)
Зачем понадобился каст в size_t? Для любого опытного С++ программиста любой каст это сразу же намёк, что что-то тут нетак. Что возвращает mDataSource->readAt ? Это int? А если он вернёт -1, а мы это скастим в size_t, мы получим 18446744073709551615 (если это 64 битная платформа). Это точно то, чего добивался автор?
Это реально трудно заметить, или у меня дар божий?
Блин (через "ять"). И откуда только такие дилетанты лезут? Очевидно же, даже не открывая текст статьи, что его добавили в NDK. Туда, где до этого безраздельно царили C и плюсы.
Перефразируя старый баян: Слоны идут на..., а Java и Kotlin живут этажом выше
A>Перевожу: большинство багов с памятью возникает в новом или недавно изменённом коде; примерно 50% багов находится в коде написанном один год назад. A>Что это значит? Это значит, что в старом коде уже без поллитры не разберёшся, и разработчики, не поняв что к чему, делают ошибки.
Ото ж. Давайте, значит, посадим раст-о-манов с красными глазами, и сделаем старый код настолько write–only, чтобы разобраться нельзя было и без цистерны. Добавим побольше ломающих изменений между версиями. И сдобрим отсутствием консорциума, явно писаных стандартов, невменяемой документацией и шибзданутым сообществом, которое будет набигать с криками "так на расте писать нельзя!". Единственным выходом будет всё переписывать к Евгении Марковне, а не разбираться. И по метрикам всё отлично: меньше кода — меньше багов))
Писец, поколение анацефалов. Так помешались на этой безопасности, что, похоже, детей своих будут с рождения в бетон заливать. Чтобы не дай бог не ушиблись от падения, это же тааак опааасно. И жуткую короняяяку не подхватили ненароком, выбежав на улицу.
Здравствуйте, CreatorCray, Вы писали:
CC>Собрать то можно чем угодно
Чем можно собрать студийный солюшн кроме студии и msbuild?
CC>а вот разработка в IDE на порядки удобнее.
Вот. Только IDE разные. У нас разработчики пользуются всеми основными: студией, Vim, CLion, QCreator, на всех трех платформах. И 5-6 разными компиляторами.
Здравствуйте, CreatorCray, Вы писали:
CC>Нафига?
Потому что оно во всём лучше чем решение от МС
CC>А нахрена все эти навороты в зоопарке? KISS никто не отменял.
Потому что твое решение остается простым в очень ограниченном мире: одна платформа, один компилятор, одна IDE и никаких хитрых шагов при сборке. Любой мало-мальский шаг в сторону из этого уютного мирка заканчивается костылями в виде скриптов разной степени кривости.
CC>В новой студии стало хуже, в старой прекрасно было видно что поменялось, просто потому что XML там был человекочитаемый.
"человекочитаемый XML" это какой-то оксюморон. Прочитать-то можно, но нафиг не нужно.
CC>Да и в принципе даже старая вижуалка с ассистом кроет новый хэкод как бык овцу практически во всём касательно продуманности и удобства.
Об XCode вообще хороших отзывов мало
Здравствуйте, CreatorCray, Вы писали:
CC>А нахрена?
А почему нет?
Причин и плюсов много, начиная от требований к продукту и не заканчивая простотой поиска сотрудников (т.к. нет ограничений по IDE и ОС для разработки, что для многих плюсовиков критично и ты сам отлично демонстрируешь).
S>>"Обычно" это если мир ограничен разработкой на одной платформе CC>Что в большинстве случаев так.
А я говорю нет
CC>В таком мире как раз С++ приносит одно удовольствие
Никто не спорит с этим, только такого мало. С++ вообще мало, а такого и того меньше.
CC>Да вот как то нет. CC>Пишется продукт, у продукта есть требования, в том числе по платформе. Просто так на многоплатформу писать — пустая трата Вилли стоя в гамаке на лыжах.
Ты мешаешь в кучу две разные проблемы: поддержка целевых платформ и поддержка платформ для разработки. Про первое без необходимости речь никто не ведет обычно. А второе в ЦПП мире есть из коробки если не завязываться на продукты МС.
S>>Тут разговор про то, что более стандартно (распространенно). CC>Unknown definition
Ок.
Здравствуйте, Artifact, Вы писали:
A>А почему ты так уверен, что нет?
Я уверен? Я спрашиваю. Где-то же этот идеальный программист должен существовать...
PJ>>Совершенно правильный вывод. Вывод, что во всем виноваты люди совершенно бесполезный. Так можно было и дальше ассемблера не ходить. A>Все ошибки с памятью, которые можно допустить в C++, давно известны. Неужели так трудно научить своих сотрудников их не делать? Да, лучше, если компилятор будет бить по рукам, если делаешь, что-то нетак. Но в приведённой статье есть более интересный момент
Да чо уж там, вообще все ошибки давно известны. Надо только писать без них.
A>Иными словами гугл подтверждает, что в их коде чёрт ногу сломит.
Эх, жалко, что нельзя взглянуть на твой совершенный код.
A>Насколько мне известно, чтобы из сложного кода сделать код проще, требуется приложить определённые умственные усилия, а не просто поменять язык программирования.
Это если умственные усилия больше направить некуда. Так случается, что некоторые, еще не познавшие дзен, или которых он уже задолбал, желают не с языком бороться, решая задачи за компилятор, а наоборот — что бы компилятор им помогал.
A>Прежде чем начать читать статью, я пробежал глазами по коду. Первое за что я зацепился было это
Т.е. за какую-то левую фигню, возможно совершенно безопасную, а не за реальный баг, где опытному программисту зацепиться не за что было, там кастов нет...
Здравствуйте, Nuzhny, Вы писали:
N>Чтобы не делать несколько конфигураций.
Какие конфигурации тут имеются в виду?
N> Кажется, что затачиваться под одну платформу чуть ли не сложнее, чем под несколько.
Отнюдь.
Здравствуйте, Skorodum, Вы писали:
CC>>А нахрена? S>А почему нет?
Потому что KISS. Если нет в том реальной необходимости — нехрен париться.
S>Причин и плюсов много, начиная от требований к продукту
Что это за требования к продукту которые хотят чтоб его код можно было писать на зоопарке платформ и тулов?
S> (т.к. нет ограничений по IDE и ОС для разработки, что для многих плюсовиков критично и ты сам отлично демонстрируешь).
Сколько я раз видел случаев когда позволяли писать в чём хочется столько раз что проект что код превращался в говно.
Так что тут категорическое нет и диктатура с расстрелами. Есть единый dev environment, все пишут в нём.
S> А второе в ЦПП мире есть из коробки если не завязываться на продукты МС.
Если не завязываться на нормальные IDE ты хотел сказать. Не, ну можно врукопашную всё фигачить, и считать что этот аскетизм — норма.
Здравствуйте, Skorodum, Вы писали:
CC>>Нафига? S>Потому что оно во всём лучше чем решение от МС
А именно?
CC>>А нахрена все эти навороты в зоопарке? KISS никто не отменял. S>Потому что твое решение остается простым в очень ограниченном мире: одна платформа, один компилятор, одна IDE и никаких хитрых шагов при сборке.
К этому следует стремиться.
S> Любой мало-мальский шаг в сторону из этого уютного мирка заканчивается костылями в виде скриптов разной степени кривости.
Или расстрелами тех, кто полез лепить что то странное.
CC>>В новой студии стало хуже, в старой прекрасно было видно что поменялось, просто потому что XML там был человекочитаемый. S>"человекочитаемый XML" это какой-то оксюморон. Прочитать-то можно, но нафиг не нужно.
Нужно для того, чтобы понять по diff что поменялось. Именно для человека текстовые форматы и придумываются.
Здравствуйте, Skorodum, Вы писали:
CC>>Собрать то можно чем угодно S>Чем можно собрать студийный солюшн кроме студии и msbuild?
Начнём с простого вопроса: зачем?
CC>>а вот разработка в IDE на порядки удобнее. S>Вот. Только IDE разные. У нас разработчики пользуются всеми основными: студией, Vim, CLion, QCreator, на всех трех платформах. И 5-6 разными компиляторами.
Бардак!
Послушай, мне твой сарказм совсем неинтересен. Всё что я хочу, чтобы вещи называли своими именами. Последний раз я тут попытаюсь донести свою мысль. Если ваш код представляет из себя ребус, это ваша вина, а не языка программирования, на котором этот код написан. Люди, которые написали запутанный код на языке А, напишут такой же запутанный код и на языке В. Я считаю, что более правильным путём является повышение профессионального уровня разработчиков.
Здравствуйте, Artifact, Вы писали:
A>Послушай, мне твой сарказм совсем неинтересен. Всё что я хочу, чтобы вещи называли своими именами. Последний раз я тут попытаюсь донести свою мысль. Если ваш код представляет из себя ребус, это ваша вина, а не языка программирования, на котором этот код написан. Люди, которые написали запутанный код на языке А, напишут такой же запутанный код и на языке В. Я считаю, что более правильным путём является повышение профессионального уровня разработчиков.
О, я тоже так всегда считал до тех пор, пока не поработал в одной замечательной американской компании. Вот представь себе, есть команда, которая пишет на плюсах как в старые добрые времена 98 стандарта. К тестам относится приблизительно так же. Учиться не хочет, а уволить по причине "люди-то хорошие" нельзя. Команда, конечно, не вся такая, но изрядная её часть, причём самый активный чувак, взявший на себя роль архитектора, главный говнокодер. И всё было плохо до тех пор, пока не появился в команде один умный человек (этот человек не я, к сожалению) и не сказал "нахер плюсы, пишем на Го". И тут случилась ну просто магия! Язык на столько простой и позволяющий невероятно легко принудить к следованию тем не многим правилам что в нем есть, что команда даже начала писать нормальный код. Ну да, под присмотром, но теперь то почти основная часть этого присмотра автоматизировалась.
Так что, инструмент решает и те же люди что говнокодят на плюсах вполне могут выдать нормальный код на Го. Про Раст не уверен, очень уж сложный язык, тот же уровень сложности что и плюсы. Но так как контроль за соблюдением правил владения из коробки, может тоже хорошая опция. В особо сложных ситуациях, когда у команды руки явно из жопы растут, а машинный код без GC нужен, я бы рискнул, хуже не будет точно.
Здравствуйте, CreatorCray, Вы писали:
CC>Так что тут категорическое нет и диктатура с расстрелами. Есть единый dev environment, все пишут в нём.
Ein Volk, Ein Reich, Ein Führer.
В нормальных компаниях пофиг на чём разработчики пишут. Я уж не говорю о том, что для той же iOS приходится использовать вообще отдельное уродство для сборки.
S>> А второе в ЦПП мире есть из коробки если не завязываться на продукты МС. CC>Если не завязываться на нормальные IDE ты хотел сказать.
А где у MS нормальные IDE? Единственная нормальная IDE для С++ — это CLion.
Здравствуйте, Artifact, Вы писали:
A>Здравствуйте, Poopy Joe, Вы писали:
A>Послушай, мне твой сарказм совсем неинтересен. Всё что я хочу, чтобы вещи называли своими именами.
О, не сомневаюсь. "Назвать" вещи своими именами любят многие. Но, как правило, они же, очень не любят выслушивать выслушивать подобное о себе.
A>Последний раз я тут попытаюсь донести свою мысль. Если ваш код представляет из себя ребус, это ваша вина, а не языка программирования, на котором этот код написан. Люди, которые написали запутанный код на языке А, напишут такой же запутанный код и на языке В. Я считаю, что более правильным путём является повышение профессионального уровня разработчиков.
Тебе надо перейти на брейнфак, ну чисто в целях повышения квалификации!
Здравствуйте, Cyberax, Вы писали:
CC>>Так что тут категорическое нет и диктатура с расстрелами. Есть единый dev environment, все пишут в нём. C>Ein Volk, Ein Reich, Ein Fuhrer.
Я смотрю Ватсон без зигования уже не может
C>В нормальных компаниях пофиг на чём разработчики пишут.
Это выражается в том, что ты можешь для себя лично заколхозить что угодно но всё равно всё должно работать через официальный путь. Как ты будешь это обеспечивать — твои проблемы, но компания не будет устраивать для тебя зоопарк.
C> Я уж не говорю о том, что для той же iOS приходится использовать вообще отдельное уродство для сборки.
Собираю что iOS что все остальные таргеты в одном и том же XCode
CC>>Если не завязываться на нормальные IDE ты хотел сказать. C>А где у MS нормальные IDE?
Вижуалка, старая есессна.
C> Единственная нормальная IDE для С++ — это CLion.
Здравствуйте, CreatorCray, Вы писали:
C>>В нормальных компаниях пофиг на чём разработчики пишут. CC>Это выражается в том, что ты можешь для себя лично заколхозить что угодно но всё равно всё должно работать через официальный путь. Как ты будешь это обеспечивать — твои проблемы, но компания не будет устраивать для тебя зоопарк.
Нет. В нормальных компаниях официальный путь — это pull-requests в Github/Gitlab/whatever. Которые затем строятся через CI и тестируются. Сам CI может достаточно сильно отличаться от окружения разработчика.
А как конкретно формируются PR — это никого особо не интересует. Пусть хоть через модем насвистываются голосом.
C>> Я уж не говорю о том, что для той же iOS приходится использовать вообще отдельное уродство для сборки. CC>Собираю что iOS что все остальные таргеты в одном и том же XCode
А, понятно. Xcode съел моск. Я знаю человека, который в XCode умудрялся собирать для Андроида кросс-билд, но это уже из области глубоких извращений.
CC>>>Если не завязываться на нормальные IDE ты хотел сказать. C>>А где у MS нормальные IDE? CC>Вижуалка, старая есессна.
Нет там ничего особо нормального для современных IDE. Кстати, а как на ней для iOS писать?
Здравствуйте, Cyberax, Вы писали:
C>А, понятно. Xcode съел моск.
Ты неотвратимо превращаешься в Артёмку — тот тоже фантазирует с разбросом в пару сотен миль от цели.
Сколько я уже раз тут писал что XCode говно и отстаёт даже от вижуалки 10летней давности, ан нет, чукча не читатель.
C>Нет там ничего особо нормального для современных IDE. Кстати, а как на ней для iOS писать?
А зачем на ней под iOS писать? Я на ней под винду пишу.
Гвозди забиваю молотком, шурупы закручиваю отвёрткой, сверлю сверлом, пилю пилой и в целом использую инструмент наиболее подходящий под задачу.
Здравствуйте, CreatorCray, Вы писали:
C>>А, понятно. Xcode съел моск. CC> Ты неотвратимо превращаешься в Артёмку — тот тоже фантазирует с разбросом в пару сотню миль от цели. CC>Сколько я уже раз тут писал что XCode говно и отстаёт даже от вижуалки 10летней давности, ан нет, чукча не читатель.
Ну так сам противоречишь себе. MSVS не работает на macOS и непригодна для iOS-проектов. Т.е. она невозможна в качестве Ein IDE. А в XCode нельзя писать код для Андроида.