LINUX.ORG.RU

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

 , , , ,


3

3

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

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

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

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

ИМХО, это не принципиально. Я так вообще пишу

char * c;
char ** str;
и так, по-моему, даже понятнее и сразу видно.

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

Гы... Так тебя никто учить питон и не заставляет;-)

Но позиция у тебя странная. То же самое можно сказать например о ТФКП или диаграммной технике... напоминает неасиляторский баттхерт;-)

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

Предлагаешь годовый курс по стилям отступов и фигурной расстановки пробелов?

Предлагаю академический час на это.

tailgunner ★★★★★
()

...тема родственна с анекдотом про титановые шары...

anonymous
()

надо так: выложить на разных типовых языках на гитхаб библиотеки вида: курсовик (аналог инглиша), лабы (то-же) и т.д.

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

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

и так, по-моему, даже понятнее и сразу видно.

Я говорил про случай, когда мы на одной строке сразу две переменные объявляем. И одна из них указатель, на тип char, а другая просто char. В этом случае можно забыть, что * относится не к типу, а к переменной.

Если же у тебя всегда по одной переменной в объявлении - всё ок и можно и char* a, и char * a, и char *a делать. Разницы никакой, т.к. тут не важно к типу ли относится * или к переменной.

Norgat ★★★★★
()

А ты лекцию по стилю и аккуратности кода организовал? Ссылки на Coding Style дал?

Если да - то допустимо и даже необходимо. А если «ну очевидные же все вещи, они должны были сами догадаться» - то нет.

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

В OpenStack вон до сих пор не могут договориться, ставить точку в конце заголовка Commit Message. А про холивары на тему Tab vs Spaces даже и вспоминать грустно.

Так что стоит сказать: на нашем проекте правила такие, хотя на другом может быть все по-другому. И вот за нарушение этих _объявленных_ правил уже снижать.

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

Есть ошибки, которые, чтобы определить, надо вэлгринд специально настраивать, и то вероятность обнаружения не будет стопроцентной.

Ну да. Тем не менее, это покажет немалое количество ошибок плюс «ошибки стиля» - неиспользуемые переменные и т.д. Для новичков и это неплохо. Тем более, что добавить ключи компиляции очень легко по сравнению с более сложными решениями.

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

Ты просто делаешь это неправильно.

Странно, никаких последствий не вижу.

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

То же самое можно сказать например о ТФКП или диаграммной технике

А при чем здесь ТФКП? И как можно без нее обойтись?

неасиляторский баттхерт

Оно самое. Я не вижу нужды учить более двух ЯП (к сожалению, в html приходится жабоскриптом пользоваться). С годится для абсолютно всех задач: от элементарщины до крутого моделирования. GUI мне нафиг не вперся. Если нужен будет и нельзя будет обойтись веб-мордой, сделаю на OpenGL. Ну или кому нужен гуй пусть пишет хоть на хытоне.

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

Если ВУЗ не учит программиста его ремеслу - это плохой ВУЗ.

Запомни уже наконец, учебное заведение где учат ремеслу называется ПТУ.

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

А ВУЗ — это место где мальчики косят от армии, девочки ищут замуж, а в конце им выдают сертификат, означающий что им 4-6 лет имели мозг толпа разнородных чудаков, а они терпели и имитировали бурную деятельность. Что является важным навыком при устройстве на работу.

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

Про Makefile слышал когда-нибудь? :}

Натюрлих. Но в Makefile, причём в GNU, это элемент синтаксиса. Это раз. Makefile это не язык программирования. Это два.

Поздравляю с газификацией лужи.

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

Надо переделать так...

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

Может даже короче, заменив throwStartPoint на throwStart, а groundLevel на level, зависит от ситуации и того смысла, который ты вкладываешь в функцию.

level уже ок. Сколько ещё нужно сделать таких итераций чтобы ок было с остальным кодом и стало совсем ясно, что написание понятного кода это не локальная операция придумывания идиотских названий переменным?

Это на c пишут мало и говнецо?

Давай читать не что хочется, а что написано

с/c++ препроцессор

mashina ★★★★★
()

Я школьник (на информатике пишем на Си). Преподаватель снижает оценки за это, требует, чтобы код был эорошо читаемым (отступы чтобы были, переменные как следует названы, даже комментарии хочет видеть). И да, он из ВУЗа

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

Запомни уже наконец, учебное заведение где учат ремеслу называется ПТУ.

Запомни уже наконец, что ПТУ - это учебное заведение, где учат только ремеслу.

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

А ВУЗ — это место где мальчики косят от армии, девочки ищут замуж, а в конце им выдают сертификат, означающий что им 4-6 лет имели мозг толпа разнородных чудаков, а они терпели и имитировали бурную деятельность.

ВУЗ даёт возможность чему-то научиться, а как этой возможностью воспользуется человек зависит от его личностных качеств. Это уже не детский сад и не школа чтобы со студентом нянчились, сопельки вытирали и уговаривали.

Что является важным навыком при устройстве на работу.

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

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

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

Запомни уже наконец, что ПТУ - это учебное заведение, где учат только ремеслу.

У тебя опять проблемы с чем-то. Если совсем не ясно - ремеслу в (хороших) ВУЗах не учат.

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

Функции на 5 экранов, переменные с названиями x, y, tmp1, tmp2

Программы с x, y, tmp1, tmp2, и отсутствием отступов не принимать как абсолютно нечитабельные.

проверять код возврата fopen()

За быдлокод снижать оценки (вернее подсовывать тесты, которые эта программа гарантированно не пройдет).

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

Задача ВУЗа — научить человека получать знания самостоятельно. Больше задач нет.

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

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

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

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

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

Внезапно выясняется, ага. Я тебе расскажу страшную тайну. Годность преподавателя определяется именно степенью усвоения материала студентами. Дать материал из книжки может и вахтёрша баба Маня. А работа преподавателя - разжёвывать материал, до его усвоения. Если преподаватель не умеет

Вбивать знания в тупые головы

(а они там все тупые, ибо не знают нифига), значит это хреновый преподаватель и место ему во дворе с метлой.

Но это в идеале. Зарплаты-то нет, ага.

И да, понятно, что некоторые студенты забрели в вуз случайно - этих надо отчислять.

А

Задача ВУЗа — научить человека получать знания самостоятельно. Больше задач нет.

- это оправдание хреновых преподавателей.

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

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

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

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

Один мой одногруппник не разделял пробелами ничего в своих программах

Видел одного такого. На вопрос «зачем?» он ответил, что это олимпиадная привычка — соседям сложнее сдуть такое решение из-за видимого отсутствия структуры.

i-rinat ★★★★★
()

Интересно, если на лор запостить код Денниса Ритчи, например, через сколько секунд его бы оформили в дворники?

oponst:
	p = (opdope[o]>>9) & 077;
opon1:
	ps = *pp;
	if (p>ps | p==ps & (opdope[o]&0200)!=0) { /* right-assoc */
putin:
		switch (o) {

		case 6: /* ( */
		case 4: /* [ */
		case 100: /* call */
			p = 04;
		}
		if(op>=opst+20) {		/* opstack size */
			error("expression overflow");
			exit(1);
		}
		*++op = o;
		*++pp = p;
		goto advanc;
	}
putin: /* прекрасно */

https://github.com/mortdeus/legacy-cc/

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

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

Тот ли ты анонимус который ниже что-то гавкает на российские ВУЗы, но если тот, то знай - в западных ВУЗах на это всем класть, преподаватель даёт материал максимально формально и однообразно, ВУЗ при этом абсолютно не волнует кто и что усвоил, главное чтобы платили бабки за обучение. Только у нас ещё как-то стараются выпендриваться и давать «авторский» материал сверх книжного, по инерции с совковых времён.

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

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

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

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

Ага, надо тогда так переделать, специально для тебя:

P dp = cdp(tf, tsp, gl);
Желаю побольше такого чужого кода тебе в больших проектах, которые побольше hello world.

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

Нет. В питон даже самые плохо умеющие программировать люди лезут и справляются (в каком-то смысле этого слова), хоть и работает непонятно как. На С у них просто за 5 секунд работы память вся сольётся.

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

Ну и что? Где оно противоречит тому что я написал? Ведь можно было Unix писать на ассемблере, однако не захотелось, проще оказалось новый ЯП изобрести, то как он создан и его особенности, это уже особенности реализации этого ЯП, что он должен быть быстрым пусть и засчёт 100500 исключений и оговорок, которые стандарт перекладывает на программиста и т.д. Но это уже последствия, а не первопричина.

peregrine ★★★★★
()

Сейчас это всё никак не оценивается: работы проверяются автоматической системой, скомпилялось, тесты прошли - домашка зачтена.

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

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

Переменные dp, tf, tsp и gl прокомментированы?

С вероятностью 70%

С вероятностью 30% ревью провалено %)

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

А при чем здесь ТФКП? И как можно без нее обойтись?

Ну например при решении у-я вынужденных колебаний гарм. осциллятора можно обойтись тригономитрическими ф-ми. ТОлько бумаги уйдет побольше;-)

С годится для абсолютно всех задач

ЛЮБУЮ задачу можно решить на ЛЮБОМ ЯП;-) Вопрос в том, во что это встанет. Если говорить про эффективное решение задачи (за минимальный срок, с приемлемой производительностью и тд и тп) то сейчас нету ни одного ЯП пригодного для решения абсолютно всех задач.

AIv ★★★★★
()
Последнее исправление: AIv (всего исправлений: 1)
Ответ на: комментарий от i-rinat

Прикольно... а ну нас на олимпиаде ты писал решение на листочке, а потом шел к машине его вводить;-)

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

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

Самая идиотская книга, которую я когда-либо брал в руки. Написана идиотом для идиотов. У меня все.

PS: уважение к тем, кто на нее ссылается, сдувает как ветром

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

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

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

Ага, надо тогда так переделать, специально для тебя:

Не надоело настолько тупо передёргивать? Давай ещё раз напишу

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

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

А что там не так?

Книга делит людей на две большие группы. Одна утверждает, что в книге написана чушь, а другая говорит: «я и так это знаю, зачем я это прочитал? Это должны читать новички». Первые книгу ругают, а вторые рекомендуют.

i-rinat ★★★★★
()
Ответ на: комментарий от vertexua

почитай - узнаешь

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

unt1tled ★★★★
()

Нужно, а то они потом за зарплату учатся, хорошо еще, если успешно.

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

Там уже не читают теорию, которая может пригодиться на практике?

Там не учат непосредственно практике. Не учат застегивать ширинку, завязывать шнурки, пользоваться git-ом, делать core review, писать код с правильными отступами, сливать за собой в сортире, и тому подобной элементраной чуши, которой учат в заборопокрасочных ПТУ.

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