LINUX.ORG.RU

Студенты пишут быдлокод (им это сходит с рук)

 , , , ,


3

3

Лор овцы, среди вас кто-нибудь преподавал будущим программистам? Допустимо ли ставить оценки за стиль и аккуратность кода? А вам самим в универе ставили?

А то домашние задания херачат как кот на клавиатуре повалялся. Функции на 5 экранов, переменные с названиями x, y, tmp1, tmp2, ошибки не проверяются. Некоторые даже отступы до сих пор для себя не открыли, так и фигачат. Сейчас это всё никак не оценивается: работы проверяются автоматической системой, скомпилялось, тесты прошли - домашка зачтена. Хочу им слегка повправить кое-че. Допустимо ли туда прикрутить стайл-чекер какой-нибудь? Какие есть разумные статические чекеры для C, C++, C#, Java и Pascal (сейчас разрешается любой из этих языков по выбору)? Как вообще оценивать общую адекватность кода - например, чтобы студент не срал временными файлами под себя, а аккуратно создал временный каталог через mkdtemp? Или всякие подводные грабли в плюсах: например, есть деструктор, но нет копирующего конструктора и оператора =. И тысячи подобного. Какой-нибудь софт умеет на такое ругаться?

А собственно стиль кодирования допустимо наавязывать студентам? Надо же им когда-то понять, что Camel_Case_With_Underscores используют только мудаки, или что за отступы в один пробел в некоторых районах бьют свинцовой трубой по пальцам. Или это всё эстетство, а студентов просто готовят к реальному миру и суровому энтерпрайз-быдлокодингу? Че думаете?

питончик ассемблер форт спасет русскую демократию...

вообще не дело требовать с бедных студентов - надо чтобы стыдно было за быдлокод и способности мыслить эффективно развивать

anonymous
()

«Стиль кодирования» к быдлокоду никакого отношения не имеет. Почти.

anonymous
()

Че думаете

чо падлы вы чо а вы чо код по понятиям херачем да чо а?

JK
()

Оставляй понравившихся студенток на дополнительные специальные занятия по исправлению стиля.

anonymous_sama ★★★★★
()

Или это всё эстетство, а студентов просто готовят к реальному миру и суровому энтерпрайз-быдлокодингу?

В реальном мире и ынтерпрайзе есть стандартные стили кодирования.

Че думаете?

За плохой стиль наказывать. Не так сильно, как за собственно быдлокод, но наказывать. В конце концов, прогнать indent - дело нехитрое.

tailgunner ★★★★★
()

Заставляй писать их большую программу постепенно добавляя в неё фичи. Но при этом студент дорабатывает не свою программу, а программу своего коллеги.

PolarFox ★★★★★
()

Допустимо ли ставить оценки за стиль и аккуратность кода?

Не только допустимо, но и необходимо. Как в школьные годы на уроках русского языка, почерк был необходимым условием для того, чтобы работа была вообще проверена.

p.s. Как с тобой связаться?

Сейчас как раз делаю АС для проверки лаб на своей кафедре, может чем поможем друг другу.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

работы проверяются автоматической системой, скомпилялось

Ну так -Wall -Werror?

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

DarkEld3r ★★★★★
()

Всегда стараюсь сдавать максимаулно обфусцированный код, чтобы преподы не смогли потом воспользоваться моими гениальными наработками.

fake_heat
()

Че думаете?

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

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

Эта проблема меня занимала долгое время (вернее, она сама напоминала о себе каждый раз при виде кода) и я пришёл к ряду соображений, суть которых сводится к тому, что с этим ничего делать не надо, потому что:

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

Deleted
()

Я пока что всего-лишь студент-первокур, но тот препод, которому я обязан всеми своими скиллами (он ещё в школе у нас преподавал программирование), именно так и делал. И до сих пор делает.

Софта для такого типа проверок, насколько мне известно, не существует. Только руками.

intelfx ★★★★★
()

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

anonymous
()
Ответ на: комментарий от Deleted

p.s. Как с тобой связаться?

Дык пиши прямо сюда.

На нашем факультете навелосипедили свою систему лет 10 назад, но она закрытая, к сожалению. Да и страшная она уже, если честно. Неужели нет свободных решений?

kot_otbelivatel
() автор топика
Ответ на: комментарий от Deleted

вопрос стиля кода в первичной стадии решается в течение недели

Если его решать. Многие его не решают до пенсии.

tailgunner ★★★★★
()

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

Казнить, нельзя помиловать.

Puzan ★★★★★
()
Ответ на: комментарий от intelfx

Софта для такого типа проверок, насколько мне известно, не существует. Только руками.

Если определен единый стиль кодирования, то можно прогонять astyle'ом с нужными настройками и смотреть количество изменившихся символов. Если это количество (можно вычислять тоже расстояние левенштейна) превосходит рамки разумного, то GTFO.

p.s. Автоматизировать можно почти все.

Deleted
()
Ответ на: комментарий от Deleted

По замыслу, университет должен подготовить студента ко взрослой жизни и т. д. Если он до сих пор о стиле не задумался, ну вот и задумается.

kot_otbelivatel
() автор топика
Ответ на: комментарий от kot_otbelivatel

На нашем факультете навелосипедили свою систему лет 10 назад, но она закрытая, к сожалению

Увы.

Неужели нет свободных решений?

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

Deleted
()
Ответ на: комментарий от Puzan

Имел я дело с таким говнокодером. Он пол года писал кусок сложной системы. Всё было хорошо, пока не вылез баг, который ни он ни мы не смогли исправить - такого пиз...ца я в жизни не видел. Уволили, и переписали с нуля.

Puzan ★★★★★
()

Допустимо.

Deleted
()
Ответ на: комментарий от kot_otbelivatel

Еще, к слову, прикручу старое решение с проверкой заимствования в работах (в конце работы строит такой няшный график кто у кого списал :3).

Deleted
()
Ответ на: комментарий от Deleted

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

Стив Макконнелл, «Совершенный код». И он прав таки.

E ★★★
()

за отступы в один пробел в некоторых районах бьют свинцовой трубой по пальцам

За отступы пробелами вообще должны лишать возможности иметь наследство. Самым болезненным способом.

E ★★★
()
Ответ на: комментарий от kot_otbelivatel

Как будет иметь законченный (с логической точки зрения, а не по части функций) вид, то скорее всего уйдет в паблик. Пока публичного репозитория нет.

Deleted
()
Ответ на: комментарий от Deleted

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

intelfx ★★★★★
()
Ответ на: комментарий от E

хочу посмотреть на понятный код, который не нужно комментировать, чего-нибудь элементарного типа pipelining в paxos.

qnikst ★★★★★
()
Ответ на: комментарий от intelfx

пошлют это нафиг и будут правы

Нет, правы они не будут. В любой нормальной группе разработки используют единый стиль кодирования, поэтому пусть привыкают.

А то придет человек на работу, и будет рассказывать про «собственный стиль». Он, конечно, может быть и гениальным, но скорее всего будет трешем.

Deleted
()
Ответ на: комментарий от Deleted

«Будут правы» в том смысле, что learning curve is too steep. Начинать нужно с малого, а именно «хотя бы с какого-нибудь стиля».

intelfx ★★★★★
()

Camel_Case_With_Underscores

Вот это нужно уточнить. Собсно я слышал что:

CaseWithoutUnderscores - это паскаль кейс, а

caseWithoutUnderscores - таки уже кемел (первая букифка маленькая).

Не?

deep-purple ★★★★★
()
Ответ на: комментарий от E

За отступы пробелами вообще должны лишать возможности иметь наследство. Самым болезненным способом.

А за отступы табами надо живыми в землю закапывать.

akk ★★★★★
()
Ответ на: комментарий от akk

Не нужно закапывать ни тех ни других. Нужно в контексте одного проекта или одной группы разработчиков утвердить единый стиль и его придерживаться.

deep-purple ★★★★★
()
Ответ на: комментарий от E

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

А если человеку нужно выбрать наиболее подходящий алгоритм из 100 вариантов? Он должен вчитываться во все 100?

Видимо, речь шла о чем-то очевидном.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от akk

Ты, наверное, хотел сказать «за выравнивание табами».

Indent with tabs, align with spaces — это идеальный метод форматирования кода.


void f() {
<-->int a = foo(),
<-->    b = bar();
<-->double c = g (a,
<-->              b);
}
intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)

Лор овцы, среди вас кто-нибудь преподавал будущим программистам?

да

Допустимо ли ставить оценки за стиль и аккуратность кода?

естественно, но нужно рассказать основы

А собственно стиль кодирования допустимо навязывать студентам?

да, только не навязывать, а рассказывать как правильно, с примерами и обоснованием

shty ★★★★★
()
Ответ на: комментарий от hateyoufeel

Привет, я программист на пистоне и ни разу в жизни не пользовался в нём пробелами для отступов.

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

E ★★★
()

Допустимо ли ставить оценки за стиль и аккуратность кода?

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

init_6 ★★★★★
()
Ответ на: комментарий от E

Стив Макконнелл, «Совершенный код». И он прав таки.

Тут возможно недопонимание из-за разных направлений программирования.

Для высокоуровневых безусловно, можно обойтись без комментариев. Но за отсутствие комментариев в низкоуровневых языках нужно отстреливать руки.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.