LINUX.ORG.RU

Любителю нужны советы профессионалов

 , ,


0

3

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

Введение

Начну с того, что я не профессиональный разработчик, я геофизик, занимаюсь обработкой данных сейсморазведки уже почти 10 лет. Моя работа тесно связана с большими программными комплексами, в которых и происходит обработка. Первый такой комплекс, с которым я познакомился, содержал уйму багов и работа представляла из себя хождение по минному полю и постоянный поиск путей обхода. Это настолько меня измотало, что я задался вопросом «неужели написать программу без такой кучи багов это _так_ сложно?». Всё это сподвигло меня на изучение программирования. Учился дома по книжкам, с перерывами, от «hello world!» до минимально полезных программ для работы и друзей. Я читал книжки по разным языкам программирования, раздел development ЛОРа и некоторые статейки для нубов. Со временем почувствовал, что могу написать что-то более-менее полезное. На ЛОРе время от времени всплывают темы «чего вам не хватает из софта в gnu/linux?», мне вот всегда не хватало просмотрщика данных сейсморазведки в формате SEGY. Есть, конечно, упомянутые комплексы ПО для обработки, но они сложны. Есть также просмотрщик под windows, который работает под wine, но бывает сбоит. Есть gsegyview, нативный, но давно заброшенный. В общем начал я по вечерам и выходным пилить потихоньку свой просмотрщик, на праздниках допилил минимально рабочий макет и выложил на github. Там, конечно, ещё очень многого нет, но уже тем что есть можно пользоваться, идей очень много и чтобы не похоронить проект на полдороги к очередной фиче, я решил выложить уже сейчас и потихоньку допиливать. Создаю я эту тему не только для определённых вопросов, но также для того чтобы получить советы от опытных разработчиков. Заранее благодарен всем за конструктив.

Вопросы по существу

По gtk: можно ли подвесить на изменение какого-нибудь поля в gsettings функцию или только связывание с properties объектов?

По meson: на сайте meson я нашёл как установить schema в систему и скомпилировать её, но как ни искал не смог понять почему при ninja install не копируется куда-нибудь в */bin исполняемый файл. Также я не совсем понял как всё это работает, можно ли сделать так чтобы схема лежала рядом с бинарником и только при ninja install копировалась, будет ли это работать?

Deleted

Ответ на: комментарий от morse

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

https://github.com/GNOME?page=1

meliafaro ★★★★★
()

человек на первой странице прав про java
переписать все(или хотяб UI) что у тебя есть сейчас на java может быть быстрее чем решение этой проблемы на 1 строку кода что у тебя возникла на Си

решать твою узкую проблему с Си и ГТК можешь только ты

на джаве любая «проблема» гуглится за пару секунд

если выделить все методы «расчетов» на Си в отдельный .c файл и собрать его как библиотеку, подключить его к джаве будет шаблонная писанина объясления методов библиотеки Си, просто копипасть любой туториал «как подключать бинарные библиотеки к java»
хотя порт всего кода на джава может тоже занять не больше часа

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

С Питона почти всё переписали ещё во времена первых версий ГТК+3.

На Си или на Вала?

Deleted
()

Используй Rust,у него есть Cargo который сам соберет твой проект без писонины в meson.build, ну и GTK-RS пилится активно

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

а через месяц как собирать когда поломают все в очередной раз?

править ручками все 100500 билд скриптов как в cmake? ага удачи братишка

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

даже не знаю с чем это связано

У тебя очень тяжелая draw_traces(), которая работает в одном потоке с интерфейсом. Можно конечно сделать что-то типа g_idle_add() для отзывчивости интерфейса, но draw_traces() так и будет тормозить.

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

Гуй для чего-то сложнее хэлловорлда рисуется мышкой в Glade.

Я бы сказал наоборот - Гуй для чего-то не сложнее хэлловорлда рисуется мышкой в Glade.

Сложный гуй должен быть модульным, в том числе и ui-файлы свои под каждый custom-widget. Иначе получается что все «прибито гвоздями» и какие-то изменения, при переосмыслении интерфейса, выливаются в переписывание большой части кода.

nvl ★★★
()

совершенно непонятно причем тут GTK.

ни GSettings, ни Ninja, ни Meson не являются необходимыми для разработки GTK приложений.

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

не, ровно настолько же непонятно причем тут vim и C.

waker ★★★★★
()

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

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

Почему зря? Язык, конечно, больше системный, но это ровным счётом ничего не означает.
Будучи утончённым ценителем извращений, до недавнего времени занимался разработкой системы на Си + gtk + fb. Пока подзабросил, впрочем.

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

До кучи добавил, пишу код в vim, в репе лежит конфиг, думал вдруг кто посоветует плагин какой.

Deleted
()

Ну, вопрос собсно к тебе токо один, нахер ты взял этот убогий недоязычок-ассемблер для написания прикладухи то?

Ща вон из новых достаточно языков, в которых уже gc встроен и куча всего полезного, и не надо париться.

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

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

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

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

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

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

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

В Java с обеими очень грустно.

А в ракетке как по скорости интерфейса? Даёт ли ffi rkt->gtk ощутимую просадку относительно какого нибудь pyGTK или чистого gtk (на С или крестах)? Не делал такие замеры? По моему, просадки если и есть, толком не ощущаются. Даже на примере того же DrRacket, который весьма немалое приложение.

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

Да, это то, что было нужно, спасибо.

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

Я посмотрел вокруг математики либо пишут прототипы в матлабе, на питоне,

угу...

а потом переписывают или сразу пишут на си или си с классами.

У тебя какие-то неправильные математики. Расскажи им про Cython, numba, pyopencl, вот это вот все.

t184256 ★★★★★
()

Бери С++/Qt, он прост как Джава. Гуй пишется очень легко, вдобавок получаешь кучу высокоуровневых инструметов и математических библиотек. Есть простые и удобные либы для тех же графиков, если надо.

Язык С не для прикладного ПО, он сейчас чисто системный/микроконтроллерный. Десктопный С это сплошное легаси.

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

Мне за других страшно.

ТС попросил о помощи. Кода люди просят, им нужно помогать, а не «жалеть».

Знаю я такую «жалость».

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

А в ракетке как по скорости интерфейса? Даёт ли ffi rkt->gtk ощутимую просадку относительно какого нибудь pyGTK или чистого gtk (на С или крестах)?

Если обратные вызовы не использовать, то всюду одинаково (так как реально только код самой GTK выполняется). Иначе по сравнению с pygtk быстрее, по сравнению с C/C++ медленнее. Заметно только если перехватывать очень много событий, например, по движению мышки менять данные в списке на экране.

Отзывчивость в ракетке выше, так как сделать обработчик события асинхронным тривиально (просто завернуть в thread). Зелёные потоки позволяют считать операции GTK атомарными.

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

Rust мне интересен, я слежу за новостями об этом языке. Но я как любитель, не могу дать заключение годится rust на замену C/C++ в научных числодробилках. Как только напишу что-то счётное на С, попробую переписать на rust и сравнить. Но по большей части я жду признание этого языка другими профессионалами, особенно в области научных вычислений. Пока не видел движения в эту сторону.

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

Расскажи им про Cython, numba, pyopencl, вот это вот все.

Всё равно скорость раза в два меньше, чем C++. И оптимизировать сложнее. Поэтому если важен каждый процент, то вариантов нет.

monk ★★★★★
()

всегда не хватало просмотрщика данных сейсморазведки в формате SEGY

Пардон, триггер на знакомое слово сработал )

В начале 90х писал (ОГТ в сегвай, с цветокодированием, скважинами, обработкой сигналов и т.п.):

https://ibb.co/ktfojS
https://ibb.co/nhdDJn
https://ibb.co/kQX14S
https://ibb.co/i46uPS

На Си и Asm. Под Win3 и DOS. Но, кажется, позже в 00х покупали какой-то модный американский комплекс, в котором всего хватало с лихвой, а это умерло без пользователей.

30 лет скоро тому как, а проблема ровно слово-в-слово ) Забавно.

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

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

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

Да, я натыкался на этот тулкит, но, мне кажется, он менее популярный, чем сам gtk, а это для меня важно, т.к. многие проблемы с gtk я нагуглил, а что не смог — с тем мне помогли на этом форуме.

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

многие проблемы с gtk я нагуглил

Тут просто стоит посмотреть на примеры кода идущие вместе с Iup. Возможно они буду нагялдны без гугления. Gtk все штука странная при всей распространенности.

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

что ж я не стыжусь признать, что не осилил с наскока плюсы

Нельзя не отметить что Scheme Gamit-a гораздо понятнее плюсов:) Но это скорее задел на будущее.

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

Выглядит круто и наворочено, моему велосипеду ещё катить и катить до такого уровня :) Пилю в основном для себя, планирую расширять функционал со временем.

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

Странный какой-то подход. Если был какой-то «комплекс» с «кучей багов», то логично либо их исправлять

Это коммерческое ПО, так что я тут ничего не могу сделать, а хозяева не всегда хотят. В любом случае баг репорты только для подписчиков, а подписка стоит и немало.

либо писать с нуля свой

Хех, можно считать, что так и есть, только я сам себе об этом думать не разрешаю, т.к. это задача неподъёмная для одного человека. Я предпочитаю думать, что я буду создавать инструменты по мере необходимости и исходя из возможностей кирпичик за кирпичиком. Первый кирпичик, без которого никуда — визуализация данных.

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

Я поглядываю на языки программирования, но пока к С/С++ по производительности приблизился только Rust. Выше monk писал, о том, что с cython и прочим просадка по производительности будет всё равно будет заметна в сравнении с С/С++. Языков, компилируемых в С/С++ много, но на сколько я понял все имеют некий оверхэд, т.к. добавляют свой рантайм. А среди софта, с которым я работаю, есть такой, что на сотнях ядер выполняется днями и это при том, что алгоритмы оптимизированы математиками, а софт написан профессиональными программистами на С/С++.

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

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

А на счёт тулкита — мне показалось, что gtk более распространён в мире линуксов, а Qt это скорее для тех, кому важна кроссплатформенность и коммерческая поддержка.

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

У Gambit-а очень маленькие накладные по сравненею с другими. И возможность простого встраивания внешнего кода на C. Это две причины для того что бы его рекомендовать.

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

Как только напишу что-то счётное на С

Какой-то тонкий и изощренный способ мазохизма.

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

А вот решать какие-то специализированные вычислительные задачи на чистом C, где из средств обобщенного программирования только макросы... Странный выбор, даже для не программиста.

С++ — вот то, что вам нужно. И, если вы не хотите написать собственную реализацию STL, погружаться в него глубоко не потребуется.

Если не хотите C++, попробуйте D. Для проектов для себя любимого его вполне хватит. Безопаснее и удобнее C и C++ вместе взятых.

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

Скорее meson и ninja потому что gtk.

Вы совсем не обязаны использовать ту же систему сборки, что и используемый вами тулкит. Можете использовать любую другую. Или не использовать никакой — просто написать несложный Makefile руками.

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

баг в стандартной библиотеке

Пруф, что баг, а не твоя ошибка? Я за 6 лет ни разу не ловил багов в стандартной библиотеке. Уж что-то, а она отполирована в компиляторах хорошо. В Qt их проще словить, да, но достаточно редко.

Бонус плюсов в том, что ты сам можешь выбирать, какие части НЕ использовать и получается по сути тот же С, только с дополнительными возможностями. Не нравятся шаблоны - не используешь. Не нравятся исключения - тоже работаешь без них. И так почти со всем. При этом получаешь управляемую память в новых стандартах и прочие плюшки.

Но дело твоё, конечно.

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