Dlaczego aplikacje Linux często umieszczają język, w którym został napisany, w podsumowaniu?


19

Podczas prezentowania aplikacji Windows i Mac najczęściej mówią o funkcjach. Z drugiej strony aplikacje Linux mają więcej szczegółów na temat tego, w jakim języku został napisany (i towarzyszących bibliotek), a nie na temat funkcji. Dlaczego?

Zrozumiałem, znając różnicę między GTK + a QT, robiąc różnicę tylko ze względu na wymagania dotyczące integracji pulpitu, ale C vs C ++ vs Python vs Assembly vs. itd.? Naprawdę?

Na przykład: foo to prosta bla bla napisana w C / GTK +.


2
Chciałbym wspomnieć, że wiele aplikacji systemu Windows nie jest oprogramowaniem typu open source ... Często są one pakowane z potrzebnymi zależnościami, nawet jeśli są oprogramowaniem typu open source. Jednym z przykładów jest pidgin. Nie musisz pobierać gtk osobno na Windows, aby pidgin działał. Może się okazać, że włączenie języka w systemie Windows dzieje się, gdy wymaga zewnętrznych zależności, chociaż nie mogę obecnie wymyślić żadnych przykładów, ponieważ wydaje się, że najbardziej ciężko jest nie wymagać zewnętrznych zależności.
ksenoterracid

Odpowiedzi:


21

Myślę, że tradycyjny użytkownik Linuksa (maniak komputerowy, który sam zainstalował system) dba o takie informacje (jaka technologia kryje się za tym narzędziem?). Jestem także jednym z tych dziwacznych facetów, którzy na przykład powstrzymaliby się od instalowania i używania pakietu tylko dlatego, że używa on technologii, której nie lubię. Niektórzy nazywają to zachowanie oczywiście religią. Głupie, prawda?

W każdym razie mogę wymyślić dwa powody:

  • Programy pakujące są tak samo maniakalne (jeśli nie więcej) niż ci użytkownicy Linuksa, więc uznali, że dobrym pomysłem jest dodanie takich informacji.

  • Myślę, że kiedy ci pakujący umieszczają takie informacje w opisach swoich paczek, prawdopodobnie robią to jako formę promocji. Czasami działa (działało na mnie całkiem sporo razy).

To tylko przypuszczenie.


Tak, myślę, że masz tu rację. Kultura * nix jest rzeczywiście kulturą.
Jordan Parmer

1
Oszczędza również czas, zastanawiając się „hej, w jakim języku jest napisany Chromium?”.
greenoldman

@macias: Ten maniak we mnie każe mi spojrzeć na zależności pakietu, gdzie ten maniak najczęściej pozna język. W rzeczywistości ten maniak jest tak religijny, że za każdym razem, gdy odwiedza stronę internetową, denerwuje się, że nie może szybko sprawdzić, w jakim języku jest zapisane nieznane narzędzie. Jeśli jest to <wstaw niekochany język>, ten maniak ucieka, a jeśli jest <wstaw ulubiony język>, pokazuje uprzedzenie maniaka.
tshepang

4
Praktycznym przykładem technologii, która może być problemem, jest mono / .NET, ponieważ Microsoft ma wiele patentów w tej dziedzinie i ma długą historię bycia „nieprzyjaznym” ... Dlatego nie jest dziwne, że niektórzy ludzie chcieliby znać tego rodzaju rzeczy, aby uniknąć problemów w przyszłości.
Johan

1
Z punktu widzenia administratora systemu to, co napisano w projekcie, często określa, które zależności muszą być dostępne.
JM Becker,

12

Mam wrażenie, że odnosi się to do drugiej z czterech swobód oprogramowania :

Swoboda studiowania działania programu i zmieniania go, aby działał tak, jak chcesz (wolność 1). Dostęp do kodu źródłowego jest warunkiem tego.

Publikowanie języka (lub innych funkcji technicznych) wspiera zdolność ludzi do wyboru i zachęca do udziału w projektach osób biegle posługujących się tymi językami.


10

To może być częściowo historyczne. Nawet w nie tak odległej przeszłości indywidualni administratorzy systemów zwykle budowali i instalowali wszystko, co działało w ich systemie.

Uwagi na temat tego, co język i biblioteki zostały wykorzystane do wdrożenia narzędzia dać wskazówkę do administratora o tym, jak dużo pracy, że proces będzie dla ich systemu.

W dobie wszechobecnych i dalekosiężnych narzędzi do zarządzania pakietami jest to trochę anachronizm, ale kultura unixowa jest konserwatywna w tym sensie, że nie wyrzuca rzeczy, które wydają się działać, więc minie trochę czasu, zanim nawyk zniknie.


2
Dobrym przykładem, o którym myślę, jest aplikacja internetowa o nazwie Redmine. Jest napisany za pomocą Ruby on Rails, domyślnie ani ruby, ani rails nie są zwykle dostępne w systemie. Takie też są aplikacje Java.
ksenoterracid

10

W uzupełnieniu do odpowiedzi Jasonwryans :

Jeśli podasz język, w którym został napisany, osoba, która go otrzyma, może oszacować, jak trudno będzie dostarczyć łatkę, uzyskać wgląd lub rozszerzyć program.

Oczywiście ma to sens tylko wtedy, gdy jesteś programistą.

Gdzie widziałeś podsumowania? W repozytorium lub w pakiecie takim jak .deb lub .rpm?

Jeśli zbudujesz go ze źródła, informacje mogą być pomocne w określeniu, czy musisz zainstalować inne rzeczy (kompilator, biblioteki, narzędzia do budowania).


Wystarczy przejrzeć repozytoria Ubuntu (za pośrednictwem Centrum oprogramowania). Prawie wszystkie streszczenia zawierają język w pierwszym zdaniu. Wydaje mi się to zabawne, że większość programistów Linuksa wydaje się programować dla innych programistów Linuksa zamiast użytkowników.
Jordan Parmer

@ j0rd4n nie będąc użytkownikiem ubuntu, czy możesz podać przykład pakietu oprogramowania? Mam na myśli, że naprawdę umieścili C w opisie Firefoksa? Spekulowałbym, że około 90% oprogramowania w systemie Linux nie jest przeznaczone dla użytkowników końcowych, jest to biblioteka. Poza tym ... nie zdawałeś sobie sprawy, że programiści Linuksa rozwijają się dla siebie? to smutne, ale prawdziwe ... jako programista
perlowy digresuję

Używam ubuntu, z niemieckim jako językiem interfejsu, więc tylko niektórym z nas pomoże przytoczyć kilka przykładów, ale mogę was zapewnić: W Synaptics, narzędziu instalacyjnym nowego oprogramowania, przetestowałem i wybrałem 5 pakietów - i nie znalazł żadnego z nich, wspominając o języku, w którym został napisany.
użytkownik nieznany

Rozszerzając mój komentarz: Często oprogramowanie jest napisane dla Uniksa (jeśli znajdziesz pliki automake i tak dalej) i niekoniecznie jest tworzone dla Linuksa, ale ze względu na kompatybilność, dostępne w różnych wersjach uniksowych.
użytkownik nieznany

6

Unix, a teraz LInux i BSD, zawsze miały naprawdę złamaną bazę programową, a znacznie bardziej zróżnicowana baza sprzętowa istniała w dość niedawnej przeszłości. Ważne było, aby wiedzieć, że niektóre programy działały w interpretatorach posiadanych w systemie lub że można skompilować kod źródłowy. Jeśli nie masz tłumacza Common Lisp, tłumacza Tcl lub innego tłumacza, nie chciałeś zawracać sobie głowy pobieraniem źródła, tylko po to, aby dowiedzieć się, że nie możesz go uruchomić.

Posiadanie opisu, w jakim języku było coś, zapobiegło marnowaniu czasu.


4

Po wyświetleniu monitu „co to jest?” Programista będzie miał tendencję do opisywania swojej natury, która jest związana z kodem źródłowym, a nie funkcją. Miejmy nadzieję, że ktoś przepisze opis, aby był bardziej zorientowany na użytkownika, zanim trafi do pakietu, ale wspomnienie o języku może być nadal istotne, na przykład w zakresie rozszerzalności i skryptowalności, lub przydatne w celu przyciągnięcia autorów.


Repozytorium Ubuntu ma niesamowitą liczbę opisów pakietów, w których pierwsze pięć słów zawiera język. Sam jestem programistą, ale nigdy nie pomyślałem, że moim użytkownikom zależy. Zrozumiałem jednak, że będąc open source, może to mieć większe znaczenie, ale czy rozwijamy się dla ludzi lub innych programistów?
Jordan Parmer

1
@ j0rd4n Programiści też są ludźmi!
Zach

3

Z mojego punktu widzenia takie informacje są niezbędne, aby przyciągnąć nowych autorów, a także dać potencjalnym użytkownikom natychmiastowe wyobrażenie o tym, ile pracy może wymagać zintegrowanie aplikacji z ich systemem.

  • Ogólnym aspektem są biblioteki używane podczas uruchamiania aplikacji.

Niektóre instalacje są ograniczone do kilku wybranych zestawów narzędzi, takich jak GTK +, ale nie QT, i odwrotnie. Dla administratora, który utrzymuje system i regularnie aktualizuje jego komponenty przez długi czas, może to być wyłącznie kwestia praktyczna, a nie religijna.

  • Kolejnym aspektem są używane biblioteki i wymagania wstępne niezbędne do skompilowania aplikacji.

To znaczy dla użytkowników źródłowej dystrybucji Linuksa robi to dużą różnicę, czy aplikacja jest napisana w C, czy w Objective-C, ponieważ ich kompilator musi przede wszystkim obsługiwać język. Inne języki mogą wymagać zainstalowania ogromnego stosu bibliotek. Pytanie zatem brzmi, ile pracy jesteś gotów podjąć, aby skompilować tę aplikację.

  • Innym aspektem jest chęć przyciągnięcia autorów.

Większość programistów preferuje niewielką liczbę języków lub może po prostu brakować doświadczenia w innych. Aby umożliwić większej liczbie osób współtworzenie aplikacji, niektóre projekty nawet podzieliły swoje źródła na dwa różne języki (np. Wesnoth, Vega Strike, Naev, żeby wymienić tylko kilka). Jeden z nich do podstawowej aplikacji (jak C lub C ++), drugi do łatwej modyfikacji (jak Python lub Lua). Oto link do rozdziału „Architektura aplikacji Open Source”, który opisuje, w jaki sposób i dlaczego zostało to zrobione w Wesnoth.

  • Wreszcie, istnieje oczywiście wiele stronniczości i uprzedzeń wobec niektórych języków.

Powiem tylko, że widziałem okropnie nieefektywne oprogramowanie napisane w dowolnym języku. Jeśli pytasz mnie o wydajność, jakość kodu aplikacji jest znacznie ważniejsza niż język, w którym jest napisana.


1

Myślę, że wiele z tego ma związek z reklamą wydajności. Aplikacja napisana w skompilowanym języku (C, C ++, ...) będzie działała o wiele lepiej niż aplikacja napisana w języku skryptowym (perl, python, ...).

Ale wiąże się również z kompatybilnością. Aplikacja napisana w języku skryptowym może być również bardziej przenośna w różnych architekturach i systemach operacyjnych, z niewielkimi modyfikacjami lub bez modyfikacji.


W obu przypadkach masz argument za i przeciw - co nie jest satysfakcjonujące. Skompilowany kod, który jest zamkniętym źródłem jest również powszechny w systemie Windows, więc argument wydajności nie rozróżniałby programu Linux
użytkownik nieznany

1
co? po prostu nie miałeś sensu. Za i przeciw właśnie dlatego wymieniasz język. Gdyby ktoś miał tylko „profesjonalistów”, wszyscy by z niego skorzystali. I nawet nie rozumiem, co próbujesz powiedzieć o skompilowanym kodzie i systemach operacyjnych.
Patrick

Zrozumiałem twoją odpowiedź w ten sposób, że ludzie domyślnie reklamują wydajność, jeśli jest napisana w C / C ++, i że domyślnie reklamują przenośność, jeśli nie jest napisana w C / C ++. Co zawsze stanowi argument przeciwny - przeciwko przenośności lub wydajności - w obu przypadkach, nie wspominając o języku. Dlaczego więc czasami tak jest, a innym razem odwrotnie?
użytkownik nieznany

0

W dzisiejszych systemach komputerowych / serwerowych może to nie być tak istotne, ale w przypadku mniejszych systemów, od systemów wbudowanych po netbooki i tablety SSD, języki lub biblioteki używane przez program mogą być problemem, zarówno ze względu na rozmiar, jak i względy przenośności.

Jeśli chodzi o rozmiar: dodanie interpretera dla dodatkowego języka, wraz ze wszystkimi standardowymi modułami i zwykle używanymi modułami dodatkowymi, może łatwo dodać setki megabajtów do wymagań dotyczących pamięci. To samo dotyczy rodzin bibliotek, szczególnie tych związanych z głównymi środowiskami graficznymi, takimi jak Gnome i KDE. Co gorsza, przejście od uruchamiania programów ndo n+1Perla może nie zwiększyć wymagań dotyczących wykorzystania pamięci, ponieważ wiele pamięci może być współdzielonych, ale przejście z nprogramów Perla i 0 programów Python donProgramy Perl i 1 program Python powodują znaczny wzrost zużycia pamięci. Staje się to jeszcze bardziej problematyczne, gdy każdy głupiec piszący wolne oprogramowanie ma swój ulubiony język skryptowy / radtool, w którym chce programować ... Perl, Python, PHP, Ruby, JavaScript, powłoka Bourne'a, Bash, Csh, ...

Jeśli chodzi o przenośność: wiele interpretowanych języków (a także frameworków bibliotecznych) intensywnie wykorzystuje funkcje, które mogą być dostępne w dużych systemach Linux / desktop, ale niekoniecznie dostępne w mniejszych / osadzonych / MMU systemach. .soPrzychodzi na myśl zależność od dynamicznego ładowania modułu w czasie wykonywania ...


Dlaczego nazywacie ich głupcami? Dlaczego nie kodują w języku, który lubią? Jakiego języka powinni używać?
tshepang
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.