How to Think Like a Computer Scientist: Learning with Python 2nd Edition. / Как стать программистом: учимся вместе с Python. Второе издание.: Chapter 1 The way of the program
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
1 Путь программы czech 24.06.10 в 07:34 |
|
|
Цель этой книги - научить вас думать как программист. Этот вид мышления сочетает в себе лучшее от мышления математиков, инженеров и естествоиспытателей. Подобно математику, программист использует формальный язык для описания идей. Подобно инженеру, конструирующему вещи, программист собирает из модулей, отобранных из множества альетрнатив, цельную систему. Подобно ученому-естествоиспытателю, порграммист наблюдает за поведением системы, выдвигает гипотезы ипроверяет опытами и тестированием. czech 24.06.10 в 07:45 |
||
|
Самым важным качеством программиста является умение решать проблемы. Оно заключается в умении сформулировать проблему, творчески подойти ко всем вариантам ее решения, и чистом и аккуратном ее решении. Как выяснилось, процесс изучения программирования является великолепной возможностью укрепления в себе подобных качеств. Вот почему этот раздел назван "Путь программы". czech 24.06.10 в 07:52 |
+1 | |
|
На первом уровне, вы будете учиться полезному для себя навыку - программированию. На других уровнях вы будете использовать программирование как средство для достижения поставленных целей. Чем дальше мы будем продвигаться, тем яснее будут становиться цели. czech 24.06.10 в 10:53 |
||
|
1.1 Язык программирования Python czech 24.06.10 в 10:53 |
||
|
Язык программирования, который вы будете изучать, называется Python [питон]. Python - это высокоуровневый язык; другие высокоуровневые языки, о которых вы, наверное, слышали - это C++, PHP и Java. czech 24.06.10 в 10:55 |
||
|
Как вы могди сделать вывод из названия "высокоуровневый язык", существуют и низкоуровневые языки, иногда называемые машинными языками или ассемблерами. Грубо говоря, компьютер может выполнить программу, написанную только на низкоуровневом языке. Таким образом, программы, написанные на высокоуровневых языках, должны быть преобразованы, прежде, чем их можно будет запустить на выполнение. Этот процесс преобразования занимает некоторое время, что ставит немного не в выгодное положение высокоуровневые языки. czech 24.06.10 в 11:02 |
+1 | |
|
Но преимуществ гораздо больше. Во-первых, намного проще писать на высокоуровневом языке. Написание программы занимает много меньше времени, текст программы получается короче и проще для прочтения, его проще корректировать. Во-вторых, программы, написанные на высокоуровневых языкх, переносимы, т.е. они, без каких-либо сильных изменений, могут работать на разных типах компьютеров. Программы, написанные на низкоуровневых языках, могут работать только на одной определенной платформе, для запуска на другой - их придется переписывать. czech 24.06.10 в 11:09 |
||
|
Благодаря этим преимуществам, практически все программы написаны на высокоуровневых языках. Низкоуровневые языки используются только для написания узкоспециализированных приложений. czech 24.06.10 в 11:11 |
||
|
Два типа программ преобразуют высокоуровневый код в низкоуровневый: интерпретаторы и компиляторы. Интерпретаторы читают программу и выполняют ее, попеременно считываю очередную строку и выполняя вычисление. czech 24.06.10 в 11:15 |
||
|
Компилятор считывает программу и транслирует ее полностью до того, как программа запустится. В этом случае, тект программы называется исходным кодом, а откомпилированная программа - объектным или исполняемым кодом. Однажды откомпилировав программу, вы можете запускаьб ее любое количество раз без каких-либо изменений. czech 24.06.10 в 11:18 |
+1 | |
|
Множество современных языков поддерживают оба способа. Сначала, они компилируют в низкоуровневый байт-кодом, а затем интерпретурют его специальной виртуальной машиной. Python использует оба подхода, но чаще он рассматриватся как интерпретируемый язык. czech 24.06.10 в 11:21 |
+1 | |
|
Есть два способа использования интерпретатора: из оболочки или из скрипта. В оболочке, вы пишете выражения и интерпретатор немедленно печатает результат: czech 24.06.10 в 11:25 |
||
|
$ python czech 24.06.10 в 11:25 |
||
|
В первой строчке команда, с помощью которой запускается интерпретатор Python в командной строке Unix. Следующие три строки содержат служебную информацию. Четвертая строка начинается с символов >>>, это приглашение Python ввести команду. Интерпретатор использует приглашение, чтобы показать, что он готов к выполнению инструкций. Мы написали print 1 + 1, и интерпретатор ответил: 2. czech 24.06.10 в 11:48 |
||
|
С другой стороны, вы можете написать программу в файл, и воспользоваться интерпретатором, чтобы запустить его. Такой файл называется скриптом. Например, мы используем текстовой редактор для создания файла firstprogram.py. Напишем следующее: czech 24.06.10 в 12:09 |
||
|
print 1 + 1 czech 24.06.10 в 12:09 |
||
|
Принято назвать файлы, сожержащие программы Python, именем с окончанием .py. czech 24.06.10 в 12:12 |
||
|
Для выполнения программы, мы должны указать интерпретатору имя нашего скрипта. czech 24.06.10 в 12:12 |
||
|
$ python firstprogram.py czech 24.06.10 в 12:14 |
||
|
Это пример показывает, как Python запускается из командной строки Unix. czech 24.06.10 в 12:14 |
||
|
Примеры в этой книге используют оба подхода: командную строку и скрипты. Вы можете использовать командную строку для всех примеров, так как интерпретатор готов к работе сразу при запуске Python. czech 24.06.10 в 12:19 |
||
|
Работа в командной строке удобна для тестирования коротких кусков кода, так как показывает немедленный результат. Используйте ее, как блокнот для заметок, чтобы избежать проблем в работе. Код, длиннее нескольких строк, лучше помещать в скрипт. czech 24.06.10 в 12:22 |
||
|
1.2 Что такое программа? czech 24.06.10 в 12:22 |
||
|
Программа - это набор инструкций, указывающих, как выполнить вычисления. Вычисления могут быть как математическими, например, решение системы уравнений или поиск корня полинома, так и символьными, например, поиск и замена текста в документе или (как это ни странно) компилирование программы. czech 24.06.10 в 12:30 |
+1 | |
|
Детали выглядят по разному в разных языках, о основа у всех одна: czech 24.06.10 в 12:30 |
+1 | |
|
Ввод - получить данные с клавиатуры, из файла, или другого устройства. czech 24.06.10 в 12:35 |
||
|
Верите вы или нет, но это все, что делаю программы. Все программы, которые вы использовали, не важно, насколько они сложные, выполняют инструкции более или менее схожие с перечисленными выше. Таким образом, мы можем описать программирование как процесс разбиения большой, составной задачи на более мелкие до тех пор, пока они не станут настолько простыми, чтобы мы смогли применить к ним одну из наших инструкций. czech 24.06.10 в 12:41 |
+1 | |
|
Все это может показаться немного расплывчатым, но мы вернемся к этой теме попзже, когда будем разговаривать про алгоритмы. czech 24.06.10 в 12:44 |
||
|
1.4 Что такое отладка? czech 24.06.10 в 12:44 |
||
|
Программирование - сложный процесс, и так как им занимается человек, ошибки неизбежны. По причудливым причинам, ошибки в программах называются багами, а процесс их поиска и исправления дебаггингом (отладкой). czech 24.06.10 в 12:47 |
||
|
Три типа ошибок могут появиться в программе: синтаксические ошибки, ошибки выполнения и семантические ошибки. Полезно знать, чем они друг от друга отличаются для более быстрого их поиска и устранения. czech 24.06.10 в 12:49 |
||
|
1.4 Синтаксические ошибки czech 24.06.10 в 12:49 |
||
|
Python выполнит программу если она синтаксически верна; в ином случае, процесс аварийно завершиться и выдаст сообщение об ошибке. Синтаксис относится к структуре программы и правилам по этой структуре. Например, в русском языке предложение должно начинаться с Большой буквы и заканчиваться точкой. это предложение содержит синтаксическую ошибку. Как и это czech 24.06.10 в 12:58 |
||
|
Для большинства читателей, синтаксические ошибки не являются большой проблемой, поэтому и поэзию мы читаем без особых претензий к синтаксису. Python не такой великодушный. Если в программе есть хотя бы одна синтаксическая ошибка, Python выдаст ошибку и завершит выполнение. В течение первых нескольких недель вашей программистской карьеры, вы скорее всего большую часть времени будете проводить в поисках таких ошибок. По мере приобретения опыта, вы будете реже допускать подобные ошибки и находить их гораздо быстрее. czech 24.06.10 в 13:08 |
||
|
1.5 Ошибки выполнения czech 24.06.10 в 13:09 |
||
|
Второй тип ошибок - это ошибки выполнения, названные так, потому что никак себя не обнаруживают до запуска программы. Они еще называются исключениями, потому что обычно показывают, что произошло что-то исключительное (или плохое). czech 24.06.10 в 13:19 |
||
|
Ошибки выполнения редки в простых программах; с ними мы познакомимся в первых главах. Возможно даже, знакомство на страницах учебника случится раньше, чем в столкнетесь с ними на собственном опыте. czech 24.06.10 в 13:43 |
||
|
1.6 Семантические ошибки czech 24.06.10 в 13:44 |
||
|
Третий тип ошибок - это ошибки семантические. Если такая встретится в программе, выполнение продолжится; компьютер не выдаст никаких сообщений, но результат выполнения будет не тем, какой ожидался. Программа будет делать нечто иное, вместо того что вы сказали ей делать. czech 24.06.10 в 13:51 |
||
|
Проблема заключается в том, что написанная вами программа отличается от той, какую вы хотели написать. Понятие программы (ее семантики) в этом случае ошибочно. Определение семантических ошибок довольно хитро: вам нужно следить за выводом результатов вычислений как самой программы, так и отдельный её частей, и стараться определить, что же происходит. czech 24.06.10 в 13:57 |
||
|
1.7 Экспериментальная отладка czech 24.06.10 в 13:57 |
||
|
Одим из наиболее важных навыков, который вы приобретете, является отладкой. Это может разочаровать, но отладка является самой интелектуально насыщенной, сложной и интереснейшей составляющей программирования. czech 24.06.10 в 14:05 |
||
|
Иногда, отладка напоминает работу детектива. Вам необходимо, имея несколько зацепок, сделать вывод, почему произошло так, а не иначе. czech 24.06.10 в 14:07 |
||
|
Отладка так же похожа на научный эксперимент. Когда у вас возникает догадка, почему все идет не так, вы модифицируете программу, и пробуете снова. Если ваша гипотеза верна, вы получается работающую программу. Если не верна - вы пробуете снова. Как сказал Шерлок Холмс: "Когда вы устранили все невозможное, то что осталось, должно быть правдой" (Конан Дойль "Знак четырех") czech 24.06.10 в 14:15 |
+1 | |
|
Для некоторых программирование и отладка - это одно и то же. Итак, программирование - это процесс постепенной отладки программы до получения желаемого результата. Идея заключается в том, что вы должны добиться желаемого последовательными небольшими модификациями программы, ее отладкой. В итоге вы получаете гаранитированно работающий код. czech 24.06.10 в 14:30 |
||
|
Например, Linux - это ядро операционной системы, которое состоит их миллионов строк кода, но начиналось все с простой программы Линуса Торвальдса для обзора чипа Intel 80386. По словам Ларии Гринфилда, одним из первых проектов Линуса была программа, которая печатала попеременно АААА и ВВВВ, позже она эволюционировала в Linux (Руководство пользователя Linux. Версия 1) czech 25.06.10 в 02:59 |
||
|
Позже мы еще больше разовьем тему отладки и прочих проктик программирования. czech 25.06.10 в 03:14 |
+1 | |
|
1.8 Формальные и естественные языки czech 25.06.10 в 03:14 |
||
|
На естественных языках разговаривают люди. Английский, испанский, французский - языки естественные. Они не были придуманы специально (хотя люди постоянно их развивают); они появились естественным путем. czech 25.06.10 в 03:16 |
