Чому програми Linux часто резюмують мову, на якій було написано?


19

Під час демонстрації програм Windows та Mac в основному говорять про функції. З іншого боку, додатки Linux мають більше деталей про те, якою мовою для його написання (та супровідними бібліотеками) користувалися, а не про функції. Чому так?

Я міг би зрозуміти, знаючи різницю між GTK + та QT, змінившись лише через вимоги до інтеграції на робочому столі, але C vs C ++ проти Python vs Assembly vs тощо? Дійсно?

Наприклад: foo - простий бла-бла, написаний на C / GTK +.


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

Відповіді:


21

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

У будь-якому випадку я можу придумати дві причини:

  • Пакувальники такі ж прихильні (якщо не більше), ніж ті користувачі Linux, тому вони вважають гарною ідеєю додати таку інформацію.

  • Я думаю, коли ці пакувальники розміщують таку інформацію у своїх описах пакунків, вони, ймовірно, роблять це як певна форма просування. Це працює часом (на мене працювало досить багато разів).

Це, звичайно, лише здогадка.


Так, я думаю, у вас тут хороший момент. * Nix культура - це справді культура.
Джордан Пармер

1
Це також економить час, коли дивуєтесь "ей, на якій мові написаний Хром?".
greenoldman

@macias: Виродник в мені змушує мене подивитися на залежність пакету, де цей вун найчастіше знайде мову. Насправді цей гік настільки релігійний, що кожного разу, коли він відвідує веб-сайт, він дратується, що не може швидко перевірити, на якій мові написаний незнайомий інструмент. Якщо це <вставити нелюбиму мову>, цей вунчик тікає, і якщо це <Вставити улюблену мову>, показує упередження видовища.
tshepang

4
Практичним прикладом щодо технології, яка може стати проблемою, є моно / .NET, оскільки Microsoft має багато патентів у цій галузі та має багаторічну історію «недружніх» ... Тому не дивно, що деякі люди хотіли б знайте такі речі, щоб уникнути майбутніх проблем.
Йоган

1
З точки зору системного адміністратора, те, що написаний проект, часто диктує, які залежності повинні бути доступними.
Дж. М. Бекер

12

Я розумію, що це стосується другої з чотирьох свобод програмного забезпечення :

Свобода вивчати, як працює програма, і змінювати її, щоб вона зробила те, що ти бажаєш (свобода 1). Доступ до вихідного коду є необхідною умовою цього.

Оприлюднення мови (або інших технічних особливостей) підтримує здатність людей вибирати та заохочує участь у проектах людей, які володіють цими мовами.


10

Це може бути частково історичним. Навіть у не такому далекому минулому окремі системні адміністратори звично створювали та встановлювали все, що працювало на їхній системі.

Примітки про те, якою мовою та бібліотеками використовувались для впровадження інструменту, підказують адміністратору про те, яка робота над цим процесом буде працювати їх систему.

У цю епоху всюдисущих та далекосяжних інструментів управління пакунками це є трохи анахронізмом, але культура Unix є консервативною у сенсі не викидати речі, які, здається, працюють, тому пройде деякий час, перш ніж звичка вмирає.


2
Гідний приклад, про який я думаю, - це веб-сторінка під назвою redmine. Це написано з Ruby on Rails, ні рубін, ні рейки зазвичай не надаються в системі за замовчуванням. Java-програми також подібні до цього.
ксенотеррацид

10

На додаток до додаток до відповіді язонврійців :

Якщо ви назвете мову, якою вона написана, людина, яка її отримує, може оцінити, наскільки важко буде надати виправлення, або отримати деяку інформацію, або розширити програму.

Звичайно, це має сенс лише якщо ви програміст.

Де ви побачили підсумки? У сховищі або в пакеті на зразок .deb чи .rpm?

Якщо ви будуєте його з джерела, інформація може бути корисною для визначення того, чи потрібно вам встановлювати інші речі (компілятор, бібліотеки, інструменти для збирання).


Просто перегляньте сховища Ubuntu (через Software Center). Майже всі резюме включають мову в першому реченні. Мені здається смішним, що, здається, більшість розробників Linux насправді розробляє для інших розробників Linux замість користувачів.
Джордан Пармер

@ j0rd4n не є користувачем ubuntu, чи можете ви навести приклад програмного пакету? Я маю на увазі, що вони дійсно ставлять С в описі Firefox? Я б припускав, що близько 90% програмного забезпечення в Linux не призначене для кінцевих користувачів, це бібліотека. Крім того ... ви не розуміли, що розробники Linux розробляють для себе? це сумно, але правда ... як програмуючий perl я відступаю, я ще нічого не писав для кінцевого користувача :(
xenoterracide

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

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

6

У Unix, а тепер LInux і BSD, завжди була по-справжньому розбита база програмного забезпечення, а в досить недавньому минулому існувала набагато різноманітніша база обладнання. Важливо було знати, що деяке програмне забезпечення працювало в інтеграторах, які у вас були у вашій системі, або що ви можете скласти вихідний код. Якщо у вас немає спільного перекладача 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

У сучасних настільних / серверних системах це може бути не так актуально, але для менших систем, починаючи від вбудованих систем до нетбуків та планшетів SSD, мови чи бібліотеки, які використовує програма, можуть бути проблемою, що стосується виправлення або перерви, як через розмір, так і міркування щодо переносимості.

Щодо розміру: Додавання інтерпретатора для додаткової мови разом із усіма стандартними модулями та типово використовуваними модулями доповнення може легко додати сотні мегабайт до вимог зберігання. Те саме стосується бібліотечних сімей, особливо тих, які пов'язані з основними середовищами настільних ПК, такими як Gnome та KDE. Що ще гірше: перехід від запуску nдо n+1програм Perl може не додати стільки вимог до використання пам'яті, оскільки багато пам'яті можна спільно використовувати, але переходячи від nпрограм Perl та 0 програм Python доnПрограми Perl та 1 програма Python призводять до значного сплеску використання пам'яті. Це стає ще більшою проблемою, коли кожен дурень, що пише вільне програмне забезпечення, має власну улюблену мову скрипта / радоула, яку він хоче програмувати ... Perl, Python, PHP, Ruby, JavaScript, оболонка Bourne, Bash, Csh, ....

Щодо переносимості: Багато інтерпретованих мов (як і бібліотечні рамки) активно використовують функції, які можуть бути доступні у великих настільних / серверних системах Linux, але необов'язково доступні для менших / вбудованих / MMU без систем. .soПриходить на думку залежність від динамічного завантаження модуля під час виконання ...


Чому ти їх називаєш дурнями? Чому б вони не кодували мовою, яка їм подобається? Якою мовою вони замість цього користуватися?
thepang
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.