2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2, 3  След.
 
 Создание научного софта
Сообщение15.11.2011, 20:57 
Аватара пользователя


30/09/11
53
Я решил написать софт для работы численными методами.Знаю про Gnu Octave и т.д.,но всё же.
Что думаете по этому поводу?

 Профиль  
                  
 
 Re: Создание научного софта
Сообщение16.11.2011, 06:58 


26/01/10
959
Hyperboloid в сообщении #504242 писал(а):
Я решил написать софт для работы численными методами.Знаю про Gnu Octave и т.д.,но всё же.
Что думаете по этому поводу?

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

Второй вариант - вы делаете софт под какую-то архитектуру, под которую такого софта нету. Например, систему компьютерной алгебры под кластер. Такую, чтобы как Maple была, но считала на кластере, а команды можно было бы вводить на удалённом компьютере.

Вот и задайте себе вопрос: чем Ваша система лучше? Что нового она приносит?

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

Что теперь думаете?

 Профиль  
                  
 
 Re: Создание научного софта
Сообщение17.11.2011, 19:47 


17/10/08

1313
Соглашусь с последним сообщением, но при Open Source можно собирать довольно сложные системы даже одному. Темы, которые можно развить, есть такие (или уже были?).

Улучшить софт Easy NP (Open Source). Народ, пусть и в небольшом количестве, пользуется. Надумаете – пишите.

Есть еще тема по Scheduling – более-менее приличный софт был весь коммерческий. Поэтому вполне можно будет присоединиться к http://coin-or.org с этой задачей (если пройдете фейс-контрол). Литературу подскажу.

 Профиль  
                  
 
 Re: Создание научного софта
Сообщение17.11.2011, 21:38 
Заслуженный участник
Аватара пользователя


07/01/10
2015
Неудовлетворённое желание программировать посоветую направить на что-то полезное. Например, на специализированные библиотеки для уже имеющихся матпакетов.

(Кстати, про незанятые ниши)

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

Я, к сожалению, далёк от программирования и моих сил для этого не хватает. На диске валяется вечно сырой набросок, но он туповат и не работает толком.

 Профиль  
                  
 
 Re: Создание научного софта
Сообщение17.11.2011, 21:58 
Заслуженный участник


27/04/09
28128

(О геометрическом языке)

caxap, я, случайно, не вам показывал кусочки геометрические, которые писал для Mathematic’и? Надо будет записать куда-нибудь заметку, может, в новогоднем отдыхе попишу или что-нибудь такое… Если хотите, предложите поточнее требования в ЛС. Если на M. (могу пробовать на Haskell, но в нём пока не так уверенно разбираюсь) получится что-то сносное, то можно потом пытаться делать standalone. То, что есть программы типа GeoGebra (не так уж много у неё разработчиков вроде бы?), показывает, что язык, не обременённый интерактивной графикой, должен быть реализуем практически!

Кстати, я вот тоже временами подобными ТС идеями загораюсь. Хотел сделать платформу для тестирования настольных игр, чтобы правила игры задавались Lua-скриптами. А то иногда хочется попридумывать, а не знаешь, какие идеи игр интересны, а какие разнообразием и головоломностью не блещут. Пока висит на паузе, в самом начале.

 Профиль  
                  
 
 Re: Создание научного софта
Сообщение17.11.2011, 22:49 
Заслуженный участник


19/07/08
1266
caxap в сообщении #504925 писал(а):
Я до сих пор не видел языка для геометрических вычислений.
Что-то типа http://www.cgal.org/ или хочется именно язык?

 Профиль  
                  
 
 Re: Создание научного софта
Сообщение17.11.2011, 23:21 


17/10/08

1313
Если речь не идет об отображении, то язык известен – математический. Насколько я помню, такие задачи массово возникают в машиностроении.

Если речь не идет о площадях, то будем получать систему алгебраических уравнений. Этими задачами, если нужна гарантированная точность, эффективно занимается «программирование в ограничениях». Вы будете смеяться, но язык, который поддерживает Easy NP, позволяет формулировать, а программа - решать данные геометрические задачи.

 Профиль  
                  
 
 Re: Создание научного софта
Сообщение20.11.2011, 09:34 
Аватара пользователя


23/07/08
401
Новосибирск
caxap в сообщении #504925 писал(а):

(Кстати, про незанятые ниши)

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

Я, к сожалению, далёк от программирования и моих сил для этого не хватает. На диске валяется вечно сырой набросок, но он туповат и не работает толком.

(Что-то вроде MetaPost?)

http://www.inp.nsk.su/~baldin/mpost/index.html

 Профиль  
                  
 
 Re: Создание научного софта
Сообщение20.11.2011, 10:48 
Заслуженный участник
Аватара пользователя


07/01/10
2015

(Оффтоп)

nestoklon в сообщении #504950 писал(а):
Что-то типа http://www.cgal.org/ или хочется именно язык?

Evgueni в сообщении #505546 писал(а):
Что-то вроде MetaPost?

Нет. Хочется чего-то более высокоуровневого, функционального (= не алгоримтического, т. е. "что делать", а не "как"). То есть на входе тому "геометрическому решателю" (назовём его ГР) поступает описание чертежа. Можно на словах -- тогда получится своего рода "программа", но можно сделать и графическую оболочку. На выходе -- те (неизвестные) данные из чертежа, что я затребую. Примитивный пример:
Код:
triangle ABC                  # кидаю на доску треугольник, пока произвольный
AB = BC                       # теперь ГР считает его равнобедренным
angle ABC = 40 degrees        # теперь ГР знает, что угол при вершине равен 40 градусам

print angle BCA in degrees    # вывод: 70 degrees
print BC                      # вывод: I don't know
save board as problem42.eps   # сохраним чертёж в файл

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

 Профиль  
                  
 
 Re: Создание научного софта
Сообщение20.11.2011, 11:24 


25/08/05
645
Україна

(Оффтоп)

Кстати, про незанятые ниши. Я до сих пор не видел языка для геометрических вычислений.

GeoGebra -----------> http://www.geogebra.org/cms/

 Профиль  
                  
 
 Re: Создание научного софта
Сообщение20.11.2011, 14:06 
Заслуженный участник


19/07/08
1266
caxap в сообщении #505560 писал(а):
Нет. Хочется чего-то более высокоуровневого, функционального. То есть на входе тому "геометрическому решателю"
Есть несколько геометрических "обчуалок". Можно посмотреть тут http://en.wikipedia.org/wiki/Interactiv ... y_software
Так что ниша вполне себе разрабатывается. Хотя может и не так занята как другие.
Особенно рекомендую обратить внимание на такую возможность как умение делать доказательства http://en.wikipedia.org/wiki/Interactiv ... ware#Proof .

 Профиль  
                  
 
 Re: Создание научного софта
Сообщение20.11.2011, 14:25 


17/10/08

1313
На примере, который нам предоставил сахар можно увидеть, как нынче создается софт. Самое главное, с чего нужно начинать, это понять, что же реально нужно, полезно, и еще не реализовано. Дальше нужно не с нуля писать, а собрать систему из компонентов. Благодаря Open Source, а также коммерческим продуктам с частично открытой функциональностью, можно начинать конструирование.

1. Если есть язык, то нужен Компилятор. Насколько я помню (библиотека boost), есть готовые компиляторы, которые работают с формой Бекуса-Науэра.

2. Пресолвер. В примере с треугольником, который описал сахар, по-сути участвуют 3 точки, каждая из которых имеет 2 координаты – итого 6 неизвестных переменных. А уравнений всего 2. 4 переменных оказываются несвязанными. Пресолвер по описанию должен увидеть, что описание не связано с началом координат – т.е., для примера, точку A можно поместить в (0,0). Осталось 4 переменных и 2 уравнения. Есть еще поворот «доски», т.е. можно положить что x=0 для точки B. Осталось 3 переменные и 2 уравнения. Из описания следует, что возможно масштабирование «длин», значит одну длину можно зафиксировать, например, установив y=1 для точки B. Такие задачи должен решать «пресолвер».

3. Для нахождения переменных потребуется решатель систем алгебраических уравнений. Как уже говорилось, это может быть и модернизированный Easy NP, может быть система Choco, может быть какая-нибудь аналитическая система. Решатель должен подключаться как «драйвер», что даст пользователю (или самой системе) возможность выбирать наиболее подходящий.

4. Генератор алгебраических уравнений – он должен реализовывать генерацию алгебраических систем в том виде, в котором его понимает конкретный решатель. Это собственно система «драйверов» для решателей.

Это минимум. Далее идут интерфейсы обмена, интегрированная среда, форматирование результатов, вывод графики и т.п.

Т.е. научный софт ныне – это прежде всего умение найти потребности, найти компоненты для сборки (может даже заинтересовать их разработчиков), и только уже потом – программирование.

 Профиль  
                  
 
 Re: Создание научного софта
Сообщение20.11.2011, 15:45 
Заслуженный участник


27/04/09
28128
mserg, вместо перевода в уравнения от координат и обратно можно использовать систему вывода, в которую соответствующим образом внесены нужные аксиомы и правила вывода. Как-то вы слишком сложно всё расписываете.

 Профиль  
                  
 
 Re: Создание научного софта
Сообщение20.11.2011, 16:26 


17/10/08

1313
Никто не гарантирует, что получаемая алгебраическая система имеет аналитическое решение. Поэтому могут потребоваться численные методы.

Но об этом уже сказано - разные "решатели". Аналитический решатель справляется - отлично. Нет - численные методы с переводом в координаты.

 Профиль  
                  
 
 Re: Создание научного софта
Сообщение20.11.2011, 16:41 


26/01/10
959
Цитата:
Дальше нужно не с нуля писать, а собрать систему из компонентов. Благодаря Open Source, а также коммерческим продуктам с частично открытой функциональностью, можно начинать конструирование.

Так и нужно поступать для того, чтобы набрать опыт. Однако в некоторых областях науки данный подход больше ни для чего другого не годится, тем более для решения реальных задач. Проблема в том, что многие такие компоненты написаны неквалифицированными разработчиками или просто студентами первого курса. Даже в системе Maple известно боле 5000 багов, связанных с тем, что одна точка зрения одного разработчика наслаивается на точку зрения другого, потом часть людей уходит, а другая не понимает, что было написано до них. Все это превращается в огромный ком несовместимости и раздувание софта до таких размеров, что ничего серьёзного уже не решить.

Например, для решения некоторых труднорешаемых задач перечислительной комбинаторики нет ни одного пакета или готовой компоненты, которая решала бы необходимые для меня задачи. Кроме того, операционная система не всегда позволят выжать из процессора необходимый максимум (даже многозадачность мешает). Единственный выход, который я вижу, реализовывать систему с нуля, делать её загружаемой при старте компьютера, чтобы она работала без операционной системы. Например, в 64-битном длинном режиме и без многозадачности. Надо только комп собрать на 64 Гб памяти минимум, меньше просто не серьезно.

То есть я просто хочу сказать, что перед тем, как создавать что-то новое, нужно решить много задач (набраться опыта) и очень хорошо себе представлять чего вы хотите от компьютера. Если этого понимания нет, вы кроме игрушки типа Doom (в плане полезности) ничего не создадите. Хотя в создании нового есть какая-то романтика, но только первое время. Потом начинается понимание того, что оно тратится зря, особенно когда выясняется, что для задач сложнее школьных упражнений все равно приходится всё писать с нуля. Я, например, около 10 лет ждал прежде чем начать что-то реализовывать, хотя руки чесались, так как чувствовал (а потом и понимать начал), что ещё плохо представляют, чем мои идеи отличаются от уже сделанного и что именно я хочу. Сейчас, когда решено много задач, я хорошо вижу проблему всего многообразия софта, написанного до меня. Будь моя воля, я бы даже начал разработку другого процессора, но это неподъёмная задача.

Да, ещё все сильно зависит от области исследования. Может быть в классе полиномиальных задач не всё так плохо, как я представляю.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2, 3  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



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

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


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group