Опубликован: 03.10.2011 | Уровень: для всех | Доступ: свободно
Лекция 1:

Введение

Лекция 1: 123456 || Лекция 2 >

Предисловия

note
  description: "[
    В этой книге два предисловия: одно для преподавателей, другое – для
    студентов, что отражено ниже в непривычной, но корректно используемой
    нашей собственной нотации, применяемой при записи программ. 
         ]"
class PREFACING inherit
  KIND_OF_READER
create
  choose
feature — Инициализация
  choose
      — Выбрать предисловие, предназначенное для вас.
    do
      if is_student then
        student_preface.read
      elseif is_instructor then
        instructor_preface.read
      else
        pick_one_or_both
      end
        check
          — Вы узнаете о динамическом связывании.
        note
          why: "Вы сумеете выразить все элегантнее!"
        end
    end
end

Предисловие для студентов

Программирование — увлекательное занятие (fun)! Где еще можно проводить дни, создавая машины собственным воображением, строя их без молотка и гвоздей, не пачкая одежды, заставляя их работать как по волшебству, и при этом ежемесячно получать плату — довольно неплохую? (Спасибо за существующий спрос на такую работу!)

Программирование — занятие сложное! Где еще продукты от самых престижных компаний отказывают в обычных условиях использования? Где еще вы найдете так много возмущенных пользователей? Где еще инженеры проводят часы и дни в попытках понять, почему то, что должно работать, не работает?

Будьте готовы к овладению мастерством программирования в его профессиональной форме — инженерии программ (software engineering); будьте готовы к радостям и трудностям этой профессии.

Программное обеспечение (ПО, software) повсюду

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

Дело в том, что без ПО невозможны были бы межконтинентальные перелеты, и фактически не было бы и самих современных лайнеров (а также и современных автомобилей, скоростных поездов и прочего), так как их проектирование требует весьма сложного ПО, называемого CAD (Computer-Aided Design).

Чтобы платить зарплату своим служащим, любая большая компания должна была бы иметь сотни работников бухгалтерии, занятых начислением и выписыванием расчетных чеков. Телефон до сих пор висел бы на стене с протянутыми к нему проводами. Сделав снимок фотоаппаратом, вы не смогли бы увидеть результат, не проявив пленку и не напечатав фотографии. Не было бы ни видеоигр, видеокамер, iPods и iPhones, ни Skype, ни GPS. Любой отчет нужно было бы написать вручную и отдать машинистке для перепечатывания, а потом править полученный текст, повторяя этот процесс до получения желаемого результата.

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

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

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

Любительская и профессиональная разработка ПО

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

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

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

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

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

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

Предшествующий опыт

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

Если вы уже писали программы, то этот опыт поможет вам быстрее овладеть концепциями. Вы будете знакомы с некоторыми идеями, но должны быть готовы к тому, что временами вам предстоит удивляться: профессиональное изучение отличается от общего пользовательского опыта. Например, вам может показаться, что я напрасно растолковываю, казалось бы, простую вещь. Если так, то вскоре, я надеюсь, вы обнаружите, что не все так просто, как кажется с первого взгляда. Для математика сложение — вещь куда более тонкая, чем для счетовода.

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

В данной книге обсуждение строится, как будет пояснено ниже, на поддерживающей обучение программной системе Traffic. Если вы знакомы с программированием, вы можете обнаружить некоторые возможности системы самостоятельно, помимо официальных заданий. Не раздумывая, так и поступайте: программированию учатся на примерах, изучая существующие программы и создавая собственные версии. Возможно, вам придется сделать некоторые предположения об элементах Traffic, которые основаны на приемах и конструкциях языка, еще не изученных вами, но и тогда имеющийся опыт может помочь вам двигаться быстрее.

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

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

Лекция 1: 123456 || Лекция 2 >
Кирилл Юлаев
Кирилл Юлаев
Как происходит отслеживание свободного экстента?
Федор Антонов
Федор Антонов
Оплата и обучение
Наталья Алмаева
Наталья Алмаева
Россия
Андрей Лучицкий
Андрей Лучицкий
Россия