Статья Программирование и алгоритмизация в учебных заведения

Раздел Информатика
Класс -
Тип Статьи
Автор
Дата
Формат doc
Изображения Нет
For-Teacher.ru - все для учителя
Поделитесь с коллегами:

Никишев В.К.

ПРОГРАММИРОВАНИЕ И АЛГОРИТМИЗАЦИЯ

В УЧЕБНЫХ ЗАВЕДЕНИЯХ

В настоящее время наиболее уязвимой учебной дисциплиной как ни странно является « Программирование». Она является составной частью учебной дисциплины « Информатика». Вычислительная техника и современные информационные технологии постоянно развиваются, появляются новые информационные средства и оборудования в компьютерных классах в различных учебных заведениях. Количество отводимых учебных часов однако остается таким же, а для того, чтобы учащиеся обладали основами информационной культуры, т.е. умение работать на компьютере, необходимо выбирать разделы дисциплины» Информатика». Тем более, что есть возможность работы в системе Интернет. Сравнительный анализ знаний студентов 1-го курса показывает, что только несколько школ оставляют программирования как составную часть информатики. Общий итог: среди опрошенных в течение 2-3 лет почти процентов 80-90 совсем не знают никаких языков программирование. Быть ей или нет в учебных заведениях. А если быть, то что давать: языки программирования или математические пакеты программ, в которых есть все для вычислений как математических задач, так и физических и т. д. В школах фактически такое направление практически исключено из раздела учебной дисциплины « Информатика». В высшей школе на физико-математических факультетах такая дисциплина есть, но и здесь не все понятно. Одни обучают языку программирования Pascal, другие Visual Basic, а третьи за основу берут C++, VC++. А в этом году фирма Microsoft предлагает даже в школах изучать языки из пакета программ Visual Studio 2003, Visual Studio 2005 и т. д.

Прежде всего, чтобы решить данный вопрос надо ответить на три вопроса: Зачем?, Что?, и Как?. Для ответа на первый вопрос можно обраться к небольшой исторической справки относительно программирования вообще и профессии

« Программист» мыслями известного программиста и ученого в области теоретического программирования А.П. Ершова.

Справка. Андрей Петрович Ершов, выдающийся программист и математик, лидер советского программирования, родился 19 апреля 1931г. в Москве. Умер 8 декабря 1988 г. В 1954 г. А.П.Ершов закончил университет - это был первый в советских вузах массовый выпуск по специальности «программирование». С 1954 по 1957 г. он аспирант А.А.Ляпунова в Московском университете. Кандидатскую диссертацию, посвященную понятию операторного алгоритма, он подготовил к 1958 г., однако в связи с настороженным отношением математиков к новой науке защитить ее ему удается только в 1962 г. Докторская диссертация по методам построения трансляторов защищается им в 1968 г. В 1970 г. он становится членом-корреспондентом, а в 1984 г. - академиком АН СССР. Такое быстрое продвижение связано с тем, что уже в конце 50-х гг. он становится одним из ведущих советских программистов - не только благодаря своим блестящим индивидуальным работам, но и как руководитель плодотворно работающих программистских коллективов. Велико влияние Ершова и на развитие программистской науки и практики в стране в целом. Он был одним из основных организаторов большого числа национальных конференций, семинаров и школ по различным проблемам системного и теоретического программирования, членом редколлегий основных советских программистских журналов, редактором журнала «Микропроцессорные средства и системы», председателем ряда национальных комиссий и рабочих А.П.Ершов - один из тех ведущих мировых ученых, благодаря деятельности которых выделились и оформились такие научные направления современного программирования, как теоретическое и системное программирование. Его творческое наследие обширно, оно включает более 200 книг и статей.

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

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

В 80-90-е годы программирование становится массовой профессией. Однако надо иметь в виду, что тогда программирование, пожалуй, была самая трудная из всех массовых профессий, причем, к сожалению, не признана в должной мере. Сложность для программиста непосредственно упирается в человеческое познание в виде алгоритмически неразрешимых проблем и глубоких работы головного мозга. Трудность состоит в том, что собственный стек программиста должен быть глубиной не в 5-6 позиций, как это обнаружили психологи у среднего человека, а той же, что и стек в его задаче, подлежащей программированию, плюс еще две-три позиции, а также и в том, что программист должен обладать способностью к абстракции, логическому мышлению в сочетании с эдисоновским сооружать все что угодно из нуля и единицы. Он должен сочетать аккуратность бухгалтера с проницательностью разведчика, фантазию автора детективных романов с трезвой практично­стью экономиста. А кроме того, программист должен иметь вкус к коллективной работе, понимать интересы пользователя и многое другое.

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

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

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

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

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

Для того чтобы осуществить такой скачок, человечеству понадобится много меньше чем 1000 лет, однако сейчас мы еще очень далеки от этого. Нас окружают более прозаические проблемы, требующие немедленных действий. Однако внутренний мир каждого человека, в том числе и скромного преподавателя, учителя по информатике или инженера, читающего толстое руководство по программированию или ищущего нужную клавишу за терминалом, хранит в себе неисчер­паемую глубину мыслей, желаний и переживаний. Автор глубоко убежден, что дело, которым занимается программист, требует и от его коллег, и тем более от его руководителей существенно большего понимания мотивов к выполнению его профессионального долга и перспектив его жизненного пути. Ершов отмечает, что программирование необходимо современному человеку не только в силу того, что ЭВМ в ближайшем будущем пронижет все стороны жизни, но и потому, что современная жизнь требует повседневного планирования и предвидения.. Он говорит: «Вторая грамотность - это не только умение писать команды, но и воспитание человека, решительного и предусмотрительного вместе». Программирование, заключает Ершов, является существенной компонентой современного обучения и воспитания.

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

А вот что изучать, то это зависит от специальности. Как ответить на вопрос, что ?. Программисты, конечно, должны знать хорошо языки С++, VС++, VS 2010, VS 2015 и системные языки низкого уровня, а остальные языки программирования на уровне ознакомлен. А вот для будущих педагогов-информатиков надо быть в курсе знакомства с разными языками программирования и хорошо с основными современными языками программирования. Тем более, что стандарт обучения по программированию включает не конкретные языки программирования , а объектно-ориентированные языки программирования. Программисту надо знать глубже основные языки программирования, а преподавателю знать шире все языки программирования. Но преподавателям, а конкретно предметно-методическим комиссиям, надо определить основные языки для изучения и вспомогательные языки для ознакомления. Практика преподавания показывает, что вполне можно давать в качестве индивидуальной работы языки программирования, которые были рассмотрены поверхностно. Некоторые преподаватели стараются внедрять комплекс Visual Studio 2010 (2015). Это связано с тем, что фирма Microsoft предлагает обучения в школах именно этих комплектов языков программирования. В настоящее время создано много хороших языков программирования или комплектов программ. Если взять язык программирования Delphi, то это очень хороший язык программирования для таких специальностей как инженер, математик, физик и т. д. Есть и дальнейшее развитие данного языка как Delphi 2005, Delphi 2006.NET. Так что говорить какой лучше, а какой хуже просто нельзя по рекомендациям даже такой известной фирмы как Microsoft. Конечно, заманчиво лицинзионное программное обеспечение, учебники. Хотя учебник по изучению такого языка как Visual Basic.NET, можно использовать только в школе, который рассматривает только некоторые разделы языка. Есть еще один путь. Изучать дисциплины основные по обязательному списку, как это делают многие ведущие зарубежные университеты, и остальные по выбору. Видимо такой путь вполне назрел. В настоящее время информатикам дается очень много математических и физических разделов, которые для информатиков вряд ли могут пригодится в будущей специальности.

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

Общая проблема российских программистов - патологическое нежелание читать, а уж тем более писать документацию.

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

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

Многие преподаватели ограничиваются тем, что учащиеся составляют алгоритм в словесной форме и это вполне достаточно. Здесь уместна фраза Ершова. Программируют «для себя» и « для других». Все программисты и особенно будущие учителя информатики должны учить программировать только для других. Для других - это значит, что для своих будущих учеников, для фирм заказчиков и т.д.

Вот некоторые советы, которыми я поддерживаюсь в течении 40 - лет. Алгоритм - это последовательность действий для получения результаты с учетом исполнителя. Но в качестве исполнителя может быть машина, робот и другие технические интеллектуальные устройства, но и разные языки программирования, которые имеют свои особенности особенно языки визуального программирования. Для того, чтобы спланировать этапы составления программы на конкретном языке программирования, надо составить просто алгоритм в словесной форме. Для такой формы нет стандартов и можно составлять так, чтобы облегчить этап составления программы. Как говорят очень хорошие программисты «надо разрабатывать программу 80% на бумаге, а 20% на машине. После отладки программы и получения правильного результата, я имею в виду то, что после проверки программы на тестирования, надо оформить программу как документ для сдачи заказчику. Но такой алгоритм не является стандартом. Для оформления требуются блок-схемы, которые составляются в соответствии со стандартами. Такими стандартами являются требования к оформлению алгоритмов ГОСТ 24.211-80.

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

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

Во-вторых, грамотно составленный (точнее, созданный) пакет ПД избавит вас от многих неприятностей. В частности, избавиться от назойливых вопросов и необоснованных претензий, можно просто отослав пользователя к документации. Это касается прежде всего важнейшего документа - Технического задания. Об этом мы будем говорить ниже, а сейчас можно напомнить о многомиллионном иске к компании ИБМ (IBM). Этот иск предъявило одно крупное издательство, неудовлетворенное качеством ВТ и программного обеспечения. ИБМ суд выиграла. И выиграла только благодаря тому, что предъявила подписанное обеими сторонами Техническое задание. Было это давно, еще в 70-х гг., однако сути дела это не меняет.

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

Для начала необходимо вооружиться ГОСТами. ГОСТ определяет все. В частности, в него входит и интересующая нас Единая система программной документации (ЕСПД). Вообще перечень документов ЕСПД очень обширен. В него, в частности, входят следующие ГОСТы:

ГОСТ 19.001-77 ЕСПД. Общие положения.

ГОСТ 19.101-77 ЕСПД. Виды программ и программных документов (переиздан в ноябре 1987г с изм.).

ГОСТ 19.102-77 ЕСПД. Стадии разработки.

ГОСТ 19.103-77 ЕСПД. Обозначение программ и программных документов.

ГОСТ 19.104-78 ЕСПД. Основные надписи.

ГОСТ 19.105-78 ЕСПД. Общие требования к программным документам.

ГОСТ 19.106-78 ЕСПД. Требования к программным документам, выполненным печатным способом.

ГОСТ 19.201-78 ЕСПД. Техническое задание. Требования к содержанию и оформлению.

ГОСТ 19.202-78 ЕСПД. Спецификация. Требования к содержанию и оформлению.

ГОСТ 19.301-79 ЕСПД. Программа и методика испытаний.

ГОСТ 19.401-78 ЕСПД. Текст программы. Требования к содержанию и оформлению.

ГОСТ 19.402-78 ЕСПД. Описание программы.

ГОСТ 19.404-79 ЕСПД. Пояснительная записка. Требования к содержанию и оформлению.

ГОСТ 19.501-78 ЕСПД. Формуляр. Требования к содержанию и оформлению.

ГОСТ 19.502-78 ЕСПД. Описание применения. Требования к содержанию и оформлению.

ГОСТ 19.503-79 ЕСПД. Руководство системного программиста. Требования к содержанию и оформлению.

ГОСТ 19.504-79 ЕСПД. Руководство программиста.

ГОСТ 19.505-79 ЕСПД. Руководство оператора.

ГОСТ 19.506-79 ЕСПД. Описание языка.

ГОСТ 19.508-79 ЕСПД. Руководство по техническому обслуживанию. Требования к содержанию и оформлению.

ГОСТ 19.604-78 ЕСПД. Правила внесения изменений в программные документы, выполняемые печатным способом.

ГОСТ 19.701-90 ЕСПД. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения.

ГОСТ 19.781-90. Обеспечение систем обработки информации программное.

Как видно, основная часть комплекса ЕСПД была разработана в 70-е и 80-е годы. Частично эти стандартны морально устарели, к тому же они не лишены некоторых излишеств. Основными стандартными документами для высших учебных заведений при выдачи заданий на изготовление программных продуктов могут быть: техническое задание ГОСТ 19.201, текст программы (ГОСТ 19.401), описание программы (ГОСТ 19.102), пояснительная записка (ГОСТ 19.404). Что из себя представляют эти стандарты, то это тема дальнейших статей. Пока можно ограничиться предложенным материалом. И в качестве вывода можно сделать следующие. Программирование -это не просто дисциплина для современного специалиста, но и дисциплина для развития интеллектуальных способностей будущих специалистов. Если изучать, то необходимо подойти не с позиции знания языков программирования самим преподавателем, а с позиции использования изучаемого языка программирования для будущей работы специалиста и, далее, если изучать, то надо научить студентов оформлять программные продукты в соответствии со стандартами.


© 2010-2022