Автор Тема: Нужна ли "инженерия кодинга"?  (Прочитано 17262 раз)

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Нужна ли "инженерия кодинга"?
« Ответ #15 : Февраль 11, 2012, 10:54:38 am »
Рассмотрите мой пример применительно к разным течениям рукопашного боя спецслужб, например. Там тоже нет "единого рукопашного боя". Есть, например, стиль Кадочникова. Есть другое.. и т.п.
Но прям таки к "искусствам" это постольку поскольку. Без приплетения религии и особой философии. Цель проста - наиболее эффективно вырубить противника используя все, что под руку попадется.

Поэтому не надо идти к некому абстрактному просветвлению, нужно стремиться к эффективности решения возникающих задач в реальном мире.

PS. И таки да, погрузившись в волшебный мир микроконтроллеров я вижу, что за последние лет 20 особого прогресса в софтверостроении по сути нет. Микроконтроллеры, в отличае от CPU десктопов и серверов, развиваются в другом направлении - при сохранении текущей производительности каждая следующая версия микроконтроллера имеет меньший размер, потребление и больше интегрированных контроллеров в чип (например I2C). Так вот - инструментарий для написания софта, библиотеки и подходы там где-то на уровне 80-90 годов как были, так и остались. Ничего не меняется. То есть, вот конкретно тут есть куда расти отрасли. Причем экстенсивно тут не выйдет. Тут думать нужно.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

DIzer

  • Гость
Re: Нужна ли "инженерия кодинга"?
« Ответ #16 : Февраль 11, 2012, 11:36:10 am »

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

alexus

  • Гость
Re: Нужна ли "инженерия кодинга"?
« Ответ #17 : Февраль 11, 2012, 12:30:36 pm »
Мне в упор не понять, почему ввести правила на отдельном форуме - это заставить всех и везде.
Можно подумать,  кто-то что-то Вам обещал, а потом не оправдал ваших ожиданий?
Вы правы... перед тем, как придти на оберонкоре (равно, как и на данный форум), я внимательно прочитал правила. Эти правила обещали мне... На поверку, всё оказалось иначе, оказывается есть люди, которые обязаны соблюдать данные правила, а есть те, кому на них наплевать. И, как ни странно, первые всегда виноваты, а вторые всегда правы. Типичный пример, когда у второй стороны нет аргументов, она "отвечает" оппонентам... с помощью действий модератора.
Если Вы позволите, то я Вам напомню историю месячной давности.
  • Вы начали тему, где стали "петь дифирамбы" "циклу Дейкстры" (ЦД), и привели пример, где якобы использование ЦД даёт более эффективную реализацию;
  • На это С.Ю. Губанов привёл решение, которое показывает, что возможно решение Вашей задачи без ЦД в несколько раз быстрее, чем приведённое Вами;
  • Я выразил восхищение быстротой и качеством решения С.Ю. Губанова и предложил вариант его развития;
  • Вы обрушились на меня с претензиями, якобы моё предложение не относится к Вашей постановке задачи;
  • Я Вам на это сказал, что Ваше решение я даже не рассматривал, а комментировал решение С.Ю. Губанова;
  • Модератор секвестировал мой ответ Вам.
Может быть хотя бы Вы ответите, какие правила я нарушил? Да, я считал и продолжаю считать, что ЦД затрудняет понимание логики программы, и от него надо стараться отказываться при появлении любой внятной альтернативы. Пример с решением, предоставленным С.Ю. Губановым, замечательное тому подтверждение. У Вас не было и сейчас нет весомых аргументов, опровергающих данное положение. В результате были применены административные меры, так как моя точка зрения стала нарушением правил вашего форума? К Вашей совести я не обращаюсь... просто повторю... тьфу и на вас всех...

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Нужна ли "инженерия кодинга"?
« Ответ #18 : Февраль 11, 2012, 08:08:41 pm »
А вот давайте спросим у Vlad'a, почему же он боится написания своего сложного кода? ;-) И боится ли он вообще?

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

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

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

В результате нескольких итераций родился один компонент с интерфейсом из нескольких методов (можете тоже поразмыслить и пределожить возможные  варианты - посмотреть насколько мысли сходятся). Из ~5 комментариев типа "здесь мы лочим мьютекс потому что... а здесь не лочим потому что..." остался один - потому что я смог упростить код так, что одни моменты стали очевиднее, а другие моменты "покрыть" тестами (да, юнит тестик тоже появился вместе с компонентиком). Оставшийся один комментарий - действительно тонкий момент, который я не смог покрыть тестом (высокая "конкурентность" между двумя действиями, возможная проблема не репродьюсится даже на сотне потоков и множестве итераций). Возможно при большем опыте я бы смог выразить этот момент в коде, но пока остается только комментарий :)
Сам компонент не имеет зависимостей от других компонентов (формы). Точнее использует только один абстрактный коллбэк (который в итоге цепляется к форме, а в юниттесте легко подставляется заглушка).

Понятно, что для таких задач никогда не будет ничего готового в стандартной библиотеке. Ну разве что там будет компонент "веб браузер" ;) С другой стороны, я не хочу каждый раз начинать с нуля: я хочу иметь в библиотеке потоки, примитивы синхронизации и даже "очередь". Иначе 90% времени я буду тратить на совершенно неинтересную фигню типа особенностей condition variables на конкретной платформе (да, код писан/тестирован был на винде, но сразу заработал на маке).
Да, каким боком мне помогли бы здесь заинтриговавшие меня карты памяти - пока не представляю. Подозреваю, что это просто еще более высокий уровень системы.

Peter Almazov

  • Sr. Member
  • ****
  • Сообщений: 482
    • Просмотр профиля
Re: Нужна ли "инженерия кодинга"?
« Ответ #19 : Февраль 12, 2012, 06:36:12 am »
Последние несколько дней решал такую задачу:
А какой язык использовался?

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Нужна ли "инженерия кодинга"?
« Ответ #20 : Февраль 12, 2012, 01:50:09 pm »
А какой язык использовался?

C++ и библиотека boost.

Есть у кого в ББ готовые наработки, чтобы такое решить без отвлечения на частности (прежде всего речь о наработках в области межпроцессного взаимодействия разных экземпляров ББ)? Т.е. чтоб "IMPORT IPC;" и вперед. И если есть, то как это примерно выглядит (архитектурно)?

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Нужна ли "инженерия кодинга"?
« Ответ #21 : Февраль 12, 2012, 02:36:15 pm »
А какой язык использовался?

C++ и библиотека boost.

Есть у кого в ББ готовые наработки, чтобы такое решить без отвлечения на частности (прежде всего речь о наработках в области межпроцессного взаимодействия разных экземпляров ББ)? Т.е. чтоб "IMPORT IPC;" и вперед. И если есть, то как это примерно выглядит (архитектурно)?
Погоди, а как в ББ архитектурно будет выглядеть многопоточность вообще? Или у тебя считалось в другом процессе а не потоке? По моему, данная задача может быть решена не одним ББ а ансамблем из нескольких ББ + неблокирующие операции для коммуникаций.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Нужна ли "инженерия кодинга"?
« Ответ #22 : Февраль 12, 2012, 03:30:12 pm »
Погоди, а как в ББ архитектурно будет выглядеть многопоточность вообще? Или у тебя считалось в другом процессе а не потоке? По моему, данная задача может быть решена не одним ББ а ансамблем из нескольких ББ + неблокирующие операции для коммуникаций.

Да, я имел ввиду вариант нескольких ББ.

Илья Ермаков

  • Sr. Member
  • ****
  • Сообщений: 493
    • Просмотр профиля
Re: Нужна ли "инженерия кодинга"?
« Ответ #23 : Февраль 13, 2012, 07:50:45 am »
Может быть хотя бы Вы ответите, какие правила я нарушил? Да, я считал и продолжаю считать, что ЦД затрудняет понимание логики программы, и от него надо стараться отказываться при появлении любой внятной альтернативы. Пример с решением, предоставленным С.Ю. Губановым, замечательное тому подтверждение. У Вас не было и сейчас нет весомых аргументов, опровергающих данное положение. В результате были применены административные меры, так как моя точка зрения стала нарушением правил вашего форума? К Вашей совести я не обращаюсь... просто повторю... тьфу и на вас всех...

Может быть хотя бы Вы ответите, какие правила я нарушил? Да, я считал и продолжаю считать, что ЦД затрудняет понимание логики программы, и от него надо стараться отказываться при появлении любой внятной альтернативы. Пример с решением, предоставленным С.Ю. Губановым, замечательное тому подтверждение. У Вас не было и сейчас нет весомых аргументов, опровергающих данное положение. В результате были применены административные меры, так как моя точка зрения стала нарушением правил вашего форума? К Вашей совести я не обращаюсь... просто повторю... тьфу и на вас всех...

Во-первых, по ЦД я ничего не имею против Ваших с Губановым бесед. Они никак не противоречили моему сообщению. В том числе о том, что был оставлен ЦД "за явным преимуществом" (разумеется, понятности, а не эффективности, потому что ниже в ветке я изложил свой взгляд на эффективность, в рамках которого множитель 1,5-2 для конкретного куска кода меня, по умолчанию, не волнует, в отличие от того же удачно организованного управления памятью, которое даёт реально гораздо больший эффект для многих задач).
Понятность, про которую я говорю, была оценена двумя людьми (коллегой-студентом и мной; при этом я отказался от своего варианта с вложенными циклами, хотя первоначально не доверял ЦД). Возможно, это субъективная понятность, для людей с определённым "разворотом мозгов" (мы привыкли к инвариантам циклов, с одной стороны, и к "автоматному программированию", с другой). Но это никак не позволяет Вам "гнуть пальцы", что вы нам "что-то там показали". Я отказался от тех вариантов, которые ниже Вы предложили с Губановым, ещё до того, как заводил тему на форуме. За идею Губанова сравнивать сначала с первой буквой, а потом во вложенной процедуре, я его поблагодарил и публично на форуме, и в ЛС, потому что идея для меня показалась свежей и эффектной.

Ну а по поводу того, что Вас кто-то обидел административными мерами - какая-то полная ерунда. Тему поделили на две в силу того, что в ней пошло обсуждение вопросов эффективности, а не вопросов понятности и лёгкости составления циклов тем или иным способом. Поделили вообще без моего участия. Такое деление у нас выполнялось неоднократно - потому что при любом обсуждении подобных тем всегда кто-то поднимает тему "выжимания максимума", и эту тему у нас принято считать побочной. И отделять обычно из образовательных форумов в "Другие вопросы программирования".
И нарушение правил в ветке было не в плане какой-то "злостности" или "политики", а в том смысле, что ветка содержала другую тему. Которая и была отделена.
На Вас вообще никто не держал никакого "камня за пазухой". Губанов и Info21 начали очередную ссору, которые у них постоянно. Поэтому ветка стала "конфликтной". Вы там ни с какого боку не в "эпицентре". Единственное, что в горячке их разборки Вам никто ничего не объяснял, что могло вызвать ощущение, что "разборки" как-то направлены и против Вас.
Поэтому я крайне удивлён вашими словами здесь. Много нового узнал про Вас. И не только я, кажется...

alexus

  • Гость
Re: Нужна ли "инженерия кодинга"?
« Ответ #24 : Февраль 13, 2012, 08:01:26 am »
На Вас вообще никто не держал никакого "камня за пазухой". Губанов и Info21 начали очередную ссору, которые у них постоянно. Поэтому ветка стала "конфликтной". Вы там ни с какого боку не в "эпицентре". Единственное, что в горячке их разборки Вам никто ничего не объяснял, что могло вызвать ощущение, что "разборки" как-то направлены и против Вас.
Поэтому я крайне удивлён вашими словами здесь. Много нового узнал про Вас. И не только я, кажется...
Объясните конкретно, почему было секвестировано моё сообщение Термингалеевым?..
Что касается "узнавания нового", то я (и не только я) узнал про вашу команду ничуть не меньше... этого хватило на то, чтобы прекратить общаться с вами всеми. Возможно, вы неплохие специалисты, но... порядочности вам не хватает. И проблема в том, что стать неплохим специалистом можно, а вот...

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Нужна ли "инженерия кодинга"?
« Ответ #25 : Февраль 13, 2012, 08:02:33 am »
Может быть хотя бы Вы ответите, какие правила я нарушил? Да, я считал и продолжаю считать, что ЦД затрудняет понимание логики программы, и от него надо стараться отказываться при появлении любой внятной альтернативы. Пример с решением, предоставленным С.Ю. Губановым, замечательное тому подтверждение. У Вас не было и сейчас нет весомых аргументов, опровергающих данное положение. В результате были применены административные меры, так как моя точка зрения стала нарушением правил вашего форума? К Вашей совести я не обращаюсь... просто повторю... тьфу и на вас всех...
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Илья Ермаков

  • Sr. Member
  • ****
  • Сообщений: 493
    • Просмотр профиля
Re: Нужна ли "инженерия кодинга"?
« Ответ #26 : Февраль 13, 2012, 08:06:35 am »
Объясните конкретно, почему было секвестировано моё сообщение Термингалеевым?..

Напомните детали. Я вообще не обращал на ту ветку внимания. Что помню, я Вам написал выше - пошло обсуждение эффективности - его отделили.

alexus

  • Гость
Re: Нужна ли "инженерия кодинга"?
« Ответ #27 : Февраль 13, 2012, 08:19:36 am »
Объясните конкретно, почему было секвестировано моё сообщение Термингалеевым?..

Напомните детали. Я вообще не обращал на ту ветку внимания. Что помню, я Вам написал выше - пошло обсуждение эффективности - его отделили.
  • Вы начали тему, где стали "петь дифирамбы" "циклу Дейкстры" (ЦД), и привели пример, где якобы использование ЦД даёт более эффективную реализацию;
  • На это С.Ю. Губанов привёл решение, которое показывает, что возможно решение Вашей задачи без ЦД в несколько раз быстрее, чем приведённое Вами;
  • Я выразил восхищение быстротой и качеством решения С.Ю. Губанова и предложил вариант его развития;
  • Вы обрушились на меня с претензиями, якобы моё предложение не относится к Вашей постановке задачи;
  • Я Вам на это сказал, что Ваше решение я даже не рассматривал, а комментировал решение С.Ю. Губанова;
  • Модератор секвестировал мой ответ Вам.
Это было описано несколькими сообщениями выше. Остальные детали можете искать на своём форуме... в этом бедламе, я вряд ли смогу что-то найти...

Илья Ермаков

  • Sr. Member
  • ****
  • Сообщений: 493
    • Просмотр профиля
Re: Нужна ли "инженерия кодинга"?
« Ответ #28 : Февраль 13, 2012, 08:32:46 am »
Я это прочитал.
И пояснил, почему ветка была разделена.
(ни с какими претензиями личными я вообще не обрушивался, а сказал, что обсуждение идёт не в ту сторону, на которую была открыта тема).
Посему можете не цитировать Ваш "список событий" повторно, я считаю, что исчерпывающе объяснил всё, что его касается.

Но я не помню, о каком сообщении идёт речь: "Объясните конкретно, почему было секвестировано моё сообщение Термингалеевым?.." - и по этому пункту ничего предполагать не могу. (и то, предполагать - потому что я - не администрация форума).


alexus

  • Гость
Re: Нужна ли "инженерия кодинга"?
« Ответ #29 : Февраль 13, 2012, 08:53:39 am »
Я это прочитал.
И пояснил, почему ветка была разделена.
А я об этом не спрашивал...

(ни с какими претензиями личными я вообще не обрушивался, а сказал, что обсуждение идёт не в ту сторону, на которую была открыта тема).
Посему можете не цитировать Ваш "список событий" повторно, я считаю, что исчерпывающе объяснил всё, что его касается.
Тему начали Вы... В заголовке темы было о "Цикле Дейкстры"... никуда в сторону от обсуждения ЦД мы не отклонялись. Сергей Губанов привёл альтернативу, я его поддержал. Флейм начался в параллельной ветке, я в нём не участвовал. Всё.

Но я не помню, о каком сообщении идёт речь: "Объясните конкретно, почему было секвестировано моё сообщение Термингалеевым?.." - и по этому пункту ничего предполагать не могу. (и то, предполагать - потому что я - не администрация форума).
Хорошо... напомню...
Илья, я понимаю, что очень неприятно, когда тычут... лицом в своё же... Мне это ничуть не приятнее, чем Вам... делаю я это только для того, чтобы Вы могли посмотреть на себя же... другими глазами... Теплится у меня надежда, что может быть ещё не поздно... хотя понимаю, что вряд ли...