Re[7]: А отрефакторю-ка я сейчас всё. Mемуар.
От: Олег К.  
Дата: 20.05.15 00:09
Оценка:
S>>Встречал достаточно хороший код, который отлично тормозил.

Aё>Если не удовлетворяет требованиям по производительности- это плохой код.


А для бизнеса и нету таких требований по большему счету. Зато есть куча программахеров которые считают что производительность это все. Отсюда и битовые двиги справа вместо деления на двойку (в плюсах), метапрограммирование и еще куча подобной хрени.
Re[6]: А отрефакторю-ка я сейчас всё. Mемуар.
От: Grienders Земля  
Дата: 20.05.15 00:18
Оценка:
Здравствуйте, __kot2, Вы писали:

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


слушай, заинтриговал, а какая у тебя зарплата?
Re[9]: А отрефакторю-ка я сейчас всё. Mемуар.
От: __kot2  
Дата: 20.05.15 00:21
Оценка:
Здравствуйте, Олег К., Вы писали:
ОК>Этого тебе точно не занимать. Я поэтому и спросил. А ты на вопрос-то ответь.
а ты вообще кто?
Re[10]: А отрефакторю-ка я сейчас всё. Mемуар.
От: Олег К.  
Дата: 20.05.15 00:25
Оценка:
__>Здравствуйте, Олег К., Вы писали:
ОК>>Этого тебе точно не занимать. Я поэтому и спросил. А ты на вопрос-то ответь.
__>а ты вообще кто?

Я это я. А ты?
Re[7]: А отрефакторю-ка я сейчас всё. Mемуар.
От: Олег К.  
Дата: 20.05.15 00:31
Оценка:
G>слушай, заинтриговал, а какая у тебя зарплата?

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

Резюме: хочешь расти по зарплате, чаще меняй работу (что, однако, не добавляет экспириенса как программисту).
Re[7]: А отрефакторю-ка я сейчас всё. Mемуар.
От: __kot2  
Дата: 20.05.15 00:39
Оценка:
Здравствуйте, Grienders, Вы писали:
G>слушай, заинтриговал, а какая у тебя зарплата?
ну и кто на такие вопросы отвечает?
Re[11]: А отрефакторю-ка я сейчас всё. Mемуар.
От: __kot2  
Дата: 20.05.15 00:41
Оценка:
Здравствуйте, Олег К., Вы писали:
ОК>Я это я. А ты?
для меня ты всего-лишь буковки на экране. я не представляю, чтобы я был чего-то должен буковкам
Re[8]: А отрефакторю-ка я сейчас всё. Mемуар.
От: Aртём Австралия жж
Дата: 20.05.15 01:01
Оценка:
Здравствуйте, Олег К., Вы писали:

Aё>>Если не удовлетворяет требованиям по производительности- это плохой код.


ОК>А для бизнеса и нету таких требований по большему счету. Зато есть куча программахеров которые считают что производительность это все. Отсюда и битовые двиги справа вместо деления на двойку (в плюсах), метапрограммирование и еще куча подобной хрени.


Если отбрость сантименты в сторону- хорошего программиста от плохого отличает способность писать элегантный и оптимальный код. Чем больше логики не помещается в кэш процессора и больше тактов тратится на оверхед (в том числе из-за неправильно выбранного алгоритма)- тем дольше бизнес пьёт чай.
Отредактировано 20.05.2015 1:05 Артём . Предыдущая версия .
Re[9]: А отрефакторю-ка я сейчас всё. Mемуар.
От: __kot2  
Дата: 20.05.15 01:49
Оценка:
Здравствуйте, Aртём, Вы писали:
Aё>Если отбрость сантименты в сторону- хорошего программиста от плохого отличает способность писать элегантный и оптимальный код. Чем больше логики не помещается в кэш процессора и больше тактов тратится на оверхед (в том числе из-за неправильно выбранного алгоритма)- тем дольше бизнес пьёт чай.
берешь код иногда какой-то опенсорсный, например. тестируешь — падает. бывает. например, x264 кодек иногда кадры битые дает. ты задаешь себе вопрос — мы сможем решать проблемы по мере поступления или вставить его в продакшен? открываешь код, смотришь. ну конкретно x264, насколько я помню, неплох.
а если это например OpenSSL, Miranda, или мыщъхвский аналайзер, как он его тут описал, то вывод — нет, мы не будем это использовать в продакшене. качество не то.
Re[9]: А отрефакторю-ка я сейчас всё. Mемуар.
От: Олег К.  
Дата: 20.05.15 04:00
Оценка:
Aё>Если отбрость сантименты в сторону- хорошего программиста от плохого отличает способность писать элегантный и оптимальный код. Чем больше логики не помещается в кэш процессора и больше тактов тратится на оверхед (в том числе из-за неправильно выбранного алгоритма)- тем дольше бизнес пьёт чай.

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

Ну и в реальной жизни я больше как-то наблюдаю что бизнес страдает из-за нашего собрата а не пьет чай.
Re[12]: А отрефакторю-ка я сейчас всё. Mемуар.
От: Олег К.  
Дата: 20.05.15 04:01
Оценка: +1
ОК>>Я это я. А ты?
__>для меня ты всего-лишь буковки на экране. я не представляю, чтобы я был чего-то должен буковкам
Ну так я тебе на это и намекнул.
Re[8]: А отрефакторю-ка я сейчас всё. Mемуар.
От: Олег К.  
Дата: 20.05.15 04:02
Оценка:
__>Здравствуйте, Grienders, Вы писали:
G>>слушай, заинтриговал, а какая у тебя зарплата?
__>ну и кто на такие вопросы отвечает?

Ну есть тут парочка человек, но в данный момент не могу с тобой не согласиться.
Re[5]: А отрефакторю-ка я сейчас всё. Mемуар.
От: Vlad_SP  
Дата: 20.05.15 06:45
Оценка:
Здравствуйте, мыщъх, Вы писали:

М> что вы имеете против того, что сигналом к перестройке внутренних структур аллкокатора служило обращение к памяти за пределами выделенного блока?


Где гарантия того факта, что обращение к памяти за пределами выделенного блока — это преднамеренное действие программиста, а не случайный прострел по памяти?
Re[5]: А отрефакторю-ка я сейчас всё. Mемуар.
От: VTT http://vtt.to
Дата: 20.05.15 21:09
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>давайте так. в си нет [нормальной] поддержки массивов. malloc вообще возвращает не массив, а указатель. если это чужой malloc, то за массивом может быть пустота, обращение к которой поимеет непредсказуемые последствия. если же это наш malloc, то мы гарантируем, что за массивом то, что нужно. грубо говоря, возвращаем структуру. кстати, в этой структуре явно прописан размер.

М>это _сильно_ все упрощает. теперь не нужно передавать функциям указатель на данные и размер данных. скажу больше. если у нас есть функция поиска подстроки в строке и эта строка лежит где-то в середине большого блока данных, то мы передаем указатель на начало данных. да! на начало данных. там есть структура в которой размер данных и индекс строки.
М>проблема переполняющихся буферов решается сама собой, т.к. любая функция на любом уровне вложенности может проверить что она не выходит за границы буфера, ибо имеет в своем распоряжении всю необходимую инфу. типа if (scb->idx > scb->len) return -1; какие у вас возражения против кастомного аллокатора?
Мне это дело представлялось не таким заурядным, я полагал, что все обращения к памяти за границами выделенного для функции буфера каким-то хитрым прерыванием автоматически докладывались менеджеру памяти. А описанное вами больше подходит на аллокатор с дополнительным address sanitaizer, доступным (или даже принудительно используемым) для обычных функций. Пусть даже и в виде некого мета надмножества "С с аллокатором и массивами", которое генерировало абсолютно корректно работающий на всех платформах код на С (сильное утверждение), да еще и с дополнительными оптимизациями.

То, что бизнес-дяди вечно торопят с релизами и вообще всячески мешают программировать, — не новость. Обычно они очень не любят выделять людей и время на всякий рефакторинг. Видать в данном случае где-то стало совсем худо, раз они стали так бросать людей на амбразуру, не так ли?

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


Откуда такая ненависть к рефакторингу? "пишите сразу правильно" — это что за ересь такая? Никто же с сходу не набирает весь код из головы, а сначала делают какие-то минимальные реализации методов, а потом дописывают, как-то упорядочивают абстракции. А это не что иное, как рефакторинг. Расстановка пробелов — это тоже вполне себе рефакторинг, хоть и поверхностный, однако он вытекает из-за отсутствия нормальных средств (и соглашений) форматирования. Плюс тут есть такая вещь, как синдром свежего взгляда. Даже просто беглый просмотр написанного пару месяцев назад кода может запросто привести к цепочке удивительных открытий.
А вот обеспечение возможности вносить изменения и доработки в соответствии с меняющимися требованиями — так это вообще первое дело. Когда этот процесс идет с умеренной скоростью, то количество необходимых изменений должно быть минимальным. Но даже когда shit happens, и требования вообще меняются на противоположные (или просто формулируются в неожиданно четкой форме), бывает вполне возможно переиспользовать уже имеющиеся наработки.

Что касается скрытия файлов, так там вроде как была задача просто исключать "." и ".." из листинга содержимого директорий. Достаточно тривиально, не правда ли?
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Re[5]: А отрефакторю-ка я сейчас всё. Mемуар.
От: uncommon Ниоткуда  
Дата: 25.05.15 04:02
Оценка:
Здравствуйте, мыщъх, Вы писали:

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


Сразу видно, что ты не программист (что ты и сам в общем-то уже сказал). Рефакторинг тебе не понятен, и ты сделал вывод, что он не нужен. Это типичное проявления эффекта Даннинга — Крюгера.
Re[6]: А отрефакторю-ка я сейчас всё. Mемуар.
От: мыщъх США http://nezumi-lab.org
Дата: 25.05.15 15:05
Оценка:
Здравствуйте, uncommon, Вы писали:

U>Здравствуйте, мыщъх, Вы писали:



U> Сразу видно, что ты не программист (что ты и сам в общем-то уже сказал).

U> Рефакторинг тебе не понятен, и ты сделал вывод, что он не нужен.
не хочу писать большой пост, объясняющий элементарные вещи. меня окружают два типа программистов. первый (намного более многочисленный, "новая школа", поколение Z по пелевину). их девиз: "тут не думать, тут кодить надо". второй (старая школа) может три месяца ходить вокруг компьютера и не написать ни строчки, рисуя закорючки в рабочем журнале и вынашивая дизайн в голове.

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

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

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

> Это типичное проявления эффекта Даннинга — Крюгера.

нет, это не типичное проявление. если я не программист, то это значит только одно: в job description у меня не значится написания продакшен кода. однако, я близко знаком и с теми, кто пишет такой код, и с теми, кто контролирует его написание и когда я говорю "рефракторинг не нужен", то это не мой вывод. это авторитетное мнение тех, кто руководит программистами (включая и самих программистов старой школы).
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[5]: А отрефакторю-ка я сейчас всё. Mемуар.
От: MozgC США http://nightcoder.livejournal.com
Дата: 25.05.15 21:41
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>что дает рефракторинг? зачем он? пишите сразу правильно.


С "пишите сразу правильно" есть пара проблем Первая думаю почти всем известна и понятна: то что сегодня показалось правильным, завтра может не вписываться в новую или изменившуюся ситуацию/требования. Второе — зачастую чтобы написать "сразу правильно" нужно реально очень много продумывать — получается такой перфикционистский подход, и он конечно с одной стороны неплох, но бизнесу может быть невыгодно и просто не нужно чтобы код был весь такой сразу правильный, потому что на такой код может тратиться в разы больше времени. Ну и особенно обидно будет, когда вы вот так, чтобы написать сразу правильно, "3 месяца думали с ручкой в руках, не написав ни одной строчки кода" (как вы пишете о "старичках" в следующем посте), а потом бац и какое-то непредвиденное изменение ситуации.
Re[7]: А отрефакторю-ка я сейчас всё. Mемуар.
От: MozgC США http://nightcoder.livejournal.com
Дата: 25.05.15 21:54
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>не хочу писать большой пост, объясняющий элементарные вещи. меня окружают два типа программистов. первый (намного более многочисленный, "новая школа", поколение Z по пелевину). их девиз: "тут не думать, тут кодить надо". второй (старая школа) может три месяца ходить вокруг компьютера и не написать ни строчки, рисуя закорючки в рабочем журнале и вынашивая дизайн в голове.


По-моему оба типа — крайность. Должен быть баланс. Думать и стараться сразу написать хорошо конечно нужно, но время на обдумывание должно быть вменяемым, а не так что можно за час придумать нормальное решение, но мы будем думать неделю чтобы написать сразу идеально и правильно. Я сейчас начинаю приходить к тому, что код должен быть гибким, как глина, и при выборе решения нужно задавать себе вопрос: если вдруг решение окажется не самым эффективным — насколько легко или сложно будет его потом переделать? Какие в данном случае будут последствия не самого оптимального решения или кода? Если исправить будет сложно — ок, надо хорошенько подумать. А если легко — не нужно убивать кучу времени, нужно просто взять и написать, а потом если что отрефакторить или переписать — это нормально.

Да и вообще, по-моему на практике (об этом кажется еще Брукс писал) на серьезных проектах редко бывает что сразу взяли и написали правильно, нужно закладывать определенную гибкость и быть готовым, что много придется переписывать или рефакторить.
Отредактировано 25.05.2015 21:55 MozgC . Предыдущая версия .
Re[7]: А отрефакторю-ка я сейчас всё. Mемуар.
От: Aртём Австралия жж
Дата: 26.05.15 00:56
Оценка:
Здравствуйте, мыщъх, Вы писали:

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


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