l_sylvanas: (smile)
[personal profile] l_sylvanas
В контрольной по программированию надо было проследить значение переменной и в качестве ответа написать, какое значение она будет иметь в конце. Ну и там несложные арифметические операции были в середине, типа 10-2*5+3 и так далее. Я четко расписала все значения и операции и в конце надо было прибавить 19 и 3, и вот результат и был ответом:

И у меня в конце гордо написано: 19+3 = 21 Output is 21.

Что вы думаете, снял 2 очка! Ну, правда, в другом месте, где вполне мог бы снять два, снял одно, так что ладно.

Date: 2010-02-10 09:41 am (UTC)
From: [identity profile] olegzam.livejournal.com
Это что. В нашей родной школе по алгебре со мной жестче поступали. На экзамене в пятом классе я в конце сложной задачи отнял 4 от 16, получил 14 и все, четверка. А на выпускном экзамене после 11-го класса мне нужно было в задаче найти координату точки G. Вместо того, чтобы обозвать эту координату каким-нибудь иксом, я ее так и назвал G, то есть, сделал одинаковыми обозначения самой точки и ее иксовой координаты. В остальном все решил идеально верно. Четверка в аттестат.

Date: 2010-02-10 05:01 pm (UTC)
From: [identity profile] l-sylvanas.livejournal.com
да, обидно!!
Но все-таки тут алгебра, хоть и не арифметика, но все же.
А тут программирование, вообще к арифметике касательства не имеет! :). В программировании максимум, что нужно, это уметь в уме отнимать и прибавлять один :)).

Date: 2010-02-10 05:07 pm (UTC)
From: [identity profile] mara-glad.livejournal.com
Меня, похоже, сильно изменил мой преподавательский опыт... :)
Сначала, прочитав твоё сообщение, я подумала: "Ну, и правильно, что сняли баллы".
Потом подумала, что когда я сама училась, меня бы тоже такая оценка возмутила... :)
В конце концов, если бы мне не "простили" подобные ошибки в письменном экзамене, я бы в универ не поступила... :)

Но сейчас я очень жёстко отношусь к ошибкам, происходящим от невнимательности.
У программистов - особенно!.. :))

Date: 2010-02-10 05:20 pm (UTC)
From: [identity profile] l-sylvanas.livejournal.com
да я и не возмутилась, посмеялась, скорее :).
Конечно, правильно, что снял баллы, но, по-моему, надо было снять один, а не два. Но это не так важно.

Date: 2010-02-11 03:43 am (UTC)
From: [identity profile] mara-glad.livejournal.com
Как обычно, я не вкладывала в слово "возмутиться" большого негативного смысла... :)

Насчёт того, как там баллы подсчитываются - мне не ведомо.
Но ошибка - серьёзная, на самом деле.
Т.к. ты не в первом классе, то никто тебя не заподозрит, что ты, в самом деле, не знаешь арифметику. Проблема в том, что ты случайно написала не ту цифру, и потом её не заметила. Если это не в учебной задачке происходит, а где-нибудь в коде, глубоко в большой системе, последствия описки могут быть плачевны: не во всех случаях ошибка будет срабатывать, труднонаходима и т.п. Большие трудозатраты на её устранение. Гораздо сложнее поиск, чем системных ошибок в логике.

Кстати, насчёт того, что программистам считать не надо - это, на мой взгляд, заблуждение. Простой пример: разработка графических интерфейсов. Когда надо кнопочки/поля на окно посадить, в каком-нибудь VisualBasic-е. Можно на глазок накидать, конечно. Но лучше их координаты проверить в цифрах, прикинуть расстояния между ними и т.п.
От меня наши программисты в своё время выли регулярно: я сдвиг кнопки на пиксель - издалека вижу. Они на глазок накидают, а я потом ору, что расстояния не соблюдены.

Date: 2010-02-11 07:11 am (UTC)
From: [identity profile] l-sylvanas.livejournal.com
в принципе я согласна. Но задачка была на понимание того, как переменная себя ведет, а считать-то должен был как раз компьютер, а не я. Ну не суть. Я не против совершенно: снял два балла и снял. Хоть не 5, и то ладно :).

Date: 2010-02-17 07:12 pm (UTC)
From: [identity profile] nexustwo.livejournal.com
Человек не машина и опечатки это факт жизни. Можно конечно бить програмиста ногами чтоб ошибался меньше только это очень дорого будет, дешевле инженерный процесс построить так чтобы простые ошибки отлавливать очень быстро. Есть пара методик подходящих к разным случаям:

1. Пройти каждую строку кода в дебагере не менее одного раза. Если код трудно достижим то можно в дебагере подшаманить, а еще лучше сделать код достижимым.

2. Если какой-то код особо важен или часто меняется или глубоко зарыт и редко исполняется то надо писать юнит-тесты. 100%  code-coverage решает 99.9% всех проблемы опечаток.

3. Агрессивный трейсинг и ассертинг как норма жизни.

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

Date: 2010-02-17 08:42 pm (UTC)
From: [identity profile] l-sylvanas.livejournal.com
ну, это все неприложимо, конечно, к маленькой контрольной работе на понимание того, что такое переменная :).

Date: 2010-02-18 02:43 am (UTC)
From: [identity profile] nexustwo.livejournal.com
Ну мы тут уже вроде перешли на обсуждение последствий опечаток в промышленном коде, так что я счел уместным. :)

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

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

Date: 2010-02-11 06:24 pm (UTC)
From: [identity profile] dennyrolling.livejournal.com
"Гораздо сложнее поиск, чем системных ошибок в логике."
имея большой опыт поиска как и первых так и вторых в коде написаном не мной, могу со всей ответсвенностью и прямотой заявить что все как раз наоборот. ошибки в логике чаще всего найти просто невозможно, а если и возможно - то занимает столько времени, что за это время можно найти 10 "описок".

Date: 2010-02-11 06:53 pm (UTC)
From: [identity profile] mara-glad.livejournal.com
Ну, мне, может, программисты более криворукие попадались... :)
Или задачи менее глобальные... :)

В моей практике ошибки делились на эти категории примерно так:
а) "Программа работает так-то. Видимо, ты решил сделать такую-то обработку такого-то события. Но ты не прав. Тут должна быть такая обработка". После чего программист шёл и исправлял;
б) "Программа работает так-то. Это неправильно. Но почему - мне не ясно." После чего программист чесал репу и искал собственные опечатки. Долго.

Я утрирую, конечно. Но суть такая...

И, это... У нас тестеры к коду вообще не допускались...

Date: 2010-02-11 08:08 pm (UTC)
From: [identity profile] dennyrolling.livejournal.com
я объясню почему. когда есть опечатка и логика ясна то опечатку можно просто найти методом деления пополам: смотришь в случайное место и проверяешь являются ли данные (или поток исполнения, что в принципе одно и то же) корректными. если нет - надо смотреть раньше, если да - позже. так за логарифмическое время находишь место где опечатка и тут же ее исправляешь. я уж не говорю о случаях когда опечатки просто сразу приводят к падению с громыханием (ну, типа имели два указателя, и вместо одного присвоили значение другому, потом попользовали первый и тут же грохнулись) - тогда ошибка вообще находится за константу.

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

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

Date: 2010-02-15 06:15 pm (UTC)
From: [identity profile] mara-glad.livejournal.com
Согласна, в теории как-то всё так и звучит.
Но на практике (ещё раз повторюсь: в моей личной практике, не более того) почему-то подавляющее количество долго-уловимых странных ошибок происходили именно от опечаток и случайных описок.

Опять-таки, ты вот говоришь, что когда падение с громыханием при описке с указателями - это просто и быстро. А мои коллеги-программисты (не все, к счастью, не все!) тратили на отыскание причин таких ошибок много времени и даже привлекали других коллег-программистов... Эх.

Что-то от этих воспоминаний даже радостно, что я больше не работаю в тестировании... :)

Date: 2010-02-15 06:45 pm (UTC)
From: [identity profile] dennyrolling.livejournal.com
я не знаю как такое объяснить кроме того что может какие-то у вас неправильные программисты были :) я же не теорию излагаю, а как раз практику - в виндовском поиске за 20 лет понаписали багов всяких разных (а потом еще новые ковбои понадобавили) и последние пять лет хорошую часть времени на работе я эти баги искал и чинил. итог: хуже всего баги когда "все работает правильно но очень медленно", потом "происходит что-то не то, мы ожидали другого", дальше "где-то опечатались и местами не работает" и самое легкое "все взорвалось".

Date: 2010-02-15 06:55 pm (UTC)
From: [identity profile] mara-glad.livejournal.com
Ну, понимаешь, с "правильными" программистами приходилось сравнительно мало работать... :) Ибо такой программист даёт новую версию продукта, её смотришь глазами, через автоматы прогоняешь, за небольшое время даёшь отмашку, что всё ок... Даже если что и найдётся, пальцем ткнёшь в косяк (ну, в смысле, опишешь минимумом слов), такой человек скажет: "ой, блин" и исправит за минуты. Перепроверишь по-быстрому, и на этом работа с ним закончена.
А вот с другими... Приходилось неделями футболить задачи, ибо всё наперекосяк. Писать длинные разъяснительные тексты про то, что именно там не так и почему... А потом ещё выслушивать причитания и отговорки (что "так неправильно было всегда" и "правильно быть не может, потому что не может быть никогда"). А через пару недель препирательств начальник (он же - более грамотный программист) приходит, заглянет в код краем глаза и скажет, что там опечатка на самом видном месте...

Как всегда: работать приятнее с первыми, а вспоминаются в первую очередь - вторые... :)

Date: 2010-02-15 07:50 pm (UTC)
From: [identity profile] l-sylvanas.livejournal.com
ну, да, но разве можно сказать, что эти вторые быстрее бы нашли логическую ошибку, если они даже опечатку найти не могут? Вряд ли ведь. Я так понимаю, что речь тут не о том, что любой программист может или не может очень быстро найти опечатку. Речь о том, что в принципе опечатка в правильной логике гораздо быстрее ищется, чем неправильная логика, в которую передаются правильные значения.

Date: 2010-02-15 07:59 pm (UTC)
From: [identity profile] mara-glad.livejournal.com
Да не факт, на самом деле... :)
Не совсем же с дуболомами я работала. :)
Например, человек, в принципе, довольно и сложные структуры мог разруливать, в теории, при обсуждении (и логические ошибки при этих устных обсуждениях очередной промежуточной версии находил, в принципе, сразу). Но когда дело доходило до написания кода - ляпал массу опечаток...
В общем, замеров в этом смысле я не делала. :)
От людей зависит конкретных.

Date: 2010-02-15 08:02 pm (UTC)
From: [identity profile] mara-glad.livejournal.com
Я ещё раз повторюсь...
В общем, я тут не из желания праздно поспорить.
Просто выссказала пример из собственного опыта.
Что за те 7 лет, или около того, которые я проработала в области тестирования, ошибки с неправильно поставленной логикой мне встречались гораздо реже и напрягали гораздо меньше, чем просто опечатки.
В других условиях, других коллективах и пр. - может быть иначе.

Date: 2010-02-15 08:37 pm (UTC)
From: [identity profile] l-sylvanas.livejournal.com
может быть, это потому, что опечаток было просто гораздо больше?

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

Date: 2010-02-15 08:39 pm (UTC)
From: [identity profile] l-sylvanas.livejournal.com
интересно.
Ты, на самом деле, первый специалист, от кого я это слышу :). Все мои преподаватели и коллеги всегда считали вот как мы: что самые труднонаходимые - это логические ошибки. Может быть, зависит как-то от природы продукта, не знаю уж. Самой мне тоже так кажется (что логические находить труднее), но у меня опыт недостаточно велик, чтобы свое мнение предлагать как ценное :).

Date: 2010-02-15 08:51 pm (UTC)
From: [identity profile] mara-glad.livejournal.com
Ну, тут, может быть, дело ещё в том, как поставлен процесс рабочий в целом.
У нас ситуация была поставлена таким образом, что вот те самые программисты, которые делали кучу опечаток (или не делали их, соответственно) - не были особо вольны вообще принимать решения о логике поведения продукта. Ибо были, скорее, кодеры.
Логика продумывалась на другом уровне. Для этого был главный архитектор, в первую очередь + аналитики/постановщики для конкретных задач/проектов.
Они водили руками и писали документы, на основании которых у программистов не оставалось возможности слишком далеко разбегаться, чтобы успевать делать глобальные логические ошибки.
Так, наверное.
Поэтому у меня такой вот опыт и получился.
Возможно, это и не особо частая ситуация. Но я участвовала в создании регламентов именно такой работы, и мне нравилась эта постановка ситуации... :) Поэтому, возможно, у меня есть неверное представление, что в большинстве случаев при работе ошибки логики отпадают исходно, на этапе проектирования... :)

Date: 2010-02-15 08:56 pm (UTC)
From: [identity profile] l-sylvanas.livejournal.com
Ну, что ты, конечно, я не о глобальной логике речь веду. Логических ошибок можно насовершать и в пределах одного цикла. Архитектор же не будет тебе рассказывать, как цикл употребить. Он скажет, какой должен быть результат и как должны передаваться данные по программе. А вот как они будут передаваться на самом деле - это уже от программиста зависит, и я ни за что не соглашусь, что там негде совершить ошибок :).

Date: 2010-02-15 11:10 pm (UTC)
From: [identity profile] dennyrolling.livejournal.com
ну вот я приведу пример где совпадают логическая ошибка и опечатка (точнее непонимание того что означает эта языковая конструкция): http://dennyrolling.livejournal.com/135534.html

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

Date: 2010-02-10 06:19 pm (UTC)
From: [identity profile] chat-et-demi.livejournal.com
Мне наша математичка в школе регулярно снижала оценки за то, что я неправильно группировала задание/решение/ответ. Там нужно было справа в колоночке - исходные данные, в центре - решение, снизу слева - ответ. Почему-то мне это никак не удавалось, так что при абсолютно правильно решенной задаче, получала 4.
Ну, это в мою копилку "любви" к учителям :)

Profile

l_sylvanas: (Default)
l_sylvanas

April 2017

S M T W T F S
      1
2345678
9101112131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 15th, 2026 02:17 am
Powered by Dreamwidth Studios