Соображения для преподавателей
Соображения для преподавателей
Было несколько руководящих принципов, которых я старался придерживаться. Я думаю, они делают процесс обучения гораздо более лёгким – ведь учиться программировать и так довольно тяжело. Если вы преподаёте или наставляете кого-то на путь благородного хакерства, то эти идеи могут помочь и вам.
Во-первых, я старался как можно больше разделять понятия так, чтобы учащемуся требовалось изучать каждый раз только одно понятие. Это было трудно сначала, но уж слишком легко после того, как я приобрёл некоторый опыт. Некоторые вещи должны изучаться прежде других, но я был поражён, насколько мало в действительности имеется таких иерархических зависимостей. В конечном счёте, я просто выбирал порядок изложения и старался скомпоновать материал таким образом, чтобы каждый новый раздел основывался на предыдущих.
Другой принцип, о котором я всё время помнил, – учить только одному способу делать что-либо. В этом очевидное преимущество учебника для тех, кто никогда не программировал ранее. С одной стороны, один способ делать что-то легче выучить, чем два. Хотя, возможно, более важная выгода от этого состоит в том, что, чем меньшему числу приёмов вы учите начинающего программиста, тем более изобретательным и сообразительным ему придётся быть в своих программах. Поскольку основная деятельность в программировании связана с решением задач, критически важным становится поощрять это насколько возможно на каждом этапе разработки.
Я постарался переводить понятия программирования на те понятия, которые уже есть у начинающего программиста, с целью представить идеи таким образом, чтобы нагрузка ложилась более на его интуицию, нежели на учебник. Объектноориентированное программирование подходит для этого весьма хорошо. Мне можно было достаточно рано начать ссылаться в учебнике на «объекты» и различные «типы объектов», невинно роняя такого рода фразы в подходящие моменты. Я не говорил что-либо подобное «всё в Ruby является объектами,» или «числа и строки – это разновидности объектов», поскольку эти утверждения в действительности ничего не значат для начинающего программиста. Вместо этого я предпочёл говорить о строках (а не о «строковых объектах»), но иногда я упоминал «объекты», имея в виду просто «вот эти вещи в этих программах». А то, что все эти вещи в Ruby фактически являются объектами, позволило этим уловкам с моей стороны хорошо сработать.
Хотя я желал избежать ненужного объектно-ориентированного жаргона, я хотел быть уверенным, что если им в самом деле нужно было узнать какой-то термин, они выучат правильное слово. (Я не хотел, чтобы им пришлось учить его дважды, верно?) Вот почему я применял слово «строки», а не «текст». Методы тоже нужно было как-нибудь назвать, и я называл их «методы».
Что касается упражнений, думаю, что я приготовил несколько удачных, но их никогда не бывает слишком много. Если честно, могу поспорить, что я половину времени провёл, просто пытаясь подобрать забавные и интересные упражнения. Скучные упражнения напрочь убивают всякое желание программировать, в то время как от безупречно подходящих упражнений появляется профессиональный зуд, перед которым начинающий программист вряд ли сможет устоять. Короче говоря, невозможно потратить слишком много времени на подготовку хороших упражнений.
Страницы этого учебника (и даже эта самая страница) сгенерированы <a href="/home/mike/Desktop/Learn/Ruby/ltp/ltp-ru/ShowTutorialCode.rb"> большой <a href="/home/mike/Desktop/Learn/Ruby/ltp/ltp-ru/ShowTutorialCode.rb"> программой – конечно, написанной на Ruby. :-) И поэтому, в оригинальном учебнике есть несколько тонкостей. Например, все примеры программного кода в действительности исполняются каждый раз, когда вы просматриваете страницу, и показанный результат – это результат, сгенерированный при выполнении. Думаю, это лучший, самый лёгкий и, конечно, самый крутой способ удостовериться, что весь представленный мной код отрабатывает в точности так, как я утверждаю. Вам не нужно беспокоиться о том, что я мог ошибочно скопировать выдачу какого-нибудь из примеров или забыл протестировать какую-то часть кода: он весь проверяется каждый раз, когда вы его просматриваете. Так, в разделе по генераторам случайных чисел, если вы перезагрузите страницу, то увидите, что числа каждый раз будут изменяться… Прекрасно. (Я применил похожий трюк для примеров кода, когда писал книгу, но очевидно, это наиболее заметно именно в этом учебнике.)
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
1.4.5. Заключительные соображения по поводу «GNU Coding Standards»
1.4.5. Заключительные соображения по поводу «GNU Coding Standards» GNU Coding Standards является стоящим для прочтения документом, если вы хотите разрабатывать новое программное обеспечение GNU, обмениваться существующими программами GNU или просто научиться программировать лучше. Принципы
Дополнительные соображения по оптимизации
Дополнительные соображения по оптимизации Одним из возможных выходов из сложившейся ситуации будет использование характерных для IE CSS-хаков, чтобы только для него подключить фоновые изображения. В итоге вышеприведенный пример будет выглядеть примерно так:ul {list-style: none;}ul
Соображения производительности
Соображения производительности Интересны не только затраты на порождение нового процесса (мы еще будем к ним неоднократно возвращаться), но и то, насколько «эффективно» сосуществуют параллельные процессы в ОС, насколько быстро происходит переключение контекста с
1. Общие соображения об анонимности в Интернет
1. Общие соображения об анонимности в Интернет Человек написал и отправил письмо по электронной почте, посетил какой-то сайт, оставил своё сообщение на форуме и т. д. Любое из указанных действий позволяет найти этого человека и узнать кто он такой. А при желании и привлечь
9. Заработок для преподавателей иностранных языков и других дисциплин: создаем виртуальную школу
9. Заработок для преподавателей иностранных языков и других дисциплин: создаем виртуальную школу Все чаще в сети интернет появляются объявления следующего содержания: «репетитор по скайпу», «виртуальные уроки», «услуги онлайн-репетитора» и т. д. Если вы хорошо знаете
§ 160. Два соображения
§ 160. Два соображения 3 июня 2009— Хороший логотип должен быть таким, чтобы любой человек мог его по памяти от руки изобразить.— Это хорошо, если реклама не сразу понятна. Человек потратит время на понимание смысла и лучше запомнит такую рекламу.Из-за этих двух заблуждений
Соображения по поводу эффективности
Соображения по поводу эффективности Если бы это было все, что можно сказать о связных списках, то глава оказалась бы очень короткой. До сих пор была представлена только реализация класса, инкапсулирующего односвязный список. Но перед написанием класса связного списка
14.8. Соображения эффективности A
14.8. Соображения эффективности A В общем случае объект класса эффективнее передавать функции по указателю или по ссылке, нежели по значению. Например, если дана функция с сигнатурой:bool sufficient_funds( Account acct, double );то при каждом ее вызове требуется выполнить почленную
Отборочные соображения
Отборочные соображения Тайм-аут, в течении которого я отвлёкся от проблем противостояния дистрибутивов, имена которых вынесены в заглавие цикла, подошёл к концу. И пора выполнять своё обещание – подвести окончательные (на сегодняшний день) итоги тому, что было сказано на