о вредных преподавателях
Feb. 9th, 2010 07:45 pmВ контрольной по программированию надо было проследить значение переменной и в качестве ответа написать, какое значение она будет иметь в конце. Ну и там несложные арифметические операции были в середине, типа 10-2*5+3 и так далее. Я четко расписала все значения и операции и в конце надо было прибавить 19 и 3, и вот результат и был ответом:
И у меня в конце гордо написано: 19+3 = 21 Output is 21.
Что вы думаете, снял 2 очка! Ну, правда, в другом месте, где вполне мог бы снять два, снял одно, так что ладно.
И у меня в конце гордо написано: 19+3 = 21 Output is 21.
Что вы думаете, снял 2 очка! Ну, правда, в другом месте, где вполне мог бы снять два, снял одно, так что ладно.
no subject
Date: 2010-02-10 09:41 am (UTC)no subject
Date: 2010-02-10 05:01 pm (UTC)Но все-таки тут алгебра, хоть и не арифметика, но все же.
А тут программирование, вообще к арифметике касательства не имеет! :). В программировании максимум, что нужно, это уметь в уме отнимать и прибавлять один :)).
no subject
Date: 2010-02-10 05:07 pm (UTC)Сначала, прочитав твоё сообщение, я подумала: "Ну, и правильно, что сняли баллы".
Потом подумала, что когда я сама училась, меня бы тоже такая оценка возмутила... :)
В конце концов, если бы мне не "простили" подобные ошибки в письменном экзамене, я бы в универ не поступила... :)
Но сейчас я очень жёстко отношусь к ошибкам, происходящим от невнимательности.
У программистов - особенно!.. :))
no subject
Date: 2010-02-10 05:20 pm (UTC)Конечно, правильно, что снял баллы, но, по-моему, надо было снять один, а не два. Но это не так важно.
no subject
Date: 2010-02-11 03:43 am (UTC)Насчёт того, как там баллы подсчитываются - мне не ведомо.
Но ошибка - серьёзная, на самом деле.
Т.к. ты не в первом классе, то никто тебя не заподозрит, что ты, в самом деле, не знаешь арифметику. Проблема в том, что ты случайно написала не ту цифру, и потом её не заметила. Если это не в учебной задачке происходит, а где-нибудь в коде, глубоко в большой системе, последствия описки могут быть плачевны: не во всех случаях ошибка будет срабатывать, труднонаходима и т.п. Большие трудозатраты на её устранение. Гораздо сложнее поиск, чем системных ошибок в логике.
Кстати, насчёт того, что программистам считать не надо - это, на мой взгляд, заблуждение. Простой пример: разработка графических интерфейсов. Когда надо кнопочки/поля на окно посадить, в каком-нибудь VisualBasic-е. Можно на глазок накидать, конечно. Но лучше их координаты проверить в цифрах, прикинуть расстояния между ними и т.п.
От меня наши программисты в своё время выли регулярно: я сдвиг кнопки на пиксель - издалека вижу. Они на глазок накидают, а я потом ору, что расстояния не соблюдены.
no subject
Date: 2010-02-11 07:11 am (UTC)no subject
Date: 2010-02-17 07:12 pm (UTC)1. Пройти каждую строку кода в дебагере не менее одного раза. Если код трудно достижим то можно в дебагере подшаманить, а еще лучше сделать код достижимым.
2. Если какой-то код особо важен или часто меняется или глубоко зарыт и редко исполняется то надо писать юнит-тесты. 100% code-coverage решает 99.9% всех проблемы опечаток.
3. Агрессивный трейсинг и ассертинг как норма жизни.
За несоблюдение вышеизложенных правил програмиста можно бить ногами, ибо это уже халатность а не простая невнимательность.
no subject
Date: 2010-02-17 08:42 pm (UTC)no subject
Date: 2010-02-18 02:43 am (UTC)Полагаться на отсутсвие опечаток это все равно что полагаться что человек никогда не оступится на лестнице - проще поставить перила и перейти к более сложным проблемам чем тренировать каждого нового сотрудника на гимнастическом бревне.
Ну кстати многие компании и перила не ставят и сотрдников не тренируют, так потом оч много шишек получается. С точки зрения одного человека может оно и имеет смысл бревно освоить...
no subject
Date: 2010-02-11 06:24 pm (UTC)имея большой опыт поиска как и первых так и вторых в коде написаном не мной, могу со всей ответсвенностью и прямотой заявить что все как раз наоборот. ошибки в логике чаще всего найти просто невозможно, а если и возможно - то занимает столько времени, что за это время можно найти 10 "описок".
no subject
Date: 2010-02-11 06:53 pm (UTC)Или задачи менее глобальные... :)
В моей практике ошибки делились на эти категории примерно так:
а) "Программа работает так-то. Видимо, ты решил сделать такую-то обработку такого-то события. Но ты не прав. Тут должна быть такая обработка". После чего программист шёл и исправлял;
б) "Программа работает так-то. Это неправильно. Но почему - мне не ясно." После чего программист чесал репу и искал собственные опечатки. Долго.
Я утрирую, конечно. Но суть такая...
И, это... У нас тестеры к коду вообще не допускались...
no subject
Date: 2010-02-11 08:08 pm (UTC)когда же ошибки в логике - то обычно логика не ясна (иначе не было бы там ошибок) и фиг его знает, может и правильно все происходит, может и нет. поиск ошибки тогда линеен и хорошо если пропорционален по времени количеству кода, а зачастую и квадратичен (в каждом месте надо смотреть что мы делаем в других местах и проверять что все соответсвует одно другому).
естественно я не говорю про "провалы в логике", которые видны сразу (это то что ты описываешь в случае а). случай а) вообще не очень интересен, более интересен случай б) :)
no subject
Date: 2010-02-15 06:15 pm (UTC)Но на практике (ещё раз повторюсь: в моей личной практике, не более того) почему-то подавляющее количество долго-уловимых странных ошибок происходили именно от опечаток и случайных описок.
Опять-таки, ты вот говоришь, что когда падение с громыханием при описке с указателями - это просто и быстро. А мои коллеги-программисты (не все, к счастью, не все!) тратили на отыскание причин таких ошибок много времени и даже привлекали других коллег-программистов... Эх.
Что-то от этих воспоминаний даже радостно, что я больше не работаю в тестировании... :)
no subject
Date: 2010-02-15 06:45 pm (UTC)no subject
Date: 2010-02-15 06:55 pm (UTC)А вот с другими... Приходилось неделями футболить задачи, ибо всё наперекосяк. Писать длинные разъяснительные тексты про то, что именно там не так и почему... А потом ещё выслушивать причитания и отговорки (что "так неправильно было всегда" и "правильно быть не может, потому что не может быть никогда"). А через пару недель препирательств начальник (он же - более грамотный программист) приходит, заглянет в код краем глаза и скажет, что там опечатка на самом видном месте...
Как всегда: работать приятнее с первыми, а вспоминаются в первую очередь - вторые... :)
no subject
Date: 2010-02-15 07:50 pm (UTC)no subject
Date: 2010-02-15 07:59 pm (UTC)Не совсем же с дуболомами я работала. :)
Например, человек, в принципе, довольно и сложные структуры мог разруливать, в теории, при обсуждении (и логические ошибки при этих устных обсуждениях очередной промежуточной версии находил, в принципе, сразу). Но когда дело доходило до написания кода - ляпал массу опечаток...
В общем, замеров в этом смысле я не делала. :)
От людей зависит конкретных.
no subject
Date: 2010-02-15 08:02 pm (UTC)В общем, я тут не из желания праздно поспорить.
Просто выссказала пример из собственного опыта.
Что за те 7 лет, или около того, которые я проработала в области тестирования, ошибки с неправильно поставленной логикой мне встречались гораздо реже и напрягали гораздо меньше, чем просто опечатки.
В других условиях, других коллективах и пр. - может быть иначе.
no subject
Date: 2010-02-15 08:37 pm (UTC)Я просто на самом деле удивлена (хотя очевидно, что как ты говоришь, так и есть, ты же говоришь по своему опыту): тут просто считается таким общим знанием, что хуже лошических ошибок ничего нет, и в общем даже мой небольшой опыт это подтверждает, и все специалисты, с которыми я встречалась, считают так же, т.е. ты вот первый, кто считает иначе :). интересно, на самом деле.
no subject
Date: 2010-02-15 08:39 pm (UTC)Ты, на самом деле, первый специалист, от кого я это слышу :). Все мои преподаватели и коллеги всегда считали вот как мы: что самые труднонаходимые - это логические ошибки. Может быть, зависит как-то от природы продукта, не знаю уж. Самой мне тоже так кажется (что логические находить труднее), но у меня опыт недостаточно велик, чтобы свое мнение предлагать как ценное :).
no subject
Date: 2010-02-15 08:51 pm (UTC)У нас ситуация была поставлена таким образом, что вот те самые программисты, которые делали кучу опечаток (или не делали их, соответственно) - не были особо вольны вообще принимать решения о логике поведения продукта. Ибо были, скорее, кодеры.
Логика продумывалась на другом уровне. Для этого был главный архитектор, в первую очередь + аналитики/постановщики для конкретных задач/проектов.
Они водили руками и писали документы, на основании которых у программистов не оставалось возможности слишком далеко разбегаться, чтобы успевать делать глобальные логические ошибки.
Так, наверное.
Поэтому у меня такой вот опыт и получился.
Возможно, это и не особо частая ситуация. Но я участвовала в создании регламентов именно такой работы, и мне нравилась эта постановка ситуации... :) Поэтому, возможно, у меня есть неверное представление, что в большинстве случаев при работе ошибки логики отпадают исходно, на этапе проектирования... :)
no subject
Date: 2010-02-15 08:56 pm (UTC)no subject
Date: 2010-02-15 11:10 pm (UTC)из за того что ошибка логическая мне пришлось пару раз пройтись дебаггером прежде чем я понял в чем беда (и очень удивляться каждый раз). из за того что опечатка - удалось очень легко починить.
no subject
Date: 2010-02-10 06:19 pm (UTC)Ну, это в мою копилку "любви" к учителям :)