Tại sao các ứng dụng Linux thường đặt ngôn ngữ mà nó được viết trong bản tóm tắt?


19

Khi giới thiệu các ứng dụng, Windows và Mac chủ yếu nói về các tính năng. Mặt khác, các ứng dụng Linux có nhiều chi tiết hơn về ngôn ngữ nào được sử dụng để viết nó (và các thư viện đi kèm) thay vì các tính năng. Tại sao vậy?

Tôi có thể hiểu được sự khác biệt giữa GTK + so với QT tạo ra sự khác biệt chỉ vì các yêu cầu tích hợp trên máy tính để bàn, nhưng C vs C ++ so với Python vs hội vs vv? Có thật không?

Ví dụ: foo là một blah blah đơn giản được viết bằng C / GTK +.


2
Tôi muốn đề cập rằng nhiều ứng dụng Windows không phải là nguồn mở ... Thường thì chúng được đóng gói với các phụ thuộc mà chúng cần, ngay cả khi chúng là nguồn mở. Một ví dụ là pidgin. Bạn không phải tải xuống gtk riêng trên windows để pidgin hoạt động. Bạn có thể thấy việc bao gồm ngôn ngữ trên các cửa sổ sẽ xảy ra khi nó yêu cầu sự phụ thuộc bên ngoài mặc dù tôi không thể nghĩ ra bất kỳ ví dụ nào vào lúc này vì dường như hầu hết đều cố gắng không yêu cầu sự phụ thuộc bên ngoài.
xenoterracide

Câu trả lời:


21

Tôi nghĩ rằng người dùng Linux truyền thống (một người tin học táo bạo thực sự tự cài đặt hệ thống) không quan tâm đến thông tin đó (công nghệ nào đứng sau công cụ này?). Tôi cũng là một trong những kẻ lập dị, những người sẽ không cài đặt và sử dụng một gói chỉ vì nó sử dụng một số công nghệ mà tôi không thích. Một số người gọi đây là loại tôn giáo hành vi tất nhiên. Ngớ ngẩn phải không?

Dù sao tôi có thể nghĩ ra hai lý do:

  • Các trình đóng gói cũng táo tợn (nếu không nhiều hơn) so với những người dùng Linux đó, vì vậy họ thấy nên thêm thông tin như vậy.

  • Tôi nghĩ rằng khi những người đóng gói này đưa thông tin như vậy vào các mô tả gói của họ, họ có khả năng thực hiện nó như một hình thức khuyến mãi. Nó hoạt động nhiều lần (nó làm việc với tôi khá nhiều lần).

Tất nhiên đây chỉ là phỏng đoán.


Vâng, tôi nghĩ rằng bạn có một điểm tốt ở đây. Văn hóa * nix là một văn hóa thực sự.
Jordan Parmer

1
Nó cũng tiết kiệm thời gian khi tự hỏi "này, Chromium được viết bằng ngôn ngữ nào?".
greenoldman

@macias: Sự đam mê trong tôi khiến tôi nhìn vào sự phụ thuộc của gói, nơi mà người đam mê này thường sẽ tìm ra ngôn ngữ. Trên thực tế, người đam mê này rất sùng đạo đến nỗi bất cứ khi nào anh ta truy cập một trang web, anh ta cảm thấy khó chịu rằng anh ta không thể nhanh chóng kiểm tra ngôn ngữ mà công cụ lạ được viết bằng ngôn ngữ nào. Nếu đó là <chèn ngôn ngữ không được yêu thích>, thì geek này sẽ chạy đi, và nếu đó là <chèn ngôn ngữ yêu thích>, định kiến ​​của geek cho thấy.
tshepang

4
Một ví dụ thực tế về công nghệ có thể là một vấn đề là mono / .NET vì Microsoft có rất nhiều bằng sáng chế trong lĩnh vực đó và có một lịch sử lâu dài về việc "không thân thiện" ... Vì vậy, không có gì lạ khi một số người muốn biết những điều này để tránh những vấn đề trong tương lai.
Johan

1
Từ góc độ quản trị hệ thống, những gì một dự án được viết thường chỉ ra những phụ thuộc nào phải có sẵn.
JM Becker

12

Ý nghĩa của tôi là nó liên quan đến thứ hai trong bốn quyền tự do phần mềm :

Tự do nghiên cứu cách chương trình hoạt động, và thay đổi nó để làm cho nó làm những gì bạn muốn (tự do 1). Truy cập vào mã nguồn là điều kiện tiên quyết cho việc này.

Công khai ngôn ngữ (hoặc các tính năng kỹ thuật khác) hỗ trợ khả năng lựa chọn của mọi người và khuyến khích sự tham gia vào các dự án của những người thành thạo các ngôn ngữ đó.


10

Đây có thể là một phần lịch sử. Ngay cả trong quá khứ không xa, thông thường các quản trị viên hệ thống riêng lẻ sẽ xây dựng và cài đặt mọi thứ chạy trên hệ thống của họ.

Lưu ý về ngôn ngữ và thư viện đã được sử dụng để triển khai một công cụ đưa ra gợi ý cho quản trị viên về quy trình mà công việc sẽ diễn ra cho họ hệ thống .

Trong thời đại phổ biến và vươn xa các công cụ quản lý gói này, đây là một chút lỗi thời, nhưng văn hóa unix bảo thủ theo nghĩa là không vứt bỏ những thứ dường như đang hoạt động, vì vậy sẽ mất một thời gian trước khi thói quen này chết.


2
Một ví dụ điển hình mà tôi nghĩ đến là một ứng dụng web có tên là redmine. Nó được viết bằng Ruby on Rails, theo mặc định, cả ruby ​​và rails đều không được cung cấp trên hệ thống. Các ứng dụng Java cũng như thế này.
xenoterracide

10

Trong phần mở rộng cho câu trả lời của jasonwryans :

Nếu bạn đặt tên cho ngôn ngữ mà nó được viết, người nhận nó có thể ước tính mức độ khó của việc cung cấp một bản vá, hoặc để có được một số hiểu biết, hoặc để mở rộng chương trình.

Tất nhiên điều này chỉ có ý nghĩa nếu bạn là một lập trình viên.

Bạn đã thấy các bản tóm tắt ở đâu? Trong một kho lưu trữ, hoặc một gói như .deb hoặc .rpm?

Nếu bạn xây dựng nó từ nguồn, thông tin có thể hữu ích để xác định, cho dù bạn phải cài đặt các công cụ khác (trình biên dịch, thư viện, công cụ xây dựng).


Chỉ cần duyệt qua kho Ubuntu (thông qua Trung tâm phần mềm). Hầu như tất cả các tóm tắt bao gồm ngôn ngữ trong câu đầu tiên. Tôi thấy thật buồn cười khi hầu hết các nhà phát triển Linux dường như đang thực sự phát triển cho các nhà phát triển Linux khác thay vì người dùng.
Jordan Parmer

@ j0rd4n không phải là người dùng Ubuntu, bạn có thể cho một ví dụ về gói phần mềm không? Ý tôi là họ thực sự đưa C vào mô tả của Firefox? Tôi sẽ suy đoán rằng khoảng 90% phần mềm trên Linux không dành cho người dùng cuối, đó là một thư viện. Ngoài ra ... bạn đã không nhận ra rằng Nhà phát triển Linux tự phát triển? thật đáng buồn nhưng là sự thật ... với tư cách là một lập trình viên perl Tôi chưa viết bất cứ điều gì cho người dùng cuối :(
xenoterracide

Tôi sử dụng Ubuntu, với tiếng Đức là ngôn ngữ giao diện, vì vậy nó sẽ chỉ giúp một vài người trong chúng tôi, trích dẫn một số ví dụ, nhưng tôi có thể đảm bảo với bạn: Trong synaptics, công cụ cài đặt cho phần mềm mới, tôi đã thử nghiệm và chọn 5 gói - và đã không tìm thấy một trong số họ, đề cập đến ngôn ngữ mà nó được viết.
người dùng không biết

Mở rộng nhận xét của tôi: Thông thường, phần mềm được viết cho Unix (nếu bạn tìm thấy các tệp tự động và như vậy) và không nhất thiết phải được sản xuất cho linux, nhưng vì tính tương thích, có sẵn trên các hương vị unix khác nhau.
người dùng không xác định

6

Unix, và giờ là LInux và BSD, luôn có một cơ sở phần mềm thực sự bị bẻ gãy và một cơ sở phần cứng đa dạng hơn rất nhiều đã tồn tại trong quá khứ gần đây. Điều quan trọng là phải biết rằng một số phần mềm chạy trong các phần mềm giao tiếp bạn có trên hệ thống của bạn hoặc bạn có thể biên dịch mã nguồn. Nếu bạn không có trình thông dịch Lisp thông thường hoặc trình thông dịch Tcl hoặc trình thông dịch bất kỳ, bạn không muốn tải xuống nguồn, chỉ để biết rằng bạn không thể chạy nó.

Có một mô tả về ngôn ngữ gì đó đã được ngăn chặn rất nhiều thời gian lãng phí.


4

Khi được nhắc nhở, đây là thứ gì? Một nhà phát triển sẽ có xu hướng mô tả bản chất của nó, mà đối với họ được gắn với mã nguồn, thay vì chức năng của nó. Ai đó sẽ hy vọng viết lại mô tả để lấy người dùng làm trung tâm hơn trước khi kết thúc gói, nhưng đề cập đến ngôn ngữ vẫn có thể có liên quan, ví dụ như khả năng mở rộng và khả năng viết kịch bản, hoặc hữu ích cho cơ hội thu hút người đóng góp.


Kho lưu trữ Ubuntu có số lượng mô tả gói đáng kinh ngạc rằng năm từ đầu tiên chứa ngôn ngữ. Bản thân tôi là một nhà phát triển, nhưng tôi chưa bao giờ thấy người dùng của mình quan tâm. Tuy nhiên, tôi có thể hiểu rằng là nguồn mở, nó có thể có ý nghĩa hơn, nhưng chúng ta đang phát triển cho mọi người hay các nhà phát triển khác?
Jordan Parmer

1
@ j0rd4n Nhà phát triển cũng là người!
Zach

3

Từ quan điểm của tôi, thông tin như vậy rất cần thiết để thu hút những người đóng góp mới, cũng như cung cấp cho người dùng tiềm năng một ý tưởng ngay lập tức về việc họ có thể đòi hỏi bao nhiêu công việc để tích hợp ứng dụng vào hệ thống của họ.

  • Một khía cạnh chung là các thư viện được sử dụng khi chạy ứng dụng.

Một số cài đặt được giới hạn trong một số bộ công cụ được chọn, như GTK + nhưng không phải là QT hoặc ngược lại. Đối với một quản trị viên duy trì một hệ thống và thường xuyên cập nhật các thành phần của nó trong một thời gian dài, đây có thể chỉ là một câu hỏi thực tế và không phải là một câu hỏi tôn giáo.

  • Một khía cạnh khác là các thư viện được sử dụng và các điều kiện tiên quyết cần thiết để biên dịch ứng dụng.

Tức là đối với người dùng phân phối Linux dựa trên nguồn, nó tạo ra sự khác biệt lớn cho dù ứng dụng được viết bằng C hay Objective-C, vì trình biên dịch của họ cần hỗ trợ ngôn ngữ ngay từ đầu. Các ngôn ngữ khác có thể khiến bạn cần phải cài đặt một đống thư viện khổng lồ. Câu hỏi sau đó là, một lần nữa, bạn sẵn sàng chấp nhận bao nhiêu công việc để biên dịch ứng dụng này.

  • Một khía cạnh khác là ý định thu hút những người đóng góp.

Hầu hết các nhà phát triển có sở thích cho một số ít ngôn ngữ hoặc có thể đơn giản là thiếu kinh nghiệm trong các ngôn ngữ khác. Để cho phép số lượng người đóng góp nhiều hơn cho một ứng dụng, một số dự án thậm chí còn chia nguồn của họ thành hai ngôn ngữ khác nhau (như Wesnoth, Vega Strike, Naev, chỉ để nêu tên một số). Một trong số chúng cho ứng dụng lõi (như C hoặc C ++), một cái khác để dễ dàng sửa đổi (như Python hoặc Lua). Đây là một liên kết đến một chương của "Kiến trúc của các ứng dụng nguồn mở" mô tả cách thức và lý do tại sao điều này được thực hiện trong Wesnoth.

  • Cuối cùng, rõ ràng có rất nhiều thành kiến ​​và thành kiến ​​đối với một số ngôn ngữ.

Tôi sẽ chỉ nói rằng tôi đã thấy phần mềm kém hiệu quả khủng khiếp được viết bằng bất kỳ ngôn ngữ nào. Nếu bạn hỏi tôi, về hiệu quả, chất lượng mã của ứng dụng quan trọng hơn nhiều so với ngôn ngữ mà nó được viết.


1

Tôi nghĩ rằng rất nhiều trong số đó phải làm với quảng cáo hiệu suất. Một ứng dụng được viết bằng ngôn ngữ được biên dịch (C, C ++, ...) sẽ thực hiện một công việc tốt hơn rất nhiều so với một ứng dụng được viết bằng ngôn ngữ script (perl, python, ...).

Nhưng nó cũng liên quan đến khả năng tương thích. Một ứng dụng được viết bằng ngôn ngữ kịch bản cũng có khả năng dễ mang theo hơn trên các kiến ​​trúc & hệ điều hành mà không cần sửa đổi gì.


Vì vậy, trong cả hai trường hợp, bạn có một đối số pro và đối số - không thỏa mãn. Mã được biên dịch là nguồn đóng cũng phổ biến trên các cửa sổ, do đó, đối số hiệu năng sẽ không phân biệt chương trình Linux
người dùng không xác định

1
gì? bạn chỉ vô nghĩa. Pro và con chính xác là lý do tại sao bạn sẽ liệt kê ngôn ngữ. Nếu một người chỉ có 'pro', thì mọi người sẽ sử dụng nó. Và tôi thậm chí không hiểu những gì bạn đang cố gắng nói về mã được biên dịch và hệ điều hành.
Patrick

Tôi hiểu câu trả lời của bạn theo cách đó, rằng mọi người ngầm quảng cáo hiệu suất, nếu nó được viết bằng C / C ++ và họ ngầm quảng cáo tính di động nếu nó không được viết bằng C / C ++. Đó luôn là một đối số - chống lại tính di động, hoặc chống lại hiệu suất - cả hai lý do, không đề cập đến ngôn ngữ. Vậy tại sao đôi khi nó lại thế này, và trong những lần khác thì ngược lại?
người dùng không xác định

0

Trên các hệ thống máy tính để bàn / máy chủ ngày nay có thể không liên quan lắm, nhưng đối với các hệ thống nhỏ hơn, từ hệ thống nhúng đến netbook và máy tính bảng SSD, ngôn ngữ hoặc thư viện được sử dụng bởi một chương trình có thể là vấn đề khó khăn, cả do kích thước và cân nhắc tính di động.

Về kích thước: Thêm trình thông dịch cho một ngôn ngữ bổ sung, cùng với tất cả các mô-đun tiêu chuẩn và mô-đun bổ trợ thường được sử dụng, có thể dễ dàng thêm hàng trăm megabyte vào yêu cầu lưu trữ. Điều tương tự cũng xảy ra với các gia đình thư viện, đặc biệt là các gia đình liên kết với các môi trường máy tính để bàn lớn như Gnome và KDE. Tệ hơn nữa, từ việc chạy nđến n+1các chương trình Perl có thể không bổ sung quá nhiều vào yêu cầu sử dụng bộ nhớ, vì có thể chia sẻ rất nhiều bộ nhớ, nhưng đi từn các chương trình Perl và 0 chương trình Python sangnCác chương trình Perl và 1 chương trình Python dẫn đến việc sử dụng bộ nhớ tăng đột biến. Điều này càng trở thành vấn đề khi mọi phần mềm viết lách miễn phí đều có ngôn ngữ script / radtool yêu thích của riêng họ mà họ muốn lập trình trong ... Perl, Python, PHP, Ruby, JavaScript, Bourne shell, Bash, Csh, ....

Về tính di động: Rất nhiều ngôn ngữ được dịch (cũng như khung thư viện) sử dụng nhiều tính năng có thể có trên các hệ thống máy tính để bàn / máy chủ Linux lớn nhưng không nhất thiết có sẵn trên các hệ thống nhỏ hơn / nhúng / MMU. Sự phụ thuộc vào .sotải mô-đun động khi chạy đến với tâm trí ...


Tại sao bạn gọi họ là những kẻ ngốc? Tại sao họ không viết mã bằng ngôn ngữ họ thích? Thay vào đó họ nên sử dụng ngôn ngữ nào?
tshepang
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.