Погружение в пучину интерпретатора python. ч1
Содержание:
- Как пользоваться ADB run
- Язык программирования Python
- Обработка естественного языка с помощью Python: анализ текста с использованием инструментария естественного языка
- Шаблоны регулярных выражений
- Станьте Junior Python разработчиком
- Курсы с преподавателем (цена по возрастанию)
- MacHeist nanoBundle
- Модификаторы регулярных выражений: flags
- Язык программирования Python
- Вышла версия 1.0 фреймворка Tornado
- Ресурсы для младших школьников
- OpenPGP Public Keys
- Работа с почтой
- Арифметические операторы
- Python теперь доступен каждому желающему
- 5 функций для отладки
- Deep Anomaly Detection
- Пишем программу 3D-моделирования в 500 строках кода
- Введение
- Итог
Как пользоваться ADB run
Язык программирования Python
Последнее обновление: 06.11.2020
Python представляет популярный высокоуровневый язык программирования, который предназначен для создания приложений различных типов.
Это и веб-приложения, и игры, и настольные программы, и работа с базами данных.
Довольно большое распространение питон получил в области машинного обучения и исследований искусственного интеллекта.
Основные особенности языка программирования Python:
-
Скриптовый язык. Код программ определяется в виде скриптов.
-
Поддержка самых различных парадигм программирования, в том числе объектно-ориентированной и функциональной парадигм.
-
Интерпретация программ. Для работы со скриптами необходим интерпретатор, который запускает и выполняет скрипт.
Выполнение программы на Python выглядит следующим образом. Сначала мы пишим в текстовом редакторе скрипт с набором выражений на данном языке программирования. Передаем этот скрипт
на выполнение интерпретатору. Интерпретатор транслирует код в промежуточный байткод, а затем виртуальная машина переводит полученный байткод в набор инструкций, которые выполняются операционной системой.Здесь стоит отметить, что хотя формально трансляция интерпретатором исходного кода в байткод и перевод байткода виртуальной машиной в набор машинных команд представляют
два разных процесса, но фактически они объединены в самом интерпретаторе. -
Портативность и платформонезависимость. Не имеет значения, какая у нас операционная система — Windows, Mac OS, Linux, нам достаточно написать скрипт, который будет запускаться на всех этих ОС
при наличии интерпретатора -
Автоматическое управление памяти
-
Динамическая типизация
Python — очень простой язык программирования, он имеет лаконичный и в то же время довольно простой и понятный синтаксис. Соответственно его
легко изучать, и собственно это одна из причин, по которой он является одним из самых популярных языков программирования именно для обучения. В частности, в 2014 году он был
признан самым популярным языком программирования для обучения в США.
Python также популярен не только в сфере обучения, но в написании конкретных программ в том числе коммерческого характера. В немалой степени
поэтому для этого языка написано множество библиотек, которые мы можем использовать.
Кроме того, у данного языка программирования очень большое коммьюнити, в интернете можно найти по данному языку множество полезных материалов, примеров, получить
квалифицированную помощь специалистов.
Установка Python
По нажатию на кнопку будет загружен соответствующей текущей ОС установщик Python.
На ОС Windows при запуске инсталлятора запускает окно мастера установки:
Здесь мы можем задать путь, по которому будет устанавливаться интерпретатор. Оставим его по умолчанию, то есть
C:\Users\\AppData\Local\Programs\Python\Python36\.
Кроме того, в самом низу отметим флажок «Add Python 3.9 to PATH», чтобы добавить путь к интерпретатору в переменные среды.
После установки в меню Пуск на ОС Windows мы сможем найти иконки для доступа к разным утилитам питона:
Здесь утилита Python 3.9 (64-bit) представляет интерпретатор, в котором мы можем запустить скрипт. В файловой системе сам файл интерпретатора можно найти по пути,
по которому производилась установка. На Windows по умолчанию это путь C:\Users\\AppData\Local\Programs\Python\Python37, а сам интерпретатор представляет
файл python.exe. На ОС Linux установка производится по пути /usr/local/bin/python3.9.
Вперед
Обработка естественного языка с помощью Python: анализ текста с использованием инструментария естественного языка
Эта книга поможет освоить концепты обработки натурального языка, на котором мы с вами пишем, которым пользуемся, когда говорим. Также, вы сможете научиться писать программы на Python, даже если раньше этого не делали. Это даже работает с огромными массивами неструктурированного текста. Эта книга научит вас именно тому, как с помощью Python можно обрабатывать огромные хаотичные тексты, не поддающиеся структуризации.
Пособие станет полезным для улучшения практических навыков обработки естественного языка с использованием языка программирования Python и Инструментария Естественного Языка (Natural Language Toolkit), который является библиотекой с открытым исходным кодом.
Шаблоны регулярных выражений
За исключением символов (+?. * ^ $ () [] {} | ), все остальные соответствуют самим себе. Вы можете избежать экранировать специальный символ с помощью бэкслеша ().
В таблицах ниже описаны все символы и комбинации символов для регулярных выражений, которые доступны в Python:
№ | Шаблон & Описание |
---|---|
1 | ^ — соответствует началу строки. |
2 | $— соответствует концу строки. |
3 | . — соответствует любому символу, кроме новой строки. Использование флага re.M позволяет также соответствовать новой строке. |
4 | — соответствует любому из символов в скобках. |
5 | — соответствует любому символу, кроме тех, что в квадратных скобках. |
6 | foo* — соответствует 0 или более вхождений “foo”. |
7 | bar+ —- соответствует 1 или более вхождениям “bar”. |
8 | foo? —- соответствует 0 или 1 вхождению “foo”. |
9 | bar{3} —- соответствует трем подряд вхождениям “bar”. |
10 | foo{3,} — соответствует 3 или более вхождениям “foo”. |
11 | bar{2,5} —- соответствует от 2 до 5 вхождениям “bar”. |
12 | a|b — соответствует либо a, либо b. |
13 | (foo) — группирует регулярные выражения. |
14 | (?imx) — временно включает параметры i, m или x в регулярное выражение. Если используются круглые скобки — затрагивается только эта область. |
15 | (?-imx) — временно отключает опции i, m или x в регулярном выражении. Если используются круглые скобки — затрагивается только эта область. |
16 | (?: foo) — Группирует регулярные выражения без сохранения совпадающего текста. |
17 | (?imx: re) — Временно включает параметры i, m или x в круглых скобках. |
18 | (?-imx: re) — временно отключает опции i, m или x в круглых скобках. |
19 | (?#…) — комментарий. |
20 | (?= foo) — совпадает со всеми словами после которых » foo». |
21 | (?! foo) — совпадает со всеми словами после которых нет » foo». |
22 | (?> foo) — совпадает со всеми словами перед которыми » foo». |
23 | \w — совпадает с буквенным символом. |
24 | \W — совпадает с не буквенным символом. |
25 | \s — совпадает с пробельными символами (\t, \n, \r, \f и пробелом). |
26 | \S — все кроме пробельных символов. |
27 | \d — соответствует цифрам (0-9). |
28 | \D — все кроме цифры. |
29 | \A — соответствует началу строки. |
30 | \Z – соответствует концу строки. Включая перевод на новую строку, если такая есть. |
31 | \z — соответствует концу строки. |
32 | \G — соответствует месту, где закончилось последнее соответствие. |
33 | \b — соответствует границам слов, когда поставлены внешние скобки. |
34 | \B — все кроме границы слова. |
35 | **\n,\t,\r,\f ** — соответствует новым строкам, подстрокам. |
36 | \1…\9 — соответствует подгруппе n-й группы. |
37 | \10 — соответсвуйет номеру группы. В противном случае относится к восьмеричному представлению символьного кода. |
Станьте Junior Python разработчиком
В начале пути программирование кажется сложным предметом, но Python проще, чем вы думаете. Развивайте привычку учиться и не бойтесь ошибок. Используйте pythonru.com, ютуб и онлайн курсы — вы научитесь программировать, не выходя из дома!
Если вы новичок в Python и хотите сделать карьеру разработчика, попробуйте годовую программу Профессия Python-разработчик от SkillBox. Научитесь писать программы и разрабатывать веб-приложения, понимать код, разбираться в документации — и за 12 месяцев станете востребованным разработчиком.
Учитесь вместе с отраслевыми экспертами и приобретайте навыки, необходимые работодателям. SkillBox предлагает оплату в рассрочку и гарантирует трудоустройство по окончанию обучения.
Курсы с преподавателем (цена по возрастанию)
Онлайн-курс Introduction Python от IT Hillel
Курс для тех, кто совсем не знаком с основами программирования или не знает, в какой области ему хочется работать. Вы познакомитесь с устройством компьютера, освоите основы основ программирования и на начальном уровне изучите Python. Перед началом занятий можно пройти бесплатную консультацию и технический тест с базовыми вопросами на уровень владения ПК.
Профессия Python-программист от «Хекслет»
В этой школе вам сразу дается доступ ко всем курсам профессии. Вы можете пройти все за месяц, а можете работать в спокойном темпе. Со студентами работают менторы, и как результат обучения — у вас в кармане портфолио с 4 полноценными проектами. Как бонус — помощь в трудоустройстве.
Основы программирования на Python от Центра Обучающих Технологий
Вы изучите с синтаксис языка Python, типы данных и управляющих конструкций, модули обработки данных. Поймете, как следует взаимодействовать с базами данных и познакомитесь со средствами сетевого взаимодействия и проектирования графического пользовательского интерфейса.
Python для анализа данных от SkillFactory
На этом курсе вы научитесь обрабатывать большие объемы данных, работать с API, парсить, создавать отчеты и автоматизировать сбор данных в интернете. Вам предоставят онлайн-доступ к вебинарам, упражнениям и сообществу студентов.
Дистанционный курс Python-разработчик от TeachMeSkills
На этих курсах в небольшой группе вас обучат процедурному и объектно-ориентированному программированию. А также поднатаскают в разработке приложений на фреймворке Django, работе с базами данных и серверами.
Как стать Python-разработчиком от «Яндекс.Практикума»
За 9 месяцев учебы вы освоите Python и соберете портфолио из 6 проектов. В вашем распоряжении будут онлайн-тренажер, множество задач для самостоятельной работы и постоянная поддержка наставников.
MacHeist nanoBundle
Сегодня, около 3 ночи по Москве MacHeist представил всем желающим новый набор программ.
На данный момент в нем доступно 6 программ:
— ShoveBox — органайзер заметок
— WriteRoom — текстовый редактор, специально для писателей
— Twitterific — стильный Twitter клиент
— TinyGrab — утилита для получения скриншотов и загрузки их на сайт
— Hordes of Orcs — игра в жанре Tower Defence (сайт пока упал)
— Mariner Write — мощный текстовый процессор, будет доступен когда (и если) наберется 500000 участников.
Создатели MacHeist говорят, что седлали этот bundle бесплатным чтобы познакомить как можно больше Mac пользователей с хорошими Indie программами.
До конца раздачи осталось 6 дней.
Модификаторы регулярных выражений: flags
Функции регулярных выражений включают необязательный модификатор для управления изменения условий поиска. Модификаторы задают в необязательном параметре . Несколько модификаторов задают с помощью побитового ИЛИ (), как показано в примерах выше.
№ | Модификатор & Описание |
---|---|
1 | re.I — делает поиск нечувствительным к регистру |
2 | re.L — ищет слова в соответствии с текущим языком. Эта интерпретация затрагивает алфавитную группу (\w и \W), а также поведение границы слова (\b и \B). |
3 | re.M — символ $ выполняет поиск в конце любой строки текста (не только конце текста) и символ ^ выполняет поиск в начале любой строки текста (не только в начале текста). |
4 | re.S — изменяет значение точки (.) на совпадение с любым символом, включая новую строку |
5 | re.U— интерпретирует буквы в соответствии с набором символов Unicode. Этот флаг влияет на поведение \w, \W, \b, \B. В python 3+ этот флаг установлен по умолчанию. |
6 | re.X— позволяет многострочный синтаксис регулярного выражения. Он игнорирует пробелы внутри паттерна (за исключением пробелов внутри набора [] или при экранировании обратным слешем) и обрабатывает не экранированный “#” как комментарий. |
Язык программирования Python
Python представляет популярный высокоуровневый язык программирования, который предназначен для создания приложений различных типов. Это и веб-приложения, и игры, и настольные программы, и работа с базами данных. Довольно большое распространение питон получил в области машинного обучения и исследований искусственного интеллекта.
Впервые язык Python был анонсирован в 1991 году голландским разработчиком Гвидо Ван Россумом. С тех пор данный язык проделал большой путь развития. В 2000 году была издана версия 2.0, а в 2008 году — версия 3.0. Несмотря на вроде такие большие промежутки между версиями постоянно выходят подверсии. Так, текущей актуальной версией на момент написания данного материала является 3.7. Более подробную информацию о всех релизах, версиях и изменения языка, а также собственно интерпретаторы и необходимые утилиты для работы и прочую полезную информацию можно найти на официальном сайте https://www.python.org/.
Основные особенности языка программирования Python:
- Скриптовый язык. Код программ определяется в виде скриптов.
- Поддержка самых различных парадигм программирования, в том числе объектно-ориентированной и функциональной парадигм.
- Интерпретация программ. Для работы со скриптами необходим интерпретатор, который запускает и выполняет скрипт.Выполнение программы на Python выглядит следующим образом. Сначала мы пишим в текстовом редакторе скрипт с набором выражений на данном языке программирования. Передаем этот скрипт на выполнение интерпретатору. Интерпретатор транслирует код в промежуточный байткод, а затем виртуальная машина переводит полученный байткод в набор инструкций, которые выполняются операционной системой.
Здесь стоит отметить, что хотя формально трансляция интерпретатором исходного кода в байткод и перевод байткода виртуальной машиной в набор машинных команд представляют два разных процесса, но фактически они объединены в самом интерпретаторе.
- Портативность и платформонезависимость. Не имеет значения, какая у нас операционная система — Windows, Mac OS, Linux, нам достаточно написать скрипт, который будет запускаться на всех этих ОС при наличии интерпретатора
- Автоматическое управление памяти
- Динамическая типизация
Python — очень простой язык программирования, он имеет лаконичный и в то же время довольно простой и понятный синтаксис. Соответственно его легко изучать, и собственно это одна из причин, по которой он является одним из самых популярных языков программирования именно для обучения. В частности, в 2014 году он был признан самым популярным языком программирования для обучения в США.
Python также популярен не только в сфере обучения, но в написании конкретных программ в том числе коммерческого характера. В немалой степени поэтому для этого языка написано множество библиотек, которые мы можем использовать.
Кроме того, у данного языка программирования очень большое коммьюнити, в интернете можно найти по данному языку множество полезных материалов, примеров, получить квалифицированную помощь специалистов.
В чём особенности языка программирования Python
Это скриптовый язык, который применяется для решения самого широкого спектра задач. Чаще всего Python применяют в работе с большими данными и разработке сайтов и мобильных игр. Он подходит и для создания десктопных и мобильных приложений.
Одно из достоинств Python — его логичность и относительная простота. Он интерпретируемый, то есть исходники не нужно компилировать. Разработка на Python идёт быстрее, чем на многих других языках. И он отлично подходит для новичков: писать простые программы можно уже через несколько дней после начала обучения.
Вышла версия 1.0 фреймворка Tornado
Популярный проект, по созданию неблокирующего web-сервера и «сопутствующего» фреймворка на языке Python, объявил о релизе версии 1.0.
Скачать новую версию можно тут:
По сравнению с последним релизом версии 0.2, было добавлено множество новшеств,
— возможность запуска WSGI-приложений, под управлением сервера Tornado (например приложения Django и CherryPy)
— улучшенная производительность в MacOS X (с использованием kqueue) и экспериментальная поддержка win32
— переписан класс AsyncHTTPClient
— поддержка .mo файлов в модуле локализации
— поддержка пре-форкинга для запуска нескольких процессов Tornado
— поддержка SSL и gzip в HTTP-сервере
И многое другое.
Ресурсы для младших школьников
- Build a «Pypet». Изучите основы программирования на Python, создавая тамагочи в стиле «Pypet» от Татьяны Тилоски.
- Guido van Robot Учебный инструмент, в котором учащиеся пишут простые программы с использованием языка, похожего на Python, для управления моделируемым роботом. Проект включает план обучения, так как прошел испытания в средней школе Йорктауна.
- Python for Kids от Джейсона Р. Бриггса. Книга с примерами кода и головоломками.
- PythonTurtle обучающая среда на Python, подходящая для начинающих и детей. Ресурс ориентирован в преимущественно на детей, но, как известно, успешно используется взрослыми.
- Young Coders tutorial Это полный текст учебника, который ежегодно преподается в PyCon (Северная Америка), с примерами и упражнениями. Это учебное пособие дает базовые навыки и выстраивает работу со сложной логикой и играми. Подходит детям от 10 лет и начинающим взрослым.
- свободно могут использовать для домашнего обучения школьники и студенты старше 13 лет. Исходя из нашего опыта, обучающиеся этого возраста усваивают материал так же быстро, как и взрослые новички в программировании.
OpenPGP Public Keys
Source and binary executables are signed by the release manager or binary builder using their
OpenPGP key. Release files for currently supported releases are signed by the following:
- Pablo Galindo Salgado (3.10.x and 3.11.x source files and tags) (key id: 64E628F8D684696D)
- Steve Dower (Windows binaries) (key id: FC62 4643 4870 34E5)
- Łukasz Langa (3.8.x and 3.9.x source files and tags) (key id: B269 95E3 1025 0568)
- Ned Deily (macOS binaries, 3.7.x / 3.6.x source files and tags) (key ids: 2D34 7EA6 AA65 421D, FB99 2128 6F5E 1540, and Apple Developer ID DJ3H93M7VJ)
- Larry Hastings (3.5.x source files and tags) (key id: 3A5C A953 F73C 700D)
- Benjamin Peterson (2.7.z source files and tags) (key id: 04C3 67C2 18AD D4FF and A4135B38)
Release files for older releases which have now reached end-of-life may have been signed by one of the following:
- Anthony Baxter (key id: 0EDD C5F2 6A45 C816)
- Georg Brandl (key id: 0A5B 1018 3658 0288)
- Martin v. Löwis (key id: 6AF0 53F0 7D9D C8D2)
- Ronald Oussoren (key id: C9BE 28DE E6DF 025C)
- Barry Warsaw (key ids: 126E B563 A74B 06BF, D986 6941 EA5B BD71, and ED9D77D5)
You can import a person’s public keys from a public keyserver network server
you trust by running a command like:
or, in many cases, public keys can also be found
at keybase.io.
On the version-specific download pages, you should see a link to both the
downloadable file and a detached signature file. To verify the authenticity
of the download, grab both files and then run this command:
Note that you must use the name of the signature file, and you should use the
one that’s appropriate to the download you’re verifying.
(These instructions are geared to
GnuPG and Unix command-line users.)
Работа с почтой
Стандартная библиотека Python позволяет получать и отправлять электронные сообщения.
1. Получение почты от POP3 сервера
Для получения сообщений мы используем POP сервер:
Модуль getpass позволяет получить пароль пользователя безопасным образом, так что он не будет отображаться на экране. Если POP сервер использует защищенное соединение, вам нужно использовать класс POP3_SSL. Если подключение прошло успешно, вы можете взаимодействовать с сервером:
Для завершения работы используйте:
2. Получение почты от IMAP сервера
Для подключения и работы с сервером IMAP используется модуль imaplib:
Если ваш IMAP сервер использует защищенное соединение, нужно использовать класс IMAP4_SSL. Для получения списка сообщений используйте:
Затем вы можете выполнить цикл по выбранному списку и прочитать каждое сообщение:
Но, не забудьте закрыть соединение:
3. Отправка почты
Для отправки почты используется протокол SMTP и модуль smtplib:
Как и раньше, для защищенного соединения используйте SMTP_SSL. Когда соединение будет установлено, можно отправить сообщение:
Арифметические операторы
Арифметические операторы обычно работают с числами. Есть операторы для сложения, вычитания, умножения, деления, модуля и экспоненциальных операций. Некоторые из этих операторов работают и со строками. Все арифметические операторы — специальные символы.
- +: оператор сложения;
- -: оператор вычитания;
- *: оператор умножения;
- /: оператор деления;
- **: экспоненциальный оператор;
- //: оператор деления этажей.
Давайте посмотрим на пример арифметических операторов в Python.
x = 15 y = 7 sum = x + y print("addition =", sum) subtraction = x - y print("subtraction =", subtraction) multiplication = x * y print("multiplication =", multiplication) division = x / y print("division =", division) modulus = x % y print("modulus =", modulus) exponent = x ** 2 print("exponent =", exponent) floor_division = x // y print("division =", floor_division) # 2
Вывод:
Python поддерживает операторы сложения и умножения для строк.
print("addition of strings =", ("Python" + " " + "Operators")) print("multiplication of strings =", ("Python" * 2))
Вывод:
addition of strings = Python Operators multiplication of strings = PythonPython
Python теперь доступен каждому желающему
В феврале 1991 Ван Россум публикует Python в alt.source на всеобщее обозрение . В языке поддерживаются основные типы данные list, dict, str и т.д., исключения, классы с поддержкой наследования. Была заимствована из языков Modula-2 и Modula-3 идея модульной системы . Эти концепты до сих пор присутствуют.
В 1994 году выходит версия 1.0. Были добавлены особенности функционального программирования: lambda, filter, map, reduce – функции, навеянные языком Lisp .
В сентябре 2000 года выходит версия 1.6 – последняя из серии 1.x. В следующем месяце этого года появится новый релиз Python – 2.0.
5 функций для отладки
Эти функции часто игнорируются, но будут полезны для отладки и устранения неисправностей кода.
breakpoint
Если нужно приостановить выполнение кода и перейти в командную строку Python, эта функция вам пригодится. Вызов перебросит вас в отладчик Python.
Эта встроенная функция была добавлена в Python 3.7, но если вы работаете в более старых версиях, можете получить тот же результат с помощью .
dir
Эта функция может использоваться в двух случаях:
- просмотр списка всех локальных переменных;
- просмотр списка всех атрибутов конкретного объекта.
Из примера можно увидеть локальные переменные сразу после запуска и после создания новой переменной .
Если в передать созданный список , на выходе можно увидеть все его атрибуты.
В выведенном списке атрибутов можно увидеть его типичные методы (, , и т. д.) , а также множество более сложных методов для перегрузки операторов.
vars
Эта функция является своего рода смесью двух похожих инструментов: и .
Когда вызывается без аргументов, это эквивалентно вызову , которая показывает словарь всех локальных переменных и их значений.
Когда вызов происходит с аргументом, получает доступ к атрибуту , который представляет собой словарь всех атрибутов экземпляра.
Перед использованием было бы неплохо сначала обратиться к .
type
Эта функция возвращает тип объекта, который вы ей передаете.
Тип экземпляра класса есть сам класс.
Тип класса — это его метакласс, обычно это .
Атрибут даёт тот же результат, что и функция , но рекомендуется использовать второй вариант.
Функция , кроме отладки, иногда полезна и в реальном коде (особенно в объектно-ориентированном программировании с наследованием и пользовательскими строковыми представлениями).
Обратите внимание, что при проверке типов обычно вместо используется функция. Также стоит понимать, что в Python обычно не принято проверять типы объектов (вместо этого практикуется утиная типизация)
help
Если вы находитесь в Python Shell или делаете отладку кода с использованием , и хотите знать, как работает определённый объект, метод или атрибут, функция поможет вам.
В действительности вы, скорее всего, будете обращаться за помощью к поисковой системе. Но если вы уже находитесь в Python Shell, вызов будет быстрее, чем поиск документации в Google.
Deep Anomaly Detection
Из песочницы
Детекция аномалий с помощью методов глубокого обучения
Выявление аномалий (или выбросов) в данных — задача, интересующая ученых и инженеров из разных областей науки и технологий. Хотя выявлением аномалий (объектов, подозрительно не похожих на основной массив данных) занимаются уже давно и первые алгоритмы были разработаны еще в 60-ых годах прошлого столетия, в этой области остается много неразрешенных вопросов и проблем, с которыми сталкиваются люди в таких сферах, как консалтинг, банковский скоринг, защита информации, финансовые операции и здравоохранение.В связи с бурным развитием алгоритмов глубоко обучения за последние несколько лет было предложено много современных подходов к решению данной проблемы для различных видов исследуемых данных, будь то изображения, записи с камер видеонаблюдений, табличные данные (о финансовых операциях) и др.
Пишем программу 3D-моделирования в 500 строках кода
Перевод
Введение
Люди от природы креативны. Мы постоянно проектируем и создаём новые, полезные и интересные вещи. Сегодня мы пишем ПО, помогающее процессу проектирования и творчества. Программы САПР (Computer-aided design, CAD) позволяют творцам проектировать здания, мосты, графику видеоигр, чудовищ для фильмов, объектов для 3D-печати и множество других вещей перед созданием физической версии проекта.
По своей сути, инструменты CAD являются способом абстрагирования трёхмерного проекта в нечто, что можно просматривать и редактировать на двухмерном экране. Чтобы справляться со своей задачей, инструменты CAD должны обеспечивать три основных элемента функциональности. Во-первых, они должны иметь структуру данных, описывающую проектируемый объект: это то, как компьютер понимает создаваемый пользователем трёхмерный мир. Во-вторых, инструмент CAD должен обеспечивать отображение проекта на экране пользователя. Пользователь проектирует физический объект с тремя измерениями, но экран компьютера имеет всего два измерения. Инструмент CAD должен моделировать способ восприятия нами объектов и отрисовывать их на экране так, чтобы пользователь смог понять все три измерения объекта. В-третьих, CAD должен предоставлять возможность взаимодействия с проектируемым объектом. Пользователь должен быть способен дополнять или модифицировать проект, чтобы создать нужный результат. Кроме того, все инструменты должны иметь возможность сохранения и загрузки проектов с диска, чтобы пользователи могли сотрудничать, обмениваться своей работой и сохранять её.
Итог
Перебирая данные железобетонными функциями (чистыми, высшими), мы сохраняем простоту реализации и обеспечиваем стабильность программы, которую проще тестировать:
- пишите чистые функции, они обеспечат стабильность программы
- пишите функции высшего порядка, код станет намного компактнее и надежнее
- композируйте, декорируйте, частично применяйте, переиспользуйте код
- используйте сишные либы, они дадут скорости вашему софту
Как только вы напишете свой набор инструментов, новый код будет создаваться со знанием того, что у вас есть штука, которая может решить часть задачи. А значит софт будет меньше и проще.