LINUX.ORG.RU
ФорумTalks

Зачем писать кроссплатформенное ПО

 


1

2

Я несколько раз встречался на ЛОРе с мнением, что те, кто пишет кроссплатформенное ПО, укрепляют не линукс, а винду. А для укрепления позиций линукса надо писать программы, работающие только под линуксом.

Я понимаю, откуда берётся эта позиция. Люди видят, что Microsoft и прочие корпорасты пользуются именно таким приёмчиком - людей держат на винде не только привычка, но и windows-only программы, драйвера, форматы, и др. И некоторым кажется, что если начать копировать приёмчики корпорастов - линукс победит.

Проблема в том, что это не работает.

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

Дело ещё и в том, что это не работает чисто практически. У майкрософта это получается потому, что на их стороне до сих пор численный перевес, человеческие привычки, ну и разумеется, средства на пиар. Люди воспринимают Windows как стандарт. Даже если они этим стандартом недовольны - всё равно стандарт.

А если сторонники СПО попробуют действовать такими же методами, ничего, кроме возмущения, от новичков они не получат. «О, у вас есть хорошая программа редактирования GPS-треков? Сейчас заценим. Что, для неё ещё и линукс надо ставить? Да пошли вы, трахайтесь со своим линуксом сами, скоро это наверняка будет у MS или гугла. Мне и семёрочки максимальной хватит».

Это примерно как небритые плохо пахнущие мачо нравятся женщинам в силу напора и беспринципности. Им действительно насрать, что будет с оприходованной самкой, когда они её бросят. А вот когда порядочные мужчины пытаются копировать повадки мачо - ничего, кроме возмущения они не получают. Именно потому, что не хватает искренней беспринципности. Тут нельзя копировать повадки, тут придётся просто перестать быть собой, скурвиться. Путь умного порядочного мужчины - хитрость и соображалка. Ну немного грубоватого напора на отдельных стадиях не помешает, но без хамства. Эта ситуация показана в фильме Тинто Брасса «Подглядывающий». (Сильно извиняюсь, если кому-то аналогия кажется похожей на наброс, но она действительно весьма близкая.)

Рассмотрим противоположный пример. Человек открывает для себя OpenOffice или Firefox и начинает им пользоваться в винде. А потом он вдруг видит линукс и видит под ним те же программы. И думает: «Ба, да этим же можно пользоваться!..» А уже потом он узнаёт, что с семёрочки придётся переползать на десяточку, и задумывается ещё сильнее...

Я делаю такой вывод: хотите развивать десктопный Linux - пишите кроссплатформенные программы. Хотите держать его в загоне для гиков с вечной нехваткой дров и спецсофта - можете пиарить своё ЧСВ разработкой linux-only софта. Но не обманывайте себя, что этим вы способствуете развитию СПО.

Жду дискуссии.

P.S. Разумеется, есть специфичные случаи. Например, заказная система, которая никогда не будет переноситься под винду. В этом случае выбор linux-only средств иногда может быть оправдан. Но для софта общего назначения - см. выше.

P.P.S. Модераторам. Тема одинаково может относиться как к Development, так и в Talks. С одной стороны, это действительно нетехнические разговоры о разработке ПО для Linux. С другой - к разработке они таки относится напрямую (влияют на выбор тулкитов и др.), и те, кто читает Development, но не читает Talks, могут её не увидеть. Если считаете, что я неправ - перенесите в Talks.

Перемещено tailgunner из development

★★★★★

Бизнес несовместим с этим вашим фанатизмом.

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

Первый пример - Stellarium.

слишком редкий случай. его даже на лоре не все используют.

Второй пример был с гимпом

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

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

Не забудь купить Photoshop

мне это всегда пишут. всегда предлагаю посмотреть цену на годовую подписку. это меньше, чем я плачу за инет.

вазелин не забудь для разного рода зондов, вроде mail.ru агента.

ну эт уже твои половые проблемы. можно просто отключить винду от инета.

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

пожалуй) оторвался бы в лихие девяностые)

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

Всем пофиг на линакс для спарк ибо эта пионерская поделка там никому не упала.

Он даже ораклу нафиг не нужен.

дурачок штоле?

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

ну вот для меня эта фича - сам gnu/linux

До поры до времени, для каждого мальчишки осилившего арч так оно и есть. Linux ради Linux.То есть понятно, что тщеславие и самомнение в определённом возрасте заруливают здравый смысл. Но со временем, когда задачи становятся более серьёзными и возникают конкретные неудобства связанные с нехваткой дров, инструментов, глюками, что то приходиться менять.

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

Он там ораклу настолько не нужен, что они выпустили свой дистр, который правда один хрен не работает.

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

Эти авитавизмы вкупе с ядром Линукс оставлены только потому, что гугл (пока?) не может свой рантайм. Однако, очевидно, что линуксом-юниксом андроид не является. Это очень огороженная жава машина, такие дела.

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

Эти авитавизмы вкупе с ядром Линукс оставлены только потому, что гугл (пока?) не может свой рантайм

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

https://play.google.com/store/apps/details?id=com.cuntubuntu&hl=en

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

Я не знаю, что такое рутованный телефон. Нет рутованных телефонов. avenue calle. В анроиде рута нет, если рут есть, это не андроид. Birds tezze.

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

Я не знаю, что такое рутованный телефон

Это телефон где ты путем нехитрых манипуляций получил root, что позволяет тебе делать с системой всё что угодно.

В анроиде рута нет, если рут есть, это не андроид.

Как наличие прав меняет установленную операционную систему? То есть если ты пришел в библиотеку и у тебя нет прав root, то установленный там linux перестал быть linux'ом?

Вон тебе пример выше, работает и без рута. (очевидно через chroot и xsdl xserver позволяет воткнуть в телефон debian)

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

Я хочу сказать только то, что Линукс в Андроиде - лишь очень низкоуровневая прокладка, которая в любой момент может быть упразднена. То, что она на данный момент некоторым не официальным образом всё ещё доступна - значит вообще ничего. Calle Westfield.

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

Linux - это ядро, всегда им было и всегда останется.

Потому к Android надо относиться как к дистрибутиву. Когда избавятся от Linux'а тогда это будет уже другая операционная система, но сейчас - это Linux, и в не месть поддержка драйверов по крайней мере того, что установлено в телефон.

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

Linux - это ядро, всегда им было и всегда останется.

Доступное через системные вызовы. Если ядро Линукс замаскировано где-то под Жабой - это не Линукс.

Потому к Android надо относиться как к дистрибутиву

нет.

Europa privata

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

Доступное через системные вызовы. Если ядро Линукс замаскировано где-то под Жабой - это не Линукс.

жаба - это лишь фреймворк/тулкит для разработки пользовательских приложений. Так же как Qt, Gtk, stl или в конце концов .NET/Mono.

Birds tezze.
avenue calle.
Calle Westfield
Europa privata

Что это? У тебя зонды/вирусы?

invy ★★★★★
()

Зачем писать кроссплатформенное ПО

За шкафом :) Зачем же еще. Прибивание гвоздями к любой $OSNAME — это заявка на премию Дарвина для этого ПО, когда оно станет «абандон» вместе с осью, которые, как любая штука с «жизненным циклом», имеют начало и конец (иногда — из маркетинговых соображений: фрагментация рынка, «торможение дебильных кирпичей инновацый» и т.д. :) Именно такая хрень происходит с игорями, которые писались под конкретную версию оффтопика и директ икса — даже если сорцы потом попадают в публик домен, норот который «мы бы развили/обновили/углубили» чуть реже чем всегда только срет кирпичами от насколько все прибито гвоздями к конкретной версии конкретной оси :)

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

жаба - это лишь фреймворк/тулкит для разработки пользовательских приложений. Так же как Qt, Gtk, stl или в конце концов .NET/Mono.

Это было бы верно в случае,когда Линуксовое АPI доступно, но поскольку оно не доступно, то жаба из фреймворка превращается в основное API

Что это? У тебя зонды/вирусы

просят ввести капчу - ввожу. Я ж не робат. Combe de D

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

Потому к Android надо относиться как к дистрибутиву.

Когда аффтары $LIBRARYNAME для загрузки картинки, которая прошита в бинарь (и в онтопике загружается этой либой без проблем), тебя заворачивают в жабопрослойку, которая не понимает, что картинки могут быть где-то кроме assets или «тупофайлов на диске» (потому что так решили авторы «дистра»), чо-то с этим «дистром» не так :)

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

Нет, оно не доступно доступно по недоразумению to rear russe

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

Я хочу, чтобы ты перестал использовать наши идеи в Android. Это все, что я хочу».

И Джобс с командой реально вели войну - по крайней мере до тех пор, пока сабж не приставился. Вот это наш парень!

Чево они там с кем вели, борцуны с ветряными мельницаме :) Джопсу наверное почти не икался его творческий тыринг в этот его «гараж» цельнотянутых идей из XEROX PARC. Видимо, в карму плохо умел: через то заболел и помре. Вот и весь «ваш парень».

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

Прибивание гвоздями к любой $OSNAME — это заявка на премию Дарвина для этого ПО, когда оно станет «абандон» вместе с осью, которые, как любая штука с «жизненным циклом», имеют начало и конец

Я, как ты, наверное, прочитал, обеими руками за кроссплатформенность. Но именно данный аргумент звучит не очень убедительно, поскольку большинство нынешних кроссплатформенных тулкитов, скорее всего, станет «абандон» гораздо раньше, чем сам линукс. :) Ну или 10 раз успеют необратимо поломать своё API, что для разработчиков прикладного ПО почти одно и то же.

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

просят ввести капчу - ввожу. Я ж не робат.

Так ты залогинься - и не надо будет капчу вводить.

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

Так ты, может, вместо того, чтобы залогиниться, перед всяким комментарием имя-пароль пишешь?

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

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

Python27.dll ... 64-битного MinGW

Это очень вредное извращение. Я с дуру поставил на винду 64-bit питон. Теперь не могу нормально рулить win32com из питона, куча модулей не собирается.

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

тем более. значит, он был просто болтуном.

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

ну, некоторые системнозависимые вещи можно вынести. и их не так много. в венде тоже есть уровни доступа. просто интерфейс другой.

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

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

Да вроде и FreeBSD тоже не исключительно сорсами

А что не?

(Я что-то могу пропустить, но у меня всё ПО на FreeBSD собрано из исходников. Конечно, с некоторым ПО поставляется firmware в виде набора бинарных данных для активации функций в определённом оборудовании, производитель которого не захотел делиться секретными алгоритмами и прошивками. В Linux-source то же самое. Но обычный пользователь GNU/Linux, как правило, работает с блобами, любезно предоставленными поставщиком дистрибутива. Попытка самостоятельно собрать некое ПО из исходников в Linux наталкивается на непонимание окружающих и превращение системы в трудно управляемую сборку. Во FreeBSD же это штатная функция системы, не вызывающая затруднений и недопониманий.)

iZEN ★★★★★
()

Я пишу непереносимый GNU/Linux-only софт по простой причине, что это позволяет мне использовать специфические удобные штуки, например, epoll, systemd-journald, /proc, и т.д.

Я не против портируемости, пожалуйста, перенесите на вашу ОС все штуки, которыми я пользуюсь, и вы сможете запустить там данный софт. Взять к примеру такие вещи как портированный /proc в FreeBSD или cygwin в Windows. Не вижу технических препятствий, чтобы сделать реализацию некоторых API systemd под другие ОС, всё в ваших руках, энтузиасты.

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

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

в смысле что у фри есть официальные бинарные пакеты

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

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

Ну это я так, я пишу сам себе клиентские поделки на питоне, и все кросс-платформенно потому, что питон.

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

песочницы я не считаю кроссплатформой. для мелких поделок они ещё годятся. а для крупных проектов - ни в коем случае. так что когда возникает вопрос о довольно крупном кроссплатформенном приложении, то нужно заранее думать, какие целевые платформы и какие средства использовать.

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

Тебе просто невероятно везло

У msvcrt отличается интерпретация строки формата в wprintf (я сейчас конкретно про %s - на одном большом проекте, на котором я работал, незнание об этом разработчиков плагинов было очень частой причиной сегфолтов).

Кроме того, стандартная библиотека C, а как следствие и стандартная библиотека C++ в реализации от Microsoft умеют понимать юникодные имена файлов только если использовать widechar-версии функций (которых нет в стандартах и чаще всего нет на системах, которые не винда).

В GNU C/C++ и Clang по дефолту все символы экспортируются (и за такой дефолт хорошо бы кому-то руки оторвать), в Visual C++ символы нужно экспортировать явным образом. Синтаксис для этого у GNU C/C++ и Visual C++ отличается.

В GNU C/C++ и Clang препроцессор работает по стандарту (сначала токенизация, потом препроцессинг), а на Visual C++ - нет (по сути, препроцессор там просто заменяет строки, т.е, сначала препроцессинг, а потом токенизация).

Много базовых задач не решаются стандартной библиотекой C или C++. Только в C++11 появились потоки. API для работы с файловой системой как не было, так и нет. То же самое про сеть, динамическую линковку, запуск других приложений. А это довольно базовые вещи. Даже для того, чтобы узнать путь к бинарнику данного приложения, нужно использовать платформозависимые API, причём на разных никсах это делается по-разному.

Логика решения, какую перегруженную версию функции вызывать, разная на Visual C++ и GNU C++/Clang. Обычно различие уровня «на одном компилируется, на другом - нет», но иногда оно действительно вызывает разные версии функции.

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

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

В списке только то, на что я натолкнулся гораздо больше одного раза за 2 года работы на большом коммерческом проекте под Win и Mac.

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

в смысле что у фри есть официальные бинарные пакеты

которые не отменяют самостоятельной (повторяемой) сборки.

а сборка из исходников в той же Gentoo намного более продвинутая, чем во фре

Это спорно. Опции сборки на FreeBSD можно так же прописать в /etc/make.conf, как и в Gentoo. Для поддержки многоверсионности ПО по версии Gentoo есть возможность создать изолированные окружения (jail) с необходимым набором согласованного нативного ПО нужной версии, а так же линуксовых блобов (lunuxator).

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

Стабильный API это миф :) Линус уже назначил наследника империи? :)

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