- 1
- 2
- 3
- 4
- 5
- 6
for(i = 0; i < strlen(line); i++)
{
...
doSomethingWith(line);
...
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+31
for(i = 0; i < strlen(line); i++)
{
...
doSomethingWith(line);
...
}
Пишет на С++, так как в нем (цитирую) больше возможностей, но std::string он не использует по причине (цитирую) его несовместимости с си компиляторами.
Автор намекнул мне, что я не умею в многопоточность и что этот код лучше любого другого подходит для исполнения в многопоточной среде на тот случай, если переменная line bump изменится ("англици́зм" цитирую дословно, видимо вставленный для понтов и переводимое как наречие внезапно).
Имеет ли смысл доказывать, что он не прав, если я с ним не работаю?
Lowezar 15.06.2013 19:18 # +5
absolut 15.06.2013 23:51 # +3
Dummy00001 16.06.2013 01:54 # +8
Нет.
По моему опыту такое выдают "devolved" (как антоним evolve; знаю что неправильный англиский; может "de-evolved"?) типы, которые слишком долго работали в одиночку (или без критики/отзывов из вне), и их стиль программирования (и как следствие профессионального общения) деградировали в нечто несуразное. И это нечто несуразное с их точки зрения очень близко к совершенству, поэтому теперь они уже критики просто не приемлят.
Предлагаю не останавливать эксперимент и продолжать наблюдения. Будет что постить на ГК - и простое человеческое общение этому типу однозначно пойдет на пользу.
LispGovno 16.06.2013 03:15 # 0
Dummy00001 16.06.2013 10:35 # +2
LispGovno 16.06.2013 03:29 # 0
Ты хотел сказать stagnant?
> devolved
> ("англици́зм" цитирую дословно, видимо вставленный для понтов
Dummy00001 16.06.2013 10:33 # +1
Я хотел сказать "evolved backwards, from higher to lower forms."
LispGovno 16.06.2013 12:41 # +2
Ааа.. degenerate
Dummy00001 16.06.2013 13:21 # +1
LispGovno 16.06.2013 15:09 # +2
Abbath 16.06.2013 15:21 # +1
Dummy00001 16.06.2013 15:26 # 0
(с) "Брильянтовая Рука"
LispGovno 16.06.2013 15:45 # 0
anonimb84a2f6fd141 17.06.2013 20:35 # 0
superhackkiller1997 16.06.2013 05:44 # −13
Abbath 16.06.2013 06:01 # +2
superhackkiller1997 16.06.2013 06:20 # −9
Питухи не осилил указатели - питухи всегда пишут фуфло. Фор в 99% не нужен, но питухам не дано.
govnomonad 16.06.2013 06:43 # +9
правильно, чёткие посоны юзают std::transform или std::for_each. Только функции высшего порядка, только хардкор!
3aeDywHblu_nemyx 25.01.2020 00:49 # 0
LispGovno 16.06.2013 12:43 # +4
eth0 16.06.2013 14:17 # +2
absolut 16.06.2013 14:36 # +2
tirinox 16.06.2013 18:20 # +4
taburetka 16.06.2013 15:59 # +1
myaut 16.06.2013 17:26 # +17
http://funkyimg.com/u2/4652/484/794415superhackkiller1997.png
Vindicar 17.06.2013 00:50 # +2
Ладно бы Варга, я бы еще понял.
inkanus-gray 17.06.2013 07:55 # +1
http://imgur.com/h1Jxnz2
myaut 17.06.2013 09:49 # 0
3aeDywHblu_nemyx 25.01.2020 00:48 # 0
gost 25.01.2020 07:13 # 0
superhackkiller1997 16.06.2013 05:47 # −10
Цикл для этого юзает только питух, который не осилил указательнауказатель, либо инлайн.
Код питуха.
Abbath 16.06.2013 06:00 # +1
superhackkiller1997 16.06.2013 06:12 # −8
Abbath 16.06.2013 06:21 # +5
Цикл для этого юзает только питух, который не осилил указательнауказатель, либо инлайн. А while это таки цикл.
Код питуха.
superhackkiller1997 16.06.2013 06:30 # −7
while(*(line = doSomethingWith(line))) - вот сдесь.
>Цикл для этого юзает только питух, который не осилил указательнауказатель, либо инлайн. А while это таки цикл.
Питух, тут цикл ничего не делает. И для чего этого? Ты питух даже копипастить нормально не может. Нет питушок, тут цикл по иной причине.
Abbath 16.06.2013 06:35 # +1
Так зачем он, если не делает ничего?
superhackkiller1997 16.06.2013 06:36 # −8
while(*(line = doSomethingWith(line))) - а что тут, питушок?
Abbath 16.06.2013 06:42 # +3
>>Цикл для этого юзает только питух
Сам его же и используешь.
superhackkiller1997 16.06.2013 06:47 # −7
Питух, цикл для "этого"( для питухов поясню: "это" - это, для чего он юзается по контексту, а по контексту он юзается для перебора строки) юзают только питухи.
Мой же цикл следит только за концом массива. Его можно вообще выпилить и написать 10раз подрят строку из цикла без изменения и оно будет работать - это значит не юзать цикл как питушок.
Ну и да, питух, ты авось попытаешься отвечать на мои вопросы? Мне не интересно слушать твой питушарний слив.
Abbath 16.06.2013 06:54 # +2
Ага, но не следит за изменениями строки.
А мне как раз интересно с тобой общаться, продолжай. Или зассал?
superhackkiller1997 16.06.2013 07:03 # −7
С чего он должен следить за какими-то изменениями. Код питуха выше следит за чем-то, за чем мой не следит?
>А мне как раз интересно с тобой общаться, продолжай. Или зассал?
Ты сливаешься, как питух. Ты не можешь отвечать на мои комменты полность, а отвечаешь выборочно - это первый признак питуха и сливателя.
Abbath 16.06.2013 07:06 # +2
superhackkiller1997 16.06.2013 07:33 # −7
Abbath 16.06.2013 07:38 # +5
superhackkiller1997 16.06.2013 08:03 # −8
LispGovno 16.06.2013 12:51 # +2
По форме построения аргументов (не по аргументам) ты мне напоминаешь автора этого гк.
Abbath 16.06.2013 07:07 # 0
Сам читай
superhackkiller1997 16.06.2013 07:35 # −5
А вообще, питухи так и не осилил свою архитектуру - мне похрен на их ко-ко-ко. На х86 при вменяемой организации данных никакие локи, софтварная атормащина и даже хардварная не упёрлась.
Abbath 16.06.2013 07:37 # 0
тебе еще и инвариант подавай.
superhackkiller1997 16.06.2013 08:02 # −6
Abbath 16.06.2013 08:10 # +4
Твой пойдет по памяти дальше.
superhackkiller1997 16.06.2013 09:22 # −7
Если кто-то поменяет строку, то он выйдет либо на том конце, где он был раньше, а если его перезапушит - он выйдет на нулях( для тебя открой тайну в линуксах, да и вообще в посиксах память возвращается занулённой, а так же у всяких малоков есть выравнивание).
Поэтому, кто этому питушку поставил плюс?
bormand 16.06.2013 10:29 # +3
Если попросить круглый размер - маллок ничего не добавит, и код не нарвавшись на нули от выравнивания попрет читать или следующий блок или структуры аллокатора.
P.S. Я не защищаю изначальный код. Как твой, так и изначальный код - непотокобезопасны. И если соседний поток может менять line - юзать оба кода нельзя.
superhackkiller1997 16.06.2013 10:34 # −5
Добавит.
>P.S. Я не защищаю изначальный код. Как твой, так и изначальный код - непотокобезопасны. И если соседний поток может менять line - юзать оба кода нельзя.
Потокобезопасность придумали питухи, который ничего не знают о тредах. Мой код не хуже того, что запости TC - только он быстрее, короче, проще и понтовей по всем параметрам.
Если в коде соседний поток может менять line - этот код питушня и я просто клал на того, что написал эту питушню.
bormand 16.06.2013 10:45 # +1
Пруф.
> Мой код не хуже того, что запости TC
Отчасти хуже - функция, которую он вызывает должна возвращать str+1, а это можно забыть. Хотя... крутые хацкиры же ничего не забывают ;)
> Если в коде соседний поток может менять line - этот код питушня и я просто клал на того, что написал эту питушню.
Тут ты прав.
superhackkiller1997 16.06.2013 11:16 # −6
У малока выравнивание 2*size_t . А ему для фри нужен size_t - т.е. free(ptr); - это ptr-sizeof(size_t) - т.е. первый size_t он никогда не трогает.
size_t size_t и тут уже начинается твой указатель, который вернул тебе малок. Первый size_t маллок никогда не трогает, а вот второй трогает.
>Отчасти хуже - функция, которую он вызывает должна возвращать str+1, а это можно забыть. Хотя... крутые хацкиры же ничего не забывают ;)
Ну он же не забыл в форе ++i - не забудет и тут.
bormand 16.06.2013 11:57 # 0
Ок, тут надо перекурить.
> Ну он же не забыл в форе ++i - не забудет и тут.
Одно дело не забыть в одной функции, а другое - когда ++i в одной функции, а while от него в другой.
bormand 16.06.2013 12:12 # 0
Да, ок, тупанул я. На круглых размерах действительно будет паддинг в конце. Не будет его на размерах sizeof(size_t) * (2*N+1) - на 32-битной архитектуре - 12, 20, 28 и т.п.
Abbath 16.06.2013 07:39 # 0
с этого места поподробнее.
superhackkiller1997 16.06.2013 08:02 # −5
Почитай википедию - там написанно про это.
Знаешь почему пацаны юзают сишку? Патамучто она предсказуема и пацан может определить есть ли фейлы в его реализации или нет. А питушки на всяких питушачих плюсах и жавах даже не могут сказать - будет ли local_ptr = global_ptr; атомарной или нет.
superhackkiller1997 16.06.2013 08:05 # −5
А то ты мне начнёшь понять, что некоторые пацаны пишут на систайл плюсах. В этих плюсах нет ствоего стл"а в нужных местах, нет всяких иных питушрнь - всё написано на сишке. Так написан тот же шланг( правда он написан как питушня, но на сишке).
Abbath 16.06.2013 08:08 # −1
superhackkiller1997 16.06.2013 09:23 # −5
Abbath 16.06.2013 08:11 # 0
superhackkiller1997 16.06.2013 09:24 # −5
Abbath 16.06.2013 14:11 # −1
bormand 16.06.2013 14:20 # +2
Сайзоф от литералов для питушков. Тут он, к сожалению, прав.
absolut 16.06.2013 14:37 # +1
не всяк литерал основан на char
superhackkiller1997 16.06.2013 14:49 # −3
bormand 16.06.2013 14:59 # +1
Для строкового литерала - не только петушок;)
LispGovno 16.06.2013 15:14 # +3
bormand 16.06.2013 16:32 # +7
SEO. Скоро эта страничка будет гуглиться по слову петушок.
LispGovno 16.06.2013 17:49 # +5
govnomonad 16.06.2013 19:42 # +6
TarasB 16.06.2013 11:44 # +2
Что за питушарный цикл? Что за питушинуе мутабельное говно я вижу в этом питушином императивном цикле?
Тру поцаны делают рекурсией.
superhackkiller1997 16.06.2013 13:12 # −6
govnomonad 16.06.2013 13:16 # 0
сейчас огребешь двушечку
Abbath 16.06.2013 06:26 # 0
superhackkiller1997 16.06.2013 06:31 # −5
Abbath 16.06.2013 06:36 # 0
superhackkiller1997 16.06.2013 06:38 # −5
Abbath 16.06.2013 06:43 # 0
superhackkiller1997 16.06.2013 06:54 # −5
Вот эта питушня: Должна юзатся для каждого символа из стрки:
Abbath 16.06.2013 07:41 # +1
superhackkiller1997 16.06.2013 07:56 # −5
Abbath 16.06.2013 07:59 # 0
superhackkiller1997 16.06.2013 08:07 # −5
Abbath 16.06.2013 08:22 # +1
superhackkiller1997 16.06.2013 09:24 # −5
LispGovno 16.06.2013 15:17 # 0
Меня радует, что хоть printf(line); не пишите ради мифического ускорения, добавляя експлоиты.
Abbath 16.06.2013 15:19 # 0
LispGovno 16.06.2013 15:46 # 0
inkanus-gray 16.06.2013 08:04 # +6
Пацаны используют putc.
superhackkiller1997 16.06.2013 08:06 # −6
Abbath 16.06.2013 08:23 # +3
superhackkiller1997 16.06.2013 09:25 # −8
Abbath 16.06.2013 08:34 # 0
Abbath 16.06.2013 08:35 # 0
bormand 16.06.2013 08:59 # +5
Кстати gcc умудряется простейшие случаи с принтфом превратить в putc и puts ;)
superhackkiller1997 16.06.2013 09:26 # −7
superhackkiller1997 16.06.2013 09:40 # −7
Почему ты не учил этих питушков уму-разуму?
defecate-plusplus 16.06.2013 08:20 # +11
и зачем получать значение символа +1, ты так и не ответил
походу, твоя куриная анскильность не позволяет понять разницу между *s + 1 и *(s + 1), и ты снова в луже
Abbath 16.06.2013 08:28 # +4
govnomonad 16.06.2013 08:34 # +4
компиляторы уже устраивают срач на ГК?
defecate-plusplus 16.06.2013 08:38 # +3
кто знает, каким он был 7 лет назад, может, челябинские светила психиатрии чем-то помогли бедному, но я сомневаюсь, в россии все херово с психиатрией
вот и все что знает - на уровне 3 класса, небось и родители от него отказались, наверное, стоит пожалеть его..,
Abbath 16.06.2013 08:42 # +1
LispGovno 16.06.2013 15:20 # 0
Он понимает даже такое и способен ответить?
superhackkiller1997 16.06.2013 08:53 # −5
Питух, патамучто так надо - читай говнокод, питух. Суть говнокода в том, что он может отдельно юзать что угодно для каждого символа.
>походу, твоя куриная анскильность не позволяет понять разницу между *s + 1 и *(s + 1), и ты снова в луже
Нет, питух. Там написано всё правильно. *(s +1) у меня будет на следующей итерации - мне не нужно выводить следующий символ.
Abbath 16.06.2013 08:56 # 0
superhackkiller1997 16.06.2013 09:28 # −3
На более сложных код будет ещё красивее, а питушки так и пишут фуфло. Кстати в вашем питушарнем C++ до этого уже дошли, но не вы питушки.
bormand 16.06.2013 10:32 # +2
superhackkiller1997 16.06.2013 11:19 # −5
Вот тебе уже больше хаскель, но я побоялся, ибо пацаны не поймут.
bormand 16.06.2013 11:36 # +4
P.S. А вообще надо бы вот так: чтобы не баговало на пустых строках. Зачем тебе в данном конкретном случае этот гццизм с блоком?
superhackkiller1997 16.06.2013 13:11 # −6
Патамучто - это пример.
>Тогда уж просто
Ну возьми что-то посложнее - будет питушня.
>while (*str) { *str = f(*str); ++str; }
Питушня. Длинше, лишняя проверка в начале, некрасиво.
bormand 16.06.2013 14:07 # +10
А, т.е. проверка на пустую строку она лишняя? Шел бы ты отсюда, лолка, со своим быдлокодом, который неадекватно пашет на пустой строке.
absolut 16.06.2013 14:41 # +6
Это ж "контрактное" программирование. Код работает только на седьмые лунные сутки, если в четверг был дождь и папоротник расцвет не раньше, чем позавчера.
superhackkiller1997 16.06.2013 14:48 # −7
Abbath 16.06.2013 14:53 # 0
superhackkiller1997 16.06.2013 15:31 # −5
superhackkiller1997 16.06.2013 14:47 # −6
И да, питушок, я смотрю ты слишком раскукорекался в последнее время? Тебя ещё в лужу потыкать?
Abbath 16.06.2013 14:54 # +3
superhackkiller1997 16.06.2013 15:31 # −3
Abbath 16.06.2013 15:46 # +3
Определись уже.
superhackkiller1997 16.06.2013 15:47 # −7
Abbath 16.06.2013 17:39 # 0
LispGovno 16.06.2013 15:28 # 0
Он раньше вроде более вменяемо говорил?
Вообще-то я понял что ты сазал, но книг тебе нужно почитать для востановления речевых центров.
Тебе бы мышление упорядочить. Х анскиль бы помог.
superhackkiller1997 16.06.2013 15:32 # −7
Abbath 16.06.2013 15:45 # +2
eth0 16.06.2013 18:58 # 0
TarasB 16.06.2013 19:04 # +5
crastinus 16.06.2013 20:36 # 0
bormand 16.06.2013 20:45 # +3
LispGovno 16.06.2013 15:32 # +1
Лямбда, хаскилизм и гецецизм головного мозга.
Soul_re@ver 16.06.2013 15:38 # 0
superhackkiller1997 16.06.2013 15:48 # −1
Abbath 16.06.2013 16:00 # −2
superhackkiller1997 16.06.2013 16:13 # −1
Abbath 16.06.2013 17:44 # 0
superhackkiller1997 16.06.2013 18:12 # −2
Питух. Ты несёшь, как и все питушки тут, херню, даже не понимая что ты несёшь.
Abbath 16.06.2013 18:24 # +1
Наконец заметил, я думал уже не заметишь.
govnomonad 16.06.2013 19:43 # 0
bormand 16.06.2013 16:17 # +3
LispGovno 16.06.2013 15:23 # +1
он GNUcicism использует?
defecate-plusplus 16.06.2013 11:09 # +2
aka_cppalg(line, toupper);
упс, да?
слив на сливе, ну что за лошара
superhackkiller1997 16.06.2013 11:38 # −3
Что именно упс? Ты питушок тотальный анскиллед - иди подучит выравнивание там, как пишут пацаны нормальный код.
Если ты питушок, то зафигач туда проверку.
Чего слив? Может быть aka_cppalg(NULL, toupper); Тоже будет слив? Ах strlen() как ты мог предать питушка, а он такой питушыстый.
defecate-plusplus 16.06.2013 12:03 # +4
superhackkiller1997 16.06.2013 12:51 # −5
Soul_re@ver 16.06.2013 12:54 # +7
Ну и нахуя он тогда нужен?
superhackkiller1997 16.06.2013 18:10 # −3
Питух, пользовательский ввод/файлы( хотя не пишу питушню, которой это надо) обрабатывает отдельный анализатор, который проверяет его(ввода) корректность и только потом эта питушня попадает ко мне в рабочий код.
Только у питушков по коду гуляют нуллы и прочая байда. У нормальных людей непредсказуемые вещи в коде не обитают.
crastinus 16.06.2013 18:17 # +10
Abbath 16.06.2013 18:25 # +1
Soul_re@ver 16.06.2013 18:37 # +2
А пустая строка это нормальный случай для многих полей ввода.
Скажи, что делать, если пользователь не желает указывать маску для подбора, а его предпочитаемые настройки нужно сохранять, загружать и обрабатывать?
superhackkiller1997 16.06.2013 19:09 # −4
Нет, птиух. Пустая строка - питушня, и быывает только у питухов.
Питух, сохранять настроки тебе похрен как. Загружать, питух, их надо специально запиленным кодом, питух.
А обрабатывать уже надо кодом, который пишу я, ибо если ты не питух - у тебя пустых строк в обработке НИКОГДА НЕ БУДЕТ. А если ты питух сразу файл даёшь в обработку - ты питух и твйо код говно.
Soul_re@ver 16.06.2013 19:21 # +7
Просто ты много говоришь, а коде, который можно использовать кроме как в «примерах» не показываешь. Создаётся впечатление, что ты профессиональный писатель примеров, который нихуя не может на продакшене.
superhackkiller1997 16.06.2013 20:15 # −5
Зачем питух тебе заменять все ненужные символы на что-то там - так делают только питухи.
Ты мне предлогай реальный приме - зачем и что тебе надо.
>Просто ты много говоришь, а коде, который можно использовать кроме как в «примерах» не показываешь. Создаётся впечатление, что ты профессиональный писатель примеров, который нихуя не может на продакшене.
Ты, питух, совсем упорлся? С какого хрена у меня в коде будет пустая строка? Питух. Как она там появится? Питух.
Вы анскильные "продакшн" питухи, которые вояют говно за еду, ничего не зная.
Soul_re@ver 16.06.2013 20:32 # +4
Требование ТЗ. Это реальный пример. От нас только коррекция «до 10к символов». В оригинале было «неограниченной длины»
В файле описываются маски для полей ввода в программе. Именно такой формат для совместимости с уже имеющимся ПО у заказчика. В случае пустой строки — свободный ввод.
>Вы анскильные "продакшн" питухи, которые вояют говно за еду, ничего не зная.
А ты борец за идею, знающий всё лучше всех, но ни копейки своим трудом не заработавший и ни строчки в открытые проекты не внёсший.
superhackkiller1997 16.06.2013 20:55 # −3
Я шлю питухов нахрен.
Питух - осиль таблицу:
>В файле описываются маски для полей ввода в программе. Именно такой формат для совместимости с уже имеющимся ПО у заказчика. В случае пустой строки — свободный ввод.
Питух идёт нахрен.
>А ты борец за идею, знающий всё лучше всех, но ни копейки своим трудом не заработавший и ни строчки в открытые проекты не внёсший.
Мне это не упёрлось. Есть вы - анскилледы, которые пишите фуфло бесполезное за еду. Есть я - у меня нет времени писать фуфло за еду.
Надеюсь ты понимаешь в чём разница между 10питушарскими строчками в спо проектах и царём с бесконечно понтовым скиллом, причём спошник.
У одних задача коммитить 10строк, у других подымать с колен.
Soul_re@ver 16.06.2013 21:07 # +5
Ну назови хоть один проект, которым пользуется более чем один человек, который ты «поднял с колен». Или дай ссылку на портфолио.
Судя по тому, что ты не смог решить элементарный пример, который даже на собеседование на джуниора давать стыдно, не привёл примера реального использования кода с оглядкой на реальные особенности платформ с доказательством, что тут байтоёбство даст выигрыш более чем в одну наносекунду за всё время работы программы, ты исключительно дрочишь на свой «идеальный» код, который метлой бы вымели из всех более-менее нормальных проектов.
superhackkiller1997 16.06.2013 21:16 # −4
Поднимаю проекты с колен анскилледы - я не копаюсь в гумне.
>Судя по тому, что ты не смог решить элементарный пример, который даже на собеседование на джуниора давать стыдно, не привёл примера реального использования кода с оглядкой на реальные особенности платформ с доказательством, что тут байтоёбство даст выигрыш более чем в одну наносекунду за всё время работы программы, ты исключительно дрочишь на свой «идеальный» код, который метлой бы вымели из всех более-менее нормальных проектов.
Питух, я клал на ушлёпков типа тебя. Какие особенности платформы, питух? Какой платформы? Аппаратной? Дак питух тут без разницы.
Питух, какой программы - в нормальном коде( который работает, а не форму в гуйне апдейтит) - наносекунда - это порядки, а ты питух этого не поймёшь.
Я тебе питух написал выше то, что тебя, питуха сольёт в хламину, ибо ты, питух, не осилил таблицы, ибо питух.
И делал на ифах, либо на свиче( и то врядли), ибо питух.
Чтож ты не ответил мне, питух?
Soul_re@ver 16.06.2013 21:26 # +1
Чему равно x?
Подсказка: это не x86, и даже не ARM
superhackkiller1997 16.06.2013 21:43 # −3
Мне похрен на твою питушню, хотя ты настолько питушок, что просто пичаль.
TarasB 16.06.2013 21:45 # +2
superhackkiller1997 16.06.2013 22:27 # −3
Soul_re@ver 16.06.2013 21:47 # +1
superhackkiller1997 16.06.2013 22:28 # −5
Abbath 16.06.2013 21:34 # 0
И что же он конкретно делает?
Abbath 16.06.2013 21:33 # 0
Vasiliy 17.06.2013 19:13 # +1
eth0 17.06.2013 22:11 # +1
Я бы не был столь категоричен. Вайпать он не вайпает, что набросы делает - так мы тут привыкли к рафинированным троллям (не будем перечислять, все и так знают), попутно выясняется что-то новое, интересное. Плюс, вдруг перевоспитается организм.
Vasiliy 17.06.2013 22:47 # 0
OCEHHuu_nemyx 16.10.2020 13:54 # 0
defecate-plusplus 16.06.2013 09:00 # +3
ну так чем отличается fprintf(stdout, ... от printf?
superhackkiller1997 16.06.2013 09:27 # −5
Питушкам не понять, а мне удобней.
govnomonad 16.06.2013 09:39 # +4
superhackkiller1997 16.06.2013 09:57 # −3
Я пишу так, как хочу. Я люблю м енять выводы для удобства и красоты( один красненький, другой синеникой или как-то так). Я пишу fprintf(stdout быстрее, чем он пишет printf.
Допустим я у меня одновременно работают 2 вещи и я хочу запилить отладочный вывод, а stdout мне не нужен - я пишу в одной stdout, а другое stderr - и у меня разными цветами будет красивый вывод в консольке.
Это объективно удобней, чем "SHIT 1 OUT:" и "SHIT 2 OUT:".
Да и вообще, почему у меня должна быть не симетричная питушня в коде.
bormand 16.06.2013 10:33 # 0
LispGovno 16.06.2013 15:37 # +1
bormand 16.06.2013 16:16 # +3
TarasB 16.06.2013 12:01 # +5
Потому что у тебя всегда несимметричная питушня в коде.
defecate-plusplus 16.06.2013 11:06 # +1
стоит тыкнуть тебя в любую тему, как сразу всплывает жуткий пробел
принтф ты просто никогда в жизни не использовал - даже был не в курсе, что еще миллион способов вывода в консоль, ну что ж, очередное открытие царя сишки
каждый день что-то новенькое, да?
superhackkiller1997 16.06.2013 11:41 # −3
Где - пруфы.
>принтф ты просто никогда в жизни не использовал - даже был не в курсе, что еще миллион способов вывода в консоль, ну что ж, очередное открытие царя сишки
Причем тут пильён способов питушок. Любой твой питушатскйи вывод - это write() после sprintf().
Питушок.
>каждый день что-то новенькое, да?
Я знаю, что ты слился и пукан болит, но не выражай своё невежство в токой грубой форме - ловить меня у тебя не выйдет. Дальше говори, что мой код не работает и т.п. - питушки тебя плюсанут.
defecate-plusplus 16.06.2013 12:06 # +6
с производной то разобрался?
LispGovno 16.06.2013 15:39 # 0
defecate-plusplus 16.06.2013 15:47 # 0
http://www.linux.org.ru/forum/development/9152724/
LispGovno 16.06.2013 17:00 # 0
Abbath 16.06.2013 15:48 # 0
Soul_re@ver 16.06.2013 16:55 # +2
TarasB 16.06.2013 11:46 # +7
Что это за питушня? Нахуя менять значение str, если нужно только вернуть результат?
Норм пацан бы написал
return str+1;
Хотя это же слишком понятно, кулхацкеры не любят понятный код
superhackkiller1997 16.06.2013 12:50 # −5
Нет, куллхацкеры не любят понятный для питухов код. Если ты не осилил ++str - ты питух, а писать str + 1 - мне лень - это на 2 символа больше.
Поэтому ты питух и питухи тебя плюсанули.
TarasB 16.06.2013 13:12 # +3
Так пишут только питухи, это во-первых.
Ты снова пропизделся, это во-вторых.
Чтобы было понятнее, во что компилятор превратит, надо писать так:
superhackkiller1997 16.06.2013 13:14 # −4
Пацаны итак знают во что конпелятор это превратит - им не надо писать это самим. А вот питушка типа тебя всё нравится писать лишнюю байду.
TarasB 16.06.2013 13:19 # +8
Пиздишь, современные компиляторы настолько хитрожопы, что предсказать выхлоп невозможно.
Или ты пишешь на асме, или все твои высеры про понятность для машины - питушиное кукареканье пиздобола, не отвечающего за базар.
> А вот питушка типа тебя всё нравится писать лишнюю байду.
Охлол, ты ж ресурсы руками удаляешь, и про лишнюю байду что-то пиздишь, двойные стандарты у тебя, питушок.
LispGovno 16.06.2013 15:42 # +5
defecate-plusplus 16.06.2013 15:49 # +3
TarasB 16.06.2013 16:00 # +2
superhackkiller1997 16.06.2013 16:13 # −2
superhackkiller1997 16.06.2013 15:57 # −4
Реально? Я предсказал. И не зря там написал ++str, а так же инлайн.
>Или ты пишешь на асме, или все твои высеры про понятность для машины - питушиное кукареканье пиздобола, не отвечающего за базар.
Щито?
>Охлол, ты ж ресурсы руками удаляешь, и про лишнюю байду что-то пиздишь, двойные стандарты у тебя, питушок.
Какие ресурсы - я ничего не удаляю. Питушки не осиливают кольцевой буфер? Стеки? Или питушки как мужики пишут каждый раз маллок?
inkanus-gray 16.06.2013 13:23 # +7
И с ключом -O0, и -O1, и -O2, и -O3, и со всеми значениями -march, -mtune, и с прочими ключами -f... пацаны заранее знают, во что это компилятор превратит?
Abbath 16.06.2013 14:09 # +11
superhackkiller1997 16.06.2013 15:52 # −4
Про ключи ф питух пробалаболился, ибо в основном они тоже не влияют, а которые влияют вынесены в O, остальные не юзают, а если юзают, то знают, что они делают.
Поэтому питух написал фуфло.
Abbath 16.06.2013 16:01 # +1
superhackkiller1997 16.06.2013 16:11 # −4
O1 просто так - самые притивные оптимизации собраны, чтобы были как минимальный джентельменский набор.
O2 - уже юзают все, меньше не юзают.
TarasB 16.06.2013 17:44 # +6
Soul_re@ver 16.06.2013 16:59 # +6
То есть SIMD это так, баловство, и инженеры крупнейших компаний по производству процессоров нихуя не делают за большие бабки?
superhackkiller1997 16.06.2013 20:08 # −6
Питухам лижбы вякнуть какую-то херню. И да, -m, питух.
Soul_re@ver 16.06.2013 21:15 # +2
superhackkiller1997 17.06.2013 08:47 # −3
Каким нахрен 386 - я тебе дал линк, питух, ты видешь там код для 386-го? питух? Без марча? Питух. Питух, ты не осилил msse4? Питух, использует "комманды" гцц как питух, и никакого перфоманса ты не получишь, питух.
TarasB 16.06.2013 15:59 # +5
LispGovno 16.06.2013 15:40 # +6
Наркоман?
superhackkiller1997 16.06.2013 15:51 # −3
Abbath 16.06.2013 16:04 # 0
superhackkiller1997 16.06.2013 16:12 # −3
А питухи даже не могут выдерживать стиль.
Abbath 16.06.2013 17:42 # +2
superhackkiller1997 16.06.2013 21:10 # −4
Abbath 16.06.2013 21:35 # 0
bormand 16.06.2013 16:14 # +4
> Нормальные люди пишут str + 1
О как.
superhackkiller1997 16.06.2013 16:19 # −4
TarasB 16.06.2013 17:45 # +4
superhackkiller1997 16.06.2013 19:53 # −4
TarasB 16.06.2013 19:59 # +3
Но писать ++i, когда нужно лишь i+1 - это питушизм.
Писать
++i более одного раза в выражении - питушизм.
И вообще почти всегда питушизм, когда инкремент является частью более сложного выражения.
superhackkiller1997 16.06.2013 21:09 # −5
Питух, там не нужно. Да, конпелятор за тебя исправит (i + 1) на ++i, ибо ты анскильный питух.
Из-за таких питухов в мире и нет перфоманса.
inkanus-gray 16.06.2013 21:26 # +2
Вот во что компилируется без оптимизации:
Инкремент должен новое значение засунуть обратно в i, а (i + 1) новое значение никуда не копирует, кроме результата.
superhackkiller1997 16.06.2013 21:34 # −3
inkanus-gray 16.06.2013 21:35 # +1
superhackkiller1997 16.06.2013 21:49 # −2
inkanus-gray 16.06.2013 21:53 # +3
Я специально компилировал без ключа -O2, чтобы показать, чем ++i отличается от i + 1.
Да, с оптимизацией тут получились одинаковые выражения и похожи они на i + 1, а не на инкремент. Ты же писал: «Да, конпелятор за тебя исправит (i + 1) на ++i».
Итого: слив.
superhackkiller1997 16.06.2013 22:01 # −3
Зачем мне это?
>Я специально компилировал без ключа -O2, чтобы показать, чем ++i отличается от i + 1.
Я знаю чем они отличаются. Только вот, квадратный питух, там у меня инлайн.
>Итого: слив.
В чём?
inkanus-gray 16.06.2013 22:09 # +1
return ++i для питухов и инлайн тут ни при чём.
superhackkiller1997 16.06.2013 22:20 # −4
По стандарту конпелятор не может изменять значение, которое ему пришло, но это не имеет значение в моём случае. Что ты, квадратный питух, придумал там себе - я клал.
superhackkiller1997 16.06.2013 22:12 # −4
Soul_re@ver 16.06.2013 21:55 # +4
Тебе показали, что при оптимизации компилятор заменяет ++i на i+1 в ретурнах, если i — локальная переменная. Радуйся, что компиляторы умнее тебя и знают, что этого говна в коде быть не должно. 30 лет назад компиляторы такого не умели. И твоё ++ скомпилировалось бы как есть: с лишней операцией.
superhackkiller1997 16.06.2013 22:11 # −5
Питух, ты там слился - пришел сюда?
Питух, ты не знаешь как работают конпеляторы? Это не без оптимизации, питух, а с пессимизацией. С O0 конпелятор ВООБЩЕ(кроме ea) не юзает регистры.
>Тебе показали, что при оптимизации компилятор заменяет ++i на i+1 в ретурнах, если i — локальная переменная. Радуйся, что компиляторы умнее тебя и знают, что этого говна в коде быть не должно. 30 лет назад компиляторы такого не умели. И твоё ++ скомпилировалось бы как есть: с лишней операцией.
Ты что несёшь, питух? Что мне показали, питух. Ты понимаешь, что там инлайн, питух? Ты понимаешь, что аргумент копируется в функцию по стандарту и не изменяется, питух?
Кури, питух.
superhackkiller1997 16.06.2013 22:20 # −6
superhackkiller1997 16.06.2013 22:25 # −6
bormand 17.06.2013 05:27 # +3
dwarf_with_beer 17.06.2013 06:31 # +3
superhackkiller1997 17.06.2013 09:18 # −3
dwarf_with_beer 17.06.2013 09:37 # 0
superhackkiller1997 17.06.2013 09:46 # −2
А функция инкримент всегда инлайнится, и конпелятор ваше говно (j + 1) преврщается в ++j, а j - это алис того, что ты послал в функцию.
Тут конпелятор зафигачит инлайн, i и j - алиасы - j выпилвается. Остаётся i = (i + 1), что заменяется на i += 1 ака ++i( по понятным причинам конпелятор не юзает Inc).
Если конпелятор так не сделает - ты получишь тормаза и говно. Поэтому и питушки те, кто отлаживает на -O0, ибо регистры конпелятор не юзает, алиасы не выпиливает( а это умеет делать любой конпелятор, особенно тот, что был 30лет назад).
TarasB 17.06.2013 09:49 # +2
Нет, курочка, в точности наоборот.
> Поэтому и питушки те, кто отлаживает на -O0, ибо регистры конпелятор не юзает, алиасы не выпиливает
Курочка, ты понимаешь смысл отладки? А, ну да, ты ж ничего нормального не писал...
inkanus-gray 17.06.2013 09:53 # +1
Твои же листинги демонстрируют, что return i + 1 компилятор считает сразу как инкремент result, а return ++i требует лишних операций: либо инкремент result и копирование результата в i, либо инкремент i и копирование результата в result.
То есть оптимизатор как раз наоборот, заменяет return ++i на return i + 1.
superhackkiller1997 17.06.2013 10:03 # −2
ret - выходящая переменная(входящая), i - входящая.
ret = i + 1; - твоей вариант. так и делает гцц через леа.
Мой вариант гцц тоже вревращает в твой, ибо нет профита изменять ай. Но лишь потому, что ты квадратный питух.
А вот при инлайне уже есть смысл писать ++i, ибо иначе нам надо будет создавать ещё 1регистр, делать в неём леа и приравнивать i, но питух этого не понимает.
inkanus-gray 17.06.2013 10:11 # +1
Смысл в ++i есть только, если i передаётся по ссылке, а не по значению.
superhackkiller1997 17.06.2013 10:13 # −3
dwarf_with_beer 17.06.2013 09:57 # 0
superhackkiller1997 17.06.2013 09:58 # −3
inkanus-gray 17.06.2013 10:02 # +1
См. листинг ещё раз. Оптимизатор избавляется от ++j, когда оно не нужно.
superhackkiller1997 17.06.2013 10:06 # −2
Видишь? Патамучто теперь j не просто переменная, а алиас i. Вы, квадратные питухи, дальше своего носа не думаете и поэтому несёте тотальный щит.
dwarf_with_beer 17.06.2013 10:39 # 0
dwarf_with_beer 17.06.2013 10:42 # 0
superhackkiller1997 17.06.2013 10:48 # −2
Конпелятор не юзает ++j только потому, что по call abi там нельзя. Если бы он мог возвращать j - он был сделал ++j. Но меня не интересует ограничение call abi для функции, которая никогда не будет call.
dwarf_with_beer 17.06.2013 11:33 # 0
superhackkiller1997 17.06.2013 11:39 # −2
dwarf_with_beer 17.06.2013 11:56 # 0
superhackkiller1997 17.06.2013 12:30 # −3
Ты упорлся, какая нахрен выклеченная оптимизация, питух? Вы меня одалели нести херню.
>В инлайне j+1 сведется в выхлопу аналогичному для ++j лишь по причине инлайновости.
В этом и суть, ибо ЭТА ФУНКЦИЯ НЕ ИМЕЕТ ИНОГО КОНТЕКСТА, КРОМЕ ИНЛАЙНА. Тупые питухи.
dwarf_with_beer 17.06.2013 12:45 # +2
bormand 17.06.2013 12:01 # +1
Курочка про SSA формы и ее аналоги читала?
А ведь в SSA форме, если i дальше не используется (а оно не используется, т.к. мы видим return), и твой a = ++i, и a = i+1 и даже a = i+=1 имеют абсолютно одинаковое представление (a - временное значение, которое вернет return).
Поэтому срал компилятор на то, как ты это напишешь, промежуточное представление будет одинаковое. А то, как компилер поступит дальше - зависит уже только от следующих этапов оптимизации.
superhackkiller1997 17.06.2013 12:29 # −2
Я об этом, питух писал выше. Конпелятор без оптимизатора не имеет смысла и смотрят на это питухи.
А вот люди смотря на то, во что это превратит оптимизатор - ибо он гинерит код, а не транслятор, питух.
Поэтому твоё, питух, ко-ко-ко оставь для тех питухов, что выше по треду.
inkanus-gray 17.06.2013 12:35 # 0
Инкремент в правой части выражения пишут только питухи. Не веришь?
http://lurkmore.to/%2B%2Bi_%2B_%2B%2Bi
Поэтому ++i будем писать только в левой части выражений, а в правой будем писать i+1.
superhackkiller1997 17.06.2013 12:50 # −2
Логично писать тут ++i, ибо это инлайн, квадратный питух. входящий и выходящий аргументы АЛИАСЫ, анскильный, квадратный питух - пэтому для алиасов ret i + 1 = i +=1 = ++i; Питух.
Какой левой части? Ты что несёшь? Чего не придумаю питушки, лижбы нормально не слиться. ++i - не уб, питух, и всегда возвращает (i + 1), питух.
TarasB 17.06.2013 13:33 # +3
Вот жеж долбоёб, придумал какую-то питушиную хуйню и оправдывает её какой-то питушиной логикой типа "в огороде бузина, потому что в Киеве дядька"
superhackkiller1997 17.06.2013 13:35 # −3
TarasB 17.06.2013 13:41 # 0
superhackkiller1997 17.06.2013 14:07 # −2
bormand 17.06.2013 14:15 # +1
Покажи нам страницу стандарта, на которой это написано. Не покажешь, царёк куриный? Или ты там вообще свой питушинский стандарт уже написал и его нам цитируешь?
TarasB 17.06.2013 14:17 # +1
a = ++a?
Питушизм как он есть.
superhackkiller1997 17.06.2013 14:23 # −3
TarasB 17.06.2013 14:30 # +2
a = a+1
и
a = (a+=1)
второе выражение написал питух, и этот питух - ты
superhackkiller1997 17.06.2013 14:35 # −3
a = a + 1;
А мой до:
a += 1;
Потом конпелятор твою питушню заменяет на мой вариант. Без разницы как это выглядит в промежуточном представлении - выражение всегда смотрится после сокращения.
TarasB 17.06.2013 14:41 # −1
a = ...
а внутри этого ... написано ++a
то есть у тебя написано
a = ++a
ну или
a = (a+=1)
что одно и то же
superhackkiller1997 17.06.2013 14:43 # −4
TarasB 17.06.2013 14:52 # +2
Наконец-то ты сам это признал.
superhackkiller1997 17.06.2013 21:02 # −1
Вы такие смешных, вы уже привыкли жить в обществе питушков, где демагогией и каверканье/перевиранием и подменой понятий вы заставляете питушков вас плюсовать, неся тотальную херню. Авось вы когда-то перестанете это делать.
superhackkiller1997 17.06.2013 14:44 # −3
bormand 17.06.2013 14:00 # +3
Страницу стандарта мне покажи, цыпленок, на которой написано, что-нибудь про инлайн сишных операторов (не функций, а именно операторов). Ты его поди не открывал ни разу, яйцо куриное?
superhackkiller1997 17.06.2013 14:05 # −3
Ты уже пропитушился - не пытайся.
dwarf_with_beer 17.06.2013 17:41 # 0
bormand 17.06.2013 12:55 # +1
О_о. Ямщик не гони... Может имелось в виду в единственной части выражения?
inkanus-gray 17.06.2013 13:16 # 0
Спасибо за идею. Надо будет попробовать насобирать синяков и шишек, поставив инкремент слева от присвоения.
TarasB 17.06.2013 13:32 # 0
Не всегда, но здесь не тот случай.
bormand 17.06.2013 12:40 # +2
А не ты ли, курочка, нам тут выше херню порол, и говорил, что ++i писать лучше, ибо перформанс, а i+1 пишут лохи?
superhackkiller1997 17.06.2013 09:17 # −3
Питух, ты понимаешь, что он не может вернуть ++j из-за call abi? Питух.
Питух ты понимаешь, что этот инкримент конпелятор САМ заинлайнит и превратит в return ++j;?
inkanus-gray 16.06.2013 20:02 # +2
1. return i + 1;
2. return ++i;
Второе эквивалентно коду:
Где здесь i = i + 1, superhackkiller1997?
superhackkiller1997 16.06.2013 21:10 # −3
>инкременты на присваивании
govnomonad 16.06.2013 19:47 # +2
двоемыслие такое двоемыслие
Yuuri 17.06.2013 17:31 # +8
P.S. А если парень серьёзен, то такого эффекта Даннинга-Крюгера я ещё не встречал.
dwarf_with_beer 17.06.2013 17:43 # +3
Yuuri 17.06.2013 17:58 # +1
defecate-plusplus 17.06.2013 17:47 # +5
1024-- 17.06.2013 18:42 # +2
eth0 17.06.2013 18:42 # +1
bormand 17.06.2013 20:28 # +1
А мы бы поняли, что без него опять настанет скука... Ну и по крайней мере он не вайпает борду как некоторые, а все-таки просто пишет.
TarasB 17.06.2013 20:45 # +2
bormand 17.06.2013 20:50 # +4
govnomonad 18.06.2013 05:46 # +4
dwarf_with_beer 18.06.2013 06:05 # +2