вопрос практикующим программистам
Sep. 22nd, 2005 12:21 amУ наших студентов на пятом курсе полугодовая стажировка.
Найти стаж обычно просто - всем хочется получить готового инженера по дешёвой цене - платят стажёрам, естественно, мало.
Обычно ребят берут разработчиками на конкретные проекты.
После окончания стажировки - защита - в комиссии кто-то от нас и руководитель стажа "с места". Иногда руководитель с места по тем или иным причинам отсутствует и вместо себя присылает оценочную бумагу.
Сегодня у меня "защищал" свою работу мальчик, у которого страсть - интеллектуальные компьютерные игры. Ему удалось найти соответствующий стаж. В компании, которую 5 лет назад организовали двое братьев - совсем молодые ребята - были у них какие-то идеи, взяли кредиты. Сейчас в компании шестеро, естественно, друзья-сокурсники. Такие маленькие фирмы, по крайней мере во Франции, всегда дружеские тусовки.
Так вот студент мой, страшно расстроенный тем, что его не оставили - нет у них денег ещё одному человеку платить - рассказал, что "отцы-основатели" с самого начала установили несколько абсолютно жёстких правил программирования.
Первое - понятное - функция должна умещаться на экране - не умещается - разбивай.
А вот второе меня поразило - комментарии запрещены. Идея в том, что комментарии позволяют писать нечётко, - дескать, прочтёт человек комментарий и всё поймёт, а на самом деле, ежели код хорошо написан, он должен быть полностью понятен при чтении с листа.
Это правило, естественно, совершенно противоречит правилам, которым учат на первом курсе, когда за отсутствие комментариев аж оценку снижают.
Как по-вашему?
Найти стаж обычно просто - всем хочется получить готового инженера по дешёвой цене - платят стажёрам, естественно, мало.
Обычно ребят берут разработчиками на конкретные проекты.
После окончания стажировки - защита - в комиссии кто-то от нас и руководитель стажа "с места". Иногда руководитель с места по тем или иным причинам отсутствует и вместо себя присылает оценочную бумагу.
Сегодня у меня "защищал" свою работу мальчик, у которого страсть - интеллектуальные компьютерные игры. Ему удалось найти соответствующий стаж. В компании, которую 5 лет назад организовали двое братьев - совсем молодые ребята - были у них какие-то идеи, взяли кредиты. Сейчас в компании шестеро, естественно, друзья-сокурсники. Такие маленькие фирмы, по крайней мере во Франции, всегда дружеские тусовки.
Так вот студент мой, страшно расстроенный тем, что его не оставили - нет у них денег ещё одному человеку платить - рассказал, что "отцы-основатели" с самого начала установили несколько абсолютно жёстких правил программирования.
Первое - понятное - функция должна умещаться на экране - не умещается - разбивай.
А вот второе меня поразило - комментарии запрещены. Идея в том, что комментарии позволяют писать нечётко, - дескать, прочтёт человек комментарий и всё поймёт, а на самом деле, ежели код хорошо написан, он должен быть полностью понятен при чтении с листа.
Это правило, естественно, совершенно противоречит правилам, которым учат на первом курсе, когда за отсутствие комментариев аж оценку снижают.
Как по-вашему?
no subject
Date: 2005-09-22 10:46 am (UTC)А в реальной жизни иногда подолгу думаешь, как оптимизировать тот или иной кусок кода. Так вот, тот, кто будет читать этот код (без комментариев) проведёт ещё больше времени, чтобы его понять...
Я уж не говорю, что есть вещи, которые просто нечитабельны. В C++ шаблоны (templates) нечитабельны. Будьте вы плохим программистом или хорошим. Это не от вас зависит - это проблема языка. Поэтому комменты, пусть самые кратенькие, очень скрашивают жизнь...
Ща попробую выковырять откуда-ниб примерчик
// [if O1_size available, then attempt which_t size optimization...]
// [select signed char if fewer than SCHAR_MAX types, else signed int:]
typedef typename mpl::apply_if<
mpl::equal_to< mpl::O1_size, mpl::long_<-1> >
, mpl::identity< int >
, mpl::if_<
mpl::less< mpl::O1_size, mpl::int_ >
, signed char
, int
>
>::type which_t;
на мой взгляд, комментарии тут совсем не лишние...
no subject
Date: 2005-09-22 11:00 am (UTC)no subject
Date: 2005-09-22 11:21 am (UTC)((?:(?![-_])[\w-]+\.)+[A-Za-z][\w-]+)
ну какому дураку тут понадобятся комментарии? Читайте код, господа...
no subject
Date: 2005-09-22 03:07 pm (UTC)no subject
Date: 2005-09-22 03:20 pm (UTC)И почему нужно писать для профессионалов? А если мой код будут читать не только "крутые программеры"? Что, если новичок захочет взять его за пример и разобраться? Если бы Ландау и Фейнман писали только для таких крутых мужиков как они, нам бы было гораздо труднее учиться физике...
no subject
Date: 2005-09-22 09:37 pm (UTC)no subject
Date: 2005-09-23 07:14 am (UTC)В реальной же практике, не все языки / конструкции языка легко читабельны. Поэтому, кроме внятного написания кода, ещё пишут и комментарии, там где это может облегчить понимание кода / идеи / алгоритма.
Да чего тут спорить - возьмите какую-нибудь широкоупотребимую и общепризнанную библиотеку для вашего любимого языка и посмотрите её исходники... Это будет хорошим примером профессионального программирования ;-)
no subject
Date: 2005-09-23 05:24 pm (UTC)no subject
Date: 2005-09-24 08:28 am (UTC)Код должен читаться, а не быть головоломкой. И "головоломность" может происходить не только из корявого написания, но и из оптимизаций и идей пишущего. И, даже если я пишу мой код только для "крутых профессионалов", почему не объяснить им человеческим языком, что меня побудило сделать тот или иной выбор и что у меня было в голове в тот момент? Это им позволит сходу вникнуть в мой код и судить о гениальности или ущербности моей идеи, не ломая голову и не теряясь в догадках.
no subject
Date: 2005-09-25 08:54 pm (UTC)no subject
Date: 2005-09-22 11:04 am (UTC)Да, там комментарии чрезвычайно полезны.
Правда, мы практикуем подход "сначала сделать красиво и наглядно, а потом искать и оптимизировать узкие места". В этом случае комментарием к оптимизированному кошмару становится просто закомментированный предыдущий читабельный фрагмент кода, который делал то же самое, но неоптимально, и примечание о факте проведения оптимизации.
no subject
Date: 2005-09-22 11:09 am (UTC)no subject
Date: 2005-09-22 11:25 am (UTC)no subject
Date: 2005-09-22 11:08 am (UTC)no subject
Date: 2005-09-22 11:45 am (UTC)C++ - кошмар, распространившийся лишь благодаря внешнему сходству с C. Впрочем, об этом кто только не говорил... Мне понравился документ "A Critique of C++ (3rd Edition)".
no subject
Date: 2005-09-22 09:54 pm (UTC)no subject
Date: 2005-09-23 06:36 am (UTC)И почему бы не вести обучение на чём-нибудь более современном - не Object Pascal, так хоть VB.NET?
no subject
Date: 2005-09-23 05:31 pm (UTC)no subject
Date: 2005-09-22 11:48 am (UTC)Есть языки высокого уровня, в которых потребность к коментариям гораздо меньше. Чем ближе язык программирования к человеческому языку, тем легче его понять и тем меньше нужно комментариев. Но, к сожалению, пока ещё не научились делать такие языки достаточно мощными и "безопасными".
Поэтому приходится выбирать промежуточные решения. И чем ниже вы опускаетесь, тем сложнее становится читать и писать код.
no subject
Date: 2005-09-22 11:55 am (UTC)