Re: Какой ты программист?
От: Young yunoshev.ru
Дата: 27.12.06 09:58
Оценка:
Здравствуйте, fuyant, Вы писали:

F>http://articles.org.ru/cfaq/index.php?qid=2520


F>ИМХО, чушь полная.

F>Я бы сделал наверное так (не знаю pl/2, и не знаю, есть ли там такой оператор):

F>
F>i = (i == 1 ? 2 : 1);
F>


F>Так как по условию задача может имееть всего два ответа и это решение очень легко в данном случае читается. ИМХО .

F>Если бы были шансы, что будут другие варианты входных данных и/или вариантов ответа, переделал бы через if/else if или switch для облегчения поддержки кода.
F>Плюс лишняя проверка не нужна (о которой говорится в 10м решении), хотя это уже некорректно, т.к. задано, что "i принимает значения 1 либо 2".

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

Знаю кучу контор где без ассертов на проверку этих условий код был бы некорректен.

И считаю это правильным....
Re[5]: Какой ты программист?
От: ДимДимыч Украина http://klug.org.ua
Дата: 27.12.06 09:59
Оценка: -1
Здравствуйте, Кодёнок, Вы писали:

Кё>Вообще-то программер с опытом уже научен, что спецификация тоже может содержать ошибки. Если вы договорились с программистом Н что он будет давать вашей функции 1 или 2, то это не значит что однажды вы не получите 3.


Но оверхедить свой код из-за ошибки программиста Н тоже не стоит.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[5]: Какой ты программист?
От: qwertyuiop Российская Империя  
Дата: 27.12.06 10:13
Оценка: +2
Здравствуйте, Кодёнок, Вы писали:

Кё>Вообще-то программер с опытом уже научен, что спецификация тоже может содержать ошибки. Если вы договорились с программистом Н что он будет давать вашей функции 1 или 2, то это не значит что однажды вы не получите 3.


Верно. Но если вы рассчитываете, что можете получить что угодно, то тогда придется договариваться о том, как обрабатывать ошибки. Если же вы договорились, что передается 1 или 2, то вы вправе на это твердо рассчитывать, если же ваш друг лажанулся — то это его проблема и ему ее решать.
Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re[2]: Какой ты программист?
От: qwertyuiop Российская Империя  
Дата: 27.12.06 10:17
Оценка: 2 (1)
Здравствуйте, Young, Вы писали:

Y>Нефига себе не нужна. Сколько раз говорилось миру — проверяте значения входных параметров на корректность.


Y>И считаю это правильным....

Переменная i представляет собой полное слово с фиксированной
точкой. i принимает значения 1 либо 2. Если i оказалось равным 1,
замените его на 2 и наоборот.

Отсыда следует, что если i оказалась другой, то я вправе вернуть что-угодно. А return some_error — это не обработка ошибки. Это ее маскировка.
Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re[4]: Какой ты программист?
От: Hiller Беларусь  
Дата: 27.12.06 10:32
Оценка: +1
Здравствуйте, qwertyuiop, Вы писали:

Q>Здравствуйте, Кодёнок, Вы писали:


Q>>>Вероятно составитель этого теста считает себя гением, а преподавателей идиотами, раз он им приписал такое решение. Однако сам он написал свои тесты на паскакале — и этим все сказано.


Кё>>Не идиотами, а теоретиками. Кем они зачастую и являются. Это простейшая ошибка из-за невнимательности. Они, так же как и ты, который не догадался что это pl/1, а не паскаль, на что в тексте дан очень четкий намек, и выдают решение №2


Q>Могу прзнаться — я не знаю pl/1; кроме того — я никогда не писал на паскале и горжусь этим. Что же до твоего самоуверенного заявления, что "они выдают решение №2" — то это лишь твои домыслы граничащие с комплексом неполноценности (хочется самому себе казаться умнее преподавателей). Как раз теоретики такого не напишут. Это больше свойственно студентам-первокурсникам.



М-да...больше гордиться нечем чтоли?
Nil mortallibus arduum est!
Re: Какой ты программист?
От: siberia2 Россия  
Дата: 27.12.06 10:47
Оценка:
Здравствуйте, fuyant, Вы писали:

F>Плюс лишняя проверка не нужна (о которой говорится в 10м решении), хотя это уже некорректно, т.к. задано, что "i принимает значения 1 либо 2".


А в некоторых языках следовало бы проверить ещё и тип входных данных
Проблема России не в том, что она не может накормить бедных, а в том, что богатые никак не нажрутся
Re[2]: Какой ты программист?
От: fuyant  
Дата: 27.12.06 11:03
Оценка:
Здравствуйте, Young, Вы писали:

Y>Здравствуйте, fuyant, Вы писали:


F>>http://articles.org.ru/cfaq/index.php?qid=2520


F>>ИМХО, чушь полная.

F>>Я бы сделал наверное так (не знаю pl/2, и не знаю, есть ли там такой оператор):

F>>
F>>i = (i == 1 ? 2 : 1);
F>>


F>>Так как по условию задача может имееть всего два ответа и это решение очень легко в данном случае читается. ИМХО .

F>>Если бы были шансы, что будут другие варианты входных данных и/или вариантов ответа, переделал бы через if/else if или switch для облегчения поддержки кода.
F>>Плюс лишняя проверка не нужна (о которой говорится в 10м решении), хотя это уже некорректно, т.к. задано, что "i принимает значения 1 либо 2".

Y>Нефига себе не нужна. Сколько раз говорилось миру — проверяте значения входных параметров на корректность.


Y>Знаю кучу контор где без ассертов на проверку этих условий код был бы некорректен.


Y>И считаю это правильным....


Функция больше похожа алгоритмическую, поэтому, имхо, все проверки входных данных должны быть на совести того, кто функцию вызывает. Представьте, если бы, например, во всех апи-функциях типа strlen ставились проверки валидности входных данных. По скорости они бы и работали, как MFC.
Есть условие — входные данные должны быть корректны, тогда алгоритм работает верно. Если вызывающий не озабочивается тем чтобы проверить, что он передает в алггоритмическую функцию, то пусть не особо и расчитывает на корректный результат.
Максимум, что бы я поставил, это assert (i == 1 || i == 2);
Другое дело, если эта фунгкция без посредников обрабатывает ввод пользователя, например. Но в условии таким случаем даже не пахнет
Re[4]: Какой ты программист?
От: Lloyd Россия  
Дата: 27.12.06 11:19
Оценка:
Здравствуйте, qwertyuiop, Вы писали:

Q>Могу прзнаться — я не знаю pl/1; кроме того — я никогда не писал на паскале и горжусь этим.


В первый раз вижу человека, который гордится своим незнанием.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Какой ты программист?
От: Lightpower Украина  
Дата: 27.12.06 11:20
Оценка: +2
Здравствуйте, Unforgiver, Вы писали:

U>Здравствуйте, Lightpower, Вы писали:


L>>Здравствуйте, fuyant, Вы писали:


F>>>http://articles.org.ru/cfaq/index.php?qid=2520

L>>...
F>>>
F>>>i = (i == 1 ? 2 : 1);
F>>>

L>>...

L>>Я в таких случаях пишу i=3-i;


U>Там же внизу комментарии есть


U>Написано "Ни в одном из примеров не проверяется начальное значение переменной i".

U>Так что i = 3-i не совсем верно.

В условии сказано, что мне на вход должны передавать iє{1;2}
Условия некорректности входных параметров не указаны: что я должен вернуть в таком случае? Плюнуть эксепшном? Вернуть какое-то определенное значение?
Если входные данные некорректные, я возвращаю i вне нашего промежутка. Пускай сами дальше об этом заботятся

Комментарии я почитал, не очень с ними согласен
--
LET`S ROCK!
Re: Какой ты программист?
От: Уважаемый товарищ Аноним  
Дата: 27.12.06 14:58
Оценка:
Здравствуйте, fuyant, Вы писали:

Ответ однозначный.

Андрей.
Re: Какой ты программист?
От: mihasic Украина  
Дата: 27.12.06 15:19
Оценка: 1 (1) +1
Я ваще ближе к 7-му, но наверное даже в битовой интерпретации... про проверку условия думал, но не при таком условии...
В ответе рекомендуют:
>10. if i=1 then i=2;
>if i^=2 then do;
>put list('ПЛoxoe i — Зameheho ha 1');
>i=1;
>end;

Вот только не пойму, где тут if i==2 then i=1 ??? (pl/1 не знаю)
Re[7]: Какой ты программист?
От: qwertyuiop Российская Империя  
Дата: 27.12.06 17:33
Оценка:
Здравствуйте, Кодёнок, Вы писали:

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


Кё>потому что то, что написано на доске или на бумажке, нельзя запустить


Слабенькая отмазка. Может придумаешь что-то убедительнее?
Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re[4]: Какой ты программист?
От: VEAPUK  
Дата: 27.12.06 20:41
Оценка:
Здравствуйте, qwertyuiop, Вы писали:

Q>Могу прзнаться — я не знаю pl/1; кроме того — я никогда не писал на паскале и горжусь этим. Что же до твоего самоуверенного заявления, что "они выдают решение №2" — то это лишь твои домыслы граничащие с комплексом неполноценности (хочется самому себе казаться умнее преподавателей). Как раз теоретики такого не напишут. Это больше свойственно студентам-первокурсникам.


А на BASICе ?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Какой ты программист?
От: qwertyuiop Российская Империя  
Дата: 28.12.06 05:57
Оценка: -3 :))) :)
Здравствуйте, Lloyd, Вы писали:

Q>>Могу прзнаться — я не знаю pl/1; кроме того — я никогда не писал на паскале и горжусь этим.


L>В первый раз вижу человека, который гордится своим незнанием.


Ну, во-первых, я хвалился не незнанием pl/1, а тем, что мне не приходилось программировать на паскале.
Может это на первый взгляд выглядит шокирующе, но я рад что мне не приходилось писать на паскале, а я сразу учился на C, благодаря чему мне удалось избежать той зашоренности оторая свойственна паскалистам. Мне приходилось видеть немало умных программистов, которые были до такой степени затюканы этим дубовым и неповоротливым языком, что так и не смогли писать нормальные программы на C. (Кстати, такие люди любят доказывать с пеной у рта, что никаких принципиальных различий у них нет, и что разница лишь в написании скобок.) Многолетняя работа с паскалем зашорила их до такой степени, что они упорно не видели гибкости, которую дает C. Даже банальный цикл for они писали всегда одинаково: for(int i=0; i<SIZE; i++). Когда им говоришь, что переменой цикла может быть не только int, что условием окончания может быть любое логическое выражение, а не только сравнение с размером, а выражением для продолжения не только инкремент или декремент, а что угодно, они просто не понимали — а зачем это может монадобится. Когда же показываешь пример они удивляются буквально как в том анекдоте — "а что, можно было?"
Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re[4]: Какой ты программист?
От: Turtle.BAZON.Group  
Дата: 28.12.06 06:40
Оценка: :)
Здравствуйте, qwertyuiop, Вы писали:

Q>Могу прзнаться — я не знаю pl/1; кроме того — я никогда не писал на паскале и горжусь этим.


Нашли чем гордиться..

Q>P.S. Я не преподаватель и никогда им не был.


А я преподаватель..
... << RSDN@Home 1.2.0 alpha rev. 669>>
Re[3]: Какой ты программист?
От: minorlogic Украина  
Дата: 28.12.06 07:51
Оценка: +1
Здравствуйте, qwertyuiop, Вы писали:

Q>Здравствуйте, Young, Вы писали:


Y>>Нефига себе не нужна. Сколько раз говорилось миру — проверяте значения входных параметров на корректность.


Y>>И считаю это правильным....

Q>

Q>Переменная i представляет собой полное слово с фиксированной
Q>точкой. i принимает значения 1 либо 2. Если i оказалось равным 1,
Q>замените его на 2 и наоборот.

Q>Отсыда следует, что если i оказалась другой, то я вправе вернуть что-угодно. А return some_error — это не обработка ошибки. Это ее маскировка.


Речь идет не об обработке ошибки данных , а о обработке некоректной программы. Т.е. Если кто то использовал функцию и послал неправильные дщанные , хорошо бы нам об этом узнать , а не надеяться на чудо.
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[5]: Какой ты программист?
От: Hiller Беларусь  
Дата: 28.12.06 09:33
Оценка:
Здравствуйте, Кодёнок, Вы писали:

Кё>Здравствуйте, qwertyuiop, Вы писали:


Q>>Ага, только в начале написано

Q>>Переменная i представляет собой полное слово с фиксированной
Q>>точкой. i принимает значения 1 либо 2.
Q>>А потом он ехидничает что никто не проверяет значение.

Кё>Вообще-то программер с опытом уже научен, что спецификация тоже может содержать ошибки. Если вы договорились с программистом Н что он будет давать вашей функции 1 или 2, то это не значит что однажды вы не получите 3.


Вообще-то, здесь рассматривался теоретический пример, где в условии был дан полный спектр принимаемых переменной значений. Про человеческий фактор ничего сказано не было.
Nil mortallibus arduum est!
Re[4]: Какой ты программист?
От: qwertyuiop Российская Империя  
Дата: 28.12.06 09:41
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Речь идет не об обработке ошибки данных , а о обработке некоректной программы. Т.е. Если кто то использовал функцию и послал неправильные дщанные , хорошо бы нам об этом узнать , а не надеяться на чудо.


Кому "нам"? Тому, кто обратился к этой функции? То есть обращаемся к функции, узнаем о том, что она не выполнилась, после чего думаем: а правильные ли данные мы послали? Проверяем их — действительно, неправильные! Исправляем, обращаемся снова — и получаем правильный результат. Ты предлагаешь такой алгоритм? Или найдешь способ его упростить?
Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re[6]: Какой ты программист?
От: Hiller Беларусь  
Дата: 28.12.06 09:45
Оценка:
Здравствуйте, qwertyuiop, Вы писали:

Q>Здравствуйте, Lloyd, Вы писали:


Q>>>Могу прзнаться — я не знаю pl/1; кроме того — я никогда не писал на паскале и горжусь этим.


L>>В первый раз вижу человека, который гордится своим незнанием.


Q>Ну, во-первых, я хвалился не незнанием pl/1, а тем, что мне не приходилось программировать на паскале.

Q>Может это на первый взгляд выглядит шокирующе, но я рад что мне не приходилось писать на паскале, а я сразу учился на C, благодаря чему мне удалось избежать той зашоренности оторая свойственна паскалистам. Мне приходилось видеть немало умных программистов, которые были до такой степени затюканы этим дубовым и неповоротливым языком, что так и не смогли писать нормальные программы на C. (Кстати, такие люди любят доказывать с пеной у рта, что никаких принципиальных различий у них нет, и что разница лишь в написании скобок.) Многолетняя работа с паскалем зашорила их до такой степени, что они упорно не видели гибкости, которую дает C. Даже банальный цикл for они писали всегда одинаково: for(int i=0; i<SIZE; i++). Когда им говоришь, что переменой цикла может быть не только int, что условием окончания может быть любое логическое выражение, а не только сравнение с размером, а выражением для продолжения не только инкремент или декремент, а что угодно, они просто не понимали — а зачем это может монадобится. Когда же показываешь пример они удивляются буквально как в том анекдоте — "а что, можно было?"

Сильно сомневаюсь, что программистов, никогда не слышавших про
while
и
repeat
можно назвать "умными". И уж конечно, не стоит по ним судить о всех паскальщиках/дельфистах.
Nil mortallibus arduum est!
Re[6]: Какой ты программист?
От: Кодёнок  
Дата: 28.12.06 09:47
Оценка:
Здравствуйте, Hiller, Вы писали:

H>Вообще-то, здесь рассматривался теоретический пример, где в условии был дан полный спектр принимаемых переменной значений. Про человеческий фактор ничего сказано не было.


А зачем тогда вот это сказано:

Переменная i представляет собой полное слово с фиксированной
точкой.

Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.