LINUX.ORG.RU

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

 , , , ,


3

3

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

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

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

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

Ога. 9-11 классы + 1 и 4 курсы инста)) И да, семинары и лекции тоже вёл. И да, сессии и контрольные были.

koreijutsu
()
Ответ на: комментарий от koreijutsu
        // Переменная для хранения значения A
        int a;
        // Переменная для хранения значения B
        int b;
        // Результат вычисления
        int result;


        // Ввод переменных A и B
        inputAB(a, b);

        // Получаем сумму A и B
        result = getSummAB(a, b);

        // Вывод результата
        printResult(result);

        return 0;

А почему над return 0 не написано «возвращаем код возврата 0»? Алсо, пиздец.

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

Лол)) Все прекрасно поняли суть примера. Есть действие, есть описание к нему. Я отразил суть - дальше уже дело ТС. В любом случае аналогичная практика вполне положительна. Лично я никого не призываю к тому, чтобы делать именно так. ТС спросил, я рассказал, как это было. За сим обсуждать далее смысла не вижу.

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

Ну ещё бы у include коммент вписать, не?? Чего уж там. Есть база языка, которую прогер или обучающийся должен знать. А вот свой код и алгоритмы надо пояснять.

Анон, видимо, реально агрится за просто так, лишь бы)) И скорее всего не имеет понятия, как писать код.

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

«Почерк (имхо) заложен природой и его не исправишь.»

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

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

Вообще комменты должны быть голосовыми, это позволит решить проблему лени, ну или распознаватель речи в IDE встроить))

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

Типа, проверять код возврата fopen() у вас в России стало считаться гениальностью? Ну, вперде.

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

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

Я отразил суть

Ты отразил то, как делать НЕ НАДО.

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

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

ты - обычный быдлокодер, который, скорее всего, даже не слышал про pep8

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

Надо же, тред ещё жив

Может быть, многоуважаемый анонимус пояснит глупому быдлокодеру практическую ценность слепого следования PEP8, в частности, отступов пробелами?

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

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

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

Обоснуй, что ли.

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

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

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: Надо же, тред ещё жив от E

Может быть, многоуважаемый анонимус пояснит глупому быдлокодеру практическую ценность слепого следования PEP8, в частности, отступов пробелами?

судя по тому, что ценность pep8 для вас, мягко говоря, не очевидна, смею предположить, что ваш код на python имеет сравнимую ценность для остального человечества.

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

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

Не программист, а быдлокодер.

anonymous
()

Наша практика по обучению студентов:

1. Студент имеет право писать код в любом стиле, но исключительно по какому-нибудь известному стайлгайду. Например, можно пользоваться стайлгайдом GNU, Гугла и т.д. Преподаватель может попросить ссылку на использованный стайлгайд.

2. После успешной сдачи задачи в автоматическую систему проверок преподаватель проверяет стиль вручную и высказывает замечания по стилю. После переделки задача сдается в систему повторно. Задача засчитывается, когда после очередной попытки преподаватель не высказал замечаний.

3. Студент имеет право оспорить замечание и, соответственно, не исправлять программу. Оспорить можно ссылкой на пункт стайлгайда (см. п. 1) или подробным разбором ситуации (доказательством, что в данном конкретном случае слепое следование стайлгайду приводит к нечитаемому или нелогичному коду).

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

Не идеально, пример не призван быть таковым, а всего лишь ради демонстрации сказанного.

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

Бессмысленные комментарии - однозначно зло, потому что из-за них оказываются не прокомментированными и недокументированными как раз те вещи, в которых комментарий нужен. К тому же они делают код «рваным» и затрудняют контроль правильности написания алгоритма.

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

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

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

Выравнивание - только пробелами. Исключений нет.

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

В коде на C++ часто имеет смысл выравнивать пробелами просто для того, чтобы иметь одинаковые настройки редактора под все проекты. Глубина вложений в C++ значительно больше, чем в C.

И еще: в больших closed-source проектах табы использовать НЕЛЬЗЯ, потому что иначе кто-нибудь обязательно сделает кашу, когда выравнивание затрагивает начало строки. Проще поставить pre-commit hook, запрещающий любые табы. Отступ табами можно делать только в проектах со строжайшим code review.

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

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

Выравнивание - только пробелами. Исключений нет.

А я как написал?

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

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

Значит, этот «кто-нибудь» — дегенерат. Если над проектом работают дегенераты, тогда да, нужно не только табы запрещать, а ещё и релизную сборку собирать с -O0, чтобы не пошатнуть хрупкое неустойчивое состояние «работает на машине девелопера».

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от Yampp

Да, всё так. Я не против.

Мне надо было из проекта что ли кусок кода брать, чтобы пример состряпать. Вы обсуждаете не смысл примера, а сам пример. Из-за того, что там написано: «Вводим A и B». Ну будет там написано:

/* Инициализация модели движения электрона в пространстве кубической кристаллической решётки.
 *
 * Параметры:
 *    x,y - координаты точки начала движения,
 *    v - начальная скорость в момент времни 0,
 *    powMat - матрица узлов решётки.
 *
 * Возврат: 
 *    Код ошибки или 0.
 */
int initNewElectron(float x, float y, PowMat *powMat) {
    ...

    return errorCode;
}
Для примера всё это не нужно, согласитесь. Пример на то и пример.

koreijutsu
()

Vim прекрасно настраивается на замену Tab на 4 пробела. Прочие вменяемые редакторы - тоже. Никаких проблем не вижу.

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

Vim прекрасно настраивается на замену Tab на 4 пробела. Прочие вменяемые редакторы - тоже. Никаких проблем не вижу

Два чаю этому господину.

В табо-срачах не учавствуют люди с нормальными редакторами. Я вообще не знаю, что использует мой имэкс, но любой код форматируется автоиндентом на раз.

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

Значит, этот «кто-нибудь» — дегенерат.

Обычно это просто новичок, принятый на работу совсем недавно. Через пару месяцев он научится и не будет больше так делать.

Поскольку на фирме у всех обычно мониторы примерно одинаковые и настройки шрифтов довольно близки, использование пробелов проблем не вызывает. В отличие от OpenSource, где у всех разные редакторы и разные настройки.

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

Да, всё так. Я не против.

Спасибо, мысль ясна.

Действительно, по вашему примеру было непонятно, следует ли документировать тривиальные вещи или нет. Столь простой код может быть расценен двояко. Студентам в качестве примера написания я обычно показывал алгоритм Евклида - он достаточно прост, чтобы годиться на роль примера, но при этом достаточно сложен, чтобы не сводиться просто к 2+2.

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

В табо-срачах не учавствуют люди с нормальными редакторами. Я вообще не знаю, что использует мой имэкс

Солист детектед.

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

В табо-срачах не учавствуют люди с нормальными редакторами.

Вопрос, к сожалению, выходит за рамки личных предпочтений. Код в общем репозитории должен быть написан в определенном стиле, и этот стиль подразумевает либо пробелы, либо табы. Обычно рассчитывать на нормальность редакторов у ВСЕХ контрибьюторов проекта не приходится, поэтому нужно искать некий компромисс. Стиль должен быть достаточно жестким, чтобы исключать кашу в коде, но при этом достаточно мягким, чтобы не отпугнуть полезных авторов. (Основную пользу большинству проектов приносят авторы с квалификацией на четверку по 5-балльной шкале, потому что таких авторов много; если их распугать, оставшиеся «отличники» не потянут проект.)

Yampp
()

Не читал, что пишут другие и в связи с этим со своей стороны студента опишу. Есть у нас два преподавателя в Политехническом институте, одна - женщина-инженер, второй - хороший такой молодой и опытный мужик в самом расцвете сил (26). В первом случае, преподавали нам Джаву. Собственно, стиль там от студента к студенту скакал даже хуже, чем в былинных питоних срачах - пробелы или табуляции, тобишь абсолютный хаотический рандом. И её было таки без разницы - запустилось, не валится на входных данных - молодец. Во втором случае уже тяжелее. Ибо мышление у человека специфичное. Хотя, наверное, правильное. А писали бедные студенты на Компонентном Паскале. Причем используя не что иное, как BlackBox Component Builder. А тут уж хочешь-не хочешь, но общий стиль написания кода придется выработать. Некоторые, конечно, батхертили от специфичных требований императивного языка знатно, зато после курса практики люди умеют в приличный код. О чем это я, да. Таки, если писать будут на java\c# - копируй себе исходники, а через полгода заставь разобраться в нем и улучшить что-нибудь. Пусть привыкают.

ykroop
()

Развели столько срача в такой простой теме. Есть определенные нормы и следование этим нормам обязательно. Если студент хочет следовать не тем стандартам, которые использует преподаватель, надо это обсудить заранее. Обычно так это работает во всех вузах на всех специальностях, где есть какая-то стандартизация.

Deleted
()

Ну надо туда бажину привнести, а потом через недельку пусть со своими tmp, a1, a2 ипуца.

extphy
()

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

Собственно, это так только мудаки типа топикстартера и делают. У них, видимо, свнцовая труба - главный рабочий инструмент.

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

В работе над РЕАЛЬНЫМ проектом всегда есть некий процент невменяемых разработчиков. Увы, такова жизнь. Мы их, конечно, бьем по рукам, но над каждым надсмотрщика не поставишь. А если увольнять за стиль, тогда рискуешь уволить хороших алгористов. Приходится мириться.

Мы не идеалисты, мы прагматики. Нам результат нужен.

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

валидатор стиля на хук коммит и не надо бить по рукам...

А вообще у нас так на экзамене было: кому тройки давайте зачётки ;)

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

А вообще у нас так на экзамене было: кому тройки давайте зачётки ;)

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

И этим практика преподавания в бывшем СССР в корне отличается от практики за рубежом. Там никто тройку просто так ставить не будет. А в иных ВУЗах с одними тройками и на следующий курс не перейти. (В США обычно оценку ставят в процентах, а не баллами, но неважно). И сидеть там можно на одном и том же курсе годами. Не сдал - слушаешь тот же курс второй раз, третий... Хоть десять лет слушай, пока деньги не кончатся. Незачет значит незачет, натягивать оценку никто не будет.

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

Вынужден поправить ход мысли - это было как раз во времена СССР. Более того: разрешали пользоваться всеми материалами. Препод уходил в буфет на часик.

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

После СССР стало еще хуже. Я в общем-то потому преподавать и бросил, что не поднимается рука трояки ставить дубоцефалам. А не ставить нельзя, на кафедре велят не валить. Послал всех к черту и уволился.

Это все очень быстро прогрессировало. В позднем СССР и в середине 90-х студенты что-то знали. В начале 2000-х еще немного хоть что-то знали. К концу 2000-х уже не знали вообще ничего. Связано не в последнюю очередь с возрастом преподавателей «старой школы» и с отсутствием равноценной замены. Сейчас, увы, без привлечения иностранных кадров уже ВУЗы не поднять.

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

Сейчас, увы, без привлечения иностранных кадров уже ВУЗы не поднять.

Нет это излишне. Надо просто обмениваться и перенимать опыт. Давать преподам отдых 1-2 год отпуска. Платить достойную зпл не через бухгалтерию института, а напрямую преподу.

Не знают ничего, потому что не нужны мыслители, а в СССР как ни парадоксально нужны были.

В любом запердюпинске была оптика и счётчики Гейгера и журналы «Квант» лимонад «Буратино», но проблемы были в преподавании математики да и в целом. Обстановка была жутчайшая ... и время было мерзопакостное... Но рыба в Каме была.

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

Уже поздно. Преподавателей НЕТ. Некому обмениваться и перенимать опыт. Нет людей, умеющих и желающих преподавать, и не в последнюю очередь по той причине, что у студентов нет не только желания учиться, но даже и желания получать диплом. На зачете я студентам давал задачку из сборника детских занимательных задач (3-5 классы). Многие даже ее не осиливали. Я могу научить человека чему угодно, что знаю сам, с любого уровня, но я ничего не могу сделать с человеком, которого на половине лекций нет, а на второй половине он слушает плеер. Я даже заинтересовать его не могу, потому что у него уши плеером заткнуты, он меня не слышит. А делает он так, опять же, потому что знает, что дипломы дают всем.

В любом запердюпинске по крайней мере самолеты на резиномоторе строили, и это было хоть что-то. А сейчас только в айфоны штырят. Если человек ни разу в жизни не сталкивался с необходимостью сбора цельной информации по отрывочным сведениям, хотя бы даже с целью подкладывания бомбочки училке в сумку, его уже очень трудно чему-то научить после 18 лет. Мозг уже иначе повернут.

Сейчас есть небольшие попытки обучения всяким вещам в кружках вроде робототехники на Arduino, но это профанация. Потому что там никто не пытается цельную картину строить. И люди, которые всем этим занимаются, опыт преподавания чаще всего имеют нулевой. В результате вместо обучения построению систем получается обучение втыканию проводков в Arduino. Не то.

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

Это не гениальность, это уровень «мойте руки перед едой».

ranka-lee
()

Быдлокод везде. Программирование - помойка для аутистов и недоразвитых переростков. Уважающий себя человек в это дерьмо не полезет.

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

На что угодно готов поспорить, что тот студент с плеером намного умнее и грамотнее тебя, старпера. Ты устарел. Уходи.

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

Что, быдлокодер, неуд получил у такого же препода и теперь бомбит?

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

Студент с плеером - это индусоговно, начитавшееся быдлосайтиков. «Старперы», носители старой советской школы, единственное ценное, что осталось в быдлашке.

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