Здравствуйте, Евгений Музыченко, Вы писали:
R>>А поддержка программного продукта это чья функция — не программиста?
ЕМ>Собственные творения обязан понимать и уметь чинить любой — хоть программист, хоть слесарь.
И когда программист уходит из конторы, поддержа продукта прекращается?
--
Не можешь достичь желаемого — пожелай достигнутого.
Здравствуйте, rg45, Вы писали:
R>И когда программист уходит из конторы, поддержа продукта прекращается?
Если оставшиеся программисты не в состоянии поддерживать продукт — да, примеров достаточно. Чтобы этого не происходило, одни конторы принимают меры, облегчающие программистам понимание и сопровождение чужого (а также и своего) кода, другие — нанимают программистов с развитыми аналитическими способностями.
Здравствуйте, Евгений Музыченко, Вы писали:
R>>И когда программист уходит из конторы, поддержа продукта прекращается?
ЕМ>Если оставшиеся программисты не в состоянии поддерживать продукт — да, примеров достаточно. Чтобы этого не происходило, одни конторы принимают меры, облегчающие программистам понимание и сопровождение чужого (а также и своего) кода, другие — нанимают программистов с развитыми аналитическими способностями.
А бывают еще и третьи конторы — где понимание "чужого" кода считается нормой. Для этого утверждается корпоративный стиль кодирования и на систематической основе проводятся code-review. И процесс поддержки продукта не завязан на авторов кода, коих множество. Вот мне только такие конторы и попадались почему-то. Совпадение, наверное.
--
Не можешь достичь желаемого — пожелай достигнутого.
Здравствуйте, rg45, Вы писали:
R>А бывают еще и третьи конторы — где понимание "чужого" кода считается нормой. Для этого утверждается корпоративный стиль кодирования и на систематической основе проводятся code-review.
Маленькое уточнение: понимание считается нормой до введения указанных мер, или после того, как они возымели действие? То есть, в какой доле контор к каждому из программистов предъявляется требование быстро и правильно понимать любой код, независимо от того, кем, когда и для чего он был создан?
Здравствуйте, Евгений Музыченко, Вы писали:
R>>А бывают еще и третьи конторы — где понимание "чужого" кода считается нормой. Для этого утверждается корпоративный стиль кодирования и на систематической основе проводятся code-review.
ЕМ>Маленькое уточнение: понимание считается нормой до введения указанных мер, или после того, как они возымели действие?
Странно ты вопрос ставишь. Указаныые меры введены потому что понимание считается нормой. А не "до" или "после".
R>То есть, в какой доле контор к каждому из программистов предъявляется требование быстро и правильно понимать любой код, независимо от того, кем, когда и для чего он был создан?
Во всех, которые я видел. Все коммерческие фирмы существуют ради получения прибыли от производимого продукта. А содержание гениев, творящих шедвры, это уже не коммерция, а что-то другое.
--
Не можешь достичь желаемого — пожелай достигнутого.
Здравствуйте, rg45, Вы писали:
R>Указаныые меры введены потому что понимание считается нормой.
Если бы понимание (снова уточню: достаточно быстрое и точное, а не абы какое) чужого кода (который, прежде всего, основан на чужом мышлении, чужом подходе, чужом стиле, чужом формате и т.п.) считалось (и являлось) нормой, то не было бы явной нужды в унификации этих самых подходов, стилей, форматов и прочего. Нравится одному писать по три goto на странице — и ради бога, любому понятно. Нравится другому записывать по нескольку составных операторов в одну строку — и это ради бога, любой махом разберется. Однако ж, зачем-то всю эту унификацию и стандартизацию поддерживают. Так зачем?
R>Все коммерческие фирмы существуют ради получения прибыли от производимого продукта. А содержание гениев, творящих шедвры, это уже не коммерция, а что-то другое.
То есть, с одной стороны, по-Вашему получается, что способности любого программиста к разгребанию и поддержке чужого кода, независимо от его качества, должны быть примерно равны его способностям к производству собственного. А с другой стороны, типовой программист, содержание которого экономически выгодно, с разгребанием произвольного кода, внезапно, справляется плохо, и почему-то нуждается в костылях вроде подробной документации, внятных комментариев, грамотного структурования, хорошего стиля и т.п. Мне в этом видится явное противоречие, а Вам?
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>То есть, с одной стороны, по-Вашему получается, что способности любого программиста к разгребанию и поддержке чужого кода, независимо от его качества, должны быть примерно равны его способностям к производству собственного. А с другой стороны, типовой программист, содержание которого экономически выгодно, с разгребанием произвольного кода, внезапно, справляется плохо, и почему-то нуждается в костылях вроде подробной документации, внятных комментариев, грамотного структурования, хорошего стиля и т.п. Мне в этом видится явное противоречие, а Вам?
"Примерно равны", "подробная документация", "внятные комментарии", "костыли" — это откуда все взялось? Я сказал только то, что сказал. И избавь меня, пожалуйста, от необходимости отстаивать твои домыслы.
--
Не можешь достичь желаемого — пожелай достигнутого.
Здравствуйте, Marty, Вы писали:
M>Уже под Linux — +1
Не знаю в чём ты увидел плюс.
M>Вооот, уже 1) платформозависимый код выделили в отдельные подсистемы до тебя;
далеко не весь
M>2) Posix прост как валенок по сравнению с богатством виндовых API => порт Posix->Win32 на порядок проще, чем порт Win32->Posix
ой не скажи...
как начнутся танцы с форками, сигналами, потоками и синхронизацией — простота тут же испарится.
а если tty-specific вещи то выключайте свет, кидайте бомбы.
M>А десяточная консоль вообще без приседаний понимает escape'ы?
Только флаг выставить.
M>Кстати, раз зашла речь про Escape последовательности — может в курсе, как там в линупсе, при перенаправлении в файл кто их стрипает?
Вот видишь! А это только самая верхушка TTY айсберга. Попробуй сделать полноценный remote shell, чтобы и ^ ввод работал, и ncurses приложения — и на..программируешься и напляшешься.
Я не разбирался, но считаю что они просто перестают генериться, если выходной файл их не поддерживает. Проверка: какой-нить посылкой ioctl в out-хендл.
Например dmesg имеет параметр -L/--color. Пайпинг приводит к пропаданию цвета. Смена auto на always ВНЕЗАПНО возвращает ESC последовательности на выходе из пайпа.
M>Я сделал проверкой, является ли консольный хэндл файловым, или как-то так, и в зависимости от этого раскрашиваю или нет. Так себе решение, но работает.
Параметр добавил ?
M>И призовой вопрос — почему под виндой если я в MinGW-баше запускаю гит, то он вывод раскрашивает, а если я из своей проги запускаю гит, и свою прогу запускаю под тем же башем, то вывод выдается унылый одноцветный?
Здравствуйте, IID, Вы писали:
M>>Уже под Linux — +1
IID>Не знаю в чём ты увидел плюс.
M>>Вооот, уже 1) платформозависимый код выделили в отдельные подсистемы до тебя;
IID>далеко не весь
Но это уже хоть что-то, по сравнению с портом нативного виндового в POSIX
M>>2) Posix прост как валенок по сравнению с богатством виндовых API => порт Posix->Win32 на порядок проще, чем порт Win32->Posix
IID>ой не скажи... IID>как начнутся танцы с форками, сигналами, потоками и синхронизацией — простота тут же испарится.
POSIX таки проще сделать через WinAPI, чем WinAPI через POSIX. Даже с танцами
IID>а если tty-specific вещи то выключайте свет, кидайте бомбы.
А тут можно и выкинуть, если надо по-быстрому
M>>А десяточная консоль вообще без приседаний понимает escape'ы?
IID>Только флаг выставить.
Что за флаг?
M>>Кстати, раз зашла речь про Escape последовательности — может в курсе, как там в линупсе, при перенаправлении в файл кто их стрипает?
IID>Вот видишь! А это только самая верхушка TTY айсберга. Попробуй сделать полноценный remote shell, чтобы и ^ ввод работал, и ncurses приложения — и на..программируешься и напляшешься.
Ну, если полноценный remote shell — неотъемлемая и/или ключевая часть проекта — то да. Иначе — можно просто выкинуть всё вот это
IID>Я не разбирался, но считаю что они просто перестают генериться, если выходной файл их не поддерживает. Проверка: какой-нить посылкой ioctl в out-хендл. IID>Например dmesg имеет параметр -L/--color. Пайпинг приводит к пропаданию цвета. Смена auto на always ВНЕЗАПНО возвращает ESC последовательности на выходе из пайпа.
M>>Я сделал проверкой, является ли консольный хэндл файловым, или как-то так, и в зависимости от этого раскрашиваю или нет. Так себе решение, но работает.
IID>Параметр добавил ?
Нет. Автодетект. В линупсовой версии isatty или как-то так, в виндовой — как-то аналогично над хэндлом stdio сделал.
Особых требований не было, просто для своих утилит решил вывод подраскрасить, если что-то пошло не так. Никаких пайпов и ничего какого-то сложного не предполагалось, кроме перенаправления в файл
M>>И призовой вопрос — почему под виндой если я в MinGW-баше запускаю гит, то он вывод раскрашивает, а если я из своей проги запускаю гит, и свою прогу запускаю под тем же башем, то вывод выдается унылый одноцветный?
IID>Зачем нужен MinGW баш, когда есть WSL ?
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Если оставшиеся программисты не в состоянии поддерживать продукт — да, примеров достаточно. Чтобы этого не происходило, одни конторы принимают меры, облегчающие программистам понимание и сопровождение чужого (а также и своего) кода, другие — нанимают программистов с развитыми аналитическими способностями.
Не понимаю, о каких оставшихся программистах идет речь. Я видел проект, который начинался в середине 70-х. До сих пор активно пилится.
Это я в самом дечале карьеры хотел все, что видел, к чертям переписать.
Однажды поучастствал в таком переписывании.
Здравствуйте, Privalov, Вы писали:
P>Не понимаю, о каких оставшихся программистах идет речь. Я видел проект, который начинался в середине 70-х. До сих пор активно пилится.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Вот теми, кто не помер с тех времен, и пилится.
В том-то и дело, что нет.
Мне, кстати, тоже довелось однажды участвтвать в проекте, начавшемся, по слухам, до моего рождения или около того. Вот в нем были фрагменты, с которыми я не разобрался. Суровый матан, минимизация довольно злобного функционала, ссылку на математику авторы почему-то не оставили. Плюс идентифиикаторы, читаемые только математиками.
Здравствуйте, Privalov, Вы писали:
P>Вот в нем были фрагменты, с которыми я не разобрался. Суровый матан, минимизация довольно злобного функционала, ссылку на математику авторы почему-то не оставили. Плюс идентифиикаторы, читаемые только математиками.
выходит, что Вы профнепригодны. Ну и я, разумеется, тоже — бывает, что в упор не могу уяснить, как именно работает код всего из нескольких тысяч строк, чтобы в голове сформировалась цельная картинка. Банально уставал отслеживать переходы внутри мелких подпрограмм с неясным (для меня) смыслом. "Угадал все буквы, не смог прочитать слово". Взялся бы скрупулезно все выписывать, рисовать граф переходов и зависимостей, использовал бы какие-то технические средства анализа — скорее всего, преуспел бы. Но терпения и усидчивости, при отсутствии насущной потребности, не хватало. Не моё.
выходит, что Вы профнепригодны. Ну и я, разумеется, тоже — бывает, что в упор не могу уяснить, как именно работает код всего из нескольких тысяч строк, чтобы в голове сформировалась цельная картинка. Банально уставал отслеживать переходы внутри мелких подпрограмм с неясным (для меня) смыслом. "Угадал все буквы, не смог прочитать слово". Взялся бы скрупулезно все выписывать, рисовать граф переходов и зависимостей, использовал бы какие-то технические средства анализа — скорее всего, преуспел бы. Но терпения и усидчивости, при отсутствии насущной потребности, не хватало. Не моё.
Опять же все сильно зависит от предметной области. Суровый матан — вещь специфическая. Там без бутылки первоисточников не разобраться. И даже если они есть, надо знать не только матан, но и принципы именования математиками функций и переменных.
В описанном мною случае непосредственно матан править было не нужно. Требовалось сделать пару-тройку технтческих вещей. Файлы открыть, чтобы не падало сразу в случае чего. При чтении обработать ситуацию, если что-то не в том формате пришло. Положение осложнялось тем, что там не было отдельных процедур ввода-вывода. Математики все по месту писали. При этом они свободно ориентируются в пространстве 50 измерений, но открыть файл для них — это что-то непостижимое. Взаимодействуя с ними, я справился.
Граф переходов и зависимостей мне в свое время тоже пришлось делать. Но там тема знакомая была: принять из сокета, записать в БД, выполнив по дороге какие-то проверки.
И раз участвовал в полном переписывании проекта с отстойных инструментов и языков 80-х на передовые. Ну там только некоторые структуры были нужны. Остальное делали по документации.
Здравствуйте, Marty, Вы писали:
M>>>2) Posix прост как валенок по сравнению с богатством виндовых API => порт Posix->Win32 на порядок проще, чем порт Win32->Posix
IID>>ой не скажи... IID>>как начнутся танцы с форками, сигналами, потоками и синхронизацией — простота тут же испарится.
M>POSIX таки проще сделать через WinAPI, чем WinAPI через POSIX. Даже с танцами
Опять 25.
Нет, не проще.
fork ты через WinAPI не сделаешь никогда. Через NativeAPI — да, можно. Эту фичу винда поддерживала с рождения, т.к. подсистем там было изначально 3: WinAPI, posix, OS/2.
M>>>А десяточная консоль вообще без приседаний понимает escape'ы? IID>>Только флаг выставить. M>Что за флаг?
MSDN
M>Ну, если полноценный remote shell — неотъемлемая и/или ключевая часть проекта — то да. Иначе — можно просто выкинуть всё вот это
unixway
IID>>Например dmesg имеет параметр -L/--color. Пайпинг приводит к пропаданию цвета. Смена auto на always ВНЕЗАПНО возвращает ESC последовательности на выходе из пайпа. M>>>Я сделал проверкой, является ли консольный хэндл файловым, или как-то так, и в зависимости от этого раскрашиваю или нет. Так себе решение, но работает.
IID>>Параметр добавил ?
M>Нет. Автодетект.
Пля.
Читай что я пишу!
Параметр — для НАСИЛЬНОГО отключения говно-детектов.
M>В линупсовой версии isatty или как-то так, в виндовой — как-то аналогично над хэндлом stdio сделал.
Ты даже не потрудился посмотреть как оно работает...
Два запроса в гугл:
isatty -> _tcgetattr -> ioctl.
Ровно то, о чём я выше говорил:
IID>>Я не разбирался, но считаю что они просто перестают генериться, если выходной файл их не поддерживает. Проверка: какой-нить посылкой ioctl в out-хендл.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Ну давайте так: подпишетесь под утверждением, будто любой писатель, востребованный не самой маргинальной частью населения, способен быстро и грамотно анализировать чужие литературные произведения, независимо от их стиля и объема? То есть, сможет, бегло пробежавшись по тексту, выписать характеры персонажей, отметить возможные противоречия, нарисовать граф сюжетных линий, опять же выделив возможные нестыковки, очертить блоки повествования, классифицировать произведение по стилям и т.п.
Воу-Воу! Полегшэ!
Большинству достаточно что убийца дворецкий. Накрайняк сбоку припишут своё, что сосед-Мойша напел.