2014 dxdy logo

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

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




На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 12  След.
 
 Re: Программирование для математиков: класс Polynomial
Сообщение07.09.2018, 14:43 
eugensk
и мысли такой не было! Но не путайте зрелого образованного математика с учащимся. Полагаю, эти зрелые в свое время тоже тренировались на кошечках.

 
 
 
 Re: Программирование для математиков: класс Polynomial
Сообщение07.09.2018, 14:47 
Аватара пользователя
VTsalyuk в сообщении #1337243 писал(а):
возможности, к примеру, Maple недостаточны (быстродействие и объемы используемой памяти) из-за универсальности пакета
Очень сомневаюсь, что знания языка на уровне "сваять что-то на коленке" позволит принципиально обойти maple по скорости.
(обойти mathematica, правда, лет 6 назад позволяло - она некоторые тривиальные штуки делала безобразно медленно; возможно, ситуация с тех пор улучшилась)
VTsalyuk в сообщении #1337243 писал(а):
И если я предлагаю его для использования, то это имитация в учебных целях.
Одно из главных требований к "имитации в учебных целях" - итоговый код должен быть написано очень правильно. Здесь этого нет.
Учиться по материалам, содержащим ошибки - так себе идея.
VTsalyuk в сообщении #1337243 писал(а):
Случилось ужасное! Я имею еще идею разработки класса матриц (в математическом смысле) на таком же примитивном уровне. С демонстрацией простенького примера наследования (строка и столбец как частные случаи матрицы). Это тоже считаете вредным?
То, что вы изучаете язык и делаете упражнения - замечательно. Запрашивать отзывы - тоже хорошая идея (хотя опять же, если для чтения кода не придется скачивать архив, а достаточно будет зайти на гитхаб - шансы на получение хороших отзывов увеличатся).
Вредно только предлагать это в качестве пособия тем, кто тоже только начинает изучать язык.

 
 
 
 Re: Программирование для математиков: класс Polynomial
Сообщение07.09.2018, 15:00 
Аватара пользователя
Ну да, студентам имеет смысл давать работать над большим долгоживущим проектом, только если там уже есть здравая архитектура и достаточно много качественного кода, который можно заимствовать. Или же поручать им создавать свои собственные проекты с нуля. В любом случае, если они и видят плохой код, то это их.

 i  GAA:
См. модераториал в сообщении p1337543.

 
 
 
 Re: Программирование для математиков: класс Polynomial
Сообщение07.09.2018, 15:01 
mihaild в сообщении #1337244 писал(а):
Потому что нельзя привязывать неконстантную ссылку к rvalue. По стандарту.


А почему? Я добиваюсь понимание на более низком уровне, чем применение правила или рецепта.

Что означает "привязывать"? Это слово есть в стандарте?

-- 07.09.2018, 15:01 --

Опять ухожу надолго... Надеюсь по возвращении найти ответы на сформулированные и неявные вопросы.

 
 
 
 Re: Программирование для математиков: класс Polynomial
Сообщение07.09.2018, 15:21 
VTsalyuk в сообщении #1337251 писал(а):
Что означает "привязывать"? Это слово есть в стандарте?
Да, глагол to bind встречается в стандарте (см. раздел References [dcl.init.ref]). Хотя в стандарте в отношении ссылок чаще используется выражение refers to, но в сообществе C++ reference binding является едва ли не более распространённым термином.

 
 
 
 Re: Программирование для математиков: класс Polynomial
Сообщение07.09.2018, 15:25 
Аватара пользователя
VTsalyuk в сообщении #1337233 писал(а):
И учить его этому надо:
- чтобы мог сам сваять что-то на коленке;

Нельзя учить "ваять на коленке"!! Надо учить делать профессионально.

P.S. Кроме того, для "ваяния на коленке" каждый будет брать самый знакомый/доступный язык, и очень далеко не факт, что это будет C++, скорее Python/R/Matlab/Mathematica или ещё что-то, где вопросы выделения памяти и константных указателей вообще не возникают...

 
 
 
 Re: Программирование для математиков: класс Polynomial
Сообщение07.09.2018, 17:29 
VTsalyuk в сообщении #1337251 писал(а):
А почему?
Потому же, почему нельзя передавать строку вместо числа: это разные типы. И вообще, зачем был бы нужен модификатор const, если бы он не мешал делать то единственное для чего он предназначен: использовать константное значение там, где требуется переменная?

 
 
 
 Re: Программирование для математиков: класс Polynomial
Сообщение07.09.2018, 17:45 
Потрачено много сил на анализ проекта, сделано много хороших предложений. Жаль что они не приводят к улучшению проекта, а так и остаются предложениями. Может быть всё-таки GitHub?

 
 
 
 Re: Программирование для математиков: класс Polynomial
Сообщение07.09.2018, 18:31 

(Оффтоп)

Ещё почему бы не написать подобный велосипед на ≈хаскеле. И меньше будет, и красивее, и (другие) интересные вещи можно узнать, и в оптимизацию поиграть при желании. И REPL есть!

А потом можно перейти на Python и прикрутить имеющиеся средства NumPy (не знаю, есть ли в последнем многочлены, но можно сделать вид, что нет).

 
 
 
 Re: Программирование для математиков: класс Polynomial
Сообщение07.09.2018, 18:39 
slavav в сообщении #1337287 писал(а):
Потрачено много сил на анализ проекта, сделано много хороших предложений. Жаль что они не приводят к улучшению проекта, а так и остаются предложениями. Может быть всё-таки GitHub?
- Доктор, скажите, я жить буду?
- А смысл?
(с)

3,688 repository results

 
 
 
 Re: Программирование для математиков: класс Polynomial
Сообщение07.09.2018, 18:45 
VTsalyuk в сообщении #1337233 писал(а):
Dmitriy40
За потокобезопасность спасибо. Оказалось, это штука довольно сложная и предъявляющая жесткие ограничения. Поэтому в учебном курсе этого (пока ?) не будет.
Меня шокировало не её отсутствие в курсе, это может быть и нормально, а Ваше незнание даже такого термина, не говоря уж про его суть. Я понимаю что математикам оно не нужно, но вот в программировании это достаточно важный и известный термин. И даже не слышать о нём и при этом пытаться учить других программированию ... :facepalm: Учите лучше математике. А курс свой (если он кому-то нужен в таком виде) выдавайте в виде готовой библиотеки и документированным интерфейсом, но не как учебное пособие по программированию. Вот такое моё мнение.
mihaild в сообщении #1337249 писал(а):
Учиться по материалам, содержащим ошибки - так себе идея.

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

 
 
 
 Re: Программирование для математиков: класс Polynomial
Сообщение07.09.2018, 18:48 
Да, не нужно пользу для себя путать с пользой для других. Разобраться в языке как следует — прекрасная цель. Но не все велосипеды побочные эффекты этого нужно пытаться куда-то пристроить. :-)

 
 
 
 Re: Программирование для математиков: класс Polynomial
Сообщение17.09.2018, 17:17 
Ну вот, в Диске версия 2018.09.18 архива Polynomial.zip.

Указанные мэтрами и найденные самостоятельно ошибки исправлены. Но я не стал вычищать следы этих ошибок. Напротив, я их по возможности тщательно обсудил в новом документе Errors.pdf. И оставил прежние исходные тексты. Потому что считаю изучение ошибок полезным занятием для учащегося. В архиве появился подкаталог с обновленным кодом и минимальным набором обновленной документации. Читать, как и прежде, начиная с файла Polynomial.pdf.

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

По поводу многочисленных предложений внедрить в проект шаблоны (интересная идея!), стандартные контейнеры и все такое прочее. Я уже вырос из штанишек, когда учить надо всему тому, что я знаю, и так, как я это знаю. Я не стал этого делать:
- потому что не пишу учебник по языку C++;
- потому что для принятого мной уровня изложения, уверен, найдется свой заинтересованный читатель;
- вряд ли для меня целесообразно входить в такие тонкости языка. Я не собираюсь в деталях изучать все в C++. Мое дальнейшее движение будет в другом направлении.

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

-- 17.09.2018, 17:27 --

И по поводу
mihaild в сообщении #1337249 писал(а):
Очень сомневаюсь, что знания языка на уровне "сваять что-то на коленке" позволит принципиально обойти Maple по скорости.

Написано, очевидно, сильно сгоряча... Но мне стало интересно, и я поставил эксперимент по сравнению быстродействия. Опыт и результат описаны в Errors.pdf.

Наконец... Мне повезло, что я попал под огонь критики мэтров. Но я выбрал этот форум потому, что полагал, что сюда заходят начинающие программисты (математики). Вот почитав всю эту полемику и открыв архив, они-то и решат, действительно этот опус им будет полезен или нет.
Дорогие будущие читатели, приветствую вас!

 
 
 
 Re: Программирование для математиков: класс Polynomial
Сообщение17.09.2018, 18:03 
Аватара пользователя
VTsalyuk в сообщении #1339722 писал(а):
Xaositect вроде бы обещал показать (и научить, надеюсь), как это делается. Особенно с нетерпением жду рассказа о шаблонном классе. Чужой рассказ об этом почитал бы с удовольствием.
Прошу прощения, работа. Может быть, на следующих выходных.

 
 
 
 Re: Программирование для математиков: класс Polynomial
Сообщение15.11.2018, 18:50 
Xaositect
Ждем-с...


А тем временем... Появилась новая версия 2018.11.15 архива Polynomial.zip.

Исправлена одна серьезная ошибка проектирования (и это описано, разумеется) и множество мелких недочетов.

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

Алгоритм operator*= тоже удалось существенно ускорить.

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

Сформулированы выводы и рекомендации по повышению быстродействия. Это описано в новом документе Times.pdf.

Соответственно внесены изменения в код класса. Старая версия кода сохранена в учебных целях для анализа. Совершенствование операции деления предоставлено читателю.

 
 
 [ Сообщений: 168 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 12  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group