OberonCore
https://forum.oberoncore.ru/

Исп-е Octave/Matlab для векторно-матричных вычислений
https://forum.oberoncore.ru/viewtopic.php?f=27&t=3197
Страница 1 из 1

Автор:  ScrollLock [ Среда, 26 Январь, 2011 00:02 ]
Заголовок сообщения:  Исп-е Octave/Matlab для векторно-матричных вычислений

Отделено от темы: viewtopic.php?f=27&t=3020
У MATLAB и Octave есть ещё одно удобство, не связанное с интерфейсом: они изначально "заточены" под работу с матрицами и массивами, в них много векторизации. Это позволяет очень часто избавляться от циклов и часто повышает наглядность (да и надёжность тоже) кода, и снижает "оверхед" на интерпретацию. При создании новых алгоритмов заметил единственное явное неудобство: циклы работают медленно, поэтому приходится изощряться в плане векторизации операций в алгоритме.

Автор:  Info21 [ Среда, 26 Январь, 2011 06:23 ]
Заголовок сообщения:  Re: Исп-е Octave/Matlab для вывода графиков

ScrollLock писал(а):
При создании новых алгоритмов заметил единственное явное неудобство: циклы работают медленно, поэтому приходится изощряться ...
Ха-ха-ха!!!
Пардон. Просто только вчера обсуждал программу (на Блэкбоксе) для обработки данных по массе нейтрино, где маса каких-то двойных-тройных-... циклов. И как студент всё пытался по-началу делать куски на Матлабе.

Автор:  ScrollLock [ Среда, 26 Январь, 2011 09:45 ]
Заголовок сообщения:  Re: Исп-е Octave/Matlab для вывода графиков

Info21 писал(а):
И как студент всё пытался по-началу делать куски на Матлабе.

Ну так ведь использование преимуществ векторизации требует навыка "думать векторно", и тогда очень многие одинарные и двойные суммы можно "свернуть". Кстати, какие принципиальные удобства по сравнению с MATLAB в BlackBox студент ощутил?

Автор:  bohdant [ Среда, 26 Январь, 2011 13:01 ]
Заголовок сообщения:  Re: Исп-е Octave/Matlab для векторно-матричных вычислений

ScrollLock писал(а):
У MATLAB и Octave есть ещё одно удобство, не связанное с интерфейсом: они изначально "заточены" под работу с матрицами и массивами, в них много векторизации.


Может будет интересно: в Активном Обероне на уровне языка есть поддержка работы с матрицами:
(a) Static Mathematical Arrays being declared as array [x] of type,where x must be a constant,
(b) Open Mathematical Arrays being declared as array [*] of type,
(c) Tensors being declared as array [?] of type,

Типы поддерживаемых операций:
Array->Array (element-wise operators, transposition)
Array X Array-> Scalar
Array X Scalar->Array|Scalar X Array->Array
Array X Array -> Array (element-wise operators)
Другие:
A:=B*C;matrix/vector product
A:=B**C;tensor product
A:=reshape(B,v);reshape operation

Следует отметить:
Скоро будет завершена 64-битная версия.
Идет разработка библиотеки по вычислению в GPU.

Автор:  Info21 [ Среда, 26 Январь, 2011 13:11 ]
Заголовок сообщения:  Re: Исп-е Octave/Matlab для вывода графиков

ScrollLock писал(а):
Info21 писал(а):
И как студент всё пытался по-началу делать куски на Матлабе.
Ну так ведь использование преимуществ векторизации требует навыка "думать векторно", и тогда очень многие одинарные и двойные суммы можно "свернуть". Кстати, какие принципиальные удобства по сравнению с MATLAB в BlackBox студент ощутил?
Ощутил в основном я. Это отсутствие дурацких барьеров где бы то ни было.

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

Вы хоть представляете себе, чем у меня голова и без того забита, чтобы еще какой-то совершенно избыточной векторизацией озабачиваться? На кой ляд оно мне нужно? Все пустые завлекалочки с векторизациями и проч. для меня уже давно пройдены. Я лучше тут пальцы поупражняю, чем мозги грузить векторизациями.

Оберон/Блэкбокс это *сказка* по своей минималистичной сбалансированности.

Автор:  Info21 [ Среда, 26 Январь, 2011 13:22 ]
Заголовок сообщения:  Re: Исп-е Octave/Matlab для векторно-матричных вычислений

bohdant писал(а):
Может будет интересно: в Активном Обероне на уровне языка есть поддержка работы с матрицами:
Когда эта работа началась, меня попросили дать реалистичный пример вычислительной программы, где было бы много матриц и проч. У меня как раз была такая, полноценная, в себе законченная, не маленькая и не слишком большая.

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

Это просто была идея из общих соображений (после Дня Оберона в ЦЕРНе в 2004) удовлетворить нишу научно-инженерных расчетов, и раз человек был на это посажен, то так оно и продолжалось.

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

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

Автор:  ScrollLock [ Среда, 26 Январь, 2011 16:45 ]
Заголовок сообщения:  Re: Исп-е Octave/Matlab для векторно-матричных вычислений

bohdant писал(а):
Может будет интересно: в Активном Обероне на уровне языка есть поддержка работы с матрицами:

Спасибо, надо будет посмотреть, как оно работает.

Info21 писал(а):
И вот в ней во всей всего-то нашлось где-то три места (ну, может, четыре), где какие-то циклы свернулись с помощью этих средст, причем без существенного эффекта для понимабельности -- они и так были вполне прозрачные. Помню, Феликс разочарован был.

У меня другой опыт: удавалось свернуть очень многое, как правило, без серьёзного ущерба понятности. Но, правда, моя задача изначально связана с массивами точек - (гипер)поверхностями термодинамических потенциалов. Удавалось свернуть довольно "навороченные" формулы вроде уравнений NRTL и UNIQUAC (там есть вложенные суммы). Из алгоритмов сделал без единого цикла даже поиск "соседей" треугольника на триангуляции.

Info21 писал(а):
Вы хоть представляете себе, чем у меня голова и без того забита, чтобы еще какой-то совершенно избыточной векторизацией озабачиваться?

Думаю, что она не избыточна в ряде случаев. Просто сначала этот приём программирования сильно непривычен. А вообще для интерпретируемого языка это в высшей степени правильный способ снизить потери на интерпретацию. Если освоиться, то векторизация почти столь же понятна, как и традиционные способы программирования.

Info21 писал(а):
Студент ощутил удобство, когда научился выводить нужный именно ему управляющий интерфейс в маленький наружный модуль.

В MATLAB есть средства инкапсуляции в виде объектно-ориентированного программирования и пространств имён. Да и синтаксис там уже несколько лет назад стал посимпатичнее.

Автор:  Info21 [ Среда, 26 Январь, 2011 17:04 ]
Заголовок сообщения:  Re: Исп-е Octave/Matlab для векторно-матричных вычислений

ScrollLock писал(а):
для интерпретируемого языка это в высшей степени правильный способ снизить потери на интерпретацию.
Ну, это называется делать через одно место.

ScrollLock писал(а):
В MATLAB есть средства инкапсуляции в виде объектно-ориентированного программирования и пространств имён. Да и синтаксис там уже несколько лет назад стал посимпатичнее.
Да ладно, инкапсуляция. Всё это заплатки на хреновое основание.

Автор:  Рыжий [ Пятница, 28 Январь, 2011 19:10 ]
Заголовок сообщения:  Re: Исп-е Octave/Matlab для векторно-матричных вычислений

Надо сгрузить все в АПЛ и не париться. Какой там матлаб.

Автор:  ScrollLock [ Суббота, 29 Январь, 2011 01:14 ]
Заголовок сообщения:  Re: Исп-е Octave/Matlab для векторно-матричных вычислений

Рыжий писал(а):
Надо сгрузить все в АПЛ и не париться. Какой там матлаб.

Посмотрел ради интереса - его синтаксис слишком уж лаконичен и суров)) Да и с библиотеками наверное в APL похуже.

Info21 писал(а):
Да ладно, инкапсуляция. Всё это заплатки на хреновое основание.

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

Автор:  Info21 [ Суббота, 29 Январь, 2011 03:29 ]
Заголовок сообщения:  Re: Исп-е Octave/Matlab для векторно-матричных вычислений

ScrollLock писал(а):
Info21 писал(а):
Да ладно, инкапсуляция. Всё это заплатки на хреновое основание.
Думаю, что он не хреновое, а просто другое, для более узкоспециализированных целей ...
Ну, мы же знаем закон: все большие системы, откуда бы они ни начинали расти, в итоге насыщаются разными средствами (в смысле, требуют) примерно одинаково.
И закон-то старый.
Лисп потребовал компилятор еще когда.

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

Автор:  ScrollLock [ Суббота, 29 Январь, 2011 12:57 ]
Заголовок сообщения:  Re: Исп-е Octave/Matlab для векторно-матричных вычислений

Info21 писал(а):
А раз насыщаются одинаково, то остается единственная выделенная точка -- железо, которое императивное ... и через несколько шагов приходим к Оберону.

Это не совсем очевидно: тому же железу неведомо структурное программирование, процедуры, массивы, отчасти типы данных. И какую надстройку над ним использовать, вполне может определяться задачей. Если уж идти от железа - то скорее придём к Си, чем к Оберону, это более низкоуровневый язык.

Автор:  Info21 [ Суббота, 29 Январь, 2011 14:18 ]
Заголовок сообщения:  Re: Исп-е Octave/Matlab для векторно-матричных вычислений

Можно я не буду отвечать.

Автор:  Валерий Лаптев [ Воскресенье, 30 Январь, 2011 11:40 ]
Заголовок сообщения:  Re: Исп-е Octave/Matlab для векторно-матричных вычислений

ScrollLock писал(а):
Рыжий писал(а):
Надо сгрузить все в АПЛ и не париться. Какой там матлаб.

Посмотрел ради интереса - его синтаксис слишком уж лаконичен и суров)) Да и с библиотеками наверное в APL похуже.

Там практически все операции - в составе языка. Заточено именно под векторы и матрицы

Автор:  QWERTYProgrammer [ Воскресенье, 30 Январь, 2011 18:24 ]
Заголовок сообщения:  Re: Исп-е Octave/Matlab для векторно-матричных вычислений

bohdant писал(а):
ScrollLock писал(а):
У MATLAB и Octave есть ещё одно удобство, не связанное с интерфейсом: они изначально "заточены" под работу с матрицами и массивами, в них много векторизации.


Может будет интересно: в Активном Обероне на уровне языка есть поддержка работы с матрицами:

Вроде бы то же самое может и Zonnon: http://www.zonnon.ethz.ch/archive/znnLanguageReportv04y090606draft.pdf

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/