Ошибки в программировании

Ошибки в Программировании - одна из самых серьезных проблем в профессиональном программировании и преподавании информатики.
Подавляющее число программистов не могут и не умеют разрабатывать программы и программную продукцию без ошибок.
Надежность программ и программных систем до сих пор под большим вопросов, поскольку программисты не могут до конца выявить и выправить ошибки в своих программах.
Современные российские стандарты разработки и проектирования программ не направлены на разработку надежной программной продукции.
Единственным ярким пятном являются российские студенты-программисты,которые систематически более 10 лет побеждают американцев на международных олимпиадах и чемпионатах по программированию, где основным условием побед является разработка программ исключительно без ошибок.

Базовая методика разработки программ без ошибок основана на использовании структурных методов проектирования программ и систематических методах решения на ЭВМ задач по информатике, созданных А.Ершовым и В.Кайминым еще в 80-х годах.

По данным Московского департамента образования в 2008г. половина выпускников московских школ, имевших отличные текущие оценки по математике, не смогли сдать ЕГЭ по математике.
По данным Педагогического Интернет-форума выпускники московских школ не смогли сдать пробные ЕГЭ по информатике вообще.
Уровень подготовки московских школьников и преподавателей таков, что учащиеся не способны составлять программы для решения простейших экзаменационных задач на ЭВМ.

Основная причина общеизвестна: московские учителя и методисты не могут решать без ошибок эдементарные школьные задачи по информатике.

Комментарии

Ошибки в программах

ПРОГРАММЫ содержат ошибки, если при выполнении на ЭВМ они дают сбои, отказы или неправильные результаты.
Программа не содержит ошибок,, если при выполнении программы на ЭВМ она дает правильные результаты и никикаих сбоев и отказов.
ПРОВЕРКУ программ можно проиводить путем тестирования на ЭВМ.
Проще всего проверить структурированные программы - нужно проверить все циклы и ветви программы.
Все это должны уметь делать все преподаватели информатики и все ученики, изучающие информатику.
Все подобранные тесты должны храниться в файлах на ЭВМ, чтобы после исправления ошибок перепроверить программу.
ЭТО ВСЕ - АЗБУЧНЫЕ ИСТИНЫ, которые содержатся в учебниках информатики Каймина.
Все участники олимпиад знают это на зубок, а многим преподавателям и программистам невдомек.

Изображение пользователя Alexey_Donskoy.

Азбучные истины

Уж очень примитивные азбучные истины... Жизнь сложнее...
По каждому из выделенных пунктов есть серьёзные возражения, ибо можно далеко пойти, руководствуясь такими истинами...

Но исходное сообщение было, конечно, не об этом ;)
Уровень преподавания действительно недопустимо низок, и недопустимо опущен стандарт образования...

Что могут сделать люди, причастные к образованию (в области информатики, я имею в виду)?
Во-первых, не учить языку программирования.
Во-вторых, учить думать головой!

Соображения о Программировании

Спасибо за Ваши соображения.

Во-первых, согласен не нужно учить языкам программирования в лоб.

Во-вторых, нужно учить думать. Последнее требует решения задач. Главное научить доводить решение до результатов на ЭВМ и проверять их на ЭВМ.

Кстати о языках программирования. Надоела постоянная смена языков Бейсик, Паскаль, Visual Basic,... В языках программирования в информатике нужен стандарт, которые продержится подольше. Стандарт европейский или мировой.

Что об этом скажут программмисты с опытом?

Стандарты Образования

Стандарты Образования в сфере школьной информатики в полной мере не могут обеспечить очень многие преподаватели в вузах и школах. Камень преткновения - неумение многими учителями решать без ошибок даже простейшие задачи. Это вскрылось в Москве, где выпускники московских школ оказываются в массе неспособными решать без ошибок простейшие задачи на ЭВМ - одно из требований современных стандартов образования в области информатики.

В современных стандартах информатики явно не хватает технологий разработки сайтов как литературных произведений.

Не сомневаюсь эта тематика и проблематика будет интересна всем юзерам, девочкам, мамам и бабушкам. При этом все это делается на языке HTML - хоть кривой, но язык программирования с общепризнанными мировыми стандарами.

Изображение пользователя ipanshin.

Что могут сделать люди

Во первых, вовсе не факт, что целью системы образования является научить будущих членов общества писать программы. И во вторых, тоже не факт, что целью является научить думать головой. Как раз наоборот, если все будут думать головой, то кто будет просто работать? А вот препятствовать думать головой, чтобы отсеять тех кто думает даже вопреки от тех кто вопреки не думает - это видимо главная задача. То есть система образования - это прежде всего первый фильтр, основная цель которого отсеять всех, кто обществу опасен.

Противоречивые требования

Согласно Конституции РФ цели образования - не отсеивание, а обучение людей согласно Стандартам образования. Препятствовать людям думать головой? - это вообще очень неординарная задача. Отсеивание людей - это не есть задача образования, а задачи спецслужб. В этих вопросах в нашей стране накопилась очень плохая предыстория (Сталин, Берия, Ежов и т.п.). Обучение программированию нужно далеко не всем. Тут Вы правы. Обучение решению задач с помощью ЭВМ в условиях грядущей полной компьютеризации - это в стандарты образования у нас в стране включено.
Обучить решению задач на ЭВМ можно всех старшеклассников. Даже трудно воспитуемых с отклонениями в интеллектуальном развитии.

Изображение пользователя Alexey_Donskoy.

Цитируем Конституцию?

Вопросы адресованы лично к Вам, как к лицу, вполне причастному к образованию, в т.ч. школьному.

1. Согласны ли Вы принципиально с полезностью стандартизации образования (как указано в Конституции)?

2. Какова мотивация и цели, лежащие в основе разработки стандартов (проще говоря, "кто заказывает музыку")?

3. Каково качество реализации (доказательно!) действующих стандартов образования (хотя бы в области информатики)?

4. Каково объективное влияние ЕГЭ на образование?

Ссылки по теме:
http://nauka.relis.ru/cgi/nauka.pl?05+04... - Доценко. "Пятое правило арифметики"
http://pedsovet.org/mtree/task,viewlink/... - Юрий Неретин. "О будущей эволюции и влиянии ЕГЭ"
http://www.mccme.ru/edu/index.php?ikey=m... - сборник статей "Образование, которое мы можем потерять"
http://forum.oberoncore.ru/viewtopic.php... - обсуждение Болонской системы на форуме Оберон-сообщества

Стандарты Образования в России

1) Стандарты Образования прописаны в Конституции (Основном Законе) российской Федерации. Закон есть Закон. Законы могут писать умные и не очень умные люди. ПО Закону Закону утверждает Государственная ума и Президент Российской Федерации.
Медведев принял Постановление о внедрении Открытого ПО в школы и вузы России с учетом наших мнений и мы говорим у нас очень умный Президент. Знание свойств и возможностей Открытого ПО теперь де факто становится обязательным для российского образования.
Министерство Образования не прикладывает при этом никаких усилий.
2)Мотивы и Цели внедрения стандартов в образовании связываются с внедрением новых технологий и научных дисциплин, важных для развития общества и государства (как мне кажется).
в 1985г. было принято решение о включении информатики в среднее и в 1990г. в высшее образование России. Результат: все вузы и школы под информатику получили компьютеры, Интернет, часы и зарплату для преподавателей и учителей.
"Музыку" заказывают УМО - Учебно-Методические Объединения при МинОбразе РФ. Меня как автора учебников близко не подпускают к УМО.
3)Качество реализации стандартов бывает разным - удачным и неудачным. Стандарты образования по информатике для школ в свое время писал академик Ершов.
Стандарты по информатике для школ были на самой первой фазе удачными. По МинОбразному положению стандарты должны переутверждаться каждые пять лет. Вузовские стандарты по ИТ давным давно устарели, но поскольку УМО давно не обновлялось, то не обновлялись и стандарты. Некторые из стандартов просто ужасны.
Новые проекты стандартов по школьной информатике написаны старым УМО и так 20 лет они проектами и остаются. Из-за чего приоритет имеют старые Ершовские концепции,
4) ЕГЭ - единые госэкзамены утверждены ГосДумой РФ в качестве реализации стандартов среднего образования. Ранее эти стандарты назывались едиными общеобразовательными программами. Н их базе монтировались выпускные и вступительные экзамены.
ЕГЭ в нынешнем варианте - это единые вопросники для выпускных и вступительных экзаменов в школах и вузах. К сожалению, в ЕГЭ часто встречаются ошибки.
САМАЯ БОЛЬШАЯ ДУРЬ - это тесты с выборочными ответами, где учителей и учащихся заставляют читать дурные варианты с ошибками.
На ошибках учатся только дураки, или люди, которых поставили в дурное положение.

Изображение пользователя Alexey_Donskoy.

Резюме...

Спасибо за ответы!
К сожалению, ответы неутешительные...

2) Либо просто отписка, либо непонимание движущих сил общества (или нежелание озвучивать своё мнение по каким-либо причинам). Объективно видно следующее: автор учебника (!) не в курсе политики образования, которая творится конкретными людьми от имени государства, но мотивы этих лиц, принимающих решения, скрыты и неподконтрольны даже самым заинтересованным людям!

4) Непонимание процессов в сложных социальных системах, недооценка влияния инструментов регулирования (тот же ЕГЭ).

Проблему ЕГЭ наиболее правильно описал Неретин, рекомендую...

Грустно...

Но необходимо всё же подумать - что мы (программисты в основном) можем сделать в текущей ситуации?

Нужна помощь программистов

В решении Задач ЕГЭ по информатике нужна помощь программистов. Наши работы по решения задач на ЭВМ поддерживаются несколькими издательствами (ИНФРА-М, Проспект, РИОР и т.д.). У нас достигнута договоренность об издании серии учебных пособий с примерами решения задач на ЭВМ. Работа оплачивается + гонорары.
Технология: решения задач должны быть описаны в форме алгоритмов на псевдокоде Каймина и опубликованы в Интернет в форме программ на JavaScript.
ПРЕДУПРЕЖДЕНИЕ: программы и решения задач должны быть написаны без ошибок. За каждую обнаруженную ошибку выплачиваются бонусы.
Особые бонусы за ошибки в программах, опубликованные в учебниках по программированию.
С предложениями обращаться к профессору В.А.Каймину. e-mail:bak2@narod.ru Неопубликованные и непротестированные решения не принимаются.

Изображение пользователя Alexey_Donskoy.

Аудитория

Более подходящую аудиторию Вы можете найти на http://forum.oberoncore.ru/
Только будьте готовы к критике - там много преподавателей, причём хороших и неравнодушных ;)

Аудитория известна

Эта аудитория известна своими компиляторами и
новейшими языками программирования.

Хотелось бы чего то нового - например изучение
технологий публикаций и разработки сайтов
для сетей ЭВМ.

Разработка программ, языки и еще хуже системы
программирования - все это страшно надоело.
И все в плохом исполнении.

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

Стандарты Образования по Информатике

Стандарты Образования по Информатике в высшей школе регулярно обновляются каждые пять лет. При этом для разных групп специальностей содержание стандартов разнится друг от друга.
Это легко понять, поскольку в основу информатики кладутся информационных технологии, которые коренным образом обновляются согласно Закону Мура каждые 2-3 года.
Проекты Стандартов образовдарания по Информатике в средней школе также обновляются каждые 5 лет. Но ни разу со времен академика Ершова эти стандарты не были утверждены при неизменном составе УМО по школьной информатике.
ЕГЭ и базовые учебники по информатике по этим причинам написаны под стандарты академика Ершова, куда входят вопросы алгоритмизации и решения задач на ЭВМ.
Старое УМО ничего нового придумать не может и экзамены ЕГЭ по информатике превратились в стандарты по информатике де факто.
Основная беда старого УМО состоит в том, что члены этого УМО сами не умеют решать простейшие задачи на ЭВМ и уж тем более составлять программы без ошибок. В чем они никогда не признаются, пока их не расформируют.
Ну и учителей члены этого УМО обучить решению задач на ЭВМ не могут. Цикл замкнулся.
Решение проблемы было найдено в 1993-94гг. когда в Москве в 100 школах организовали пробные вступительные экзамены по информатике, на основе которых был написан наш новый учебник информатики, на основе которого были написаны базовые экзаменационные билеты
по информатике.

Решение школьных задач

Давайте попробуем. Оплату работ мы гарантируем. Нужны решения школьных задач ЕГЭ по информатике. Решения должны быть реализованы на JavaScript и опубликованы в Интернет.
Естественно программы должны быть написаны без ошибок. Как сможете написать программы без ошибок? Проверка программ будет проводиться через Интернет.
Вот и посмотрим - кто умеет думать? а кто - нет? Теоретиков среди нас много, а как насчет практики? Кстати эти задачи - тестовые. Программист, не умеющий решать школьные задачи без ошибок - это не программист, а юзер.
В Московском Университете (МГУ) очень многие программисты не умеют писать программы без ршибок, а в ГПУ им.Ленина - просто беда - там на матфаке МПГУ вообще нет преподавателей, умеющих писать программы без ошибок.

Нужно Думать головой

Чобы учить думать - нужно уметь думать головой!?
Плохо когда слова расходятся с делом.
Люди, причастные к образованию в том числе к обучению информатике должны знать Главные задачи обучения этой дисциплине.
Одной из главных задач является обучение решению задач на ЭВМ,
чем профессионально занимаются все прикладные программисты.

Основной способ решения новых задач на ЭВМ - это составление соответствующих программ на языках программирования.
Если Вы умеете думать - то скажите - как не зная никаких языков программирования можно решать на ЭВМ новые прикладные задачи?
Студентам и школьникам, которые не могут составить программы для решения на ЭВМ простейших задач мы все ставим неудовлетворительные оценки, и положительные оценки, если хотя бы на одном тесте ученик получил правильный ответ.
Вам по информатике я не могу пока поставить никакой оценки - на Вашем языке - ноль.

Изображение пользователя Alexey_Donskoy.

Думать vs программировать

Уважаемый ВАК! Просьба как-нибудь указывать, кому Вы отвечаете... Долго и нудно пролистывал дерево и обнаружил, что вроде бы здесь ответ мне ;)

Одной из главных задач является обучение решению задач на ЭВМ

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

Без этого сегодняшний подход к информатике можно сравнить, скажем, с попыткой обучения математике, когда в программе курса значатся только дифференциальные уравнения. Да, это очень важный раздел математики. Да, он необходим для прикладного использования математики в самых широких областях науки и техники. Однако ж математика не исчерпывается дифурами. Нужна и арифметика, и логика, и дроби, и векторы, и даже тригонометрия, уж не говоря об интегралах ;)

Если Вы умеете думать - то скажите - как не зная никаких языков программирования можно решать на ЭВМ новые прикладные задачи?

Даже если привычно узко трактовать информатику как обучение программированию, надо ещё определить, что такое программирование ;) Можно ли отнести к программированию работу в Ворде? А если пользователь в Ворде пишет макрос для какой-нибудь перекодировки? А если он этот макрос или сценарий конструирует полуавтоматически при помощи встроенных мастеров?

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

Является ли он языком?
Безусловно, как и любая формальная система, применяемая для моделирования какой-либо предметной области.
Нет. не является в обыденном понимании этого слова, поскольку ничего учить не надо (в отличие от псевдокодов), и язык достаточно понятен и ребёнку, и домохозяйке ;)

Вам по информатике я не могу пока поставить никакой оценки - на Вашем языке - ноль.

Фраза непонятна. Уж извините, для программиста Вы черезчур вольно обращаетесь с русским языком...
Или это - дзен? ;) Тогда присоединяйтесь к Оберонским форумам и высказывайте свою оценку по языковым вопросам, это, думаю, будет интересно многим!

Технология Решения Задач

c 1980г. мы используем и обучаем наших студентов и школьников
Единой Технологии Решения Задач на ЭВМ
Задача -> Постановка -> Алгоритм -> Программа -> ЭВМ -> Результаты
Для решения задач и составления программ мы использовали и используем различные языки программирования: Бейсик, Паскаль, Фортан, ПЛ/1, С, Java, Javascript и т.д, и т.п.
Усовершенствованные методы разработки программ позволяют Алгоритмы, записанные на усовершенствованном псевдокоде,
реализовывать на любом из перечисленных языков программирования
.
Простейшая идея, до которой не дошли ни Ершов, ни Дийкстра, превратила усовершенствованные методы превратить в практический инструмент надежной разработки надежных программ для ЭВМ с использованием широкого спектра языков программирования.
В рамках этой единой технологии можно вести разработки для решения на ЭВМ самых различных задач с использованием различных языков программирования.
Идею эту предложил Милз и внедрил ее в корпорации IBM как единую технологию разработки программной продукции для всех ЭВМ фирмы IBM.
Мы тут спорим о языках программирования,их достоинствах, ограничениях и недостатках, а корпорация IBM ведет разработки ПО зарабатывает на этом миллиарды - больше чем Microsoft.
Я лично узнал об этой технологии в конце 70-= годов и все свои разработки более 30 лет ведем в рамках этой единой технологии.
У Вас лично, Алексей Донской, из-за этих языков программирования такая каша в голове. В моих книгах и учебных пособиях опубликовано большое число алгоритмов и программ с доказательствами правильности.
Три комиссии трижды рассматривали мои книги на конкурсной основе и трижды объявляли мои учебники одними из лучших в стране.
Ваших алгоритмов и программ я не видел, не видел результатов их тестирования и работы. Поэтому о Вашей квалификации ничего сказать не могу.

Примеры моих программ, опубликованы в Интернет. С ними можно поработать, почитать исходные тексты.

ОтВЕТ Донскому Алексеею

Ниже приводятся примеры моих программ, опубликованных мной в Интернет.
До тех пор, пока не увижу в Интернет Ваших программ, Вы для меня не программист - а юзер..
Информатику как учебный предмет Вы не знаете, ни программ, ни стандартов, ни учебников.
Экзаменов по информатике Вы не сдавали. По этому никаких оценок ни по математике, ни по физике, ни по информатике или другим вузовским или школьным предметам Вы ставить не можете.

Ваша фраза
"если привычно узко трактовать информатику как обучение программированию, надо ещё определить, что такое программирование" - явно показывает какая путаница у Вас в голове:
1) Вы не знаете - что такое "информатика"?
2) Вы не знаете - что такое "программирование"?
Ну какой Вы программист, если не знаете базовых
понятий и дисциплин.

Изображение пользователя Alexey_Donskoy.

Путаницы

Уважаемый г-н Каймин!

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

Но отвечать по существу - не на что! Все Ваши письма построены по одной и той же схеме - "я Вас не знаю, поэтому читайте истину в моих книгах".

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

После этого я Вас прошу заново перечитать мои сообщения в этой теме и попробовать ответить на поставленные вопросы.
Если сочтёте мою квалификацию недостаточной, не обессудьте; но я надеюсь, что мы заинтересованы в одном общем деле!

Резюме Донского

Ваше Резюме проситал. Выглядит внушительно.
Список публикаций тоже почитал.
Жаль, но Ваша методичка по информатике в незнакомой кодировке.
Прочитать не удалось.

Изображение пользователя Alexey_Donskoy.

Информатика

Да уж, странно... Год назад браузер нормально воспринимал мета-тег META content="text/html; charset=cp866"...

В общем, там обычный DOS (кириллица, кодовая страница 866). Так и осталось с прошлого века ;), поскольку там ряд картинок псевдографикой нарисован, и в кодировках Windows всё портится...

С информатикой не получается

С информатикой ничего не получается. Очень жаль.
Мне было очень интересно понять это от Вас.

А про Open Source у Вас что-нибудь есть
в информатике? Это очень перспективно.

Может Вы исправите кодировку своей методичке.
А то нехорошо - сапожник есть, мастерская есть,
идеи есть, методология есть, а сапоги???

Изображение пользователя Serguei_Tarassov.

Просьба

Убедительная просьба:
1. Писать заголовки прописными буквами
2. Соблюдать тему (сообщения будут удаляться). Для произвольных сообщений исполлзуйте форум или свой блог.

Типология ошибок в программах

Традиционно ошибки в программах на ЭВМ делятся на алгоритмические и синтаксические.
Синтаксические ошибки автоматически выявляются ЭВМ. Их очень легко найти и исправить.
Алгоритмические ошибки носят конструктивный характер и приводят к появлению на ЭВМ сбоев, отказов или неправильных результатов.
При составлении прикладных программ, предназначенных для решения определенных задач на ЭВМ, среди алгоритмических ошибок встречаются:
1) ошибки постановок задач,
2) ошибки в методах решения,
3) ошибки реализации алгоритмов,
4) ошибки организации ввода-вывода.
Все перечисленные ошибки легко выявляются и исправляются при наличии следующих спецификаций (точных и четких описаний):
1) постановок задач,
2) методов решения задач,
3) сценариев ввода-вывода.
При наличии перечисленных математически точных спецификаций в прикладных алгоритмах можно выявить и выправить практически все алгоритмические ошибки, а при отсутствии ошибок - написать доказательства правильности прикладных алгоритмов и программ.

Изображение пользователя Alexey_Donskoy.

Неполная типология

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

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

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

Это серьёзная проблема, между прочим, но Вы её не рассматриваете даже теоретически...

Постановка Задач

Постановка Задач - ключевая проблема в прикладном программировании и любом виде деятельности.
Постановка Задач определяет:
1) что требуется?
2) что дано?

Точность и четкость требований должна определять правильность результатов.
Результат - правильный, если он отвечает требованиям.
Результат - неправильный, если он противоречат требованиям
Отсутствие требований, их расплывчатость не позволяет однозначно судить о правильности результатов, алгоритмов и программ.

Решение задач должно начинаться с их постановок. Многие говорят, что постановка задач - половина решения проблем.

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

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

Тесты и Постановки Задач

Постановки Задач нужны не только для верификации программ, но и для проверки тестов на ЭВМ.
Тесты при проверке программ на ЭВМ состоят из пар: (тест, результат). Естественно, Все результаты в тестах должны быть перепроверены на соответствие постановкам задач.
Наличие ошибок в тестах возможно, а устранить эти ошибки можно только при наличие точных постановок задач, позволяющих для каждого теста определить правильность результатов.
Наличие большого числа ошибок в программах нынешнего поколения программистов объясняется недостаточной полнотой тестов.
При разработке программных продуктов должны быть протестированы не только позитивные результаты, но недопустимые даные и условия, которые также должны быть прописаны в постановках задач.
Составление формальных постановок задач - это хорошая практика не только для преподавателей, принимающих экзамены по информатике, но и для профессиональных программистов, участвующих в приемке и сдаче программной продукции.

Изображение пользователя ipanshin.

Зеркало и мартышка

Давайте вспомним великого Крылова и его басню про зеркало, в которое смотрится мартышка. Так вот алгоритмы и программы относятся к категории зеркал, в котором люди видят собственные ошибки или баги, которые копошатся в их голове. Так не смешно ли вдвойне заниматься исправлением ошибок в программе тем более доказательством ее правильности алгоритмов и программ? То есть мы хотим выправить изображение, оставив собственную кривизну восприятия на том же самом месте? Или оригинал, который смотрится в зеркало настолько велик и непогрешим? Это же нонсенс.
Разве отсюда не следует, что работать нужно прежде всего над оригиналом? И изображение в зеркале исправится само собой. Мы же делаем с точностью до наоборот. Мы говорим, что если перед зеркалом будет стоять группа "обезьян" (извините, я не хочу никого обидеть), обладающая знаниями доказательства правильности в изображении кода, то программа получится безошибочной. надо еще доказать, что можно исправить в обезьяне баг мысли через отображение мыслительного процесса в зеркале.
И вообще смешно.:)

Осенние шорохи

Осень листвою опавшей шуршит
В такт по аллее шагу,
В голых полях бесконечной души
В цвет листопада прилягу.

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

В цвет листопада здесь мысли мои,
Твое подвенечное платье,
Комьями черной остывшей земли
Чувства, желанья, объятья.

( можно так
Комья черной остывшей земли
Чувств моих бренных собратья
)

Осень листвою опавшей шуршит
В ритме моих шагов,
В голых полях непонятной души
Шорохи, шорохи слов …

5 октября 2008

Изображение пользователя Alexey_Donskoy.

Зеркало

Правильно, зеркало...
С первой частью (прозой) согласен полностью ;)

Изображение пользователя ipanshin.

Ну да, а с

Ну да, а с рифмой нет?:) кстати именно рифма является той лакмусовой бумажкой любого текста, который пишется, и алгоритмов и программ в особенности. Если чувствуешь рифму, то смело пиши. Наверное и прозой также, но я не умею. А с рифмой как умею, так что извините. Мрачновато конечно...

Изображение пользователя Alexey_Donskoy.

Рифма

Опять же согласен со всем, кроме мрачности ;) Больше жизни, господа, больше жизни!

Изображение пользователя ipanshin.

Алексей, Вы

Алексей, Вы известный оптимист, но это от отсутствия знаний или наоборот от больших знаний? Можно ли утверждать что Вы отступите от теории Маслоу и сказать, что вы возьмете смех, когда будете голодны?

Изображение пользователя Alexey_Donskoy.

Оптимизм

Оптимист, как Вам известно, отличается от пессимиста исключительно точкой зрения ;)
"- Наша обувь на этом рынке никому не нужна - здесь все ходят босиком...
- Какой перспективный рынок сбыта - здесь ни у кого нет обуви!"

Однако же точка зрения очень важна для Духовного Мира, и Вы об этом знаете.

Да, наверное, мой оптимизм от отсутствия знаний. Например, я не знаком с теорией Маслоу, чем вполне счастлив ;)
Конечно же, и я знаю много ненужных вещей ;) Понимение их ненужности приходит не сразу ;)

Изображение пользователя ipanshin.

к счастью я

к счастью я тоже не знаю Маслоу. А вот выбор смеха vs. еды у голодного оптимиста на самом деле говорит о его духовном мире. Точно также как и плач у голодного пессимиста в противовес еды.
Вспомните притчу о том как двое молятся в церкви.
один с достоинством так как ведет праведную жизнь и уверен, что Господь его наградит, второй же наоборот с плачем оплакивает свою жизнь поскольку вся она полна греха, даже при праведном поведении. ( я забыл как эти люди называются спрошу у жены завтра). Согласен, что именно точка зрения их отличает. Но не согласен с тем, что пессимистическая точка зрения хуже.

Но вы не ответили на вопрос. Выбираете смех или еду?

Изображение пользователя Alexey_Donskoy.

Притча не по теме

А на вопрос о выборе смеха или еды ответить невозможно, вопрос некорректный... Жизнь - она ж не плоская, а многомерная. Ответ, как всегда, лежит в другом измерении ;) Поэтому пока перейдём к притче. Притча не по теме. Первый не является оптимистом, равно как и второй не является пессимистом...
Первый проявляет гордыню, второй - смирение и покаяние.
Не надо путать покаяние с унынием, которое является грехом!

Кстати, рекомендую почитать Ричарда Баха "Иллюзии". Там по этому поводу есть хорошая притча:

26. И сказал он [Мессия] им: "Если человек сказал Богу, что больше всего он
желает помочь миру, полному страданий, и неважно какой ценой, и Бог ответил
и сказал ему, Что он должен сделать, следует ли ему поступить, как ему было
сказано?"

27. "Конечно, Учитель!" - закричала толпа. "Ему должно быть приятно
испытать даже адские муки, если его об этом попросит Господь!"

28. "И неважно, каковы эти муки и насколько сложна задача?"

29. "Честь быть повешенным, слава быть распятым и сожженным, если о том
попросил Господь," - сказали они.

30. "А что вы сделаете", - сказал Мессия толпе, - "если Господь
обратится прямо к вам и скажет: Я ПРИКАЗЫВАЮ ТЕБЕ БЫТЬ СЧАСТЛИВЫМ В ЭТОМ
МИРЕ ДО КОНЦА ТВОЕЙ ЖИЗНИ. Что вы тогда сделаете?"

Изображение пользователя ipanshin.

Да, это мытарь и

Да, это мытарь и фарисей, но пессимизм - это не есть уныние. Именно потому, что это точки зрения. И фарисей оптимист так как имеет точку зрения на свою жизнь. У него все хорошо, значит он счастлив и выберет как раз не еду. А мытарь по точке зрения пессимист. У него тоже все хорошо, но он видит то, что не сделано в его жизни, но могло быть сделано, в отличие от фарисея, который видит только свои деяния. Они измеряют одно и то же - свою жизнь, но с разных концов. Один - что он сделал, второй - что он не успел сделать. И здесь я - пессимист, но это не уныние, хотя граница очень близка, конечно.

Изображение пользователя Alexey_Donskoy.

Фарисей и еда

Назвать фарисея оптимистом... это уже из области кривого зеркала :(

Рискуем совсем отклониться от топика, но вопрос тоже важный ;)
Как я понимаю данный сюжет, оба знают свои грехи (отсутствие безгрешных людей - одно из важных положений христианства). Только один честно плачет, а другой БОИТСЯ (вот это пессимизм и есть) и потому пытается оправдаться (перед Богом!) своими "правильными" делами...

"Господи, да будет Воля Твоя!" - вот это оптимизм. Так что я бы назвал оптимистом мытаря, ибо он уповает на Господа и потому будет спасён!

А с едой всё гораздо проще ;) Нет еды - пойди и купи. Не на что купить - пойди и заработай.
Теперь подумай, кому скорее будет дана возможность заработать - оптимисту или пессимисту? ;)

Изображение пользователя ipanshin.

Не стоит

Не стоит утверждать то чего нет. "Господи, да будет Воля Твоя!" - это они говорят оба. Мытарь плачет, а фарисей боится? Нет в том то и дело, что фарисей не боится. Он уверен, что он живет по божески. Видимо здесь оптимизация с пессимизацией не годится:)

А по поводу еды надо различать купленную еду от еды тобой выращенной (т.е. той что дал тебе Господь). Так что покупкой тут не решишь проблему. А заработать у Господа нельзя, он не платит. Вообще идея заработать - это рабская ипостась. Поэтому ни тому ни другому заработать не дадут.

Зеркала еривые?

Ребята, а у Вас зеркала не кривые?
Это очень смешно!
Вы сами о себе так много рассказали.
Ведь люди все это читают.
И Вы сами о себе такое ...?

Изображение пользователя ipanshin.

Ибо зачем

Ибо зачем мерять собственную свободу чужой совестью?

Изображение пользователя Alexey_Donskoy.

Душа фарисея

Душа фарисея боится, она-то знает... А сознание может и не подозревать...

Про купленную еду - не срастается...
Человек живёт в социуме ("быть свободным от общества нельзя"). Поэтому всё, что даёт Господь, приходит через людей. И, естественным образом, через деньги, поскольку это социальный эквивалент энергии. А законы сохранения действуют не только в Материальном Плане Бытия. Но и в Духовном тоже.

Поэтому не следует заморачиваться на сей предмет. Ишь ты, "заработать - рабская ипостась"! Надо же такое удумать!

Есть много арабской мудрости, которую не худо было бы усвоить ортодоксальным христианам. Например, по этому поводу:
"На Аллаха надейся, а верблюда привязывай!" ;)

А ещё - "У Аллаха нет рук, кроме твоих!"
Всё, что ты делаешь в Мире, ты делаешь для Бога и с Богом. В какой форме приходит благо, зависит от рода деятельности ;)

Об ошибках, фарисеях и грешниках

Борьба с ошибками не должна превращаться в борьбу за безошибочность... Да, и нелепо смотреть на ошибку, как на зло, на беду, как на несчастье. Ошибка, ошибке рознь, но все же ошибка... это прекрасно! Ошибка — это то, что отличает мастера от ремесленника, творца от раба. Мастер делает все, как положено, но что-то, порой неуловимое, он делает не так, ошибается... и создает произведение искусства. Точно так же, как изъян на лице любимой (оттопыренное ушко, припухшая губка...) делает этот лик столь прекрасным и дорогим нашему сердцу. Холодная и строгая правильность не вдохновляет. Фарисеи упрекали Иисуса, в том, что он свободно трактует законы и нарушает догматы веры. Ремесленники-фарисеи не могли простить мастеру свободного владения кистью, но не кисть делает ремесленника художником. Художником делает ошибка. От ошибки к ошибке, от неудачи к неудаче, от горечи поражения к триумфу озарения. Ошибка не страшна, она всего лишь вешка на неправедном пути, в ней нужно разобраться... покаяться и двигаться дальше. Осознавая ошибку, мы настраиваем себя на интуитивное восприятие истины. Но не дай Бог, пытаться отказаться от ошибок и начать бороться за безошибочность, за признание возможной безгрешности! Это путь фарисея — не ошибаться, не сомневаться... не искать. Путь, огражденный частоколом крестов с распятыми Мастерами.

Изображение пользователя Serguei_Tarassov.

Ошибки в кибернетике

Ошибки, т.е.отклонения от существующей условной нормы, в кибернетике рассматриваются как благо, поскольку другого способа эволюции системы не наблюдается.

"Эволюция"

Хм?.. Что-то я недопонял... Отклонения от некоторого заданного состояния в кибернетике рассматриваются, как правило, с позиций построения саморегулируемых систем, в том числе, за счет испрользования обратной связи. Идеальной моделью является полусферическая чаша с шариком. Неважно, какая сила отклоняет шарик, он все равно вернется в заданное состояние в нижней части полусферы. Идеальный механизм регулирования должен работать аналогичным образом.
Что касается эволюции, то это не более, чем гипотеза, причем малоправдоподобная. Эволюция, как и разруха, не в клозетах, а в головах. Представьте себе (мысленно) длинный ряд автомобилей, от самых первых "антилоп гну" до современных, напичканных электроникой. Вроде бы автомобили прошли длинный эволюционный путь. Прошли... в головах конструкторов, дизайнеров, технологов... А на материальном плане это выглядит, как эволюция автомобилей. Точно также прошло "эволюцию" и все остальное... в разуме Творца, и отразилось на нас, в том числе. Ну, а творчество от ошибок неотделимо. Лишите человека права на ошибку и получите... морального урода, который будет бояться сделать самостоятельно малейший шаг.

Изображение пользователя Serguei_Tarassov.

Эволюция и адаптация

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

Хотя это наше утверждение возникло явно из рассмотрения биологических фактов для живых систем и хорошо иллюстрируется нашим прибором, его не понимают многие управляющие. В фирме любая ошибка предается анафеме. Этим не утверждается, что ошибку нельзя допускать. Но она встречается враждебно, без учета того, что и она имеет цену сама по себе. Проницательный управляющий должен рассматривать любую ошибку, сделанную его подчиненными, как мутацию и поставить себя в положение восприимчивого к алгедоническому сигналу обратной связи, который порожден ошибкой. Однако в поведении управляющих наблюдается тенденция полностью сконцентрироваться на исправлении недостатка. Тогда ошибка системы потеряна как стимул к перемене, а сама перемена редко признается в этом духе. Прославляются всякие усилия управляющего, направленные на исправление ошибки, а не на извлечение из нее урока. В свою очередь, сами ошибки рассматриваются в основном как недостаток. Соответственно этому к моменту, когда необходимость в перемене действительно понята (по тем или иным причинам), люди ей сопротивляются, поскольку попытки ввести изменения автоматически увеличивают число ошибок на время, пока эта "мутация" проходит испытание.

С. Бир, "Мозг фирмы", глава 4 "Организация немыслимых систем"

Что же касается автомобилей, то замените слово "автомобиль" на "автомобилестроение" и все встанет на свои места.

Эволюция vs. творение

Обсуждать творческие изыски С. Бира... конечно, интересно... но не более того. И то, что наши оценки "ошибки" совпадают, еще не свидетельство совпадений по более серьезным вопросам. Что касается отношения к "ошибке", то могу сослаться на свое воззвание к "изобретателям велосипедов", которое я публиковал в FIDO, в те времена, когда работ С. Бира я не читал.
Что же касается "мутаций", то здесь С. Бир в очередной раз... глубоко заблуждается. Дело не в том, как воспринимаются "ошибки" "изнутри", и даже не в том, как они воспринимаются "снаружи"... "Ошибки" для их положительной внешней и внутренней (одновременной!) оценки должны быть... своевременными, то есть, быть не раньше, не позже... И они должны соответствовать вектору развития системы. ("В нужное время и в нужном месте"). Другими словами, ошибки, в контексте С. Бира, - это и есть своевременные и правильные решения, более правильные и более своевременные, чем решения принятые на основе существующих знаний/методик. Но я, в отличии от С. Бира, говорил именно об ошибках, а о не о правильных решениях, которые не согласуются с традицией. Это разные понятия.

Что же касается автомобилей, то замените слово "автомобиль" на "автомобилестроение" и все встанет на свои места.

Ничего я менять не буду... То, что приходится разжевывать смысл, не означает, что одно понятие надо подменять другим. Мы видим эволюцию автомобилей, ничего не подозревая об автомобилестроении. Да, реально меняются знания и представления в головах конструкторов, дизайнеров, технологов... которые и есть "автомобилестроение" (и я об этом говорил!). Но эта творческая работа остается для нас "за кадром", мы видим не мысли, не образы... а реальные автомобили, которые меняются, становясь раз за разом... все более удобными и совершенными.
... я же не прошу Вас заменить термин "эволюция" на "творение"... Так давайте быть взаимно... уступчивыми... и ненастойчивыми... Чтобы не утратить смысл того, что обсуждаем.

Изображение пользователя Serguei_Tarassov.

Попробуйте заменить

Попробуйте заменить "эволюцию" на "творение" в предложенном вами контексте автомобилестроения. Мой вариант - эволюция знаний и представлений об автомобиле и его производстве в головах конструкторов, дизайнеров, технологов. Что получится если произвести замену?

Зачем заменять?..

Попробуйте заменить "эволюцию" на "творение" в предложенном вами контексте автомобилестроения

Этого я не смог понять...

Система Зеркал

Разработка программ с привлечением -постановок, алгоритмов, сценариев и других спецификаций программ во многом напоминает систему зеркал: Алгоритмы отображаются в программы, сценарии ввода-вывода в алгоритмы и программы и т.д.
Поэтому алгоритмические ошибки - это ошибки, которые проникли в алгоритмы, а уже оттуда в программы.Самые тяжелые ошибки - это ошибки постановок задач, которые отражаются во все остальные спецификации.
Очень важную роль играют описания алгоритмов, которые пишутся на псевдокоде с использованием родного языка. Чем понятнее текст на русском языке тем меньше ошибок.
Особенно это важно при преподавании программирования, когда тексты алгоритмов требуется озвучивать, и эти слова должны быть понятны слушателям.
Вот здесь начинается софтосложение - важна и запись, и звучание, и исполнение. А если алгоритм и программа получились правильными - то это софтотворение.
Не случайно в структурированных программах, как и в стихах используется ступенчатая запись.

Изображение пользователя ipanshin.

То есть Вы

То есть Вы утверждаете, что каждый может сочинять стихи? И что же это за ступенчатая запись?

Прекрасное Стихотворение

Данный сайт привлекает назначением: он посвящен "софтотворению", что созвучно словам "стихотворения".

Это напоминает нам, что программирование в определенных вопросах является искусством.
О книгах Дийкстры, посвященных доказательному программированию, говорили, что они в некоторой степени являются логическими поэмами (по размерам, композиции и слогу).

Архитектоника алгоритмов, программ и доказательств основана на их трансформационной семантике. И от чтения текстов доказательств в книгах Дийкстры многие люди ощущают эстетическое удовлетворение.

Нужно отметить, что тексты программ пишутся для ЭВМ, а тексты алгоритмов и доказательств пишутся для людей. Дикстре удавалось композицию доказательств накладывать на алгоритмы и программы, которые читатели называли "логическими поэмами".

Спасибо за стихотворение: "Творить всегда, творить везде. Вот лозунг мой и ... "

Часто это у Вас?

Часто это Вас бывает с зеркалами и багами?
Это очень важно и очень интересно.

А вы не пробовали по русски объяснять логику
работы своих программ, оформляя их
в ступенчатой записи?

Почитайте книгу Лингер, Милз, Уитт
"Структурное проектирование программ".
Эту книгу в обязательном порядке читаю
все сотрудники фирмы IBM.

Изображение пользователя Serguei_Tarassov.

Предупреждение

Уважаемый автор, все последующие комментарии, озаглавленные ПРОПИСНЫМИ буквами, будут удаляться.

Усовершенствованные Методы Разработки Программ

Усовершенствованные Методы Разработки Программ были созданы в начале 70-х годов на фирме IBM для обеспечения надежной разработки надежного программного обеспечения. В основу усовершенствованных методов разработки был принят псевдокод как обязательное средство документирования программ вместо блок-схем.

Предложенный метод был назван структурным проектированием программ, поскольку описания на псевдокоде должны составляться до написания текстов программ. Ершовым русская версия псевдокода была названа "Лексиконом" и внедрена Кайминым в школьные и вузовские учебники информатики в соответствии с призывами Ершова.

Основным усовершенствованием пcевдокода, вложенного во все учебники Каймина, было использование расширенного набора управляющих структур, используемых в языках программирования С, Java, PHP, Javascript и т.п.

Дополнительно в начале 80-х годов были описаны конструкции инвариантов циклов для расширенного набора управляющих структур, позволяющие доказывать правильность программ, реализуемых на современных языках программирования С, Java, PHP, Javascript и т.п.

Усовершенствованный псевдокод позволял единым образом описывать алгоритмы на всех перечисленных современных языках программирования и единым образом описывать методы верификации и анализа правильности алгоритмов и программ на указанных языках.

Усовершенствованный псевдокод использовался и при обучении программированию и студентов, и школьников и всех инженеров, участвовавших в проекте "Буран".

Все наши разработчики и преподаватели освоили и применяли инспекцию программных кодов по отношению к алгоритмам, описанным на псевдокоде, и все успешно завершали отладку своих программ.

В корпорации IBM подтвердили статистику, что при использовании псевдокода число ошибок в программах сократилось до 2-3 ошибок на 1 тысячу операторов. У Вас будет такая же статистика только нужно потренироваться в структурном проектировании программ.

Разработка программ без ошибок

Разработка программ без ошибок систематически проводится российскими студентами-программистами на олимпиадах и чемпионатах по программированию.

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

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

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

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

При этом в командах допускается и рекомендуется разделение труда: один участник вводит программы в ЭВМ, а другие разрабатывают тесты, пишут программы на псевдокоде и инспектируют тексты программ.

Результаты впечатляют - на региональных турнирах участвует более 600 российских команд. В каждом регионе выявляется от 10 до 20 команд, успешно решивших по несколько задач, в которых на всех тестах программы дали только правильные результаты.

Практически ежегодно в России более 2000 студентов-программистов разрабатывают по несколько десятков сложных программ,прошедших на ЭВМ полную отладку на больших сериях тестов, практически не содержащие ошибок.

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

ВАК, проф,док.наук