Экс-академический физик и теперь промышленный физик Великобритания здесь:
, Какие языки/среды Вы использовали для разработки научного программного обеспечения, особенно анализ данных? Какие библиотеки? (Например, что Вы используете для графического изображения?)
я главным образом использую MATLAB в эти дни (легкий получить доступ к функциям визуализации и математике). Я раньше использовал Фортран много и IDL. Я использовал C (но я - больше читатель, чем писатель C), макросы Excel (ужасный и сбивающий с толку). Я должен в настоящее время быть в состоянии считать Java и C++ (но я не могу действительно программировать в них), и я взломал Python также. Для моих собственных развлечений я теперь делаю некоторое программирование в C# (главным образом для получения мобильности / низкая стоимость / симпатичные интерфейсы). Я могу записать Фортран с в значительной степени любым языком, с которым я представлен;-)
Было там какое-либо обучение людям без каких-либо значительных знаний в программировании?
Большинство (все?) студенческий курс физики будет обычно иметь маленький ход программирования о C, Фортране или MATLAB, но это - реальные основы. Я действительно хотел бы иметь некоторое обучение в разработке программного обеспечения в какой-то момент (управление версиями / тестирующий / разработка средних систем масштаба)
, у Вас было что-нибудь как управление версиями, отслеживание ошибок?
я начал использовать Подрывную деятельность / TortoiseSVN относительно недавно. Группы, с которыми я работал в прошлом, использовали управление версиями. Я не знаю академической группы, которая использует формальное программное обеспечение отслеживания ошибок. Я все еще не использую вида систематического тестирования.
, Как был бы Вы идти о попытке создать достойную среду для программирования, не попадая слишком много путем индивидуальных ученых (особенно физики являются упрямыми людьми!)
я попытался бы представить некоторые идеи разработки программного обеспечения на студенческом уровне и затем укрепить их практикой на уровне выпускника, также обеспечить указатели на ресурсы как упомянутый выше курс Плотницких работ программного обеспечения.
я ожидал бы, что значительная часть академических физиков будет писать программное обеспечение (не обязательно все, хотя), и они находятся в страшной потребности, по крайней мере, введения в идеи в разработке программного обеспечения.
Нужно ли вам "обнюхать" его, или вы можете развернуть настраиваемую фабрику сокетов на клиенте или сервере?
Раньше я создавал настраиваемый RMI фабрика серверных сокетов, которая создала «тройник» в потоке, прочитанном службой RMI. Поскольку среда выполнения RMI обычно считывает один из потоков, мой код также получил копию JRMP для анализа. В моем случае я регистрировал удаленные вызовы, включая их параметры в сериализованной форме, чтобы я мог «воспроизвести» их позже для нагрузочного тестирования. Простого включения параметров ведения журнала RMI для этого было недостаточно.
Одна проблема заключается в том, что документация JRMP плохая, а в некоторых случаях неточная. Другой заключается в том, что значительная часть необходимого кода не является частью ядра Java API. Это было сложно. Я думал, что хорошо разбираюсь в RMI, прежде чем начал,
Вы можете установить некоторые свойства java , чтобы сделать rmi более подробным.
Возможно, вам понадобится этот параметр:
sun.rmi.client.logCalls (1.4 и позже)
Если значение этого свойства истинно, регистратор sun.rmi.client.call будет установлен на уровень Level.FINER. Удаленные вызовы регистрируются на уровне Level.FINER, а исключения из удаленных вызовов регистрируются на уровне Level.FINE.
Я не знаю инструмента, который может прослушивать и расшифровывать трафик RMI вне сети. Если никто другой не делает этого, менее оптимальным решением могло бы стать оснащение ваших заглушек / скелетов (вероятно, автоматически созданных, если вы используете Java 5 или новее) или частей инфраструктуры RMI с кодом для вывода сообщений журнала.
Для этого можно использовать АОП или какой-нибудь инструмент для работы с байтовым кодом. Я' Я успешно использовал JavaAssist для задач, аналогичных вашей. Это очень удобно для инструмента такого рода.
Ethereal может помочь, но это довольно низкий уровень.