Цифровой зеркальный фотоаппарат Canon EOS 30D
матрица: 22,5x15,0 мм, 8,2 Мп, CMOS
максимальное разрешение снимка: 3504x2336 пикселов
дисплей: 2,5 дюйма, 230 000 пикселов
интерфейсы: USB 2.0, композитный ТВ-выход PAL/NTSC
питание: литий-ионный аккумулятор BP-511A
габариты: 144x106x74 мм
вес: 700 г
цена: $1400
Обновленная версия предшественницы EOS 20D. Углы обзора LCD-дисплея достигли 170 градусов, срок службы затвора доведен до 100 тысяч срабатываний, изменять значение чувствительности ISO теперь можно в диапазоне от 100 до 1600 с шагом 1/3 EV, время включения камеры снизилось до 0,15 с, появилась возможность точечного экспозамера (3,5% площади видоискателя) и, наконец, максимальное число сохраняемых в папке изображений возросло со 100 до 9999. Камера совместима со всеми объективами Canon EF и EF-S и вспышками Canon Speedlite серии EX. Модель оснащена процессором обработки изображений DIGIC II. Для работы с EOS 30D могут использоваться карты памяти Compact Flash I/II.
Софтерра: Вычислительный конструктор
Автор: Сергей Гладких [email protected]
Человечество штурмует (или точнее будет сказать – осаждает?) неприступную крепость математики вот уже несколько тысячелетий. Раньше в этом бою мы могли полагаться только на свои собственные силы, на силы своего интеллекта. С появлением вычислительной техники ситуация изменилась: теперь наш арсенал постоянно пополняется новыми «осадными орудиями»; математические пакеты, такие как Maple или Matlab, занимают все более важное место в жизни «бойцов математического фронта». Но это «тяжелая артиллерия», с которой не всякий сумеет управиться.
Algebrus – совсем другое дело. Разработка Владислава Апостолюка сочетает простой и удобный интерфейс с впечатляющими возможностями для решения широкого круга математических задач. Едва ли не более важным, однако, является наличие огромного потенциала для расширения этих возможностей: Algebrus представляет собой среду разработки, ориентированную на алгоритмизацию математических вычислений; в ее основе лежит специализированный язык программирования XPascal, являющийся, как нетрудно догадаться из названия, расширенной и снабженной библиотекой математических методов версией Паскаля. Этот язык призван помочь тем, кто не нашел в стандартных библиотеках Algebrus нужных функций и взялся писать их сам. Но прежде чем разбираться, чему можно «научить» Algebrus, выясним, что он уже умеет.
Готовые детали
Использование командной строки на главной панели программы открывает доступ ко всем или почти ко всем функциям, реализованным в Algebrus’е. Для тех же, кого командная строка по каким-либо причинам не устраивает, есть панели Evaluator и Plotter, облекающие функции в простую и удобную интерфейсную оболочку (рис. 1). Впрочем, и в самой командной строке нет ничего мудреного. Скажем, чтобы воспользоваться ею как обыкновенным калькулятором, не требуется никаких предварительных знаний о программе: в качестве команды можно ввести строчку вида «2*2» и мгновенно получить ожидаемый ответ "4". Разумеется, Algebrus знает элементарные (и не только) математические функции, так что наличие синуса (sin), логарифма (ln) или даже гамма-функции (Gamma) в выражении его не смутит. Впрочем, подобной функциональностью сейчас никого не удивишь, а Algebrus’у по зубам и гораздо более сложные задачи. Например, команда LinearSolve позволяет легко решать системы линейных уравнений: в качестве аргументов ей подаются матрицы коэффициентов системы и вектор правых частей. Так, команда LinearSolve({{2,1},{1,2}},{4,5}) выдаст решение системы {2x+y=4, x+2y=5}.
Среди других возможностей программы можно назвать операции с многочленами (поиск корней и экстремумов, дифференцирование и т. д.), решение простых геометрических задачек (таких как нахождение площадей многоугольников или вычисление третьей стороны треугольника по двум другим сторонам и углу между ними), статистические расчеты (например, можно посчитать корреляцию между двумя наборами чисел), численное интегрирование, решение обыкновенных дифференциальных уравнений и многие другие.
Большинство встроенных функций можно найти на панели Evaluator – при этом программа сразу же предложит ввести необходимые аргументы и посчитает результат – так что запоминать синтаксис команд не обязательно (рис. 2).
Отдельного упоминания заслуживают графические возможности Algebrus. Здесь к услугам пользователя инструменты для рисования самых разнообразных двух– и трехмерных графиков и диаграмм: начиная с банальных графиков функций y=f(x) и заканчивая средствами визуализации векторных полей и построения сложных трехмерных поверхностей (рис. 3). Есть и довольно экзотические функции: скажем, процедура Compass_Chart выводит на экран набор векторов по заданным углам и длинам, а Surface_Plot – трехмерную поверхность, заданную набором точек на плоскости и соответствующих им высот.
Модели для сборки
Несмотря на хорошо проработанный интерфейс, Algebrus, по-видимому, проектировался прежде всего как среда разработки со встроенным интерпретатором языка XPascal. Дело в том, что некоторые из ее возможностей не выведены на интерфейсный уровень, и даже доступ к ним из командной строки не реализован в полной мере. Примером может служить численное интегрирование с помощью метода Integrate. В качестве одного из параметров он принимает интегрируемую функцию (переменную типа TMathFunc); однако, не обращаясь к XPascal Editor, вы не сможете объявить «свою» функцию – это означает, что, хотя вы и можете вызвать Integrate из командной строки, ничего, кроме уже объявленных системных функций, проинтегрировать с ее помощью не удастся. Тоже самое касается любого другого метода, принимающего в качестве одного из параметров некоторую функцию.
Более того, хотя командную строку и стоит, пожалуй, использовать для простейших вычислений, XPascal является гораздо более естественным средством для общения с Algebrus.
Что можно сказать об этом языке? Во-первых, это «надстройка» над обыкновенным Паскалем, включающая в себя большое количество функций, которые могут быть полезны при математических расчетах. Например, в языке есть такие типы данных, как матрица и кватернион, и реализованы различные методы для работы с ними (скажем, вычисление определителя). Есть и другие приятные «мелочи», которые отличают этот язык от классического Паскаля: так, стандартные арифметические операторы (+, –, *) можно применять к векторам и матрицам, а можно и переопределить для работы с какими-либо другими типами данных. В то же время изменения не затрагивают основ языка, поэтому у человека, уже знакомого с Паскалем, освоение среды Algebrus не займет много времени. С другой стороны, недостатком программы, весьма существенным для потенциальных разработчиков, является отсутствие доступа ко встроенным библиотекам – то есть узнать, как именно реализованы используемые Algebrus’ом функции, не представляется возможным. Кроме того, XPascal – это, по-видимому, расширенная версия Паскаля «обыкновенного», но не Object Pascal, то есть этот язык не является объектно-ориентированным в строгом смысле слова (хотя в нем реализована поддержка пользовательских типов данных и структур), что тоже едва ли можно причислить к достоинствам программы.
Подведем итог. Программа оставляет впечатление перспективной разработки. Хороша, несмотря на очевидную простоту, главная идея: взять стандартный язык программирования, оптимизировать его для работы с математическими задачами и снабдить интерфейсом, дающим, помимо всего прочего, возможность производить относительно простые вычисления даже не прибегая напрямую к самому языку программирования. Мысль не новая, но важно не это: качественная реализация хорошей идеи никогда не бывает лишней. В данном случае качество не вызывает сомнений: хотя в программе и встречаются баги, их очень мало и они несущественны.