mbla: (Default)
[personal profile] mbla
У наших студентов на пятом курсе полугодовая стажировка.

Найти стаж обычно просто - всем хочется получить готового инженера по дешёвой цене - платят стажёрам, естественно, мало.

Обычно ребят берут разработчиками на конкретные проекты.

После окончания стажировки - защита - в комиссии кто-то от нас и руководитель стажа "с места". Иногда руководитель с места по тем или иным причинам отсутствует и вместо себя присылает оценочную бумагу.

Сегодня у меня "защищал" свою работу мальчик, у которого страсть - интеллектуальные компьютерные игры. Ему удалось найти соответствующий стаж. В компании, которую 5 лет назад организовали двое братьев - совсем молодые ребята - были у них какие-то идеи, взяли кредиты. Сейчас в компании шестеро, естественно, друзья-сокурсники. Такие маленькие фирмы, по крайней мере во Франции, всегда дружеские тусовки.

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

Первое - понятное - функция должна умещаться на экране - не умещается - разбивай.

А вот второе меня поразило - комментарии запрещены. Идея в том, что комментарии позволяют писать нечётко, - дескать, прочтёт человек комментарий и всё поймёт, а на самом деле, ежели код хорошо написан, он должен быть полностью понятен при чтении с листа.

Это правило, естественно, совершенно противоречит правилам, которым учат на первом курсе, когда за отсутствие комментариев аж оценку снижают.

Как по-вашему?

Date: 2005-09-23 07:14 am (UTC)
From: [identity profile] afrolover.livejournal.com
я не оговорю о процессе обучения, а об "индустриальном" написании программ. При обучении очень часто на решение задачи накладываются дополнительные ограничения. Например, решите, ребятки, эту задачу, но не применяя того-то и того-то. Или, напишите программку сами, не используя стандартных библиотек. Это совершенно нормально. В обучении. Но ни один программист в своём уме не будет переписывать то, что уже есть в стандартной библиотеке... Так что, да, для обучения на языке высокого уровня можно выпендриться и заставить учеников "писать внятно". Особенно, если примеры остаются на уровне "два плюс два".
В реальной же практике, не все языки / конструкции языка легко читабельны. Поэтому, кроме внятного написания кода, ещё пишут и комментарии, там где это может облегчить понимание кода / идеи / алгоритма.

Да чего тут спорить - возьмите какую-нибудь широкоупотребимую и общепризнанную библиотеку для вашего любимого языка и посмотрите её исходники... Это будет хорошим примером профессионального программирования ;-)

Date: 2005-09-23 05:24 pm (UTC)
From: [identity profile] mbla.livejournal.com
А может быть всё-таки можно писать алгоритмически? Я думаю, эти ребята хотят доказать, что можно, что профессиональное программирование не обязательно должно быть "грязным".

Date: 2005-09-24 08:28 am (UTC)
From: [identity profile] afrolover.livejournal.com
да, конечно, код должен быть наиболее читаемым, переменные должны говорить сами за себя и т.д. Но, как показывает практика, даже при выполнении всех этих правил, иногда сидишь и смотришь на чужой код (а иногда и на свой собственный, но забытый) как баран на новые ворота. Т.к. даже в языках высокого уровня, где всё читается "само собой", программисту порой приходится принимать те или иные алгоритмические решения. Например, нужно отсортировать массив. Сразу пишу маленький комментарий: "Сортирую XXX методом, т.к. в большинстве случаев матрица пустотелая" (или как это по-русски?). Заметьте, это может быть и неправдой (я ошибся в предположении, или неправильно выбрал метод сортировки для пустотелых матриц), но тому кто читает, сразу ясно, что творилось у меня в голове и почему я сортировал так или иначе. И он сразу сможет судить о правильности моего кода. Если же я напишу без коментария, то народ будет сидеть и ломать голову. При этом половина не додумается до моей умной идеи и будут думать "вот козёл! выпендрился на ровном месте!", а другая половина придумает решение по-гениальнее и тоже будут недоумевать, почему я так сделал. Но и те и другие будут бояться править мой код, т.к. не будут до конца уверены, какая же мысль у меня бродила в голове, побудившая меня написать именно так. И, в конце концов, мой код так и останется неисправленным, т.к. чтобы его исправить, человек должен быть на 100% уверен в своей правоте, а всегда остаётся небольшое "вдруг он всё-таки умнее и видел что-то, чего не заметил я?".

Код должен читаться, а не быть головоломкой. И "головоломность" может происходить не только из корявого написания, но и из оптимизаций и идей пишущего. И, даже если я пишу мой код только для "крутых профессионалов", почему не объяснить им человеческим языком, что меня побудило сделать тот или иной выбор и что у меня было в голове в тот момент? Это им позволит сходу вникнуть в мой код и судить о гениальности или ущербности моей идеи, не ломая голову и не теряясь в догадках.

Date: 2005-09-25 08:54 pm (UTC)
From: [identity profile] mbla.livejournal.com
Понимаю. Но ведь алгоритмический язык на то и алгоритмический, чтоб на нём можно было читать по-человечески. Может быть, алгоритм с комментариями внутри в качестве комментария? Не комментировать код, что часто делает его ещё менее читаемым, а приложить к коду алгоритм с объяснениями, почему был сделан определённый выбор?

January 2023

S M T W T F S
1 234567
89101112 13 14
151617 1819 2021
222324252627 28
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 26th, 2025 07:40 pm
Powered by Dreamwidth Studios