Книги: [Классика] [Базы данных] [Internet/WWW] [Сети] [Программирование] [UNIX] [Windows] [Безопасность] [Графика] [Software Engineering] [ERP-системы] [Hardware]
ВВЕДЕНИЕ
Подобно любому человеческому языку, Java предоставляет способ выражения понятий и идей. В случае успеха этот способ выражения будет более гибким и легким, чем другие, когда проблемы станут больше и сложнее.
Java нельзя понять, взглянув на него только как на коллекцию некоторых характеристик - некоторые из них ничего не значат в отдельности. Можно использовать совокупность черт только при планировании, а не простом создании кода. И чтобы понять Java в этом смысле, необходимо понять его задачи и задачи программирования в целом. Эта книга обсуждает проблемы программирования, почему они стали проблемами и какой подход использует Java для их решения. Поэтому обсуждаемые в каждой главе черты языка неразрывно связаны с тем, как этим языком решаются определенные задачи. Таким образом я надеюсь понемногу приблизить вас к тому, чтобы мышление Java стало для вас естественным.
Повсюду в книге я исходил из того, что вы хотите построить в своей голове определенную модель, которая позволила бы вам развить глубокое понимание языка; если вы встретитесь с какой-то головоломкой, то сможете с помощью вашей модели языка быстро вывести ответ.
Предпосылки
Эта книга подразумевает, что вы имеете определенный опыт программирования: вы понимаете, что программа представляет собой набор операторов; имеете представление об идеях подпрограммы/функции/макрокоманды, управляющих операторах, подобных "if", циклических конструкциях типа "while" и т. п. Обо всем этом, однако, вы легко могли узнать из многих источников - программируя на макроязыке или работая с инструментом, подобным Perl. Если вы уже имеете достаточно опыта и не испытываете затруднений в понимании основных идей . программирования, то вы сможете работать с этой книгой. Конечно, книга будет легче для тех, кто использовал языки С и особенно C++, но не считайте себя неспособным к обучению, если вы с ними незнакомы (но хотите серьезно работать). Я представлю основы и понятия объектно-ориентированного программирования (ООП) и основные управляющие механизмы Java, так что вы будете знакомы с ними, также первые упражнения затронут основные операторы управления программой.
Несмотря на частое употребление ссылок на свойства языков С и C++, они не являются неотъемлемой частью книги - скорее, они предназначены для того, чтобы помочь всем программистам увидеть связь этих языков с Java, который все-таки был создан на их основе. Я попытаюсь сделать эти ссылки проще и объяснять подробнее то, что незнакомый с C/C++ программист может не понять.
Изучение Java
Примерно в то самое время, когда вышла моя первая книга "Использование C++" (Издательство Osborne/McGraw-Hill, 1989), я начал обучать этому языку. Обучение языкам программирования стало моей профессией; я видел немало кивающих голов, пустых лиц и озадаченных выражений по всему миру. Но когда я начал давать домашние уроки небольшим группам людей, я кое-что понял. Даже те ученики, которые усердно кивали и улыбались, многое не понимали до конца. Я обнаружил, несколько лет председательствуя на курсе C++ на конференции Software Development Conference (а затем и на курсе Java), что я и другие преподаватели имеют обыкновение очень быстро давать аудитории слишком много тем. Так что со временем из-за разницы в уровне подготовки аудитории и способа, которым я давал материал, я бы потерял солидную часть учеников. Возможно, это чересчур, но так как я являюсь одним из противников традиционного чтения лекций (у большинства, я полагаю, это неприятие возникает из-за скуки), я хотел, чтобы за мной успевали все ученики.
Недавно я создал несколько разных презентаций за достаточно короткое время. Таким образом, я закончил обучение с помощью экспериментов и повторения (техника, хорошо работающая и при планировании Java-программ). В конце концов я разработал курс, использующий все, что я вынес из своего преподавательского опыта, - курс, который я был бы рад давать в течение долгого времени. Он подходит к изучаемой проблеме в серии разделенных, легко классифицируемых шагов, и на семинарах поддержки (идеальных для обучения) рассматриваются упражнения для каждого из коротких уроков. Сейчас я преподаю этот курс на открытых семинарах по Java, о которых можно узнать по адресу www.BruceEckel.com. (Семинар для начинающих существует также на отдельном компакт-диске. Информацию о нем можно найти по указанному адресу.)
Обратная связь, осуществляемая мной с помощью семинаров, помогает мне изменять и перерабатывать материал до тех пор, пока он не станет хорош в качестве учебного пособия. Но эта книга не является просто собранием заметок с семинаров - я старался поместить сюда как можно больше информации и устроить ее таким образом, чтобы легко вводить вас в следующую тему. Более всего книга рассчитана на отдельного читателя, столкнувшегося с трудностями нового языка.
Цели
Подобно моей предыдущей книге "Thinking in C++", эта книга была создана на основе процесса преподавания языка. В особенности мне хотелось создать что-то, способное дать мне метод обучения людей на семинарах. Когда я размышляю о главе в книге, я на самом деле думаю о том, как сделать это хорошим уроком на семинаре. Моя цель - создать легкие для усвоения в короткое время уроки с сопровождающими их упражнениями, которые выполнимы в обстановке занятий в классе.
Мои цели в данной книге таковы:
- Представлять материал в виде простых шагов, так чтобы вы смогли усвоить его и все связанные понятия перед тем, как продолжить изучение.
- Использовать примеры как можно более простые и понятные. Иногда это мешает представлять решения "реальных" задач, но я обнаружил, что начинающим лучше, когда они понимают каждую деталь примера, а не восхищаются его мощью и количеством решаемых задач. Также существуют достаточно строгие ограничения по количеству кода, который можно усвоить в классе. Несомненно, меня будут критиковать за использование "игрушечных примеров", но я использую их в надежде на получение педагогического эффекта.
- Осторожно представлять новые черты языка, так чтобы вы не столкнулись с тем, что еще не было вами изучено. Конечно, это не всегда возможно; в таких ситуациях дается краткое вводное описание.
- Давать то, что, по-моему, действительно важно для понимания языка, а не все, что я знаю. Я полагаю, что существует различная по важности информация и есть некоторые явления, которые 95 % программистов никогда не понадобятся и только смущают людей, усугубляя сложность восприятия нового языка. Возьмем пример из С: если вы помните таблицу приоритета операций (я не помню), то можете писать умные программы. Но ведь это может смутить читающего/обслуживающего код человека, если вам это важно. Так что уж лучше забудьте о приоритете и используйте круглые скобки там, где что-то неясно.
- Стараться сосредоточить каждую часть так, чтобы время лекций - и время между упражнениями - было малым. Это не только сохраняет свежесть восприятия аудитории на семинарах, но и дает читателю чувство выполненного дела после прочтения этой части.
- Обеспечить вас твердой основой для того, чтобы вы смогли понять идеи достаточно хорошо и смогли продолжить изучение с помощью более трудных книг и курсов.
Интерактивная документация
Язык Java и его библиотеки от компании Sun (бесплатно загружаемые) предоставляются с документацией в электронном виде, которая просматривается из любого Web-броузера, и практически любая реализация Java имеет такую или подобную ей систему документации. Почти все книги, посвященные Java, повторяют эту документацию. Так что, есть она у вас или нет, эта книга не будет, за исключением необходимых случаев, повторять документацию, потому что обычно можно гораздо быстрее найти описание класса с помощью броузера, чем листать в его поиске книгу (и потом, интерактивная документация обычно более свежая). Эта книга будет предоставлять дополнительные описания для классов только в том случае, если это будет необходимо для понимания какого-то примера.
Начало
Полное содержание
Предисловие
Структура книги
Компакт-диск
Заказать книгу в магазине "Мистраль"