Искусственный интеллект - страница 8
Напишите следующее и нажмите Enter.
>print («Hello, world!»)
Отлично! Вы только что написали компьютерную программу. И как ощущения?
Мы только что сделали одну и ту же вещь тремя разными способами. Один из них, пожалуй, был более приятным, чем прочие. Другой – быстрее и проще. Опираясь на полученный опыт, вы можете решить, какой из способов проще, а какой – быстрее. Однако принципиальный момент заключается в том, что ни один из них не лучше других. Поэтому, когда мы говорим, что делать что-либо при помощи технологий лучше, это сродни утверждению, будто написать «Hello, world!» лучше на языке Python, а не на бумаге. Не существует какой-либо принципиальной ценности в каждом из этих способов, однако их применение зависит от индивидуального опыта и последствий выбора в реальном мире. В случае с фразой «Hello, world!» ставки невысоки.
Большинство программ сложнее нашего примера, однако понимание принципа позволяет масштабировать его и применять в более комплексных случаях. Каждая программа – от сложнейших научных вычислений до новой социальной сети – пишется людьми. И каждый из них начинал программировать с «Hello, world!». Их путь к созданию сложного, изощренного программного обеспечения начинался с программ, построенных из простых блоков вроде нашего «Hello, world!». Компьютерные программы – не магия. Они созданы человеком.
Допустим, я хочу написать программу, которая бы выводила «Hello, world!» на экран десять раз. В этом случае я могу 10 раз написать команду:
>print (“Hello, world!”)
>print (“Hello, world!”)
Ой, нет. Я уже устала, забудем об этом. Нажимать Ctrl + P на клавиатуре еще восемь раз – слишком много нажатий кнопок. (Чтобы думать, как программист, нужно научиться быть ленивым.) Большинство программистов уверены, что печатать на клавиатуре скучно и утомительно, поэтому они стараются делать это как можно реже. Вместо перепечатывания, копирования и вставки единственной строки кода я введу оператор цикла, чтобы компьютер повторил команду 10 раз.
>x=1
>while x<=10:
>print (“Hello, world! \ n”)
>x+=1
Что ж, это было весело! Теперь компьютер будет делать всю работу за меня. Подождите! А что сейчас произошло?
Я задала значение х, равное 1, и добавила оператора цикла WHILE, который и будет повторять программу до тех пор, пока она не достигнет значения х > 10. В первом цикле х = 1. Программы выводит текст, затем следует разрыв строки или знак конца строки, обозначенный \n (обратный слеш n). Обратный слеш – важный знак в языке Python. Интерпретатор языка «знает», что, как только в коде появляется этот знак, после него должно произойти что-то особенное. В нашем случае я прошу компьютер начать с новой строки. Это было бы мукой – начинать каждый раз с нуля и программировать каждый тупой кусок металла для выполнения одних и тех же базовых функций, таких как чтение текста и преобразование его в двоичную форму или выполнение определенных задач в соответствии с соглашениями синтаксиса выбранного нами языка программирования. Мы ничего и никогда не закончили бы такими темпами! Более того, в каждом компьютере присутствуют как изначально встроенные функции, так и возможность добавлять новые. Я использую слово «знает», потому что оно удобное, но, пожалуйста, не забывайте, что компьютеры не «знают» подобно тому, как «знают» сознательные существа. Внутри компьютера нет никакого сознания, есть только задачи, выполняемые бесшумно, быстро и хорошо.
В следующей строке кода, х+=1, я увеличиваю значение х на единицу. Подобное синтаксическое решение мне кажется весьма изящным. В программировании приходится писать х=х+1 при каждом увеличении значения переменной на единицу для выполнения следующего шага цикла. Разработчики Python решили, что писать так каждый раз слишком утомительно, и придумали более короткий путь. Поэтому x+=1 аналогично x=x+1. Это решение было позаимствовано из языка C, где значение переменной может быть увеличено на единицу еще и при помощи конструкций х++ или ++х. Подобные быстрые команды существуют почти в каждом языке программирования, поскольку разработчикам действительно