2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3  След.
 
 Re: Создание научного софта
Сообщение20.11.2011, 18:40 


17/10/08

1313
Вообще-то все начинается с выявления того, что нужно людям. А не с того что «Я» хочу от компьютера. Если есть понимание потребностей, то из них возникают соответствующие требования, в том числе по интерфейсам, надежности и производительности.

Разделение труда – это фундамент технологической революции. Известно это, как минимум, со времен Адама Смита. Это значит, что разработчик сам является потребителем некоторых компонент, и у него есть потребители. Это реальная реальность, это объективный закон развития технологий, а не тема для «критики».

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

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


27/04/09
28128
mserg в сообщении #505787 писал(а):
Это значит, что разработчик сам является потребителем некоторых компонент
Вам не хватает того, что разработчик использует стандартную библиотеку, которая тоже не с неба прилетела?.. Да, много компонентов используют, как правило, но использовать только сторонний код нельзя! Развитие прекратится. А забота о рентабельности тут вообще не к месту.

(Оффтоп)

Сколько уже раз повторять, что не компонент, а компонентов! (Вон Zealint тоже написал неправильно.) Компоненты у вектора и комплексного числа. :roll:

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


26/01/10
959
mserg --

Вы о чём-то не о том подумали, когда прочитали моё сообщение. Я не только не говорил о дураках, но и не выражал никаких идей по поводу разделения труда. Более того, "я хочу" вовсе не является противоположностью тому, что "люди хотят". В моих рассуждениях (пусть, я не все высказал) есть глубокий опыт решения нерешаемых (хотя и узких) современными системами задач. Непонимание глубины своей проблемы многими разработчиками - это, действительно,
Цитата:
...проблема нашего образования, которая известна уже десятки лет, - так у нас учат.


Можно сколько угодно кидаться на написание какого-то софта. Но пока взгляд на уже разработанные системы типа Maple, Maxima, Mathematica и пр. оставляет лишь чувство недоумения. Если вы работаете на большинство - то ради бога, но на них работает ещё целая орава разработчиков разного уровня. И вроде "в среднем" они неплохо справляются. (тысячи багов, в принципе, - мелочь).

Когда приходит желание сделать "+1" к этой ораве, нужно подумать, не увеличит ли это меру хаоса системы почём зря. То есть, есть ли что показать, кроме очередного двух- трёхколёсного хэлоуворлда.

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

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

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

(Оффтоп)

Цитата:
Сколько уже раз повторять, что не компонент, а компонентов! (Вон Zealint тоже написал неправильно.) Компоненты у вектора и комплексного числа.

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

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


27/04/09
28128

(2 Zealint.)

А, ну это кто как язык разделит. (Это значит, что у меня нет доказательств в пользу правильности своего письма. :D Сам язык-то да, меняется, и чёрный кофе говорят давным-давно, но компонент, компонента всё же термины, а кофе — нет. С письменной же стороны да, я некоторые запятые так давно опускаю, что уже забыл, что они там были, но остальные исправно. [Кстати, если вдруг найдёте желание поискать, какие, было бы интересно поразбирать; вдруг там всё в порядке?.. Есть небольшие исключения. Хотя правила пунктуации вообще намного хуже у нас разработаны, чем орфографии.])

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


03/11/11
58
идея неплохая. на чем(и на каком языке) собираешься писать программу?

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


17/10/08

1313
Мне не показалось, что автор темы претендует на «переворот в науке». Он хотел бы попробовать себя в разработке научного софта. Инициатива COIN – это просто образец, как это нужно делать. Есть и отечественный положительный пример: пакет GLPK. Есть вообще шедевры, правда не совсем научные: редактор Scintilla.

Вообще говоря, разработка софта – это проектная деятельность. А она начинается с вопроса: какова цель, что требуется достичь? Можно и далее пройтись по проектной методологии, чтобы прояснить, стоит ли овчинка выделки. Использовать ли личный опыт участников форума … не знаю, не советовал бы.

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


23/07/08
401
Новосибирск

(Оффтоп)

caxap в сообщении #505560 писал(а):
Нет. Хочется чего-то более высокоуровневого, функционального (= не алгоримтического, т. е. "что делать", а не "как"). То есть на входе тому "геометрическому решателю" (назовём его ГР) поступает описание чертежа. Можно на словах -- тогда получится своего рода "программа", но можно сделать и графическую оболочку. На выходе -- те (неизвестные) данные из чертежа, что я затребую. Примитивный пример:
Код:
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   # сохраним чертёж в файл

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

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

 Профиль  
                  
 
 Re: Создание научного софта
Сообщение22.11.2011, 00:38 


17/10/08

1313
Вот, вот, почти полный перечень того, как не нужно делать…

Читаем, как создавался пакет Octave прямо у них на сайте. Все началось с практических работ со студентами. Вместо того чтобы изучать основной предмет, студенты тратили большую часть времени на «борьбу» с математическими библиотеками. Так появилась идея сделать язык высокого уровня. И потребители тут же – студенты. Ну, и так далее. И никакого недоумения по поводу математических пакетов не возникает. Как уже раньше говорилось, нужно понять «что нужно людям».

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

Если сколь-нибудь внимательно прочесть «требования», то ясно, что графика второстепенна. И что есть определенные требования к языку, которые бы делали его практически полезным. Обратная сторона плохих требований – нежелание слушать, что в реальности нужно. Желание продавать не то «что нужно людям», а то «что лично знаю».

Если задача с геометрическим языком массовая, то самый лучший, самый экономически рациональный, самый качественный вариант – собрать пожелания/требования со всех и сделать одну программу на всех серьёзным коллективом. Это было нетрудно при СССР, а сейчас это практически невозможно. Самый худший вариант – каждый завод, КБ, институт пишет сам себе программу, библиотеки или еще чего там. Результат – ничто, или почти ничто – впустую потраченные силы. Это конечный уровень деградации и разложения.

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

Как сейчас мне представляется, самый дешевый вариант для этой задачи, по силам даже одному человеку, – использование логического языка. Т.к. мы живем не США, то вариант вообще один – это PROLOG. И компилятор ему не нужен, и под формальные выводы заточен, и графика есть:
http://www.eclipseclp.org/
Студентам и аспирантам будет просто счастье для развлечения.

В общем, мессадж в том, что основная проблема – люди себя неправильно «позиционируют», неправильно представляют свои роли в разделении труда. Как вы понимаете, я не личную точку зрения высказываю и не описываю личный опыт. Может быть, несколько коряво рассказал то, что знаю наверняка. А по способностям, наверное, участники форума не сильно отличаются друг от друга…

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


26/01/10
959
mserg, вы просто повторяете набор типичных представлений о том, как пишутся или не пишутся все современные программы. Весь такой софт пишется, действительно, студентами или специалистами похожего уровня процентов на 90. В редких случаях в софт вкладывается выдающаяся идея какого-то одного человека, которая всё равно потом сильно опошляется не дотягивающими до её понимания аспирантами.

Я же говорю о проблеме, с которой столкнулся сам. Мои представления о решении некоторых задач таковы, что я могу делать адекватный вывод: ни одна из имеющихся парадигм меня полностью не устраивает. Создавать нужно свою, причём она должна значительно отличаться от той, которой сейчас придерживаются абсолютно все (известные в сети) "хацкеры" и "кулхацкеры".

Да, то, что вы пишите, несомненно до жути полезно для еще одного типичного проекта. Я же говорю о нетипичных проектах. Почему я все время говорю "Я"? Потому, что есть задачи, в решении которых именно я сейчас занимаю лидирующие позиции в мире. Вот когда появятся другие такие люди (а они, надеюсь, появятся очень скоро), тогда можно будет говорить "мы". А начинаются мои претензии с устройства любого доступного обычным людям процессора, который для необходимых мне задач плохо пригоден. Вот покажите хоть один проект, где люди начали не с int main(), а с разработки своего железа. К сожалению, такая задача неподъёмна для одного человека. Но это не повод становиться типичным кодером и плодить на свет то, что мало чем будет отличаться от программ соседа по кабинету.

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

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

Цитата:
А по способностям, наверное, участники форума не сильно отличаются друг от друга…

Смею вас заверить, это далеко от истины. Не буду комментировать, это приведёт к бардаку.

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


27/04/09
28128
2 mserg: По-моему, caxap как раз довольно хорошо описал. Вы не видели плохих ТЗ, что ли? Даже код привёл. По мне, одного этого примера уже хватает, чтобы понять. Может, у меня голова неправильная какая-то? (Есть такое, но обычно в минусовую сторону.)

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

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

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


17/10/08

1313
Ну, так и напишите на этом языке «Окружность XXX вписана в треугольник ABC». А мы посмотрим.

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


27/04/09
28128
Что-нибудь типа (если правильно помню)
Код:
triangle ABC
P on BC
angle PAB = angle PAC
Q on AC
angle QBA = angle QBC
O = intersection of AC and BC
D on AB
angle ODA = 90 degrees
circle XXX centered at O with radius OD
Разумеется, вы должны понимать, что синтаксис тут почти совершенно не важен. Я доделал в стиле источника. Грамматика остаётся контекстно-свободной, если вы случайно хотите к ней придраться.

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


28/04/09
1933
arseniiv
arseniiv в сообщении #506757 писал(а):
Что-нибудь типа (если правильно помню)
Код:
triangle ABC
P on BC
angle PAB = angle PAC
Q on AC
angle QBA = angle QBC
O = intersection of AC and BC
D on AB
angle ODA = 90 degrees
circle XXX centered at O with radius OD
Ну зачем так сложно? Можно проще:
Код:
circle S = inscribed circle of triangle ABC
Уж такие элементарные операции язык-то должен знать (а уж во что транслятор будет разворачивать такое выражение, это его сугубо личное дело; и совсем не обязательно развертка должна быть основана на наивно-геометрическом подходе, может быть ему заблагорассудится расписать все это в векторной форме или даже с помощью уравнений аналитической геометрии $\text{---}$ в зависимости от того, какая форма ему покажется наиболее предпочтительной в конкретном случае).
Ах, мечты, мечты...

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


17/10/08

1313
Да, да, можно так, а можно сяк. А нужно – как реально требуется для «заказчика». Конкретно этот «заказчик» может сделать описание языка в форме Бэкуса-Науэра. Только ему это надо подсказать. Большая часть вопросов будет снята и Scope проекта тут же проявится.

Ну, все то же самое – непонимание своей роли в разделении труда. И нежелание учиться.

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


26/01/10
959

(Про зомбированных людей)

mserg в сообщении #506799 писал(а):
Ну, все то же самое – непонимание своей роли в разделении труда. И нежелание учиться.

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

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

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



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

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


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

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