Структура и интерпретация компьютерных программ python

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

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

Эти базовые концепции преподавались в Беркли в течение долгого времени с использованием классического учебника «Структура и интерпретация компьютерных наук» (SICP), созданного Гарольдом Абельсоном, Джеральдом Джеем Сассманом и Джули Сассман. Этот раздаточный материал во многом заимствован из этой книги, и первоначальный автор щедро предоставил его для адаптации и повторного использования.

КАК РАБОТАЕТ ИНТЕРПРЕТАТОР PYTHON (CPython)

Как только наше интеллектуальное путешествие началось, мы не можем оглядываться назад и никогда не должны его ждать.

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

Фактически, мы используем наши заклинания, чтобы создать душу компьютера из воздуха.

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

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

1.1.1 Программирование на Python

Язык — это не то, что вы изучаете, это то, чем вы занимаетесь.

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

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

Python 3. Архитектура программ. Работа с пакетами(модулями)

Сам язык Python — этоБольшое волонтерское сообществоПродукт участниковДиверсификацияИ гордый. Этот язык был разработан в конце 1980-х годов.Guido van RossumРазработан и реализован впервые. егоУчебник Python3В первой главе объясняется, почему Python так популярен среди многих языков сегодня.

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

Эти раздаточные материалы быстро знакомят с характеристиками Python с использованием абстрактных методов проектирования и строгих расчетных моделей. Кроме того, эти раздаточные материалы предоставляют практическое введение в программирование на Python, включая некоторые функции языка высокого уровня и демонстрационные примеры. Благодаря этому курсу изучение Python станет естественным.

Однако Python — это экологически богатый язык с множеством функций и способов использования. Когда мы говорим об основных концепциях информатики, мы намеренно вводим их медленно. Для опытных студентов, которые планируют выучить все тонкости языка за один присест, мы рекомендуем им прочитать книгу Марка Пилигрима.Dive Into Python 3, Это бесплатно для чтения в Интернете. Тема этой книги сильно отличается от этого курса, но она содержит много ценной практической информации об использовании Python. Заранее: в отличие от этих раздаточных материалов, Dive Into Python 3 требует некоторого опыта программирования.

Читайте также:
Программа проблемы гражданского права

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

1.1.2 Установить Python3

Как и все отличное программное обеспечение, Python имеет множество версий. В этом курсе будет использоваться последняя стабильная версия Python3 (на момент написания — 3.2). На многих компьютерах уже установлена ​​более старая версия Python, но они могут не соответствовать этому курсу. Вы должны уметь использовать любой компьютер, на котором можно установить Python3 в этом курсе. Не волнуйтесь, Python бесплатный.

Dive Into Python 3 имеет подробную версию для всех основных платформ.Инструкция по установке. В этом руководстве Python 3.1 много раз упоминается, но вам лучше установить 3.2 (хотя их различия в этом курсе очень незначительны). Python 3.2 установлен на всех обучающих машинах в EECS Academy.

1.1.3 Интерактивная сессия

В интерактивном сеансе Python вы можете в командной строке >>> Впоследствии введите код Python. Интерпретатор Python читает и вычисляет то, что вы вводите, и выполняет ваши различные команды.

Есть несколько способов начать интерактивный сеанс, и они имеют разные характеристики. Попробуйте еще раз, чтобы найти свой любимый способ. Все они за кулисами используют один и тот же интерпретатор (CPython).

  • Самый простой и распространенный способ — запускать приложения Python3. В командной строке терминала (Mac / Unix / Linux) введите python3 , Или откройте приложение Python3 в Windows. (Примечание переводчика: после установки переменных среды Python в Windows вы можете cmd Или выполните ту же операцию в PowerShell. )
  • Есть более удобное приложение под названием Idle3 ( idle3 ), можно использовать для изучения этого языка. Иди выделит ваш код (это называется выделением синтаксиса), всплывает подсказка по использованию и отметит источник некоторых ошибок. Idle всегда поставляется с Python, так что вы его уже установили.
  • Редактор Emacs может запускать интерактивные сеансы в одном из своих буферов. Несмотря на то, что его немного сложно изучить, Emacs — мощный и универсальный редактор, подходящий для любого языка. Пожалуйста, прочтите руководство 61A по Emacs, чтобы начать работу. Многие программисты уделяют много времени изучению Emacs, после чего они больше не меняют редакторы.

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

>>> 2 + 2 4

Контроль: каждая сессия сохраняет ваши исторические данные. Чтобы получить доступ к истории, вам нужно нажать -P (Предыдущий) и -N (Следующий). -D Выйдет из сеанса, что очистит всю историю.

1.1.4 Первый пример

Воображение представит неизвестные вещи в форме, перо поэта даст им истинный образ, а пустое ничто получит место и имя.

— Уильям Шекспир, «Сон в летнюю ночь»

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

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

>>> from urllib.request import urlopen

Функция загрузки для доступа к данным в Интернете. В частности, он предоставляет то, что называется urlopen Функция может получить доступ к контенту по унифицированному указателю ресурса (URL), который является определенным местом в Интернете.

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

  1. Рассчитать определенное значение
  2. Или выполнить действие

Операторы обычно используются для описания операций. Когда интерпретатор Python выполняет инструкцию, он выполняет соответствующую операцию. С другой стороны, выражения обычно описывают операции, производящие значения. Когда Python оценивает выражение, он вычисляет его значение. В этой главе представлены несколько выражений и утверждений.

Читайте также:
Сигнал программа для общения отзывы

>>> shakespeare = urlopen(‘http://inst.eecs.berkeley.edu/~cs61a/fa11/shakespeare.txt’)

Имя shakespeare Свяжите со значением следующего выражения. Это выражение вызывается в URL urlopen Функция, URL-адрес содержит полный текст 37 сценариев Шекспира в одном текстовом файле.

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

Другой оператор присваивания

>>> words = set(shakespeare.read().decode().split())

Имя words Коллекция всех дедуплицированных слов, которые встречаются в сценариях Шекспира, всего 33 721. Эта цепочка команд вызывает read 、 decode с split , Каждый из которых управляет подключенными вычислительными объектами: данные, считанные из URL, данные, декодированные в текст, и текст, разделенный на слова. Все эти слова размещены set в.

Объект:Коллекция — это объект, который поддерживает операции выборки и тестирования членов. Объект объединяет данные и логику работы с данными и каким-то образом скрывает свою сложность. Объект — основная тема главы 2.

>>> = 5 and w[::-1] in words>

Это составное выражение, которое вычисляет набор «словаря Шекспира», встречающийся в положительном или обратном порядке. Таинственный знак w[::-1] Однако пройдитесь по каждому символу в слове -1 Указывает на обратный обход ( :: Означает, что первое и последнее слово используют значение по умолчанию). Когда вы вводите выражение в интерактивном сеансе, Python впоследствии распечатает его значение, как указано выше.

Устный переводчик:Вычисление составных выражений требует предсказуемого процесса для точного выполнения кода интерпретатора. Программа, которая выполняет этот процесс и вычисляет составные выражения и операторы, называется интерпретатором. Дизайн и реализация интерпретатора — основная тема главы 3.

По сравнению с другими компьютерными программами интерпретатор языка программирования обычно уникален. Python не разработан в терминах Шекспира или палиндрома, но его большая гибкость позволяет нам обрабатывать большие объемы текста с очень небольшим кодом.

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

1.1.5 Практическое руководство

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

Основное уравнение компьютера: Компьютер = мощный + неповоротливый

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

Компьютеры также очень неповоротливы и хрупки. Операции, которые они выполняют, очень старомодны, просты и механизированы. Компьютеру не хватает чего-то вроде настоящей проницательности . это не похоже на HAL 9000 из фильма. Если ничего не происходит, не стоит пугаться компьютера, как будто у него какой-то мозг. Это очень механизировано за кулисами.

Программа — это что-то практическое, что человек использует для построения своей истинной проницательности, и она состоит из этих простых небольших операций.

— Франсиско Кай и Ник Парланте, Stanford CS101

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

Обучение объяснению ошибок и диагностике причин неожиданных ошибок называется отладкой. Некоторые из его руководящих принципов:

  1. Пошаговое тестирование: каждая написанная программа состоит из небольших компонентных модулей, которые можно тестировать независимо. Проверяйте все, что вы пишете, как можно скорее, чтобы своевременно обнаруживать ошибки и получать уверенность в своих компонентах.
  2. Изолируйте ошибки: ошибки в выводах, выражениях или операторах сложных программ обычно можно отнести к определенным компонентным модулям. При попытке диагностировать проблему обязательно проследите ее до мельчайшего фрагмента кода, прежде чем пытаться исправить ошибку.
  3. Проверьте гипотезу: интерпретатор выполняет ваши инструкции как слова — ни больше, ни меньше. Когда какой-либо код не соответствует тому, что программист считает (или предполагает) поведением, их результат будет неожиданным. Поймите свои предположения, а затем сосредоточьтесь на проверке того, организованы ли ваши предположения для отладки.
  4. Спросите других: вы не одиноки! Если вы не понимаете определенное сообщение об ошибке, вы можете спросить друга, наставника или поисковую систему. Если вы изолировали ошибку, но не знаете, как ее исправить, вы можете позволить другим взглянуть на нее. При групповом решении задач будет передано много ценных знаний в области программирования.
Читайте также:
На каком языке пишется программа для ардуино

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

Источник: russianblogs.com

Структура и интерпретация компьютерных программ

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

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

Источник: pythonz.net

Структура и Интерпретация Компьютерных Программ. Начало.

Структура и интерпретация компьютерных программ

Книга под названием «Структура и Интерпретация Компьютерных Программ» была выпущена в далёком 1979 году. Раньше по ней преподавали вводный курс в программирование среди студентов MIT. Сейчас книга находится в свободном доступе в Интернете, и любой желающий может скачать и изучать её в своё удовольствие. Помимо книги, в сети также есть цикл видео-лекций от авторов, они расположены на ресурсе MIT OpenCourseware, мне кажется они могут неплохо дополнять друг друга по ходу изучения материала.

Чем же примечательна эта книга? Да хотя бы отзывами на Amazon 🙂 Среди рецензентов есть такие личности как Peter Norvig и Paul Graham. К слову, сейчас у книги рейтинг 3.8 из 5, отчего некоторые известные личности недоумевают. А если серьёзно, то это фундаментальный классический труд в области программирования (ничем не хуже небезызвестной книги The Art of Programming от Д. Кнута, которую никто не читал).

Единственным непонятным моментом для меня является факт преподавания курса программирования для новичков по этой книге. Представляю как можно напугать новоиспечённых студентов её содержимым. Интересно, есть ли в сети статистика по которой можно узнать много ли людей, посещавших этот «адский» курс, предпочли в дальнейшем поменять свой major 🙂 Если бы организаторы Code.org пропагандировали программирование по этой книге, получился бы знатный epic fail.

Итак, по-моему мнению, книга явно не для новичков в программировании, так как концепции в ней сложны для восприятия людьми «не нюхавшими пороху», более того, понадобится недюжинный запас мотивации и терпения, так как упражнения после каждой секции сложны и требуют от читателя изрядно «попотеть». Но награда стоит того. Я прочитал лишь первую главу этой книги (их всего 5), проработал часть упражнений и, признаюсь, почувствовал как стал лучше разбираться в некоторых вещах (обрёл какой-никакой фундамент).

В общем, к чему я всё это пишу в блоге? А к тому, что собираюсь прочитать всю книгу и проработать как можно больше упражнений (в частности сложных).

  • Прочитать книгу.
  • По ходу чтения также просматривать лекции, так как в книге порой не всегда можно понять материал с 1-го и даже с 10-го раза.
  • Выполнять упражнения в каждой секции. Читать конечно хорошо, но лучше всего материал усваивается только на практике.

Читать я буду русское издание («Добросвет»), у меня имеется бумажный вариант. В случае проблем с переводом, обращаться к оригиналу никто не запрещал. По ходу моего эксперимента, буду писать заметки в этот блог. Надеюсь публичность даст свою толику мотивации (в день блог посещает в среднем 120 человек).

p.s. В книге используется язык программирования Lisp, в частности его диалект Scheme. Для проработки материала собираюсь использовать Racket. Почитать и посмотреть лекции можно по этой ссылке.

Подписывайтесь на блог, будет интересно!

Присоединяйтесь к рассылке

Понравился контент? Пожалуйста, подпишись на рассылку.

Источник: khashtamov.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru