Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Професиональное программирование


Информационный Канал Subscribe.Ru

Доброго утра.

С ума сойти какую реакцию вазвало мое вчерашнее откровение.
Всем откликнувшимся спасибо, а особое спасибо "Oleg S. Plesser" - он сам открыл
и начал дисскусссию, которая, как мне кажется зашла в небольшой тупик из-за отсутствия
профессиональных экономических знаний.
Смотреть и читать здесь: http://shelek.com/forum/viewtopic.php?t=1030.
Надеюсь среди вас есть экономисты, очень хотелось бы услышать приговор профессионала,
без регистрации - просто как Гость напишите.

Спасибо всем, кто меня поддержал в моих "заблуждениях" или наоборот "прозрениях".
Хоть я и стараюсь сам не нарушать основные законы копирайта, все ж я остаюсь
против аренды программного обеспечения и Видео и Музыкальных материалов. Протестовать
же мы можем только в тихую, отсюда видимо и такая обида возниукает, а так же
желание чего скомуниздить...

Ну и ладно об этом.

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

Вот статья.
Самый быстрый калькулятор.Транслятор математических выражений в вашей программе.
Автор: CrashMaker

О чем эта статья? 

В данной статье описывается механизм работы авторского класса C++ (далее – просто
класса) для трансляции математических выражений, составленных из математических
функций , представленных в строковом виде (например “sin(X)/X+4.78” ). Здесь
описывается динамическое создание макрофункции из машинных команд (далее дампа)
по строковому выражении функции (далее просто функции). 
Описываемый здесь класс способен: 
a) “создавать” дамп по заданной функции. (Например, по функции “sin(X)” будет
сгенерирован, скажем, такой дамп: D905BC005100D9FEC3) 
b) “исполнять” дамп по заданной переменной. (Если передать управление дампу D905BC005100D9FEC3,
то сопроцессор и процессор выполнит следущие операции: 
D905BC005100 – загрузит вещественное число, находящееся по адресу BC005100 (команда
FLD) 
D9FE – вычислит синус загруженного числа (команда FSIN) 
C3 – возвратит управление туда, откуда был вызван дамп (команда RET) 
Записав нужную переменную по адресу BC005100 и передав управление дампу, можно
заставить сопроцессор выполнять сгенерированную функцию - код с разными с разными
вещественными аргументами. При возврате в точку, откуда вызывался дамп, использую
команду FSTP, мы можем посмотреть, что же подсчитал сопроцессор. 
Сгенерированный код – дамп содержит МИНИМАЛЬНЫЙ набор машинных команд, необходимых
для вычислений. Дамп не содержит операций манипуляций с тестовой строкой – функцией.

Это все и обьясняет быстродействие “вычисления функций, представленных в строковом
виде”. 
) 
c) “вычислять” значение функции в режиме интерпритации для заданной переменной.


Кратко описывается сопроцессор и работа сопроцессора при вычислении некоторых
функций как моих, так и функции библиотеки MSVCRT (MS Visual C++ Run time library)

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

К статье прилагается описанный здесь класс; Демо проект MS VC++ 6.0, реализующий
класс; Программа рекурсивного поиска файлов (проект MS VC++ 6.0 ); Програма построения
функции любого вида, с использованием обьекта листа EXCEL, написанную на MS VB
6.0. 

Зачем эту нужно? 

Описание класса поможет вам разобраться что происходит “внутри” программы и сопроцессора
при использовании математических функций. 
Использование класса позволит снизить время вычисления функций, представленных
в строковом виде. А при многократном вычислении заданной функции по различным
аргументам позволит ЗНАЧИТЕЛЬНО снизить время вычисления. Сравниние скоростей
вычисления описанно в разделе “А Скорость?”. 
Области возможного применения класса: 
a) Моделирование процессов. При моделировании обычно требуется производить большие
объемы вычислений, выводить графическое отображение зависимостей и часто модифицировать
алгоритмы вычислений. Пример: написать программу построения функции любого вида,
используя описываемый здесь класс – очень просто. А скорость подсчета некоторых
функций, задаваемых пользователем программы в строковом выражении, будет даже
выше, чем при построении тех же функций по зашитому, статичному алгоритму, сгенерированному
по инструкциям высокоуровневого языка. 
b) Конфигурирование и интеллектуальный учет. 
Тонкое конфигурирование и настройка программ, критичных к скорости выполенния
(например ядра игры) и бизнес-приложений (где важно удобство настроек) пользователем.

c) Внутренние – “скриптовые” языки программирования, встраиваемые внутри программ.

Хороший пример – встроенный язык программирования, встроенный WINAPM – для заданий
пользователем функций построения “визуализированного звука”. Скорость вычисления
задаваемых пользователем функций можно значильно повысить . 

Технические возможности : класс позволяет создавать дампы по строковым выражениям
функций, которые содержат следующие операторы и функции: 
Целиком она лежит здесь: http://club.shelek.com/viewart.php?id=101
А код к ней качать отсюда: http://club.shelek.com/download.php?id=71

Желаю вам разобраться во всем написанном и удачно использовать.

С уважением, Гром.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное