LINUX.ORG.RU
ФорумTalks

система алгебры singular

 


0

3

я тут недавно создавал тред о том, кто такие программисты.

Я понял это, когда увидел, что получается, когда программу пишут одни математики: получается singular.

Это ж каким надо быть наркоманом, чтобы сделать такую программу?!

чтобы перевести из строки в число:

string a=«12»; string s=«number b=»+a+";" execute(s);

я уж молчу о том, как объявляются кольца. И о совершенно невменяемой системе объявлений.

Это просто песец. У меня взрывается мозг.

★★☆☆☆

Каждым делом должен заниматься профессионал. Казалось бы, очевидная истина, но...

Relan ★★★★★
()
Ответ на: комментарий от Relan

Проблема в том что обычно проче выучить программирование самому чем объяснять задачу погромисту.

DNA_Seq ★★☆☆☆
()

я уж молчу о том, как объявляются кольца. И о совершенно невменяемой системе объявлений.

Ты лучше действительно помолчи ))

Singular эффективнее всех как открытых, так и закрытых аналогов считает базисы Гребнера. За это этим людям надо ставить памятник. А то, что он не предназначен для работы со строками или не радует простым синтаксисом - это не стоящая внимания чепуха.

Пусть хоть на перфокартах ввод команд требует.

P.S.

1) Работать с ним очень удобно из emacs-а

2) Его можно использовать из SAGE

3) Данные для него можно максимально подготовить в Maxima, а потом только делать простой импорт готовых конструкций.

alpha ★★★★★
()
Ответ на: комментарий от alpha

Кстати, второй памятник этим людям надо поставить за документацию.

Каждый метод или реализованный в этой системе алгоритм содержит подробное описание, ссылки на статьи, в которых доказывается сходимость этого метода, и условия при которых этой сходимости нет.

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

Так что это не «быдлокод», это просто программирование нацеленное на качественнное решение задачи, а не на упрощение работы пользователя.

alpha ★★★★★
()

Для меня программист — это прикладной математик, а остальное это писатель программ пальцами рук.

ErasimHolmogorin
()

перевести из строки в число

Никогда не сталкивался с такой задачей при использовании CAS.

buddhist ★★★★★
()

execute(s)

это-то, кстати вполне себе eval, много где так и используется.
Но вообще математиков лучше не допускать до написания кода, достаточно посмотреть псевдокод в математико-информатико книжках.

Bad_ptr ★★★★★
()
Ответ на: комментарий от alpha

Ты лучше действительно помолчи ))

Singular эффективнее всех как открытых, так и закрытых аналогов считает базисы Гребнера.

это для меня не новость. Но это не отменяет абсолютно наркоманского и нелогичного синтаксиса.

dikiy ★★☆☆☆
() автор топика
Ответ на: комментарий от alpha

Так что это не «быдлокод», это просто программирование нацеленное на качественнное решение задачи, а не на упрощение работы пользователя.

ты немного не в курсах, как он писался :)

Мой препод, который был одним из разработчиков, рассказал как все происходило:

была куча математиков и один программист. Этому программисту говорили, значит нам нужно это и это. И чтобы быстро. Говорили ему чего хотят, этот бедняга уже во время постановки задачи делал facepalm. Но делать приходилось.

А так же до 2000 года должны была быть железная обратная совместимость со всем кодом, который был написан до этого. Можно себе представить, что это за ужас был.

так что singular был ориентирован исключительно на пользователся. остсюда и такие наркоманские объявления

ring r = (0,a),x,dp по смыслу _абсолютно_ не ring r = (0,a,b),x,dp.

это взрыв мозга. Найти логику в этой какофонии невозможно.

dikiy ★★☆☆☆
() автор топика
Ответ на: комментарий от dikiy

Найти логику в этой какофонии невозможно.

execute(«ring variablesRing =»+"(0,«+ inputParameters +»)«+», («+ inputVariables +»), dp");

Честно, не вижу ничего нелогичного.

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

alpha ★★★★★
()
Ответ на: комментарий от Bad_ptr

Всегда удивлялся, зачем делать громоздкую и неудобочитаемую запись для алгоритмов?

quantum-troll ★★★★★
()
Ответ на: комментарий от alpha

так вот в input-parameters и проблема.

Если я объявлю один памаретр, то в качестве поля будет выбрано поле из Z[a]/minpoly

а если два параметра (ну окромя характеристики), то поле Q[a,b].

dikiy ★★☆☆☆
() автор топика

чтобы перевести из строки в число:

string a=«12»; string s=«number b=»+a+";" execute(s);

правильнее надо было сделать s=atoi(a); ?

nickionn ★☆
()
Ответ на: комментарий от DNA_Seq

Ты что, паскаля никогда не видел?

Да ладно, разобраться можно, если хотеть.
У меня просто почему-то возникает ощущение, как-будто эти [псевдо]коды писались без помыслов о том, чтобы читающему было удобно в них разбираться, ну видно как-то сразу что не программист писал, имхо. ))

Bad_ptr ★★★★★
()
Ответ на: комментарий от DNA_Seq

Ты что, паскаля никогда не видел?

И это ещё терпимо, как пример в книжке. Но если представить, что такой математик будет писать какую-то сложную систему... ну уж нет. ))

Bad_ptr ★★★★★
()
Ответ на: комментарий от Bad_ptr

Ну вообще руководство по биоперлу скажем открывается рекомендациями по стилю в числе которых «не лепите все в одну строку», «используйте strict» и тд. Но в приведенном примере ничего непонятного не вижу. Нормальная математическая запись слегка разбавленная поцкалем.

как-то сразу что не программист писал,

в смысле не codemonkey?

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от Bad_ptr

как погромисты пишут «сложные системы» прекрасно проиллюстрировано вышеприведенным примером экселя

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от dikiy

Если я объявлю один параметр, то в качестве поля будет выбрано поле из Z[a]/minpoly

Уверен? Вот пример со страницы online-руководства http://www.singular.uni-kl.de/Manual/latest/sing_7.htm

ring r4=(0,a),(mu,nu),lp;

transcendental extension of $Q$ by $a$, variable names mu and nu, lexicographical ordering.

alpha ★★★★★
()
Ответ на: комментарий от DNA_Seq

открывается рекомендациями по стилю

Ну ещё бы. Кому потом охота разбирать что понаписали упоротые чучоные.

слегка разбавленная поцкалем.

нафига оно, спрашивается вообще разбавлено этим самым паскалем.

в смысле не codemonkey?

Ну да, это только кодемонки должны заботиться о том, чтобы код был понятным и эффективным, да и вообще полезным.

Bad_ptr ★★★★★
()
Ответ на: комментарий от DNA_Seq

примером экселя

не знаю, исходников не видел ).

Bad_ptr ★★★★★
()
Ответ на: комментарий от DNA_Seq

математическая запись слегка разбавленная поцкалем

во-во. смесь того и другого и ещё фиг знает чего слегка разбавленная ещё чем-то. ))

Bad_ptr ★★★★★
()
Ответ на: комментарий от alpha

Уверен? Вот пример со страницы online-руководства http://www.singular.uni-kl.de/Manual/latest/sing_7.htm

ring r4=(0,a),(mu,nu),lp;

transcendental extension of $Q$ by $a$, variable names mu and nu, lexicographical ordering.

из этого описания есессно нельзя понять, что это такое.

Имеется в виду Q[a]/(minpoly).

А укажешь (0,a,b),(mu,nu),lp - будет Q[a,b], только теперь уже дробно рациональные полиномы.

... да, я имел есессно Q[a], а не Z[a]. Z[a] singular не умеет пока.

dikiy ★★☆☆☆
() автор топика
Ответ на: комментарий от dikiy

а если почитать остальные примеры на той странице, то вообще facepalm. Практически идентичные конструкции несут совершенно различную смысловую нагрузку.

ring r6=(real,50),(a,b),lp;
    floating point numbers with precision extended to 50 digits, variable names a and b.

ring r7=(complex,50,i),(a,b),lp;
    complex floating point numbers with precision extended to 50 digits and imaginary unit i, variable names a and b.

ring r8=integer,(a,b),lp;
    the ring of integers (see Coefficient rings), variable names a and b.

ring r9=(integer, 60),(a,b),lp;
    the ring of integers modulo 60 (see Coefficient rings), variable names a and b.

ring r10=(integer, 2, 10),(a,b),lp;
    the ring of integers modulo 2^10 (see Coefficient rings), variable names a and b. 
dikiy ★★☆☆☆
() автор топика
Ответ на: комментарий от buddhist

еревести из строки в число

Никогда не сталкивался с такой задачей при использовании CAS.

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

Приходится превращать его в строку, из строки вычитывать часть, что до +, а потом обратно в число.

Есть и другие методы, но они еще более упоротые.

dikiy ★★☆☆☆
() автор топика
Ответ на: комментарий от dikiy

из этого описания есессно нельзя понять, что это такое.
Имеется в виду Q[a]/(minpoly).

Там по-моему написано, что если ты не задашь minpoly то будет такое же трансцендентное расширение. Так что без minpoly это именно Q[a].

Практически идентичные конструкции несут совершенно различную смысловую нагрузку

Да ладно, что там разного-то. Всё, что до первой запятой характеризует поле коэффициэнтов.

Для поля коэффициентов есть ровно восемь непересекающихся вариантов, описанных в доке http://www.singular.uni-kl.de/Manual/latest/sing_30.htm#SEC40

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

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

Как там кстати с распараллеливанием сейчас?

alpha ★★★★★
()
Ответ на: комментарий от alpha

Для поля коэффициентов есть ровно восемь непересекающихся вариантов,

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

Как там кстати с распараллеливанием сейчас?

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

dikiy ★★☆☆☆
() автор топика
Ответ на: комментарий от dikiy

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

а раньше знаешь как вообще сложно было, когда питона не было? ))

Это же просто низкоуровневое программирование, когда мало методов, мало структур, мало типов, всего жутко не хватает. Страшно конечно, но надо :)

alpha ★★★★★
()
Ответ на: комментарий от alpha

а раньше знаешь как вообще сложно было, когда питона не было? ))

мне доводилось писать и на ассемблере, и в машкодах. Но такого баттхёрта, как сегодня я не испытывал никогда.

dikiy ★★☆☆☆
() автор топика
Ответ на: комментарий от buddhist

А оно не умеет что ли само выделить действительную часть?

нет (по крайней мере я не знаю как). Он представляет комплексное число как линейный полином по переменной i.

dikiy ★★☆☆☆
() автор топика

А Вы видели, что получается когда подобную прОграмму пишет прогрОммист? Эксель это еще ничего... обычно программа от прогрОммиста имеет прекрасную архитектуру, интуитивно понятный интерфейс... и нихрена не работает.

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

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

AIv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.