LINUX.ORG.RU

Посоветуйте инструмантарий для группового проекта определённой архитектуры

 , , ,


1

2

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

А теперь о грустном. Есть несколько человек, включая меня, способных вместе написать основную часть на. Из общей любви и взаимного понимания было выбрано С++\Qt. Но к сожалению университет не даёт адекватного знания С++, если точнее, студенты просто боятся этого слова. В основном все кодят на паскале (Delphi). Но есть и процентов 10 на поток человек, которые , с точностью да наоборот - брезгуют Паскалем( к коим я и отношусь) и их ни в коем случае нельзя терять.
Суть
Нужно написать программу на C++( желательно Qt ) с возможностью подключения дополнительного функционала в виде модулей (динамических библиотек ).

  • Самое главное - Программа должна быть кроссплатформенна
  • Должна иметься возможность написания модулей на разных языках (необходимый и достаточный минимум - С++, Pascal).
  • Нельзя использовать технологию COM, так как писать модули будут совсем зеленые ребята.
  • Программа должны быть в стиле «батарейки в комплекте» (то есть - исполняемый файл, каталог с модулями ).
  • Один из самых неприятных моментов - из динамических библиотек должны иметься возможность создания окна для ввода дополнительных данных.

У кого есть какие соображения? буду очень благодарен различным вариантам.



Последнее исправление: vsrmis (всего исправлений: 6)

Совмещать более одного не скриптового языка в проекте — это значит создавать себе лишние 30-70% работы, бестолковой и грязной.

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

dmfd
()

Use CERN ROOT, Luke.

ROOT homepage.
Система классов продумана, есть поддержка Qt4 для GUI. Все объекты наследуют TObject ввиду того, что тут кроме библиотек ещё и интерпретатор С++ есть (CINT).

Разработка велась очень и очень долго (лет 17), весь численный матан уже сделан, графики (1D,2D,3D) и аппроксимация есть — на все грабли уже наступили.
Лучше писать расширения к ROOT в виде тех же библиотек. Также есть привязки к Python — PyROOT, нелюбители С++ тоже будут довольны.

blinkenlichten
()
Последнее исправление: blinkenlichten (всего исправлений: 1)
Ответ на: комментарий от AIv

Сам каркас + интерфейс чаще всего и переделывались?

Ну да. Существенные изменения бывали только в GUI и организации вычислений (от «подождите я считаю» до грида и decission-cube).

На чем написан угадать не берусь... на баше? Наверное каждый новый лидер переписывал его на своем любимом ЯП;-)

каркас был на tcl`е - и единственная миграция это с 7-ки на 8-ку (может раньше и с 6-ки, но не застал). Кстати предложения переделать всё «по-взрослому на Qt/Gtk/Wx» заказчик отвергал просто с порога :).

Ну это так, историческое отступление..

Сейчас подобную систему (в смысле gui и диспетчер) я бы возможно делал на Python`е - он подходит как клей, его много и он вряд-ли сдохнет ближайшие 10 лет.

На чём делать числодробилки - в принципе вдоль, если согласованы и неизменны форматы и API. Но чем больше внутри ОО, тем легче ошибки проскакивают в релизы.

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

Всё таки, программа должны быть «Батарейки в комплекте»

Я вам русским языком объясняю: сервер приложений, который запускает клиентские вычислительные модули и общается с ними по какому-нибудь протоколу. Вам тут уже вагон вариантов предложили от xmlrpc и soap до кондора и mpi.

no-such-file ★★★★★
()

Посоветуйте инструмантарий

LISP же.

C++, Pascal, Qt

Но ведь это же быдлотехнологии и ненужны.

anonymous
()
Ответ на: комментарий от MKuznetsov

каркас был на tcl`е

У меня мелькала такая догадка, но я решил что это слишком брутально;-)

А о какой системе речь?

Но чем больше внутри ОО, тем легче ошибки проскакивают в релизы.

Ну, это все таки спорное утверждение. Вопрос же не в ОО как в таковом, а в том что его не умеют готовить. ИМНО.

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

Прототипчик, не смог завести. Creator его открывает но не собирает. И я не могу найти как вообще его собирать: как компилировать паскалевский модуль, как компилировать сишный. У меня сложилось впечатление, что паскаль очень привязан к C++, и для добавления 2 и более модулей будет необходима изменение Сишной программы и перекомпилирование её. Но это так. Я посмотрел в торону Clang, охренел от такой фантастики. Можете ли объяснить подробней как им пользоваться? Это же, фактически, интерпретатор С++, или я что-то не так понимаю? А работает ли он на нормальной скорости? А как программу, которая написана на С++, можно с помощью clang скомпилить в исполняемый файл?

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

Хм... Опасался такого.

На всякий случай укажу: для открытия проекта надо открыть файл *.creator, драг&дропом или из диалога открытия проекта. Тогда по Ctrl+B будет работать сборка.

В настройках сборки (пятый режим, Ctrl+5), как я надеюсь, build directory остаётся ../bin. Clang — это просто GCC-совместимый компилятор c++, можно заменить команду clang++ на gcc или g++.

Тогда для сборки будет достаточно gcc и fpc.

quiet_readonly ★★★★
()
Последнее исправление: quiet_readonly (всего исправлений: 1)
23 ноября 2013 г.
Ответ на: комментарий от AIv

низкоуровневой работы с памятью

Что, конкретно имеется в виду под низкоуровневой работой с памятью

anonymous
()
Ответ на: комментарий от AIv

Сборка мусора — ручное управление памятью?

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

Так какой

низкоуровневой работы с памятью

нет в паскале?

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

s/ручное управление памятью/низкоуровневая работа с памятью/

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

Правда адресная арифметика есть не везде, но ее можно смоделировать.

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

Чего, на паскале можно выделить память одним куском, а потом самостоятельно его делить между объектами разных типов? И это будет хорошо и естественно?

Ссылок в паскале тоже вроде нету;-)

И в любом случае, компилятор паскалевый куда хуже гцц в плане оптимизации, для числодробилок (что собственно и хочет сделать ТС) это крайне важно. Не знаю никого, кто серьезно писал бы такие вещи на паскале - олдскул пишет на фортране, кто помоложе на C/C++, отдельно идет гиковский код на хацкеле/окамле/лиспе... Но паскаля там никогда не было и не будет, не считая дельфи которую тащщит в проекты всякая школота;-)

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

Что-то из тебя смайлики полезли. К чему бы это?

anonymous
()
Ответ на: комментарий от AIv

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

anonymous
()
Ответ на: комментарий от AIv

Чего, на паскале можно выделить память одним куском, а потом самостоятельно его делить между объектами разных типов?

Я не совсем понимаю о чем ты. Но такой код вполне допустим.

И это будет хорошо и естественно?

Нет. Естественно будет написать свой менеджер памяти, раз уж готовый не удовлетворяет. Во Free Pascal такое возможно.

anonymous
()
Ответ на: комментарий от AIv

По поводу указателей и адресной арифметики во Free Pascal см. документацию. Особенно начиная с фразы

Remark: Free Pascal treats pointers much the same way as C does.

anonymous
()
Ответ на: комментарий от AIv

Ссылок в паскале тоже вроде нету

А это тут причем? В C их тоже нет и что, в C тоже нет низкоуровнего управления памятью?

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

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

Ок. Пусть так, я не специалист по паскалю и это лишь ИМНО.

AIv ★★★★★
()

амиго vsrmis тема еще актуальна или нет?

похоже что мой проект пересекается с твоими хотелками.

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