Записи с меткой «язык»

Внешние вызовы

Внешние вызовы
Maple 15 имеет команду system(string), с помощью которой можно исполнить любую команду MS-DOS, записанную в виде строки string. Например, для форматирования гибкого диска из среды Maple 15 можно использовать стандартную команду MS-DOS:
> system(`format a:`);
На экране появится окно MS-DOS с начальным диалогом форматирования диска А. Это окно показано.
При работе в операционной системе Windows эта возможность практически бесполезна, поскольку форматирование диска с большими удобствами можно выполнить средствами Windows.
Внешние вызовы командой system куда более полезны для MS-DOS-реализаций Maple, которые кое-где используются и по сей день. Но поскольку данная книга посвящена самым современным Windows-реализациям системы Maple 15, более подробное рассмотрение операций внешних вызовов не имеет особого смысла.
Вызов внешних процедур, написанных на языке С
Maple 15 имеет средства для вызова внешних откомпилированных процедур, написанных на языке С. Такая необходимость для подавляющего числа пользователей Maple 15 вызывает большие сомнения в силу следующих причин:

  •  вся идеология системы Maple 15 основана на максимальном исключении программирования на других языках, помимо Maple-языка;
  •  язык С сложен для большинства пользователей Maple 7, которых трудно отнести к «путным» программистам;
  •  отладка комплекса Maple 15 + компилятор С (например, фирмы Microsoft) вряд ли под силу обычным пользователям, тем более что на практике такой комплекс реально не работает без кропотливой отладки.

Учитывая сказанное, мы отметим лишь, что для использования внешних процедур (например, остро нужных пользователю или более быстрых, чем аналогичные процедуры Maple) используется специальная команды define_external, которая генерирует две интерфейсные программы — на языке С и на языке Maple соответственно. Программа на языке С компилируется вместе с внешней процедурой, которая будет использоваться. далее…

Модули

Модули
Модули придают языку программирования Maple 15 некоторые свойства языков объектно-ориентированного программирования. Они служат для реализации абстрактного типа данных на основе инкапсуляции — объединения данных и процедур их обработки. Модули задаются ключевым словом module с пустыми скобками () и завершаются словами end module или просто end:
name := module()
export eseq; local Iseq; global gseq:
option optseq: description desc:
Тело модуля 
end module (или просто end)
Хотя структура модуля во многом напоминает структуру процедуры, включая объявление локальных и глобальных переменных, параметров и описаний, между ними есть существенная разница:

  •  модуль не имеет списка входных параметров; О в модуле могут размещаться данные;
  •  модули могут использоваться для создания пакетов процедур, доступ к которым обеспечивается командой with;
  •  модули имеют свойства в виде локальных переменных и методы в виде процедур интерфейса модулей;
  •  реализация абстрактных типов данных с помощью модулей скрыта от пользователя;
  •  модули могут содержать оператор export eseq, объявляющий экспортируемые переменные модуля;
  •  для доступа к экспортируемым переменным модуля может использоваться специальный оператор «:-» (двоеточие и минус);
  •  модули и процедуры могут вкладываться друг в друга без ограничения уровня вложенности;
  •  модули могут иметь специальные конструкторы объектов.

Следующий пример демонстрирует создание модуля pt, в котором заданы две операции (сложения plus и умножения times) и показан доступ к ним:
> pt:= module()
export plus, times;
plus := (a.b) -> a + b;
times := (a.b) -> a * b: end module:
pt := module () export plus, times; end module
 > pt:-p1us(3,5);
8
> pt:=times(3,7); 
21
Детальную информацию о модулях и о конструкторах объектов можно найти в справках по ним. Некоторые пакеты Maple 15 (в основном сравнительно новые) реализованы уже не в виде процедур, а в виде модулей (например, в виде модуля сделан пакет LinearAlgebra). В простейшем виде модули могут использоваться всеми пользователями системы Maple 15, но их серьезное применение (например, с целью создания полноценных пакетов Maple 15) требует серьезного знакомства с техникой объектно-ориентированного программирования. Такое знакомство выходит за рамки данной книги.

далее…

Генерация кодов на языке С

Генерация кодов на языке С
Язык С (Си) также широко используется для решения вычислительных задач. Достаточно отметить, что сама система Maple 15 создана на языке С.
Для генерации кодов на языке С вначале надо подключить соответствующую функцию:
> with(codegen.C); [С] 
Затем можно использовать функцию С:
С(ехрг.folename=str.optimi zed)
Эта функция используется по аналогии с функцией fortran, что и показывают приведенные ниже примеры:
> C(d1ff(x4>,x$2));
t0 = pow(x,1.0*b)*b*b/(x*x)-pow(x,1.0*b)*b/(x*x); 
> C(diff(xAb,x$2),optimized);
tl = pow(x,1.0*b);
t2 = b*b;
t4 = x*x;
t5 = l/t4; ‘
t9 = tl*t2*t5-tl*b*t5;
Обширные возможности преобразования выражений в различные формы предоставляет функция convert. А функция interface позволяет управлять выводом. К сожалению, объем книги не позволяет рассмотреть все многочисленные варианты применения этих функций. далее…

Запись и считывание данных

Запись и считывание данных
Обширные возможности Maple 15 делают привлекательным применение этой программы для автоматической обработки данных, поступающих от каких-либо экспериментальных установок. Для этого установки снабжаются интерфейсными платами (например, аналого-цифровыми преобразователями) и необходимым программным обеспечением. Возможна и передача данных, полученных с помощью Maple 15, в экспериментальные установки.
Обмен информацией между Maple 15 и внешней средой (к ней, кстати, относятся и другие программы) чаще всего осуществляется через файлы текстового формата, поскольку именно с такими файлами могут работать практически все программы. Для записи данных в файл служит оператор writedata:
writedata[APPEND](fileID. далее…

Операции ввода и вывода

Операции ввода и вывода
Считывание и запись программных модулей
В уроке 2 рассматривалась работа с файлами документов. Вводимые в текущий документ программные модули хранятся вместе с ним, так что при отказе от загрузки какого-либо документа все его программные блоки не могут использоваться в других документах. Кроме того, порой неудобно загружать объемный документ ради использования одного или нескольких модулей, например процедур. Поэтому в Maple 7 введены средства, позволяющие записывать нужные модули (в том числе результаты вычислений) на диск и считывать их в случае необходимости.
Для записи на диск используется оператор save:

  •  save filename — запись всех определений текущего файла под именем filename;
  • save name_l, name_2, …. name_k, filename — запись избранных модулей с именами name_l, name_2, …, name_k под именем filename.

Считывание имеющегося на диске файла filename осуществляется оператором read:
read <filename>
При считывании все имеющиеся в файле определения становятся доступными для рабочих документов Maple. При записи файлов отдельных определений используется специальный внутренний Maple-формат файлов. Для загрузки файлов типа *.m из стандартной библиотеки используется функция readlib. А для записи файлов в качестве библиотечных достаточно в имени filename оператора save указать расширение .т. Разумеется, можно считывать такие файлы и оператором read, указав в имени файла расширение .m:
> save my_proc,4myJib.nT: # запись файла пу_ргос и
 > # библиотечного файла my_lib.m:
> load ‘myjlib.m’: # считывание библиотечного файла 
> # myjib.m.
Создание своей библиотеки процедур
Если приведенные выше примеры составления процедур кажутся вам простыми, значит, вы неплохо знаете программирование и, скорее всего, уже имеете несколько полезных процедур, которые вы хотели бы сохранить — если не для потомков, то хотя бы для своей повседневной, работы. Сделать это в Maple 15 довольно просто. далее…

The Object Club

The Object Club
Компания Objects Online, Inc. (www.objectsonline.com) объявила о запуске нового проекта The Object Club (www.objectclub.com), участники которого получат неограниченный доступ к более чем 10,000 GDL объектам из любой точки мира. Проект Object Club предназначен для пользователей ArchiCAD, желающих пользоваться огромной коллекцией Graphisoft 3D параметрических объектов. В настоящее время электронный каталог Object Club включает 12 библиотек (10,000 + объекты), поставляемых вместе с ArchiCAD во всем мире. Библиотеки представлены в той языковой версии и организованы так, как они поставляются на рынок данного региона. Возможен интерактивный просмотр объектов в режиме 3D с использованием бесплатного GDL доступа Graphisoft к Internet. Вскоре в проект будут добавлены дополнительные библиотеки ArchiCAD, а также библиотеки объектов Object Club Exclusive и другие услуги для участников.
31 января 2000 года в Давос (Швейцария) компания Graphisoft, разработчик архитектурного пакета ArchiCAD и революционной концепции Виртуального Здания для трехмерного архитектурного проектирования, получила престижную награду Technology Pioneer Award на Международном Экономическом Форуме в Давосе, Швейцария.
С 27 января по 1 февраля проходила ежегодная дипломатическая встреча известных политических, общественных лидеров и бизнесменов, на которой обсуждаются общие мировые проблемы и намечаются задачи и цели на будущее.
В этом году была намечена программа Technology Pioneers, на которую были приглашены 50 самых известных компаний для изучения их успешной деятельности, с целью определения роли технологий в новой мировой экономике. Компания Graphisoft и другие участники программы Technology Pioneers — компании, занимающиеся информационными технологиями, биотехнологией и другими важными областями науки — были названы компаниями, деятельность которых оказывает наиболее сильное влияние на будущее. далее…