Re[10]: Как обучать технике программирования?
От: LaptevVV Россия  
Дата: 29.04.10 10:04
Оценка:
Здравствуйте, IT, Вы писали:

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


IT>>>Зачем учиться писать циклы — не понятно Какая цель? Циклы ради циклов?

LVV>>Затем же, зачем учатся наносить удар — чтобы применять.

IT>Цикл без остальной части программы не имеет самостоятельного смысла, в отличии от удара.

Прежде, чем весь удар тренировать. Боксер, например, разучивает элементы стойки, положение ног, положение тела.
И тренер его поправляет, если положение ног или тела при ударе не соответствует. Я знаю, я в бокс некоторое время ходил.
Так и цикл — это часть большой задачи, но без "разучивания" цикла весь "удар"-программа получатся хуже, чем при "разучивании".
Поэтому я и спрашиваю, какой ответ будет давать преподаватель на вопрос студентов "зачем это надо?".
Вот затем и надо. Технику написания цикла поставить...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[9]: Как обучать технике программирования?
От: Undying Россия  
Дата: 29.04.10 10:47
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>2. Смотря какой студент и какой вопрос. Если я восемь раз рассказывал и 10 раз показывал, все уже все поняли, и я сам уже все понял


Я настолько не понятно сформулировал вопрос, что Вы до сих пор не способны написать пример использования while для поиска?
Re[18]: Как обучать технике программирования?
От: Аноним  
Дата: 29.04.10 11:10
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>>>Вы, наверное, не обратили внимание, что речь как раз идет о семантике.

А>>Не только. Выше ведь были какие-то примеры с запретом на большую вложенность циклов и т.д. К семантике подобные запреты не имеют отношения.
LVV>Имеют. Если в проце много вложенных циклов и проца — сложная,

Скажите, а студентам вы так же материал рассказываете и на вопросы отвечаете?

LVV> Имеют. Если в проце много вложенных циклов и проца — сложная, значит надо подумать, порефакторить и упростит. "Выделение метода" у Мартина Фаулера называется. Практически первый прием рефакторинга.


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

LVV>>>Цикл для перебора — это одна семантика, цикли для поиска — совсем другая семантика.

А>>Это правильно. Вот только от вас так и не последовало внятного объяснения, почему видов циклов у вас два.
LVV>Предложите больше. Если найдете...

Значит внятного объяснения так и не будет?

LVV>>>Это очень хорошо, что семантика задачи (поиск или перебор) явным образом отражается в синтаксисе.

А>>Да как же она отражается, когда не отражается? Маловато ваших двух операторов для передачи семантического смысла задачи.
LVV>Две задачи — два цикла
LVV>1. Задача перебора — цикл for$
LVV>2. Задача поиска — цикл while

А>>PS. Кстати, что там с кванторами-то? Во что выльется высказывание "для любого Х существует Y, такой, что выполняется Z"?

LVV>Для любого — это перебор... :
LVV>Псевдокод:
LVV>
LVV>for x in set do
LVV>  if predicate(y)=true do somthing(z);
LVV>

LVV>Перебираем ВСЕ элементы х. В цикле выполняем действия только для тех х, для которых существует y (то есть предикат принимает значение истина) выполняем действие Z.
LVV>Что неясно?

1) вы неверно трактовали математическое высказывание. Z — не действие, Z — это условие. Например: "для любого эпсилон > 0, существует такая дельта > 0, при которой |F(x)-F(x+дельта)| < эпсилон". В общем, в этом духе.
2) по вашей логике, квантор существования должен вылиться в цикл while, его у вас нет.
3) Неясно, как применить операцию отрицания кванторов. В математике достаточно поставить нужный значок. Что нужно добавить в вашем псевдокоде для аналогичного действия?


А>>А если я захочу над кванторами проделать операцию отрицания? В математической записи мне достаточно будет поставить знак отрицания над выражением. А как это будет отражено в вонючих тупых циклах for и while? И сейчас будете утверждать, что эти циклы связаны с кванторами и отражают семантически перебор и поиск?

LVV>Посмотрите выше и увидите...

Там ничего нет, что можно было бы принять за ответ на мои вопросы.
Re[4]: Как обучать технике программирования?
От: Mr.Cat  
Дата: 29.04.10 12:15
Оценка:
Здравствуйте, LaptevVV, Вы писали:
LVV>только две схемы цикла
LVV>Это же два квантора: для любого и существует.
Вообще, программы (и циклы как их составляющие) принято ассоциировать с доказательствами утверждений, но не самими утверждениями (и кванторами как их составляющими). Т.е. при определении фундаментальных конструкций языка надо отталкиваться не от утверждений, а от фундаментальных приемов их доказательств (от противного, индукция и т.п.).
Re[7]: Как обучать технике программирования?
От: . Великобритания  
Дата: 29.04.10 12:53
Оценка:
On 29/04/2010 07:11, LaptevVV wrote:

> Откройте Кнута — том 3 или Вирта "Алгоритмы и структуры данных",

> и посмотрите линейный поиск с барьером.
> Если вы до сих пор этого еще не сделали, то сделайте это сейчас.
Ужоснах. Если имеется в виду вот это, то в век обобщённого программирования, популяризации функциональнщины и иммутабельных структур данных за такие алгоритмы нужно принудительно мумифицировать, в лучшем случае разрешать писать игрушки для сотовых телефонов.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[6]: Как обучать технике программирования?
От: alpha21264 СССР  
Дата: 29.04.10 13:44
Оценка:
Здравствуйте, IT, Вы писали:

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


IT>>>Это потому что в боевых искусствах количество приёмов можно пересчитать на пальцах. Приёмы в программировании исчисляются совсем другими порядками.


A>>Кха... Цикл, условие и подпрограмма.

A>>Этого хватит на любую (кроме совсем уж экзотики) программу.

IT>Ага. В одном только switch/case можно десяток приёмов насчитать. А по поводу выхода из двух циклов сразу у нас тут помнится на пол года баталия была.


Ну я же смайлик поставил!

Эээ... А о чем спорили? Надо ли выходить из двух циклов?

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

Течёт вода Кубань-реки куда велят большевики.
Re[8]: Как обучать технике программирования?
От: LaptevVV Россия  
Дата: 29.04.10 15:35
Оценка: :)
Здравствуйте, ., Вы писали:

.>On 29/04/2010 07:11, LaptevVV wrote:


>> Откройте Кнута — том 3 или Вирта "Алгоритмы и структуры данных",

>> и посмотрите линейный поиск с барьером.
>> Если вы до сих пор этого еще не сделали, то сделайте это сейчас.
.>Ужоснах. Если имеется в виду вот это, то в век обобщённого программирования, популяризации функциональнщины и иммутабельных структур данных за такие алгоритмы нужно принудительно мумифицировать, в лучшем случае разрешать писать игрушки для сотовых телефонов.
Так и скажите, что классиков — не читали... И читать не собираетесь...
Таким образом, техникой программирования элементарных составляющих программы просто не владеете...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[5]: Как обучать технике программирования?
От: LaptevVV Россия  
Дата: 29.04.10 15:38
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

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

LVV>>только две схемы цикла
LVV>>Это же два квантора: для любого и существует.
MC>Вообще, программы (и циклы как их составляющие) принято ассоциировать с доказательствами утверждений, но не самими утверждениями (и кванторами как их составляющими). Т.е. при определении фундаментальных конструкций языка надо отталкиваться не от утверждений, а от фундаментальных приемов их доказательств (от противного, индукция и т.п.).
Уточню. Я просто провел простейшую аналогию между двумя кванторами и двумя циклами.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[10]: Как обучать технике программирования?
От: LaptevVV Россия  
Дата: 29.04.10 15:43
Оценка:
Здравствуйте, Undying, Вы писали:

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


LVV>>2. Смотря какой студент и какой вопрос. Если я восемь раз рассказывал и 10 раз показывал, все уже все поняли, и я сам уже все понял


U>Я настолько не понятно сформулировал вопрос, что Вы до сих пор не способны написать пример использования while для поиска?

А вы не способны посмотреть Вирта или Кнута? Вот если непонятно будет — я объясню...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[19]: Как обучать технике программирования?
От: LaptevVV Россия  
Дата: 29.04.10 16:07
Оценка:
Здравствуйте, Аноним, Вы писали:

LVV>> Имеют. Если в проце много вложенных циклов и проца — сложная, значит надо подумать, порефакторить и упростит. "Выделение метода" у Мартина Фаулера называется. Практически первый прием рефакторинга.

А>Только изначальная конструкция будет иметь такой же смысл, какой и был. Таким образом, денотационная семантика тут не затрагивается. Меняется лишь операционная, да и то не сильно.
Ну дык! Я ничего против этого и не имею...
LVV>>>>Цикл для перебора — это одна семантика, цикли для поиска — совсем другая семантика.
А>>>Это правильно. Вот только от вас так и не последовало внятного объяснения, почему видов циклов у вас два.
LVV>>Предложите больше. Если найдете...
А>Значит внятного объяснения так и не будет?
Дык я ж и говорю: если сможете найти еще, я с удовольствием добавлю ваш вариант в качестве третьего. Я пока не вижу...
А>>>PS. Кстати, что там с кванторами-то? Во что выльется высказывание "для любого Х существует Y, такой, что выполняется Z"?
LVV>>Для любого — это перебор... :
LVV>>Псевдокод:
LVV>>
LVV>>for x in set do
LVV>>  if predicate(y)=true do somthing(z);
LVV>>

LVV>>Перебираем ВСЕ элементы х. В цикле выполняем действия только для тех х, для которых существует y (то есть предикат принимает значение истина) выполняем действие Z.
LVV>>Что неясно?
А>1) вы неверно трактовали математическое высказывание. Z — не действие, Z — это условие. Например: "для любого эпсилон > 0, существует такая дельта > 0, при которой |F(x)-F(x+дельта)| < эпсилон". В общем, в этом духе.
А>2) по вашей логике, квантор существования должен вылиться в цикл while, его у вас нет.
Так бы и говорили сразу...
У нас в курсе матанализа формулировали это так:
Для любого наперед заданного сколь угодно малого эпсилон > 0 существует ... Далее по тексту.
В такой формулировке — это поиск дельты, удовлетворяющего условию. Епсилон — наперед задано.
А>3) Неясно, как применить операцию отрицания кванторов. В математике достаточно поставить нужный значок. Что нужно добавить в вашем псевдокоде для аналогичного действия?
Отрицание квантора "для любого" — это квантор "существует". И наоборот. Не существует — это для любого.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[9]: Как обучать технике программирования?
От: . Великобритания  
Дата: 29.04.10 17:56
Оценка:
On 29/04/2010 18:35, LaptevVV wrote:

> Так и скажите, что классиков — не читали... И читать не собираетесь...

> Таким образом, техникой программирования элементарных составляющих
Покажите эту технику, не я один любопытствую!

> программы просто не владеете...

А оно точно надо? Игра в бисер?
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[20]: Как обучать технике программирования?
От: Аноним  
Дата: 29.04.10 18:00
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>Здравствуйте, Аноним, Вы писали:


А>>Значит внятного объяснения так и не будет?

LVV>Дык я ж и говорю: если сможете найти еще, я с удовольствием добавлю ваш вариант в качестве третьего. Я пока не вижу...

Значит, как не было, так и нет

LVV>Так бы и говорили сразу...


Я считаю, что там это и так очевидно было любому, кто учил матанализ.

А>>3) Неясно, как применить операцию отрицания кванторов. В математике достаточно поставить нужный значок. Что нужно добавить в вашем псевдокоде для аналогичного действия?

LVV>Отрицание квантора "для любого" — это квантор "существует". И наоборот. Не существует — это для любого.

Блин, я же вопрос конкретный задал. И опять на вопрос ответа нет.

Черт побери, от вас, преподавателя, невозможно получить ответы на конкретные вопросы? Из вас их невозможно вытянуть так же, как из студента-двоечника, когда вытягиваешь его хотя бы на тройку. Не стыдно, а? А ведь потенциальные покупатели ваших книжек, да и ваши студенты тоже могут читать этот форум. Перед ними-то хоть позориться перестаньте.
Re[6]: Как обучать технике программирования?
От: Mr.Cat  
Дата: 29.04.10 22:17
Оценка:
Здравствуйте, LaptevVV, Вы писали:
LVV>Уточню. Я просто провел простейшую аналогию между двумя кванторами и двумя циклами.
Ну вот тут уже с тобой человек спорит насчет необоснованности такой аналогии. Я просто привожу довод в пользу его точки зрения.
Re[11]: Как обучать технике программирования?
От: Undying Россия  
Дата: 30.04.10 03:49
Оценка:
Здравствуйте, LaptevVV, Вы писали:

U>>Я настолько не понятно сформулировал вопрос, что Вы до сих пор не способны написать пример использования while для поиска?

LVV>А вы не способны посмотреть Вирта или Кнута? Вот если непонятно будет — я объясню...

Мда, не хотел бы я у Вас учиться. Тот же Павел Дворкин даже если говорит спорные вещи, как правило достаточно внятно их аргументирует, соответственно умению думать он учить студентов способен. А если Вы и студентов учите воспринимать мнение авторитетов как истину в последней инстанции, то в результате получаете начетчиков вместо инженеров.
Re[10]: Как обучать технике программирования?
От: LaptevVV Россия  
Дата: 30.04.10 04:56
Оценка:
>> Так и скажите, что классиков — не читали... И читать не собираетесь...
>> Таким образом, техникой программирования элементарных составляющих
.>Покажите эту технику, не я один любопытствую!
Вот жеж блин! Я для чего это затеял?! Чтоб народ кончструктивно высказывался, а тут как обычно, даже само слово "техника" стали обс...рать!
>> программы просто не владеете...
.>А оно точно надо? Игра в бисер?
Ну, играйте... А я думаю, как учить...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[21]: Как обучать технике программирования?
От: LaptevVV Россия  
Дата: 30.04.10 05:00
Оценка:
Здравствуйте, Аноним, Вы писали:

А>>>Значит внятного объяснения так и не будет?

LVV>>Дык я ж и говорю: если сможете найти еще, я с удовольствием добавлю ваш вариант в качестве третьего. Я пока не вижу...
А>Значит, как не было, так и нет
Ну так вы можете предложить третий квантор? Если можете — давайте, пообсуждаем. Я — не могу.
LVV>>Так бы и говорили сразу...
А>Я считаю, что там это и так очевидно было любому, кто учил матанализ.
Ага.
А>>>3) Неясно, как применить операцию отрицания кванторов. В математике достаточно поставить нужный значок. Что нужно добавить в вашем псевдокоде для аналогичного действия?
LVV>>Отрицание квантора "для любого" — это квантор "существует". И наоборот. Не существует — это для любого.
А>Блин, я же вопрос конкретный задал. И опять на вопрос ответа нет.
А я конкретно отвечаю. Это очевидно для всех, кто учил матлогику.
А>Черт побери, от вас, преподавателя, невозможно получить ответы на конкретные вопросы? Из вас их невозможно вытянуть так же, как из студента-двоечника, когда вытягиваешь его хотя бы на тройку. Не стыдно, а? А ведь потенциальные покупатели ваших книжек, да и ваши студенты тоже могут читать этот форум. Перед ними-то хоть позориться перестаньте.
Дык вы хотя бы представьтесь сначала. Чтоб я знал, кто тут такой умный...
Буду обращаться за советами.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[7]: Как обучать технике программирования?
От: LaptevVV Россия  
Дата: 30.04.10 05:03
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

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

LVV>>Уточню. Я просто провел простейшую аналогию между двумя кванторами и двумя циклами.
MC>Ну вот тут уже с тобой человек спорит насчет необоснованности такой аналогии. Я просто привожу довод в пользу его точки зрения.
Тут человек требует, чтобы я написал отрицание квантора. Я — написал. Он не понял.
Я тоже не понимаю, почему я не могу провести такую аналогию.
Когда она лично мне прекрасно объясняет наличие двух ОСНОВНЫХ форм цикла.
Если кто подскажет еще — я только порадуюсь и возьму на вообужение.
А то пока только одни вопли, что этого не может быть.
Давайте перейдем от критиканство к конструктивности.
Предложите третью семантику применения цикла.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[12]: Как обучать технике программирования?
От: LaptevVV Россия  
Дата: 30.04.10 05:04
Оценка:
Здравствуйте, Undying, Вы писали:

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


U>>>Я настолько не понятно сформулировал вопрос, что Вы до сих пор не способны написать пример использования while для поиска?

LVV>>А вы не способны посмотреть Вирта или Кнута? Вот если непонятно будет — я объясню...

U>Мда, не хотел бы я у Вас учиться. Тот же Павел Дворкин даже если говорит спорные вещи, как правило достаточно внятно их аргументирует, соответственно умению думать он учить студентов способен. А если Вы и студентов учите воспринимать мнение авторитетов как истину в последней инстанции, то в результате получаете начетчиков вместо инженеров.

Да и ладно.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[22]: Как обучать технике программирования?
От: Аноним  
Дата: 30.04.10 05:10
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

А>>>>3) Неясно, как применить операцию отрицания кванторов. В математике достаточно поставить нужный значок. Что нужно добавить в вашем псевдокоде для аналогичного действия?

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

Для всех, кто учил матлогику (и для тех, кто просто владеет логикой), очевидно, что на мой вопрос вы не ответили. Может быть надо пояснить, что вопросительным является предложение, в конце которого стоит знак '?'. Я думал, что вы это знаете, извините.
Re[8]: Как обучать технике программирования?
От: Аноним  
Дата: 30.04.10 05:16
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Я тоже не понимаю, почему я не могу провести такую аналогию.

LVV>Когда она лично мне прекрасно объясняет наличие двух ОСНОВНЫХ форм цикла.

Ну и о чем дальше говорить?

LVV>Предложите третью семантику применения цикла.


Вам предлагали, вы упорно не хотите замечать, безосновательно утверждая, что всё сводится к перебору и поиску, ссылаясь на свою кривую аналогию.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.