Здравствуйте, Аноним, Вы писали:
LVV>>Предложите третью семантику применения цикла. А>Вам предлагали, вы упорно не хотите замечать, безосновательно утверждая, что всё сводится к перебору и поиску, ссылаясь на свою кривую аналогию.
Ткните еще раз носом. А то постов много стало.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[22]: Как обучать технике программирования?
От:
Аноним
Дата:
30.04.10 05:22
Оценка:
Здравствуйте, LaptevVV, Вы писали:
LVV>Дык вы хотя бы представьтесь сначала. Чтоб я знал, кто тут такой умный...
Как-то так
Здравствуйте, LaptevVV, Вы писали:
LVV>Вот жеж блин! Я для чего это затеял?! Чтоб народ кончструктивно высказывался, а тут как обычно, даже само слово "техника" стали обс...рать! >>> программы просто не владеете...
И что в моих высказываниях не конструктивного? С тем, что техника нужна я согласен, но сразу же возникает вопрос, что на сегодняшний день является правильной техникой? Если человеку поставить неправильную технику, то вреда от этого будет больше чем польза. Вы же почему-то вопрос что есть правильная техника просто отказываетесь рассматривать. И откуда тогда у Вас берется уверенность, что Вы будете учить студентов правильной технике, а не неправильной, которую на реальной работе придется переучивать?
On 30/04/2010 07:56, LaptevVV wrote:
>> > Так и скажите, что классиков — не читали... И читать не собираетесь... >> > Таким образом, техникой программирования элементарных составляющих > .>Покажите эту технику, не я один любопытствую! > Вот жеж блин! Я для чего это затеял?! Чтоб народ кончструктивно > высказывался, а тут как обычно, даже само слово "техника" стали обс...рать!
Не ко мне претензия. Вам показали код, вы его поспешили "обс...рать", мол, вы все необразованные, кнутов не читали. А вот ничего конструктивного с Вашей стороны я так и не наблюдаю.
>> > программы просто не владеете... > .>А оно точно надо? Игра в бисер? > Ну, играйте... А я думаю, как учить...
Так просветите! Уменьшите количество невежества в мире! В конце концов, вы обязаны просвещать, профессия такая.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
On 30/04/2010 08:00, LaptevVV wrote: > Ну так вы можете предложить третий квантор? Если можете — давайте, > пообсуждаем. Я — не могу.
Часто используется "∃!". Вообще говоря, кванторов может быть много, просто полезных не так много, да и их можно свести к этим двум.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, Mr.Cat, Вы писали:
MC>>Здравствуйте, LaptevVV, Вы писали: LVV>>>Уточню. Я просто провел простейшую аналогию между двумя кванторами и двумя циклами. MC>>Ну вот тут уже с тобой человек спорит насчет необоснованности такой аналогии. Я просто привожу довод в пользу его точки зрения. LVV>Тут человек требует, чтобы я написал отрицание квантора. Я — написал. Он не понял. LVV>Я тоже не понимаю, почему я не могу провести такую аналогию. LVV>Когда она лично мне прекрасно объясняет наличие двух ОСНОВНЫХ форм цикла. LVV>Если кто подскажет еще — я только порадуюсь и возьму на вообужение. LVV>А то пока только одни вопли, что этого не может быть. LVV>Давайте перейдем от критиканство к конструктивности. LVV>Предложите третью семантику применения цикла.
"Существует, но не единственный" в рамках сомнительной аналогии с логикой. В виде задачи: найти первые два (три,...) элемента для которых выполнен предикат. Это не поиск (в смысле, что одиночный while pred do ... не пройдёт), но и не полный перебор, поскольку может закончится много раньше.
Здравствуйте, ., Вы писали:
.>On 30/04/2010 08:00, LaptevVV wrote: >> Ну так вы можете предложить третий квантор? Если можете — давайте, >> пообсуждаем. Я — не могу. .>Часто используется "∃!". Вообще говоря, кванторов может быть много, просто полезных не так много, да и их можно свести к этим двум.
Ну так я о чем и говорю. Основных паттернов цикла — два. Аналогия с кванторами напрашивается.
А дополнительные — это синтаксический сахар...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, deniok, Вы писали:
LVV>>>>Уточню. Я просто провел простейшую аналогию между двумя кванторами и двумя циклами. MC>>>Ну вот тут уже с тобой человек спорит насчет необоснованности такой аналогии. Я просто привожу довод в пользу его точки зрения. LVV>>Тут человек требует, чтобы я написал отрицание квантора. Я — написал. Он не понял. LVV>>Я тоже не понимаю, почему я не могу провести такую аналогию. LVV>>Когда она лично мне прекрасно объясняет наличие двух ОСНОВНЫХ форм цикла. LVV>>Если кто подскажет еще — я только порадуюсь и возьму на вообужение. LVV>>А то пока только одни вопли, что этого не может быть. LVV>>Давайте перейдем от критиканство к конструктивности. LVV>>Предложите третью семантику применения цикла.
D>"Существует, но не единственный" в рамках сомнительной аналогии с логикой. В виде задачи: найти первые два (три,...) элемента для которых выполнен предикат. Это не поиск (в смысле, что одиночный while pred do ... не пройдёт), но и не полный перебор, поскольку может закончится много раньше.
1. Почему — не поиск. В условии цикла-то мы ж логическое выражение любой сложности писать можем. Вот и напишем:
while pred1() and pred2() do ... end
2. В последней книге Вирта "Алгоритмы и структуры данных" проведена, на мой взгляд, здравая аналогия двоичного поиска с линейным
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Спасибо всем.
Все же конструктивных мыслей было мало.
Да практически и не было.
Вброс двух видов циклов вызвал шквал критических замечаний, о том, что видов циклов гораздо больше.
Особенно когда я провел аналогию с кванторами. Но никто хотя бы еще одну семантику так и не привел.
Которая принципиально отличается от поиска и перебора.
Вброс разумных ограничений на размер процедуры — аналогично.
И в конце, как обычно, все свелось к тому, что автор темы — неграмотный программист,
неграмотный математик, и его нельзя подпускать к студентам...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Спасибо всем. LVV>Все же конструктивных мыслей было мало. LVV>Да практически и не было. LVV>Вброс двух видов циклов вызвал шквал критических замечаний, о том, что видов циклов гораздо больше. LVV>Особенно когда я провел аналогию с кванторами. Но никто хотя бы еще одну семантику так и не привел. LVV>Которая принципиально отличается от поиска и перебора. LVV>Вброс разумных ограничений на размер процедуры — аналогично.
Самое печальное, что автор темы так ничего и не понял из того, что ему говорили.
LVV>И в конце, как обычно, все свелось к тому, что автор темы — неграмотный программист, LVV>неграмотный математик, и его нельзя подпускать к студентам...
Дык если не в первый раз и "как обычно", задумайтесь.
Здравствуйте, Аноним, Вы писали:
А>Самое печальное, что автор темы так ничего и не понял из того, что ему говорили.
Не делайте поспешных выводов... LVV>>И в конце, как обычно, все свелось к тому, что автор темы — неграмотный программист, LVV>>неграмотный математик, и его нельзя подпускать к студентам... А>Дык если не в первый раз и "как обычно", задумайтесь.
Как обычно — это не только обо мне...
Со мной-то — первый раз...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: Спасибо всем. Пора заканчивать
От:
Аноним
Дата:
30.04.10 09:30
Оценка:
Здравствуйте, LaptevVV, Вы писали:
LVV>Как обычно — это не только обо мне... LVV>Со мной-то — первый раз...
Здравствуйте, Аноним, Вы писали:
А>Ну покажи-расскажи А>Только речь про код изначально не идёт ведь. Умение красиво кодировать можно относительно быстро натренировать при наличии соответствующего матбэкграунда. Проверено.
Умение кодить даже у выпускников мат.специальностей вырабатывается годами.
Дело ведь не в форматировании текста, а в правильной декомпозиции. При этом качественный код, это всегда есть применение нескольких принципов декомпозиции. В большинсве случаев это будет то, что называют функциональным подходом (в отличие от функционального стиля, когда императивная программа использует феньки функционального языка).
Т.е. красивое кодирование есть техника, а не эстетический подход.
А вот пример. Расскажи, кто какой код писал
Q1: if (N<=M) goto Q9; S=0; l=1; r=N;
Q2: i=l; j=r+1; K=R[l]->K;
Q3: i+=1; if (R[i]->K<K) goto Q3;
Q4: j-=1; if (K<R[j]->K) goto Q4;
Q5: if (j<=i) { swap(R[l],R[j],Rt); goto Q7; }
Q6: swap(R[i],R[j],Rt); goto Q3;
Q7: if (r-j>=j-l>M) { push(j+1,r); S+=1; r=j-1; goto Q2; }
if (j-l>r-j>M) { push(l,j-1); S+=1; l=j+1; goto Q2; }
if (r-j>M>=j-l) { l=j+1; goto Q2; }
if (j-l>M>=r-j) { r=j-1; goto Q2; }
Q8: if (S) { pop(l,r); S-=1; goto Q2; }
Q9: for (j=2; j<=N; j+=1) {
if (R[j-1]->K > R[j]->K) {
K=R[j]->K; Rt=R[j]; i=j-1; R[i+1]=R[i];
while (R[i]->K>K && i>=1) i-=1;
R[i+1]=Rt; } }
и вот
template <class T>
void QuickSort(T & item, int left, int right)
{
int i = left;
int j = right;
typename T::value_type center = item[(left + right) / 2];
while(i <= j)
{
while (less(item[i], center))
i++;
while (less(center, item[j]))
j--;
if (i <= j)
Swap(item[i++], item[j--]);
}
if(left < j)
QuickSort(item, left, j);
if(right > i)
QuickSort(item, i, right);
}
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, LaptevVV, Вы писали:
LVV>>Как обычно — это не только обо мне... LVV>>Со мной-то — первый раз...
А>Тем более задумайтесь
Хорошо. На другом форуме побеседуем...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[29]: Как обучать технике программирования?
От:
Аноним
Дата:
30.04.10 09:57
Оценка:
Здравствуйте, Ikemefula, Вы писали:
I>Умение кодить даже у выпускников мат.специальностей вырабатывается годами.
Значит, они не математики ни фига.
I>А вот пример. Расскажи, кто какой код писал
И тот, и другой код ублюдский, и писан не математиками.
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, deniok, Вы писали:
D>>"Существует, но не единственный" в рамках сомнительной аналогии с логикой. В виде задачи: найти первые два (три,...) элемента для которых выполнен предикат. Это не поиск (в смысле, что одиночный while pred do ... не пройдёт), но и не полный перебор, поскольку может закончится много раньше. LVV>1. Почему — не поиск. В условии цикла-то мы ж логическое выражение любой сложности писать можем. Вот и напишем: LVV>
LVV>while pred1() and pred2() do ... end
LVV>
я так понимаю, что единственное удобство использования while для поиска в том и состоит, что мы используем отрицание того предиката, по которому идёт поиск
while not pred do next_elem
А если приходится конструировать сложное условие из нескольких 'технических' предикатов, то преимущество такого подхода перед break (или return) внутри for --- чистая вкусовщина и спор тупоконечников с остроконечниками. Профессионал должен легко читать и такой и сякой код. А писать: fold, map, scan, find, ну или foreach на худой конец
Здравствуйте, deniok, Вы писали:
D>А если приходится конструировать сложное условие из нескольких 'технических' предикатов, то преимущество такого подхода перед break (или return) внутри for --- чистая вкусовщина и спор тупоконечников с остроконечниками. Профессионал должен легко читать и такой и сякой код. А писать: fold, map, scan, find, ну или foreach на худой конец
С этим я почти согласен. Профессионал должен все это уметь читать. И проводить рефакторинг, если что
Должен ли джентельмен, если он — профессионал...
Но речь идет о БАЗОВОЙ технике.
Ведь приходит новичок, а мы ему: можно так, можно эдак, можно вот так, а еще и вот так. У него глаза разбегаются — и он ничего не усваивает.
А если мы ему говорим: смотри, есть два ОСНОВНЫХ способа использовать цикл. Когда перебираешь все, и когда что-то ищешь.
И приводим схемы.
Паттерны откладываются в голове.
И только по мере обучения он познает (и понимает), что можно еще и так, и эдак, и вот так.
Еще аналогия. Когда Альтшулер свой ТРИЗ выдумал — было много воплей о том, что это — фигня! Творчество формализовать невозможно. И тому подобное.
Оказалось — возможно. Более того, формальные приемы изобретательства позволяют смотреть "ширше, дальше и глубже".
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
On 30/04/2010 11:21, LaptevVV wrote:
> .>Часто используется "∃!". Вообще говоря, кванторов может быть много, > просто полезных не так много, да и их можно свести к этим двум. > Ну так я о чем и говорю. Основных паттернов цикла — два. Аналогия с > кванторами напрашивается. > А дополнительные — это синтаксический сахар...
А можно свести и к одному. ∀x ≡ ¬∃¬x. Хотя иногда с этим возникают проблемы...
Просто эти самые удобные в математической практике оказались. Причём тут циклы — хз.
Квантор в общем смысле это такой оператор, вводящий переменную в своё подвыражение, т.е. например Σ или ∫.
Для суровочелябинского можно вообще без кванторов обойтись.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ., Вы писали:
.>On 30/04/2010 11:21, LaptevVV wrote:
>> .>Часто используется "∃!". Вообще говоря, кванторов может быть много, >> просто полезных не так много, да и их можно свести к этим двум. >> Ну так я о чем и говорю. Основных паттернов цикла — два. Аналогия с >> кванторами напрашивается. >> А дополнительные — это синтаксический сахар... .>А можно свести и к одному. ∀x ≡ ¬∃¬x. Хотя иногда с этим возникают проблемы... .>Просто эти самые удобные в математической практике оказались. Причём тут циклы — хз. .>Квантор в общем смысле это такой оператор, вводящий переменную в своё подвыражение, т.е. например Σ или ∫. .>Для суровочелябинского можно вообще без кванторов обойтись.
Вы безусловно правы с точки зрения науки.
Но при практическом объяснении какому-нибудь отстающему — приходится и такие аналогии проводить.
И, знаете, до некоторых доходит... Все же — разные.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
On 30/04/2010 13:38, LaptevVV wrote: > Вы безусловно правы с точки зрения науки. > Но при практическом объяснении какому-нибудь отстающему — приходится и > такие аналогии проводить. > И, знаете, до некоторых доходит... Все же — разные.
Вообще говоря, цикл for(;) в точности соответствует любому квантору в общем виде: — ограниченный квантор по неск переменным, P — ограничивающий предикат. , где "??" — порядок обхода множества, без которого в нашем подлунном мире не обойтись.
Одно плохо, что во многих языках переменные в for могут быть только одного типа. Поубивав бы.
А вот как присобачить цикл while — мне не очень понятно, может поэтому вероятно и существуют некоторые, до которых и не доходит.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай