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
Ответ на: комментарий от Deleted

В общем после прочтения одной статьи о том, что есть задачи, где вполне можно обойтись С без плюсов

Скажи, а в каких задачах без крестиков нельзя обойтись?

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

Там как раз для научныx вычислений есть nalgebra и nphysics,а если графики рисовать то можно использовать cairo-rs или piston

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

Скажи, а в каких задачах без крестиков нельзя обойтись?

Для меня такой задачей была работа с 3D изображениями через VTK.

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

Вы совсем не обязаны использовать ту же систему сборки

Понимаю, но другие плохо интегрируются со специфическими инструментами GTK, такими как компиляция ресурсов или схем.

просто написать несложный Makefile руками.

Когда я начинал писать, то как раз использовал make, но даже небольшой файл было тяжело понять, возвращаясь к проекту через некоторое время со всеми этими $ @ < и прочими закорючками, к тому же, на сколько я понял, мало кто использует make в чистом виде.

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

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

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

Пруф, что баг, а не твоя ошибка?

https://www.linux.org.ru/forum/development/13365790 Я понял это как баг. Я не прав?

Бонус плюсов в том, что ты сам можешь выбирать, какие части НЕ использовать

На сколько я читал, не всё так однозначно. К примеру, я читал, что единственный способ корректно обрабатывать ошибки в конструкторе — исключения, то есть хочешь RAII — получай и исключения. А не использовать шаблоны это отказаться от STL и других библиотек? Может быть, я что-то неправильно понял, но как я писал выше, для меня очень важно понимать, что делает строчка написанного мной кода, если я понимаю не до конца, то какой смысл этим заниматься вообще? Ведь это очень быстро приведёт к абсолютно неработоспособной куче кода. Я не отрицаю плюсы, не поливаю их нечистотами, просто я, пока, не готов к использованию этого инструмента. Со временем я буду обязательно делать ещё попытки овладеть плюсами, но сейчас мне уже хочется писать код и видеть результат.

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

С++ — вот то, что вам нужно.

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

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

Хех, думаю, уровень сложностей, с которыми я столкнулся сильно ближе к поверхности, чем реализация STL :) Вообще для меня важно разобраться как минимум в механизмах выделения и освобождения ресурсов, чтобы избежать лишних копирований. Мне кажется, что С как язык проще, чем С++. Применять С тяжелее и опаснее, это да, я понимаю. Но вот такой у меня бзик, мне нужно понимать что и зачем я делаю, иначе я не вижу смысла.

Если не хотите C++

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

попробуйте D

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

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

Спасибо за столь развёрнутый ответ! То есть, как я понял, callback в описаниях виджетов вообще лучше избегать? У меня код для gui коллбеками как-раз увешан под завязку. Насчёт асинхронщины, я тоже так делаю, очень удобно.

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

Посчитал, получилось примерно поровну между С, python и C++. По python я книжку почитал только чтобы с numpy поразбираться, но пока никак руки не дойдут. В любом случае это прототипирование или одноразовые считалки. Это не значит, что он не нужен, наоборот, я скорее против противопоставления python и С или С++, т.к. они нужны для разных вещей.

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

К примеру, я читал, что единственный способ корректно обрабатывать ошибки в конструкторе — исключения, то есть хочешь RAII — получай и исключения.

Вообще-то никто не мешает ставить флаг, что объект не инициализировался.

А не использовать шаблоны это отказаться от STL и других библиотек? Может быть, я что-то неправильно понял, но как я писал выше, для меня очень важно понимать, что делает строчка написанного мной кода, если я понимаю не до конца, то какой смысл этим заниматься вообще?

Да. Берёшь компилятор Си++, берёшь свою программу на Си и пишешь почти на Си, используя из Си++ только те элементы, которые хочешь.

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

callback в описаниях виджетов вообще лучше избегать?

Не то, чтобы избегать, но их должно быть не слишком много. Понятно, что кнопку без обратного вызова не сделать. Но вот переопределять on-event без необходимости лучше не надо. Я не нашёл в Racket аналога gtk_widget_set_events, а без него on-event будет выполняться на каждое движение мышки.

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

Cython

Кстати, где подвох? Если Cython не отличается от питона, но быстрее, почему всюду используется питон?

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

Но я планирую в дальнейшем изучать разные численные методы и писать что-то для себя

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

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

Ключевое слово «коммерческим». Его пишут опытные програмисты за зарплату. С фортраном еще наверное можно как-то освоиться без полной переквалификации, там все-таки меньше шансов выстрелить в ногу или наваять говноархитектуру.

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

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

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

Ну и Cython все же не строгий суперсет питона, к сожалению.

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

Хех, нет. По стране много организаций, которые работают в этой в сфере.

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

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

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

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

Это да, но скорости точно будет мало, на прошлой работе либо сразу писали на С/С++ или переписывали на них сразу после того как становилось понятно, что прототип хотя бы потенциально полезен. При чём я наблюдал как некоторые коллеги, сделавшие упор на матлаб, в процессе переписывания на С/С++ просили более опытных в программировании коллег объяснить почему оно работает не так как задумано.

Спасибо за совет!

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

Зря ты начал писать на си.

Я в ЦИСИ (Целиноград, Акмола, Астана) изучал Turbo Pascal.

Потом самостоятельно изучил Basic...

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

Нечестно.

Всё по-честному, без обмана, у волшебника Сулеймана...

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

Cтивен Хокинг и Ник Вуйчич - вам в помощь...

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

Хм, ну это решение для отображения 2Д данных(по ссылке они в 2.5Д, но, думаю, нормальное 2Д тоже можно сделать) и ото бражения 3Д в видел куба, правда обычно такое отображение строят с вырезами, но может и тут такое можно. Самое неприятное — ограничение на угол съёмки, он частенько бывает отличным от 0. Но всё это не важно, данные геофизические бывают в разных видах это решение подходит только для суммированных данных.

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

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

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

Да, для питона уйма всего. К счастью мне не нужно реализовывать всё это на си :) Здесь для визуализации данных можно было бы использовать одну из библиотек для питона, но всё равно пришлось бы разбираться как рисовать трассы как я разбирался в гтк. Считалки всё равно на си придётся писать, но вообще я планирую заняться изучением scipy/numpy и буду признателен если порекомендуете книгу или туториал, желательно нейтральный, а то я в основном находил с сильной привязкой к машинному обучению.

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

Ну, если тебя интересует питон - пиши мне на телеграмм, обсудим: @menangen, либо с моим ником собачка гуглопочта.

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

это решение подходит только для суммированных данных.

Извини, ничего не понимаю в геофизике, но это решение для экспорта данных в paraview.
Твои тестовые файлы оно открывает.
А дальше складывай их как угодно ;)

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

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

Deleted
()
8 августа 2018 г.

Ну что, все? Потерял интерес к своему вьюверу?

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