Здравствуйте, LaptevVV, Вы писали: MC>>1. По какому принципу проводится аналогия между кванторами в высказываниях им циклами (изоморфизм Ткачева-Лаптева?). Какие примитивы структурного программирования ставятся в соответствие другим элементам высказываний, например, коньюнкциям, дизъюнкциям? LVV>О БОЖЕ ж мой!!!!! LVV>Простую аналогию уже возвели в ранг изоморфизма... LVV>Воистину, в одном и том же слове КАЖДЫЙ видит СВОЕ...
Кроме шуток. По какому принципу в соответствие кванторам ставятся циклы? Я правда не понимаю.
MC>>2. Как от перебора и поиска ты переходишь к for и while? LVV>Перебор элементов реализуется циклом for, а поиск — циклом while.
А почему не предлагаются более очевидно следующие из предыдущей аналогии формы фундаментальных циклов: foreach и find? Например, совершенно непонятно, как for может быть универсальным циклом перебора множества, если он работает только для чисел, и то хреновенько.
Здравствуйте, Mr.Cat, Вы писали:
MC>Здравствуйте, LaptevVV, Вы писали: MC>>>1. По какому принципу проводится аналогия между кванторами в высказываниях им циклами (изоморфизм Ткачева-Лаптева?). Какие примитивы структурного программирования ставятся в соответствие другим элементам высказываний, например, коньюнкциям, дизъюнкциям? LVV>>О БОЖЕ ж мой!!!!! LVV>>Простую аналогию уже возвели в ранг изоморфизма... LVV>>Воистину, в одном и том же слове КАЖДЫЙ видит СВОЕ... MC>Кроме шуток. По какому принципу в соответствие кванторам ставятся циклы? Я правда не понимаю.
Ну, "для любого" — это все нужно посмотреть... А "существует" — это один хотя бы найти надо.
MC>>>2. Как от перебора и поиска ты переходишь к for и while? LVV>>Перебор элементов реализуется циклом for, а поиск — циклом while. MC>А почему не предлагаются более очевидно следующие из предыдущей аналогии формы фундаментальных циклов: foreach и find? Например, совершенно непонятно, как for может быть универсальным циклом перебора множества, если он работает только для чисел, и то хреновенько.
Ну, в С++ и foreach и find — реализуются как раз с помощью циклов. Это абстракции более высокого полета, чем циклы...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[12]: Как обучать технике программирования?
От:
Аноним
Дата:
05.05.10 09:46
Оценка:
Здравствуйте, LaptevVV, Вы писали:
LVV>Ну, в С++ и foreach и find — реализуются как раз с помощью циклов. Это абстракции более высокого полета, чем циклы...
Ну а циклы реализуются с помощью машинных команд сравнения и условного перехода. Это же не повод утверждать, что команды сравнения и условного перехода несут семантику циклов? Ибо циклы — абстракция более высокого полёта, чем машинные команды.
Здравствуйте, Аноним, Вы писали:
А>Ну а циклы реализуются с помощью машинных команд сравнения и условного перехода. Это же не повод утверждать, что команды сравнения и условного перехода несут семантику циклов? Ибо циклы — абстракция более высокого полёта, чем машинные команды.
Да, именно так. Это абстракции. И осваивать новые асбтракции можно только полностью освоив базовые.
Re[14]: Как обучать технике программирования?
От:
Аноним
Дата:
05.05.10 12:34
Оценка:
Здравствуйте, Ikemefula, Вы писали:
I>Да, именно так. Это абстракции. И осваивать новые асбтракции можно только полностью освоив базовые.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Ikemefula, Вы писали:
I>>Да, именно так. Это абстракции. И осваивать новые асбтракции можно только полностью освоив базовые.
А>С чего прикажете начать? С машинных команд?
А как же токи, напряжения в схемах и электроны в конце концов?
Здравствуйте, Аноним, Вы писали:
I>>Да, именно так. Это абстракции. И осваивать новые асбтракции можно только полностью освоив базовые.
А>С чего прикажете начать? С машинных команд?
Начинать со школьной математики. Постепенно нужно давать понятие процесса вычислений.
Здравствуйте, Курилка, Вы писали:
I>>>Да, именно так. Это абстракции. И осваивать новые асбтракции можно только полностью освоив базовые.
А>>С чего прикажете начать? С машинных команд?
К>А как же токи, напряжения в схемах и электроны в конце концов?
И это тоже надо. Но конкретно для обучения программированию — не обязательно.
Re[16]: Как обучать технике программирования?
От:
Аноним
Дата:
05.05.10 18:21
Оценка:
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, Аноним, Вы писали:
I>>>Да, именно так. Это абстракции. И осваивать новые асбтракции можно только полностью освоив базовые. А>>С чего прикажете начать? С машинных команд? I>Начинать со школьной математики. Постепенно нужно давать понятие процесса вычислений.
При чем тут школьная математика? Мы ж про программирование говорим. В начале обучения программированию подразумевается, что школьная математика уже изучена. И, обычно, в процессе изучения находится высшая.
И на этом этапе наиболее целесообразным и безболезненным переходом является переход от математики к программированию примерно на тот же уровень абстракций. Такой, который предлагают языки высокого уровня, которые должны изучаться в курсе "программирование на ЯВУ" (не С++, конечно же). Студент до определенного момента не должен заботиться о том, что такое освобождение памяти, зачем в языке несколько разных типов, обозначающих целое число, как реализована строка и т.д. А потом уже можно двигаться параллельно в обе стороны: как в сторону абстракций более высокого уровня (архитектура ПО и т.д.), так и в сторону более низкого (ассемблер, системные вещи). Но ни в коем случае не начинать с ассемблера, С и им подобных вещей.
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, Курилка, Вы писали:
А>>>С чего прикажете начать? С машинных команд?
К>>А как же токи, напряжения в схемах и электроны в конце концов?
FR>Это не программирование, самый нижний уровень именно программирования это базовые логические элементы И, НЕ, ИЛИ.
Ммм, у мсье есть определение абсолютного базиса программирования?
Ссылку в студию
I/O осуществляется через какой из элементов?
FR>>Это не программирование, самый нижний уровень именно программирования это базовые логические элементы И, НЕ, ИЛИ.
К>Ммм, у мсье есть определение абсолютного базиса программирования? К>Ссылку в студию
Тема скользкая, но электроны и напряжения точно никакого отношения к предмету не имеют. Компьютер без проблем можно
построить хоть на пневматических элементах хоть на шестеренках. Но если этот компьютер будет основан на двоичной логике
то на чем бы он не был сделан самый нижний слой и будет состоять из базовых логических элементов.
К>I/O осуществляется через какой из элементов?
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, Курилка, Вы писали:
FR>>>Это не программирование, самый нижний уровень именно программирования это базовые логические элементы И, НЕ, ИЛИ.
К>>Ммм, у мсье есть определение абсолютного базиса программирования? К>>Ссылку в студию
FR>Тема скользкая, но электроны и напряжения точно никакого отношения к предмету не имеют. Компьютер без проблем можно FR>построить хоть на пневматических элементах хоть на шестеренках. Но если этот компьютер будет основан на двоичной логике FR>то на чем бы он не был сделан самый нижний слой и будет состоять из базовых логических элементов.
Продолжая скользкость темы можно вспомнить троичную логику Сетуни и квантовые компьютеры
Здравствуйте, Курилка, Вы писали:
К>Продолжая скользкость темы можно вспомнить троичную логику Сетуни и квантовые компьютеры
С троичной и n-значной логикой проблем никаких, там есть свои базовые логические элементы.
В квантовых компьютерах тоже есть минимальные логические элементы — кубиты.
Тут надо копать или в сторону аналоговых машин, или биологических нейронных сетей в которых тоже
тяжело разделить хард и софт.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Ikemefula, Вы писали:
I>>Да, именно так. Это абстракции. И осваивать новые асбтракции можно только полностью освоив базовые.
А>С чего прикажете начать? С машинных команд?
Или с команд исполнителя-черепашки...
Хотя я начинал как раз с машинных команд — весьма полезно оказалось. Во всяком случае, проблем с написанием последовательности действий не возникало НИКОГДА. В отличие от нынешних абитуров...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Аноним, Вы писали:
А>И на этом этапе наиболее целесообразным и безболезненным переходом является переход от математики к программированию примерно на тот же уровень абстракций.
С чего ты взял что это безболезненно и целесообразно ?
Вводить в программирование нужно гдето с 10 класса, начинать с указания того, что такое вычисления, чем они отличаются от записей на бумажке — точность, время, ресурсы, ручной труд.
Любая деятельность, в т.ч. и программирование, начинается всегда с сенсорно-моторной стадии и до абстрактного мышления в этой деятельности надо пройти еще несколько стадий. Т.е. мышление нужно развивать каждый раз когда осваиваетя новая деятельность.
А ты же решил сразу дать абстракции
Абстрации нисколько не универсальная сущность. Пойми одну вещь — даже математики занимаются исключительно конкретной областью, и уже в смежной области их достижения сходят на нет.
>Такой, который предлагают языки высокого уровня, которые должны изучаться в курсе "программирование на ЯВУ" (не С++, конечно же). Студент до определенного момента не должен заботиться о том, что такое освобождение памяти, зачем в языке несколько разных типов, обозначающих целое число, как реализована строка и т.д.
Это устарело. В Мит и стенфорде от этого отказались. В стенфорде так вообще за С взялись.
Re[18]: Как обучать технике программирования?
От:
Аноним
Дата:
06.05.10 13:49
Оценка:
Здравствуйте, Ikemefula, Вы писали:
I>С чего ты взял что это безболезненно и целесообразно ?
С того, что математика — это язык описания сущностей реального мира и никакого другого языка для этого не существует. И именно на этом языке учат формализовывать предметные области любого нормального инженера. А программирование — это лишь инструмент для перевода математических абстракций в форму, понятную компьютеру. И чем меньше написанная программа будет отличаться от математической записи, тем лучше на начальном этапе. И именно с этого уровня и надо начинать. И только потом изучать аспекты и тонкости. Ибо premature optimization is the root of all evil.
I>Вводить в программирование нужно гдето с 10 класса, начинать с указания того, что такое вычисления, чем они отличаются от записей на бумажке — точность, время, ресурсы, ручной труд.
И нафига оно всё надо школьнику? Всё, что он должен знать про компьютер — это то, что компьютер создан для автоматизации рутинной работы. Для школьника достаточно и черепашки с кукарачей.
I>Любая деятельность, в т.ч. и программирование, начинается всегда с сенсорно-моторной стадии и до абстрактного мышления в этой деятельности надо пройти еще несколько стадий. Т.е. мышление нужно развивать каждый раз когда осваиваетя новая деятельность.
С этим сложно поспорить. Однако в том же программировании ничего не мешает на начальном этапе изучать абстракции высокого уровня, не зная того, как они реализуются на низком. И это потому, что эта деятельность ни черта не новая, а идёт параллельно с математикой. По крайней мере у нормальных людей, а не у кодеров-птушников. Сенсорно-моторная стадия тут конечно же имеется, но не на уровне изучения низкоуровневых сущностей и прочей параши.
Конечно же, хороший программист должен знать архитектуру и устройство компьютера, нюансы и ограничения, которые вытекают из этого и т.д., и всё это должно ложиться в стройную систему в голове. Вот только начинать с самого низа не обязательно. А то есть все шансы, что система в голове не выстроится, и так и будет: программирование отдельно, математика отдельно, одно с другим не состыковывается и рождает на выходе эталонное дерьмо.
Или мы с тобой по разному понимаем, кто такой программист.
I>А ты же решил сразу дать абстракции
Математические абстракции и так уже даны или даются к тому моменту. Я решил показать, как ими можно оперировать, используя компьютер. То есть показать, как перевести математические абстракции на язык компьютера, чтобы он занимался вычислениями вместо человека, в понятных человеку терминах.
А ты предлагаешь вернуться в первый класс и учиться складывать 2+2, чтобы "набить руку", или сначала пописать до посинения if с goto, перед тем как перейти к более высокой абстракции цикла. Не смеши её, она и так смешная.
>>Такой, который предлагают языки высокого уровня, которые должны изучаться в курсе "программирование на ЯВУ" (не С++, конечно же). Студент до определенного момента не должен заботиться о том, что такое освобождение памяти, зачем в языке несколько разных типов, обозначающих целое число, как реализована строка и т.д. I>Это устарело. В Мит и стенфорде от этого отказались. В стенфорде так вообще за С взялись.
Здравствуйте, Аноним, Вы писали:
I>>С чего ты взял что это безболезненно и целесообразно ?
А>С того, что математика — это язык описания сущностей реального мира и никакого другого языка для этого не существует. И именно на этом языке учат формализовывать предметные области любого нормального инженера. А программирование — это лишь инструмент для перевода математических абстракций в форму, понятную компьютеру. И чем меньше написанная программа будет отличаться от математической записи, тем лучше на начальном этапе. И именно с этого уровня и надо начинать.
В Мит и стенфорде от этого отказались, ибо людям крайне сложно воспринимать виртуальную машину.
Невозможно начать осваивать виртуальную машину с интегралов, производных и тд., потому что существенные различия происходят на уровене f(x) = x+1. И именно отсюда надо начинать освоение.
I>>Вводить в программирование нужно гдето с 10 класса, начинать с указания того, что такое вычисления, чем они отличаются от записей на бумажке — точность, время, ресурсы, ручной труд.
А>И нафига оно всё надо школьнику? Всё, что он должен знать про компьютер — это то, что компьютер создан для автоматизации рутинной работы. Для школьника достаточно и черепашки с кукарачей.
Однако важнейший вывод, обосновывающий место информатики в общеобразовательной школе, был сделан несколько позднее, когда было показано, что на знания, умения и навыки “программистского стиля мышления” непосредственно опираются существенно более общие, общекультурные умения и навыки: планирование, поиск, моделирование, общение, инструментирование своей деятельности. Для совокупности этих умений и навыков А.П. Ершов предложил термин “операционный стиль мышления”: он не только знал, понимал и высоко ценил идеи Жана Пиаже, но и видел их место в формировании молодого человека информационного общества. А.П. Ершов определил основной целью школьного курса информатики ответ школы на социальный заказ общества — формирование операционного стиля мышления у молодого поколения, начинающего активную жизнь в эпоху информационного общества. Такой вывод был обоснован: среди множества научных дисциплин, отраженных в школьных предметах, была лишь одна дисциплина, располагавшая полным концептуальным запасом понятий, механизмов и идей, необходимых для формирования операционного стиля мышления, — информатика. Богатый фундаментальный понятийный потенциал информатики делает ее стержнем, вокруг которого группируется, организуется система школьных дисциплин.
I>>Любая деятельность, в т.ч. и программирование, начинается всегда с сенсорно-моторной стадии и до абстрактного мышления в этой деятельности надо пройти еще несколько стадий. Т.е. мышление нужно развивать каждый раз когда осваиваетя новая деятельность.
А>С этим сложно поспорить. Однако в том же программировании ничего не мешает на начальном этапе изучать абстракции высокого уровня, не зная того, как они реализуются на низком.
Мешает, ибо люди не имеют представления о виртуальной машине и это проявляется в первом же применение программирования.
>И это потому, что эта деятельность ни черта не новая, а идёт параллельно с математикой. По крайней мере у нормальных людей, а не у кодеров-птушников. Сенсорно-моторная стадия тут конечно же имеется, но не на уровне изучения низкоуровневых сущностей и прочей параши.
Наоборот, это новая деятельность — организация вычислений, а не сами вычисления.
I>>А ты же решил сразу дать абстракции
А>Математические абстракции и так уже даны или даются к тому моменту. Я решил показать, как ими можно оперировать, используя компьютер. То есть показать, как перевести математические абстракции на язык компьютера, чтобы он занимался вычислениями вместо человека, в понятных человеку терминах.
По любому надо учить с нуля. Сначала научить, как перевести f(x) = x+1.
А>А ты предлагаешь вернуться в первый класс и учиться складывать 2+2, чтобы "набить руку", или сначала пописать до посинения if с goto, перед тем как перейти к более высокой абстракции цикла. Не смеши её, она и так смешная.
Учиться складывать 2+2 не надо. Надо научить перекладывать такое на компьютер.
Будешь смеяться,на первой лекции по 6.01 в Мит так и делают.
I>>Это устарело. В Мит и стенфорде от этого отказались. В стенфорде так вообще за С взялись.
А>Линки есть? Или опять Рабинович напел?
Здравствуйте, Ikemefula, Вы писали:
I>Невозможно начать осваивать виртуальную машину с интегралов, производных и тд., потому что существенные различия происходят на уровене f(x) = x+1.
Какие конкретно различия?
I>
I>Однако важнейший вывод, ... [skip] ... Богатый фундаментальный понятийный потенциал информатики делает ее стержнем, вокруг которого группируется, организуется система школьных дисциплин.
Это слишком утопический текст. Более того, не совсем понятно, за каким хреном тут информатика поставлена как стержень школьного образования. Ну да оставим это на совести автора.
I>Мешает, ибо люди не имеют представления о виртуальной машине и это проявляется в первом же применение программирования.
Как проявляется? Приведи конкретный пример.
I>По любому надо учить с нуля. Сначала научить, как перевести f(x) = x+1.
Чего там учить? Это идёт сразу же после Hello, World. В repl.
А>>А ты предлагаешь вернуться в первый класс и учиться складывать 2+2, чтобы "набить руку", или сначала пописать до посинения if с goto, перед тем как перейти к более высокой абстракции цикла. Не смеши её, она и так смешная.
I>Учиться складывать 2+2 не надо. Надо научить перекладывать такое на компьютер. I>Будешь смеяться,на первой лекции по 6.01 в Мит так и делают.
Ну да. Только там руку никто не набивает на этом. Это и так идёт на интуитивном уровне, ага?