LINUX.ORG.RU
ФорумTalks

Для каждой платформы — по заслугам ее

 , ,


1

1

У каждой платформы свои традиции в отношении гуев, лицензии и платности.

  • Linux-based - бесплатно, открыто, иногда свободно, GPL/MIT/Apache. Интерфейс «сделейте меня развидеть это» на GTK и Qt, ШГ.
  • Винда - платно и условно бесплатно (демки, триалы, «облегченные» версии), закрыто, EULA. Интерфейс приличный на вендофреймворке (winapi, windows forms, windows presentation foundation) и неприличный на HTML5/JS, ШГ с cleartype.
  • Мак - сурово платно (или сурово халявно BSD/MIT/Apache). Интерфейс отличный на макофреймворке, Ш не Г. GPL considered harmful.

Чтобы сделать кроссплатформенную прогу и никого не обидеть, надо что-то общее выделить.

Вот что надумалось:

  • Платность: платно по усмотрению автора. На Linux-based - бесплатно, на свиндовсе - по-разному (демки, «облегченные» версии), на маке - только платно. Каждой платформе — по делам и словам ее.
  • Открытость: EULA по которой код и ресурсы полностью открыты на чтение, но без возможности использования. Для использования нужно предварительное письменное или электронно-письменное разрешение. В том числе для совместимости с политикой Apple. Из «совместимых» лицензий - MIT/BSD/Apache, LGPL в случаях когда вообще не обойтись без нее. Для пущего эффекту — выложить на гитхабе в режиме «только для чтения».
  • Открытость участия: коммиты принимаются, но с отчуждением авторства. Коммитер подписывает бумажку, по которой он передает все права кроме собственно авторства авторам проекта, имя автора коммита остается в исходниках или на доске почета (в случае, если код автора окончательно выпилен из проекта - чтобы о нем осталась память). В случае использования гитхаба, pull requests рассматриваются, но отзываются (чтобы не накосячить с юридическими тонкостями).
  • Платформа/язык/интерфейс: Платформа - нативная, гуй - нативный, логика - кроссплатформенная на C++, C#, Java, Python, JS. В запущенных случаях - полностью кроссплатформенные комбинации из набора: Qt/C++/Qt | Mono/C#/GTK# | Java/JVM-based(Java,Scala,Clojure)/SWT,(HTML5/CSS/JS) | Python/Python/GTK,(HTML5/CSS/JS) | %browsername%,qtwebkit,nodejs/JS/(HTML5/CSS/JS)

Устраивает ли дам и господ сего форума такой расклад? Никто не будет кричать «мои права ущемили»?

Что хотел спросить: посоветуйте хороший пример практики «отчуждения коммитов». Лицензию. Описание механики и юридических тонкостей, если есть. Говорят, в OpenOffice так делали.

★★★★☆

Последнее исправление: stevejobs (всего исправлений: 3)
Ответ на: комментарий от PolarFox

C#
Сомнительный лицензионный статус.

Международный стандарт, какбе. http://www.ecma-international.org/publications/standards/Ecma-334.htm http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=...

(Но это для C# v3. 4 и 5 вроде еще не под ним. Вроде, не потому, что Microsoft жадничает, а потому, что они сами не могут сформулировать стандарт. В мире всего две VM с формально доказанной корректностью, Java и .NET. Чтобы внести изменения в стандарт C# в соответствии с последними изменениями (которые потребовали изменений и в MS Intermediate Language и виртуальной машине), нужно всё заново передоказать, а у них на это времени нету. Нужно же восьмерочку выпускать и метро двигать.)

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

Международный стандарт

А это может как-то помешать майкрософту начать рвать и метать по поводу Mono, если в нём совпадёт код реализации проверки на выход за границы массива, как это уже было с ораклем и дальвиком?

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

Поделил на нуль.

Он хотел сказать «отличный от нормального», но что-то не сложилось.

PolarFox ★★★★★
()

Катался недавно в Питер в командировку. Там у начальника одного на столе мак стоял. Глянул я на него. Зеркало и лютейшие ШГ. Настолько Г, что я даже испытал культурологических шок.

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

Тормоза устраняются выносом тяжёлого кода в библиотеку на компилируемом языке, с последующим вызовом из медленной java.

Как это ни странно, но отжитенный (jitted) код не такой уж и медленный. Вот, старт медленный. Это да. Еще жрет много памяти до кучи. Но назвать яву медленной можно с большой натяжкой. Чай не питонище.

dave ★★★★★
()

В Маке ШГ лютое мыло, глаза болеть начинают, хотя интерфейсы там нравятся. Лучшие грифты что я видел, в Ubuntu. В винде интерфейсы страшные, как искаробочные темы.

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

Этот язык от С мало чем отличается в плане надёжности. Но при этом отличается он явно не в лучшую сторону.

И откуда такие берутся? Да вы хоть раз на gtk кодили? Как там определить, какие методы доступны для данного, внимание, класса виджетов? Вручную по докам искать его «базовые» классы и лопатить их методы?

Как там в сях проверки указателей - всё ещё с войдами работают направо-налево? Паттерн visitor всё так же реализуют енумами и свитчами (и каждый раз, внеся изменение, наново пробегают по всем свичам)? Или может там уже static_cast, dynamic_cast, qobject_cast появились? А может у вас передача аргументов по ссылкам, static_assert или constexpr появились?

Все остальные шаблоны на основе мифов можно даже не читать. Хотя про javascript замечу, что он не зря называется так - язык по природе своей гибридный (требует биндингов в интерпретаторе, написанных на другом языке) и для хардкорных вычислений не предназначен - для остального есть встроенная поддержка событий и всяческих замыканий. Насчёт синтаксиса - лучшее враг хорошего (я уж не говорю о том, что любые проблемы синтаксиса стираются хорошей IDE - если, конечно, язык позволяет IDE хорошо над ним работать, а не как lisp).

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

Она для интерфейсов создавалась. Просто не все патчи в swing делают по необходимости, а в линуксе ещё и HIG как такового нет, разве что у отдельных фреймворков. Сообщество Ubuntu и Apple постарались.

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

GTK — использование си неправильным образом, плохой пример. Чтобы узнать какие методы есть у класса в цепепе, надо тоже глядеть в доки или использовать ide.

PolarFox ★★★★★
()

Стивушка, ты с какого бодунища не ШГ на Маке увидел?
Тыкни меня в пруф и сделай видеть это! Подключи к любому монитору и сразу станет больно глазам, родные не считаем, ведь есть макМини.

НаЩОт Винды. Вчера наткнулся в супермаркете на Асус ультрабук, 1920*1080. Вот это я скажу хардкор, я таких !ШГ давненько не встречал, прям как на иПадко3 с ретиной.

А вот у Линукса со шрифтами да, очень всё непросто.

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

Во-во...

Маководы, сделайте нас, невменяемых адептов ШГ на маке.

Даю вводную:
Подключаете 46-55" LCD к маку и постите снимки того, что получите.

А эксперты ЛОРа уже разберутся, что Г, а что Ш.

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

Брать язык, который наименьшее дерьмо для текущей задачи.

Не, я в курсе, что сейчас все угорели по domain-specific языкам. Вот только это не избавляет от необходимости хоть как-то аргументировать (хоть перед собой) такой подход.

Ещё раз повторю: C++, C#, Java, Python, JS сильны огромным сообществом, вниманием разработчиков инструментов и этими самыми инструментами. Разработчики IDE для Java, например, не обязаны каждый раз переделывать всю логику и придумывать новые алгоритмы дополнения на каждый новый лисп - они делают свою работу. Аналогично с авторами документации, учебников и т.д. Если совсем уж не верите, взгляните на сообщество Objective C - при невероятной убогости языка он имеет невероятное число апологетов, благодаря

  • мощной IDE (drag&drop во все поля; разбирает код, пользуясь библиотеками компилятора clang, потому на 100% точна в разборе и показывает ошибки в реальном времени, визуализирует утечки памяти вот так)
  • хорошему фреймворку
  • наличию документации (хоть и гораздо хуже чем у Qt), ответов на любые вопросы на stackoverflow и большого числа вспомогательных библиотек на github, которые даже учить не надо, ибо используют механизм категорий, то бишь дополняют существующие классы NSString или там UIImageView новыми методами.
quiet_readonly ★★★★
()
Ответ на: комментарий от PolarFox

или использовать ide.

Ключевой пункт. В gtk даже ide не сможет их выдрать и дополнить, ибо нет волшебной точки - чем сишники и функциональщики жутко гордятся.

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

мощной IDE (drag&drop во все поля; разбирает код, пользуясь библиотеками компилятора clang, потому на 100% точна в разборе и показывает ошибки в реальном времени, визуализирует утечки памяти вот так)

Хотеть!

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

Или может там уже static_cast, dynamic_cast, qobject_cast появились?

В стандарте Си++ уже есть qobject_cast?

А может у вас передача аргументов по ссылкам, static_assert или constexpr появились?

static assert в C11 есть. Волее того, static assert (с вопиюще невнятным сообщением об ошибке) эмулируется даже в C99.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)

сделать кроссплатформенную прогу и никого не обидеть

скупой платит дважды, если не трижды.

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

В стандарте Си++ уже есть qobject_cast?

В стандарте javascript DOM есть?

Я так понимаю, что qobject_cast в стандарт Си++ не входит.

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

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

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