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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.