Программирование — вторая грамотность - [4]
МИР ПРОГРАММ
Герой Мольера, месье Журдэн, был в высшей степени удивлен, когда узнал, что всю жизнь говорил прозой, не подозревая этого. Благодаря появлению ЭВМ и вызванному этим появлением возникновению вычислительной науки, или информатики, человечество оказывается в положении месье Журдэна, с удивлением обнаруживая, что оно живет в мире программ и что продуктивность информационных моделей внешнего мира придает новый смысл библейскому высказыванию «Вначале было слово».
Да, мы живем в мире программ, и сами постоянно программируем, не сознавая этого.
Можно спорить о том, что является самым выдающимся открытием ХХ века. Но если взять первую пятерку, даже первую тройку открытий, то, думаю, можно будет уговорить каждого, что в этот узкий круг входит открытие того, что развитие организма есть выполнение генетической программы, записанной в его генном наборе. Не имея возможности говорить об этом подробно, хотел бы только заметить, что использование программистских терминов является не метафорой, а выражает суть внутриклеточных процессов роста и развития, по отношению к которым молекулярные структуры и химические процессы являются своего рода элементной базой и способом реализации микрокоманд.
Программами буквально напичкан наш организм. Все без исключения физиологические процессы — это огромная, тщательно отлаженная и сложно устроенная библиотека программ, в которой анализ структуры программ (программисты сказали бы «граф вызовов») и информационных связей позволяет делать далеко идущие выводы и прогнозы о поведении организма.
Практически вся область производственных отношений, особенно непосредственно в производственном процессе, — это работа по программам. Устойчивый производственный процесс всегда внутренне формализован, его эффективность зависит от степени отлаженности программ, выполняемых людьми. Даже если процесс стохастичен (например, охота или вождение автомашины), случайность и непредсказуемость сказывается лишь на выстраивании цепочки ситуаций, но не на реакциях на эти ситуации, которые осуществляются по программе, почти всегда выполняемой в автоматическом режиме.
Даже обучение, то есть приобретение знаний или, скорее, способности что-то сделать, — это программирование. Лет десять назад профессор Массачусетского технологического института Сеймур Пейперт, один из первых психологов и педагогов, взявший на вооружение концепции программирования, в серии своих работ убедительно показал, что ребенок научается что-то делать только после того, как он поймет, как это делается. Только после выработки такого понимания повторная тренировка достигает успеха. Заметим, что это касается не только программ, представляющих собой цепочки логических реакций на заранее известные стимулы, но и программ реального поведения, включая всяческую моторику (спорт, музыка, игры и т.п.).
Повседневная жизнь человека, особенно городская, — это деятельность по программам. Каждый человек, придерживающийся режима, с гордостью почувствует себя программистом, если вспомнит свои заполненные до предела утренние процедуры, начиная от звонка будильника и кончая началом работы. Поразмышляйте над процедурой уборки в квартире, и вы увидите, что разработка этой программы сделает честь любому профессиональному программисту — составителю пакетов прикладных программ.
Мы жалуемся на социальные болезни века, в частности абсентеизм, пассивность, ратуем за формирование активной жизненной позиции. Что это такое? Попросту говоря, это способность выработать программу действия и следовать ей.
Таким образом, мир программ — это далеко не только начинка памяти ЭВМ. Это прежде всего огромный запас операционного знания, накопленный человечеством и теперь лишь актуализируемый вычислительными машинами, роботам, автоматическим устройствам. Еще более огромный запас программ хранится в генофонде всего живого: его расшифровка и использование в значительной степени составляют предмет биологии и ее новых разделов, включая генную инженерию. Психология развития и теория поведения тоже в значительной степени формируют новые представления, сближающиеся с понятиями программирования.
Но если это так, то мы естественно приходим к проблеме фундаментализации программирования, выделению в нем некоторых «натуральных» сущностей, позволяющих сблизить мир машин и мир живого, программы природы и программы, составленные человеком. Если же мы хотим сделать эти натуральные сущности осознанным достоянием человека, то у нас нет иного пути, как отразить их в структуре и содержании всеобщего образования.
Хотелось бы подчеркнуть, что речь идет не о том, чтобы навязать детям новые, несвойственные им навыки и знания, а о том, чтобы проявить и сформулировать те стороны мышления и поведения, которые реально существуют, но формируются стихийно, неосознанно.
Рассмотрим, каковы же предпосылки и препятствия к осуществлению этого плана?
ОБЩАЯ ЗАДАЧА ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ
Итак, мы хотим учить детей законам программирования. Еще не зная их, мы понимаем, что они неизбежно будут выражены в сумме некоторых достаточно специфических приемов. Нам еще предстоит разбираться, в какой мере они посильны детям, но общие наблюдения таковы, что интеллектуальный и операционный потенциал детей далеко не исчерпан. Посмотрите, как помолодели за последние годы технические виды спорта, в особенности, плавание, гимнастика. Не знаю, как на Западе, но у нас автомашины еще дороги и люди зачастую накапливают деньги для их покупки, когда уже, как говорится, лучшие годы позади. Многие с горечью спрашивают, сколько жизней, потерянных из-за дорожных происшествий мы сберегли бы, если бы все без исключения научились водить машину в 14-15 лет.
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.