OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 16:34

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
СообщениеДобавлено: Среда, 26 Январь, 2011 00:02 

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Январь, 2011 06:23 
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Январь, 2011 09:45 

Зарегистрирован: Среда, 01 Август, 2007 00:13
Сообщения: 162
Info21 писал(а):
И как студент всё пытался по-началу делать куски на Матлабе.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Январь, 2011 13:01 
Аватара пользователя

Зарегистрирован: Суббота, 15 Март, 2008 20:00
Сообщения: 297
Откуда: Київ, Україна
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.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Январь, 2011 13:11 
Аватара пользователя

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Январь, 2011 13:22 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
bohdant писал(а):
Может будет интересно: в Активном Обероне на уровне языка есть поддержка работы с матрицами:
Когда эта работа началась, меня попросили дать реалистичный пример вычислительной программы, где было бы много матриц и проч. У меня как раз была такая, полноценная, в себе законченная, не маленькая и не слишком большая.

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Январь, 2011 16:45 

Зарегистрирован: Среда, 01 Август, 2007 00:13
Сообщения: 162
bohdant писал(а):
Может будет интересно: в Активном Обероне на уровне языка есть поддержка работы с матрицами:

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

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

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

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Январь, 2011 17:04 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
ScrollLock писал(а):
для интерпретируемого языка это в высшей степени правильный способ снизить потери на интерпретацию.
Ну, это называется делать через одно место.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 28 Январь, 2011 19:10 

Зарегистрирован: Вторник, 05 Январь, 2010 21:31
Сообщения: 1101
Откуда: Харків, Данилівка
Надо сгрузить все в АПЛ и не париться. Какой там матлаб.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 29 Январь, 2011 01:14 

Зарегистрирован: Среда, 01 Август, 2007 00:13
Сообщения: 162
Рыжий писал(а):
Надо сгрузить все в АПЛ и не париться. Какой там матлаб.

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 29 Январь, 2011 03:29 
Аватара пользователя

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 29 Январь, 2011 12:57 

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 29 Январь, 2011 14:18 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Можно я не буду отвечать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 30 Январь, 2011 11:40 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
ScrollLock писал(а):
Рыжий писал(а):
Надо сгрузить все в АПЛ и не париться. Какой там матлаб.

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 30 Январь, 2011 18:24 

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


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

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB