Вы находитесь на странице: 1из 14

2 Lab1.

nb

Реферат
Техно-редактирова
ние в системе
Mathematica
Выполнил: Циуляну Андрей
Проверил: Унгуряну Валерий
Lab1.nb 3

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

Теоретические основы императивного


программирования были заложены ещё в 1930-х годах
Аланом Тьюрингом и Джоном фон Нейманом. Теория,
положенная в основу функционального подхода, также
родилась в 20-х — 30-х годах.
Теория так и оставалась теорией, пока в конце 1950-х
годов Джон Маккарти не разработал язык Лисп, который
стал первым почти функциональным языком
4 Lab1.nb

программирования и многие годы оставался


единственным таковым.
Лисп (Фортран, например) , как и ряд других давних
языков, удовлетворяет многие современным
потребности до сих пор, которые базируются на том, что
большую часть работы выполняет компилятор , облегчая
работу программиста. С каждым днем, сложность
программного обеспечения возрастала и возрастала,
появилась необходимость в типизации, появляется
множество типизированных функциональных языков: ML,
Scheme, Hope, Miranda, Clean и многие другие. Вдобавок
постоянно увеличивается число диалектов.
В результате вышло так, что практически каждая
группа, занимающаяся функциональным
программированием, использовала собственный язык.
Что вызывало проблемы по распространению этих
языков и порождало многие более мелкие проблемы.
Тем не менее, Большинство функциональных языков
программирования реализуются как интерпретируемые,
следуя традициям Лиспа.
Таковые удобны для быстрой отладки программ,
исключая длительную фазу компиляции, укорачивая
обычный цикл разработки.
Lab1.nb 5

В этом реферате мы рассмотрим концепции, которые


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

Свойства и преимущества функционального


програмирования:
Как основные свойства функциональных языков кратко
6 Lab1.nb

рассмотрим следующие:
◼ модульность;
◼ строгая типизация;
◼ краткость и простота;
◼ Функции - суть значения
◼ чистота (отсутствие побочных эффектов);
1. Модульность - Модульная конструкция повышает
производительность. Небольшие модули могут быть
быстро закодированы и имеют больше шансов на
повторное использование, что, несомненно, приводит к
более быстрой разработке программ. Кроме того,
модули можно тестировать отдельно, что помогает
сократить время, затрачиваемое на модульное
тестирование и отладку.
2. Строгая типизация - Из современных языков
программирования многие суть строго
типизированные. Строгая типизация позволяет
компилятору оптимизировать программы,
использовать конкретные типы и контейнеры
конкретных типов вместо шаблонных, вариантных
типов, более громоздких в реализации. Кроме того,
строгая типизация позволяет оградиться от части
ошибок, связанных с неожидаемым «видом» входных (и
выходных) данных, причем это происходит на стадии
компиляции, не отнимая на такие проверки время при
работе программы. Система типов также способствует
«документированию» программы: любая подпрограмма
является функцией в математическом смысле слова,
отображая одно множество (входное) на другое
Lab1.nb 7

(выходное), и типы определяют эти множества.


Читабельность программ повышается, если
используются псевдонимы типов или сложные типы,
собранные на основе простых, вместо базовых
элементарных целых, строк и т. п.
3. Краткость и простота - Программы на
функциональных языках обычно короче и проще, чем те
же самые программы на императивных языках. Сравним
программы на Си и на абстрактном функциональном
языке на примере сортировки списка быстрым методом
Хоара (пример, уже ста́вший классическим при
описании преимуществ функциональных языков).
4. Функции - это значения - В функциональных языках,
равно как и вообще в языках программирования и
математике, функции могут быть переданы другим
функциям в качестве аргумента или возвращены в
качестве результата. Функции, принимающие
функциональные аргументы, называются функциями
высших порядков или функционалами. Самый, пожалуй,
известный функционал — функция map. Она применяет
некоторую функцию ко всем элементам списка,
формируя из результатов заданной функции другой
список.
5. Чистые функции - это база функционального
программирования.
Чистые функции обладают несколькими полезными
свойствами, многие из которых можно использовать
для оптимизации кода: Если результат чистой функции
не используется, ее вызов может быть удален без вреда
для других выражений. Результат вызова чистой
8 Lab1.nb

функции может быть сохранен в таблице значений


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

Основные преимущества функционального


программирования :
◼ Проще тестировать и выполнять модульное
тестирование и отлаживать код
◼ Параллелизм - ( все функции для вычислений
используют только свои параметры, мы можем
вычислять независимые функции в произвольном
порядке или параллельно, на результат вычислений
это не повлияет. Причём параллелизм этот может
быть организован не только на уровне компилятора
языка, но и на уровне архитектуры.)
◼ Отказоустойчивость
Lab1.nb 9

◼ Поддерживает вложенные Функции


10 Lab1.nb

Часть 2
Wolfram Mathematica
Что же такое система вольфрам, и как с ней
взаимодействовать обычному пользователю,
программисту и прочим специалистам?
Касательно именно “Wolfram”, как языка, следует прежде
всего отметить, что это интерпретируемый язык
функционального программирования, составляющий
лингвистическую основу системы, позволяющий
расширять её возможности.
Система Wolfram представляет собой модульную
программную систему, в которой ядро, которое
фактически выполняет вычисления, отделено от
интерфейса, который обрабатывает взаимодействие с
пользователем .
И эта самая система, к тому же в общей степени и
написана на языке Wolfram, но так же в ней присутствуют
и СИ реализации.
Давайте изучим чуть подробнее преимущества и
состовляющие этой прекрасной системы.

1. Версатильность для современных вычислений


Благодаря энергичному развитию и стабильному видению на
протяжении трёх десятилетий, система Mathematica не имеет
себе равных в большом диапазоне измерений и уникальна в
своей поддержке современной среды и организации рабочего
Lab1.nb 11

процесса для технических расчётов.

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

3. Производительность
Алгоритмах всех предметных областей, составляющие базу
этой системы весьма мощные;

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

5. Вся функциональность промышленного класса


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

6. Подход к оформлению научных работ.


Вычислительные оформления и научные работы - выбор за
Wolfram Mathematica.
Система Mathematica представляет Ваши результаты в
12 Lab1.nb

прекрасном виде, мгновенно создавая передовые


интерактивные визуализации и готовые к публикации
документы.
Lab1.nb 13

Wolfram Languege Состоит из ( Wolfram Language kernel ) и (


Wolfram System front end )
Ядро отвечает за вычисления, фронт енд, как известно, отвечает за
работу с юзером. Визуальные и прочие состовляющие.
Несколько примеров :

Out[]=

In[ ]:= Animate[Plot[Sin[21 x] Sin[n - x], {x, - π, π}], {n, 1, 7, 0.1}]


анимир⋯ гр⋯ синус синус

1.0

0.5

Out[]=

-3 -2 -1 1 2 3

-0.5

-1.0
14 Lab1.nb

In[ ]:= GeoRegionValuePlot[


фоновая картограмма (хороплет)
EntityClass["AdministrativeDivision", "USCountiesTexas"]  "Population"]
класс сущностей

people

4 × 106

3 × 106
Out[]=
2 × 106

1 × 106

Вам также может понравиться