Почему приложения Linux часто помещают язык, на котором они написаны, в резюме?


19

При демонстрации приложений Windows и Mac в основном говорят о функциях. Приложения Linux, с другой стороны, содержат больше подробностей о том, какой язык использовался для его написания (и сопутствующие библиотеки), а не о возможностях. Это почему?

Я мог бы понять, зная разницу между GTK + и QT, что делает разницу только из-за требований к интеграции с рабочим столом, но C против C ++ против Python против Assembly против сборок и т. Д.? В самом деле?

Например: foo - это простой бла-бла, написанный на C / GTK +.


2
Я хотел бы отметить, что многие приложения Windows не имеют открытого источника ... Часто они упакованы с нужными им зависимостями, даже если они с открытым исходным кодом. Одним из примеров является Pidgin. Вам не нужно загружать gtk отдельно для Windows, чтобы pidgin работал. Вы можете обнаружить, что включение языка в окнах действительно происходит, когда требуется внешняя зависимость, хотя я пока не могу придумать ни одного примера, поскольку кажется, что наиболее трудно не требовать внешней зависимости.
ксенотеррацид

Ответы:


21

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

В любом случае я могу думать о двух причинах:

  • Упаковщики такие же отвратительные (если не больше), как и те пользователи Linux, поэтому они посчитали хорошей идеей добавить такую ​​информацию.

  • Я думаю, что когда эти упаковщики помещают такую ​​информацию в свои описания пакетов, они, скорее всего, делают это как некоторую форму продвижения. Это работает время от времени (это работало на меня довольно много раз).

Это всего лишь предположение, конечно.


Да, я думаю, что у вас есть хорошая точка зрения здесь. Культура * nix действительно культура.
Джордан Пармер

1
Это также экономит время, когда задаешься вопросом «эй, на каком языке написан Chromium?».
Гринольдман

@macias: Гик во мне заставляет меня взглянуть на зависимости пакета, где этот гик чаще всего узнает язык. На самом деле, этот выродок настолько религиозен, что всякий раз, когда он посещает веб-сайт, он раздражается, что не может быстро проверить, на каком языке написан незнакомый инструмент. Если это <вставить нелюбимый язык>, этот выродок убегает, и если он <вставить любимый язык>, предубеждение выродка показывает.
Чепанг

4
Практическим примером технологии, которая может быть проблемой, является mono / .NET, поскольку у Microsoft много патентов в этой области и долгая история "недружественных" ... Поэтому не удивительно, что некоторые люди хотели бы знать такие вещи, чтобы избежать будущих проблем.
Йохан

1
С точки зрения системного администратора, то, что написано в проекте, часто диктует, какие зависимости должны быть доступны.
Дж. М. Беккер,

12

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

Свобода изучать, как работает программа, и изменять ее, чтобы она делала то, что вы хотите (свобода 1). Доступ к исходному коду является предварительным условием для этого.

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


10

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

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

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


2
Приличный пример, о котором я думаю, - это веб-приложение под названием redmine. Он написан с использованием Ruby on Rails, по умолчанию в системе не предусмотрено ни ruby, ни rails. Java-приложения тоже такие.
ксенотеррацид

10

В продолжение ответа Джейсонвриана :

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

Конечно, это имеет смысл, только если вы программист.

Где вы видели резюме? В репозитории или в пакете типа .deb или .rpm?

Если вы собираете его из исходного кода, информация может быть полезна для определения того, нужно ли устанавливать другие вещи (компилятор, библиотеки, инструменты сборки).


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

@ j0rd4n не являясь пользователем Ubuntu, можете ли вы привести пример программного пакета? Я имею в виду, чтобы они действительно поместили C в описание Firefox? Я бы предположил, что около 90% программного обеспечения в Linux не предназначено для конечных пользователей, это библиотека. Кроме того ... вы не понимали, что разработчики Linux разрабатывают для себя? это печально, но верно ... как программист на Perl, я отвлекся, я еще ничего не написал для конечного пользователя :(
xenoterracide

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

Расширение моего комментария: Часто программное обеспечение написано для Unix (если вы найдете файлы automake и тому подобное) и не обязательно производится для linux, но из-за совместимости, доступной для разных версий Unix.
пользователь неизвестен

6

Unix, а теперь и LInux и BSD всегда имели действительно сломанную программную базу, а в сравнительно недавнем прошлом существовала гораздо более разнообразная аппаратная база. Важно было знать, что какое-то программное обеспечение работало с теми, что были у вас в вашей системе, или что вы могли скомпилировать исходный код. Если у вас нет интерпретатора Common Lisp, или интерпретатора Tcl, или любого другого интерпретатора, вы не захотите загружать исходный код, а только узнаете, что не можете его запустить.

Наличие описания того, на каком языке что-то было, предотвратило много потерянного времени.


4

При появлении запроса «что это такое?» Разработчик будет стремиться описать его природу, которая для них связана с исходным кодом, а не его функцию. Надеемся, что кто-то перепишет описание, чтобы оно было более ориентированным на пользователя, прежде чем оно окажется в пакете, но упоминание языка все еще может быть актуально, например, для расширяемости и написания сценариев, или полезно для возможности привлечения участников.


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

1
@ j0rd4n Разработчики тоже люди!
Зак

3

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

  • Общий аспект - это библиотеки, используемые при запуске приложения.

Некоторые установки ограничены несколькими выбранными наборами инструментов, такими как GTK +, но не QT, или наоборот. Для администратора, который обслуживает систему и регулярно обновляет ее компоненты в течение длительного периода времени, это может быть исключительно практическим, а не религиозным вопросом.

  • Другой аспект - это используемые библиотеки и необходимые условия для компиляции приложения.

Т.е. для пользователей исходного дистрибутива Linux очень важно, написано ли приложение на C или в Objective-C, потому что их компилятор должен поддерживать язык в первую очередь. Другие языки могут потребовать установки огромного стека библиотек. Тогда снова возникает вопрос, сколько работы вы готовы принять для составления этого приложения.

  • Другим аспектом является намерение привлечь участников.

Большинство разработчиков предпочитают небольшое количество языков или могут просто не иметь опыта работы с другими. Чтобы позволить большему количеству людей внести свой вклад в приложение, некоторые проекты даже делят свои источники на два разных языка (например, Wesnoth, Vega Strike, Naev, только некоторые из них). Один из них для основного приложения (например, C или C ++), другой для легкой модификации (например, Python или Lua). Вот ссылка на главу «Архитектура приложений с открытым исходным кодом», которая описывает, как и почему это было сделано в Wesnoth.

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

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


1

Я думаю, что многое из этого связано с рекламой производительности. Приложение, написанное на скомпилированном языке (C, C ++, ...), будет работать намного лучше, чем приложение, написанное на языке сценариев (perl, python, ...).

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


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

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

Я понял ваш ответ таким образом, что люди неявно рекламируют производительность, если она написана на C / C ++, и что они неявно рекламируют переносимость, если она не написана на C / C ++. Что всегда противоречит аргументу - либо против переносимости, либо против производительности - обе причины, не говоря уже о языке. Так почему же иногда это, а иногда - наоборот?
пользователь неизвестен

0

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

Что касается размера: добавление переводчика для дополнительного языка вместе со всеми стандартными модулями и обычно используемыми дополнительными модулями может легко добавить сотни мегабайт к требованиям к хранилищу. То же самое касается библиотечных семейств, особенно тех, которые связаны с основными средами рабочего стола, такими как Gnome и KDE. Что еще хуже, переход от запуска nк n+1программам на Perl может не так уж сильно увеличить требования к использованию памяти, поскольку большая часть памяти может быть распределена, но переход от nпрограмм на Perl и 0 к программам на PythonnПрограммы на Perl и 1 программа на Python значительно увеличивают использование памяти. Это становится еще более серьезной проблемой, когда у каждого дурака, пишущего бесплатное программное обеспечение, есть свой любимый язык сценариев / языка программирования, на котором они хотят программировать ... Perl, Python, PHP, Ruby, JavaScript, оболочка Bourne, Bash, Csh, ....

Относительно переносимости. Многие интерпретируемые языки (а также библиотечные среды) интенсивно используют функции, которые могут быть доступны в больших системах Linux на настольных компьютерах и серверах, но не обязательно доступны в небольших / встроенных / без MMU-системах. На .soум приходит зависимость от динамической загрузки модуля во время выполнения ...


Почему вы называете их дураками? Почему они не пишут на том языке, который им нравится? Какой язык они должны вместо этого использовать?
Чепанг
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.