Стоит ли передать проект в open source? Вообщем, есть у меня собственноручно написанный парсер-вычислитель математических выражений и функций (java, и, соответственно, прекрасно себя чувствующий на Android). Я его использую в одном своем проекте (коммерческом), но сам по себе парсер тоже неплох и, возможно, пригодился бы кому-то еще.
Преимущества:
1. Самостоятельность. Не нужно никаких дополнительных библиотек. Просто вставить проект и пользуйтесь на здоровье.
2. Многофункциональность. Работает не только с элементарными операциями, но и с функциями, соблюдая все математические законы о порядке проведения операций. Выражение вида "2+3/7*10^45-sin(log(4,19.5)+exp(2^arctg(x^8)))" он разбирает как гопник семечки.
3. Расширяемость. Новые функции добавляются очень просто и их можно внести хоть миллион. Просто указать в одном месте название функции и количество аргументов. Например ("sinh",1), а в другом месте прописать switch sinh: res=Math.sinh(arguments[0]) ; break ;.
4. Может работать с функциями с любым количеством аргументов. Просто пишете функцию ("2+x-cos(y)/e^(8*sin(t))"), указываете имена переменных ("x","y","t"), а в вызове «вычислить» передаете значения переменных в том же порядке.
5. Возможность указать несколько вариантов написания функции. Например, арктангенс: напишите "arctg", "arctan" или даже "atan" — парсер вас поймет. Данная возможность реализуется описанием функции: по аналогии с sinh из пункта 3: functions.add(Functions.sinh, 1, "sinh", "sinhyperbolic"). Первый аргумент — как функция значится в enum для case'a, второе — кол-во аргументов (парсер высчитывает, сколько аргументов в скобках, и, если оно не соответствует заявленному количеству, возвращает ошибку), а третье — варианты написание через запятую: хоть одно, хоть сто.
Недостатки:
1. Скорость работы. Никакой компиляции, перевода в байт код и прочее. По моим тестам, вычисление выражения занимает в 10 раз больше времени, чем то же выражение/функция, вписанные в исходник. Парсинг, естественно, отдельный вопрос, но если вам нужно вычислять фунции, то парсинг проводится лишь один раз, а далее значения переменных просто подставляются в готовую таблицу вычислений.
2. Пока что, недостаточное покрытие тестами. Не хватает времени. Было бы неплохо, чтобы протестировали сторонние люди.
3. Если нужны точные десятичные вычисления (банковские проценты и налоги) — двоичная double-логика не лучший выбор.
Особенности:
1. Вся внутренняя логика работает с double-значениями.
2. Выражение или функция передаются в парсер как строки. Как строки подаются и имена аргументов функции. Значения переменных передаются в double или String, который автоматом переводится в double.
3. Принцип работы основан на построении таблицы вычислений. Есть массив значений, есть массив операций. В каждой операции есть свойства, в какую ячейку массива значений записать результат, из каких ячеек брать аргументы. Парсер, на основании выражения, строит таблицу вычислений и вписывает в таблицу значений все исходные данные, после чего вычисляющий модуль берет оба масссива и проходится по таблице вычислений, записывая результаты в таблицу значений. В конце прохода результат лежит в первой ячейке таблицы значений. Если вычисляется функция, то перед выполнением вычислений значения переменных записываются в соответствующие места в таблице значений, после чего выполняется вычисление по заранее спарменому алгоритму.
Что еще будет сделано:
1. Нет поддержки функций вида "2!" или "12%" Конечно, можно заменить "fact(2)" и "perc(12)" (см. Преимущества, пункт 3), но хочется все таки сделать по человечески.
2. Возможность работать с десятичной логикой (пока под вопросом). Возможно, стоит использовать другую открытую библиотеку для этого, вместо написания своего велосипеда. Советы и ссылки по этому вопросу очень пригодятся.
3. Пожелания пользователей…
Где можно использовать:
1. Супер-пупер калькуляторы.
2. Построители графиков.
3. Любые другие приложения, где нужно что-то вычислять, но заранее неизвестно, что именно…
В чем, собственно, вопрос:
1. Нужно ли это кому-то? Или лучше не морочить себе голову?
2. Если публиковать — под какой лицензией? Мне нужно, чтобы это можно было распространять свободно и использовать где и как угодно. Исходники, естественно, открытые. Но, при этом, с правом использовать в проприетарных и платных продуктах — ведь некоторые лицензии этого не допускают.UPD: 3. Где выкладывать? GitHub? Есть еще какие-то сервисы?
Для моего проекта его возможностей хватает с головой, но готов я его развивать потихоньку, уделяя этому несколько часов в неделю — лишь бы это принесло кому-то пользу.
За ответы и советы заранее спасибо.

21 Авг 2019 в 06:14
179 +1
0
Ответы
1

Ответ на вопрос, стоит ли передавать проект в open source, зависит от ваших целей и желаний. Если вы хотите поделиться своим проектом с другими разработчиками и помочь им в создании своих приложений, то передача проекта в open source может быть отличным решением. Это также может способствовать улучшению проекта за счет внешних вкладов и обратной связи.

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

Где выкладывать проект? GitHub является одним из самых популярных сервисов для хостинга open source проектов, но также существуют и другие альтернативы, такие как GitLab, Bitbucket и SourceForge.

Если вы уверены, что ваш проект может пригодиться другим разработчикам и вы готовы уделять время его развитию, то передача проекта в open source может быть отличным решением. Не забывайте также о важности покрытия тестами и обратной связи от сообщества.

20 Апр в 13:21
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 90 581 автору
Первые отклики появятся уже в течение 10 минут
Прямой эфир