LINUX.ORG.RU

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

 , , , ,


3

3

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

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

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

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

Ну я вот — классический быдлокодер-неосилятор. Однако, на сях у меня что-то крутится-вертится, а пхытон боюсь.

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

Ты передумаешь после первого же семестра.

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

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

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

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

Первого семестра работы преподавателем.

Значит буду хреновым преподавателем. Капитан.

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

Значит буду хреновым преподавателем.

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

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

Дык надо расти над собой! Иначе п-ц...

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

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

Вероятно. Но с моей нынешней точки зрения буду хреновым.

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

Тяжело спорить с человеком, который с тобой не спорит. А если собеседник аноним, и к личности не прикопаешься. :)

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

Не парься. Эти перлы/пхп/питоны все время появляются новые а потом потихоньку сдуваются

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

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

А вот это и есть корень проблемы ТС-а. ЯПу порой никакому они не учат, студенты учатся по ХЗ-чьему бреду в интернете, т.к. книжки от авторов ЯП обычно предполагают не нулевые начальные знания о программировании (в подавляющем большинстве школ всё изучение программирования кончается HelloWorld на паскале), а как следствие имеется огромное количество быдлокода, который, увы по ходу обучения таких студентов оседает в их неокрепшие головы всё глубже и глубже (лабы/практические занятия/задачки из предметной области надо делать). ИМХО хотя бы 1 ЯП (а лучше несколько по одному за семестр, придерживающихся разных парадигм) с общей теорией программирования (что такое хорошо, а что такое быдлокод) на первом курсе должны давать в условиях российских школ с разжевыванием почему в 90% случаев goto плохо и т.д. А так как этого в большинстве ВУЗов не дается (а в школах во всех, за редчайшим исключением никто этим заниматься не будет) и получаем всяких личностей (выше по топику их полно), которые либо не хотят писать комментарии, либо не хотят осмысленно называть переменные и функции, либо придираются к тому, что в notepad-е студенты плохо (не так, как автор поста) форматируют код и т.д. и т.п..

Потому у нас почти все программисты либо самоучки и работают не по специальности, либо просто никчёмные.

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

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

зачем ты врешь да еще и на людях? или просто ничего о вузах не знаешь?

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

Есть и такие ВУЗы, где всякая информатика в экономике или подзаборные шарашки, где можно вообще не ходить, только денежку платить. Но не вижу в них смысла.

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

Много. Алсо языковые курсы, скорее всего, условно-обязательные, т. е. студент хотя бы один или два из них обязан себе записать. Ну и плюс питон у всех без вариантов, многие основные курсы на нём основаны, включая Introduction to Algorithms и Artificial Intelligence.

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

Ну и как, много там практичного, кроме необязательных курсов по C и C++?

А также Java и Python (и их знание необходимо для других курсов). А еще там учат тестированию и паттернам. Быдловуз этот MIT %)

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

Че сразу мит? Я учился в университете хельсинки. Там на первом курсе учат яве, на ней все обучение строилось (может и сейчас тоже) на CS.

Так же есть курс по сям и плюсам, по прологу (там скорее парадигму изучают, но как язык дают пролог), по хацкелю (с парадигмой таже тема). Так что не надо ляля :)

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

Потому у нас почти все программисты либо самоучки и работают не по специальности, либо просто никчёмные.

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

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

Правильно будет писать именно char *v;

[citation needed] Может и правильно, но мне кажется, что такой синтаксис нелогичен. Ты как в русском связываешь предлоги с определяемым словом (указатель (на что?) на char), так и в английском (pointer (to what?) to char). «Указатель на» и тип отдельно — это антиинтуитивно.

Соотв. запись char* v, b будет по мозгам бить, когда код будешь читать через некоторое время.

Потому что антиинтуитивно.

Надеюсь ты тут имел ввиду Haskell и co. под 'функциональщиной'?

Чем Haskell такой особенный?

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

Слишком абстрактно и неточно, можно толковать твой пост сотней способов, что ты тут понимаешь под школой и детьми (о том, что большая половина ЛОРа школьники, так это всем известно)? Или думаешь, что нормально, если студент заканчивал факультет физики, а пошёл работать юристом/экономистом? Если второе, то смею уверить, что это проблема текущёго времени в РФ. Мысль поясни.

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

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

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

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

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

Но в Makefile, причём в GNU, это элемент синтаксиса. Это раз.

Текстовый редактор с поддержкой синтаксиса Си и без поддержки Makefile достоин билета на экспресс «Задворки истории».

Makefile это не язык программирования.

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

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

А для вас газификация — больная тема? :}

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

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

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

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

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

anonymous
()

Или всякие подводные грабли в плюсах:

cppcheck прикрути - там можно правила настраивать (у нас на билдсерваках обязательный степ :) чувакам на орехи достается не за стиль - а за лежачий билд... А чтоб билд поднялся - надо стиль поправить. Будет мало - добавишь -Weffc++. В MSVS 2012 смотри встроенный analyze - он ловит некоторые «очевидные» выстрелы в ногу. Еще fortify есть от HP - но он собака дорогой (один заказчег его купил для проекта, т.к. у них отчет фортифая без косяков «маст хэв» для сертификации).

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

Мы, правда, на таких писали жалобы в деканат, и их быстро выпиливали в итоге.

Дурка в руках поциентов :)

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

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

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

в подавляющем большинстве школ всё изучение программирования кончается HelloWorld на паскале

в подавляющем большинстве школ

школ

У меня для тебя плохие новости :) Но вообще, к паскалю торадиционно прилагается Вирт с его алгоритмами+программами. Другое дело, что фароновский двухтомник был популярнее и с точки зрения практического смысла «штук материи» - доступнее. Т.е. сам по себе паскаль как язык обучения структурному программированию, для понимания базы «следование-ветвление-цикл» - это вин (в сравнении с бейсиком). Кашу на нем можно написать... Но лабу можно и не принимать, если между бегин и энд любой функции больше экрана в разрешении 80x25, а имена переменных зашифрованы по цезарю в голове автора :)

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

Ггг. У нас дискр. математик, исписав две доски говорил, теребя переносицу, «ну до сюда вам понятно» - и звучало это не как вопрос.

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

До первого хакира #pragma warning

Легко вычленяется sed'ом.

Просто -Wall -Wextra — это обязательный минимум, понятно, что если что-то с этими флагами не компиляется, то код — отвратительное дерьмо.

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

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

Некоторые ленятся из мэйн инт возвращать

И как их код скомпиляется с -Wall -Werror -Wextra? Никак. Садись, два.

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

Штоа? :) Привычка срезать углы «и так работает же» бывает толкает людей на странные поступки. Просили одного пионера пофиксать тесты, которые его код рушил. Угадай, что он сделал? :)

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

Ну он... ушел уже «фрилансить» на «аппсторе» - «там же все бабло»(с), а отзыв, цитирую «bastard even didn't test his shit» (с) тонет в накрутках от френдов с вконтактика :) Предпочел не ломать привычки. Отключить тесты проще же, чем подстраиваться под всяких тут хотящих странного. Зато он мог радостно прыгать, найдя, как он говорил, «таймбомбу» в чужом работающем коде («таймбомба» никогда не срабатывала на реальных кейсах - для этого нужна была специфическая фаза луны в скорпионе), но после его «очевидного фикса» - код мог запросто перестать работать :) На «фиксы» собственных багов было до трех реопенов - в общем, чувака я где-то через неделю в офисе не застал.

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

Эти перлы/пхп/питоны все время появляются новые а потом потихоньку сдуваются

Не буду обсуждать пхп/питоны, но перл вполне себе жив :)

hobbit ★★★★★
()

Смирись, все в мире пишут быдлокод

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

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

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

т.к. уже давным-давно никто в прототипах void не пишет, если аргументов у функции нет;

Ну вот, а говорил, что Си знаешь. В Си писать void обязательно. Если в объявлении функции нет аргументов, она принимает произвольное число аргументов, а не ноль. А вот в Си++ пустой список аргументов эквивалентен void.

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

Если в объявлении функции нет аргументов, она принимает произвольное число аргументов, а не ноль

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

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

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

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