LINUX.ORG.RU

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

 , , , ,


3

3

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

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

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

В интерпретируемых языках комментарии и «осмысленные» длинные имена переменных замедляют работу программы и отъедают память

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

А вот и JS-КРЕСТЬЯНЕ подтянулись.

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

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

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

Научишься сам - повезло, не научишься - зря 4-5-6 лет протирал штаны за партой.

Научишься сам - молодец, не научишься - зря пошел учится, умственная работа не для тебя.

fixed

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

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

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

Ты предлагаешь после каждого коммита студента преподавателю переформатировать его код? А потом он будет кричать «я не могу разобраться в своих изменениях, тут всё форматирование другое».

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

Если студент не может разобраться в своих изменениях, т.к. «форматирование другое», то знай - студент этот код сам не писал, а взял где-то готовый. Ему сразу можно неуд ставить.

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

Бюрократии много

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

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

«Если студент не может разобраться в своих изменениях, т.к. «форматирование другое», то знай - студент этот код сам не писал, а взял где-то готовый. Ему сразу можно неуд ставить.»

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

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

«Или думаешь, что нормально, если студент заканчивал факультет физики, а пошёл работать юристом/экономистом?»

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

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

Чуть ли не половину Нобелевских премий по экономике взяли бывшие физики.

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

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

peregrine ★★★★★
()

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

С другой стороны открыв код, там где хочется сказать фу-уу - надо уметь воздержаться, а то сам опускаешься на такой уровень.

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

Да и очень странно что до некоторых эта прописная истина не доходит.

EvilFox ★★
()

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

Tark ★★
()

Тоже хочу такую систему. Уже спрашивал на ЛОРе, но так ничего и не нашёл.

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

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

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

коллективная ответственность противоречит демократическим принципам

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

Следовательно, в нормальном развитом обществе ни в коем случае демократии быть не может!

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

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

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

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

Это фантастика. Последней демократией были США в 1860-м году.

Ты о чём? В РФ по конституции демократия. Или может ты с конституцией не согласен? Может тебя запретить?!

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

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

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

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

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

«Может. Поверь.»

Верят пусть другие. А я отрицаю возможность существования студентов, которые не смогли написать программу сами, но сами взялись переименовывать переменные, удалять комментарии и портить стиль.

anonymous
()

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

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

Это в СШОма, Педондоне, Меркелии и в целом гейропе работает-то?

Ню-ню.

Тоталитаризм как-то больше там чем тут. Попробуй вякни там, сразу станешь Снежным Человеком. Такая де*ократия даром не нужна.

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

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

А следующий - коллеги коллеги, и так по кругу. А потом они друг друга поубивают :)

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

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

dzidzitop ★★
()

tmp1
отступы в один пробел

Я же не давал тебе читать мой код ._.

MiniRoboDancer ★☆
()

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

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

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

Какого х** ты тогда делаешь на http://opensource.ru?

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

назвав троешником.

а было ли такое?

Было как-то так:

Танненбаум: «Be thankful that you are not my student. You wouldn't get a high grade for such design» .

Линупс Тролльвардс: «Your job is to be professor and researcher; that's a hell lot of the excuse for such brain damage».

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

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

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

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

Бред. Почерк отлично выправляется тренировкой.

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

Если есть желание — можно многому научиться (я про физически возможное, конечно).

Deleted
()

Да, я преподавал будущим программистам... Я помню есть какой-то скрипт у Артемия Лебедева на сайте, который форматирует коды

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

Почерк отлично выправляется тренировкой.

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

kas501 ★★★
()

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

Необходимо(желательно относительно языка: c/c++ - googleStyleGuide, php - PSR-*, ...)

smt
()

Преподавал over 7 лет. Да, за «качество» кода по рукам бил. Меня тоже в своё время за это били)) Переменные принято называть осмысленно. Например, в некоторых трактатах по Java есть места, где Camel_Case_With_Underscores строго рекомендуется с подписью: «Лучше читается и понятнее, чем qwe». Вообще, есть как бы в тырнетах некое подобие свода правил по программированию и оформлению кода в частности. Как то: уровни отступов (2/4 пробела или табуляция), разбиение кода на подзадачи, реализация возможностей языка программирования, оптимизация по скорости выполнения, комментирование кода и ещё куча подобных.

В качестве примера.

#include <iostream>

using namespace std;

/*
 * Функция инициализации переменных A и B путём ввода с клавиатуры.
 */
void inputAB (int &a, int &b) {
        // Ввод A
        cout << "Введите A: ";
        cin >> a;

        // Ввод B
        cout << "Введите B: ";
        cin >> b;
}


/******************************************************/


/*
 * Функция вычисления суммы A и B.
 */
int getSummAB(int a, int b) {
        // Вычисляем сумму и возвращаем результат
        return a+b;
}


/******************************************************/


/*
 * Функция вывода результата на стандартную консоль.
 */
void printResult(int result) {
        // Вывод результата
        cout << "Сумма A и B: " << result << endl;
}

/******************************************************/


int main(int argc, char **argv) {
        // Переменная для хранения значения A
        int a;
        // Переменная для хранения значения B
        int b;
        // Результат вычисления
        int result;


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

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

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

        return 0;
}

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

koreijutsu
()

И да, мы тоже использовали самописные тесты для проверок программ. Но в купе с самописным же проверяльщиком кода на комменты и отступы.

koreijutsu
()

А ещё мы писали (ну, некоторые из нас в том числе и я) контрольные на бумажках!! Для формирования правильного мышления программирования. Проги типа сортировок, вычислений, разных операций работы с файлами. Мне вообще кажется, что как научат изначально, так и человек писать код и будет. По сути же быдлокодерство - это не столько имена переменных, сколько использование актуальных алгоритмов, понимание того, что пишешь и как, использование плюшек языка программирования. Хрен с ним с кодером, который в библиотеке обозвал переменную точки взрыва тёмной материи как asd. Главное, чтобы либа работала правильно, делая то, для чего и создавалась. И если автор способен понимать, что там за этим asd скрывается, то флаг ему в ноги. Зато если либа написана криво, то где будет «та самая точка» уже большой вопрос. Очередной краеугольный камень, конечно, но всё же из чего-то надо выбирать.

koreijutsu
()

на гитхаб пусть пушат в репы мантейнеров препода.

anonymous
()

Допустимо ли туда прикрутить стайл-чекер какой-нибудь? Какие есть разумные статические чекеры для C, C++, C#, Java и Pascal (сейчас разрешается любой из этих языков по выбору)?

Супермощный стайлчекер «увижу — выгоню» на нас работал.

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

Да.

Че думаете?

Забудь к черту слово «кодирование».

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

Не идеально

В качестве примера формального подхода «на отъебись» - почти идеально.

tailgunner ★★★★★
()

Я только хочу сказать, что стиль кодирования таки стоит навязывать студентам. На то Code Style и существует, чтобы разработчики друг друга понимали, когда читают код. У меня в университете преподаватель настаивал на стиле кодирования и за это я сейчас ему благодарен, а в бытность студента я это не понимал.

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

Существуют целая промышленная ниша - статические анализаторы кода, среди бесплатных приходит в голову довольно распространенный - Sonar (http://www.sonarqube.org/)

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