Tại sao Perl được cài đặt theo mặc định với hầu hết các bản phân phối Linux?


Câu trả lời:


27

Câu trả lời là / không gợi cảm, tùy theo quan điểm của bạn.

Perl rất hữu ích. Rất nhiều tiện ích hệ thống được viết hoặc phụ thuộc vào perl. Hầu hết các hệ thống sẽ không hoạt động đúng nếu Perl được gỡ cài đặt.

Một vài năm trước FreeBSD đã trải qua rất nhiều nỗ lực để loại bỏ Perl như một sự phụ thuộc cho hệ thống cơ sở. Đó không phải là một nhiệm vụ dễ dàng.


Là Perl được sử dụng trong hạt nhân? Tôi đang xem bài viết này tuyên bố rằng Kernel sử dụng khoảng 2.200 dòng mã Perl Ước tính Kích thước của GNU Linux . Ngoài ra, điều gì đã thúc đẩy câu hỏi; Trong khi cài đặt Arch Linux, tôi nhận thấy rằng Perl được cài đặt trong gói cơ sở , có tiện ích cốt lõi nào sử dụng Perl không?

9
@JoshVoigts kernel không sử dụng perl no. Tuy nhiên, quá trình xây dựng kernel không sử dụng một lượng perl hợp lý. Đối với Arch, người khác sẽ phải trả lời câu hỏi đó.
Patrick

3
Vì tò mò, FreeBSD đã thay thế Perl bằng gì?
Shadur


7
Hệ thống cơ sở FreeBSD về cơ bản là một repo mã nguồn khổng lồ với kernel, tiện ích và mọi thứ. Vì vậy, họ đã duy trì ngã ba Perl của riêng mình trong repo đó, đây là một nỗ lực lớn và khó có thể cập nhật với Perl ngược dòng. Vì vậy, thật hợp lý khi họ loại bỏ Perl khỏi hệ thống cơ sở và chỉ cài đặt nó như một cổng, việc cập nhật dễ dàng hơn nhiều (vì họ chỉ tìm nạp các bản phát hành Perl ngược dòng và biên dịch chúng).
cjm

24

Trong bài đăng Perl v1.0 ban đầu của Larry Wall cho nhóm tin comp.source.misc vào ngày 18 tháng 12 năm 1987, ông nói:

Nếu bạn có một vấn đề thường sử dụng sed hoặc awk hoặc sh, nhưng nó vượt quá khả năng của họ hoặc phải chạy nhanh hơn một chút và bạn không muốn viết điều ngớ ngẩn trong C, thì perl có thể dành cho bạn.

Trong một giải trình sau đó , ông nói thêm một chút:

Nhưng sự thất vọng của lập trình shell Unix đã dẫn trực tiếp đến việc tạo ra Perl, điều mà tôi không thực sự có thời gian để kể. Nhưng về cơ bản, tôi thấy rằng kịch bản shell bị hạn chế về bản chất bởi thực tế là hầu hết các động từ của nó không nằm trong tầm kiểm soát của nó và do đó phần lớn không nhất quán với nhau. Và các danh từ bị bần cùng hóa, bị giới hạn trong chuỗi và tệp, với kiểu người biết ...

Phá hủy hơn là suy nghĩ rằng đó là vũ trụ một chiều: bạn hoặc được lập trình bằng C hoặc bạn được lập trình bằng vỏ, vì rõ ràng chúng ở hai đầu đối diện của One True Continuum. Perl xuất hiện khi tôi nhận ra rằng kịch bản không phải luôn luôn được xem là đối nghịch với lập trình, nhưng một ngôn ngữ duy nhất có thể khá tốt cho cả hai. Điều đó đã mở ra một hốc sinh thái khổng lồ. Nhiều người trong số các bạn đã nhìn thấy sơ đồ vỏ sò cũ của tôi, với hai chiều của sự khéo léo và sự nhanh nhẹn.

Ngày nay, Perl là một sự thay thế / thay thế tiêu chuẩn cho các nhu cầu phân tích cú pháp và phân tích cú pháp văn bản, và có sức mạnh lớn hơn nhiều so với các công cụ truyền thống. Do tính linh hoạt cực cao (một số người sẽ nói là không linh hoạt), Perl đã được mô tả là " chuỗi ngôn ngữ kịch bản của quân đội Thụy Sĩ ". Nhiệm vụ thường có thể ngắn hơn đáng kể, dễ dàng hơn hoặc mở rộng hơn khi giải quyết bằng Perl. Nhiều, nhiều công cụ hệ thống, tập lệnh và chương trình lớn hơn được viết thường xuyên bằng Perl. Vì vậy, trong môi trường Linux hiện đại, Perl giờ đây là một công cụ Unix tiêu chuẩn khác và thực sự không thể thiếu.


4
  1. Perl được phát triển cho Unix vì các công cụ này không đủ mạnh. Đối với thể thao, bạn có thể tìm kiếm awksedtrong đó (Perl).
  2. Perl (trong số những thứ khác) được lấy cảm hứng từ hệ vỏ Unix (và C, rất quan trọng đối với Unix - hoặc cách khác, có lẽ).
  3. Ngoài ra, Perl có thể được phân phối theo giấy phép GNU . Một số người sẽ xem xét rằng không liên quan từ quan điểm kỹ thuật, nhưng nó cho thấy sự xen kẽ.
  4. Điều cuối cùng tôi có thể nghĩ đến là LAMP, đó là một "gói phần mềm" kết nối mạng. (Kiểm tra trên Wikipedia: P là, hoặc ít nhất là, Perl; L là Linux.) (Nhưng điểm cuối cùng này là một chút "gà hoặc trứng".)

4
P trong LAMP ngày nay thường là PHP hoặc Python. Tôi nghĩ Perl là một cách sử dụng từ viết tắt.
darvids0n

Notepad ++ được phát hành theo giấy phép GNU (cụ thể là GNU GPL). AFAIK có một chút "xen kẽ" giữa Notepad ++ và các bản phân phối Linux khác nhau. Chỉ cần đề cập đến một ví dụ cho điểm số 3 của bạn.
một CVn

@ MichaelKjorling: Bạn có đồng ý rằng một số giấy phép nhất định sẽ cản trở sự lan rộng của ứng dụng của bạn (hoặc, trong trường hợp này là ngôn ngữ lập trình) trong thế giới Linux, trong khi các giấy phép khác sẽ không gây ra những trở ngại như vậy? Điều đó không có nghĩa là bạn có thể cấp phép theo cách của mình vào một bản phân phối, nếu bạn thực sự nghĩ đó là những gì tôi đã nói. (Tôi nghĩ là không.)
Emanuel Berg

@darvidsOn: Vâng ... đó là những gì tôi đã nói (?). (Tôi đoán đó là một sự trùng hợp ngẫu nhiên khi tất cả các ngôn ngữ kịch bản lớn đó đều bắt đầu bằng chữ P.)
Emanuel Berg

@EmanuelBerg Bạn đã đề cập đến "sự xen kẽ" giữa Perl và Linux dựa trên thực tế là Perl có giấy phép GNU. Có rất nhiều phần mềm trong cả hai cổng FreeBSD và nhiều bản phân phối Linux có các giấy phép khác và rất nhiều phần mềm không chạy trên cả hai được cấp phép theo các giấy phép GNU khác nhau (GPL, LGPL, FDL, ...).
một CVn

1

Tôi nghĩ rằng câu trả lời cho câu hỏi này là một phần lịch sử, một phần thực tế.

Đối với lịch sử, Perl là một ngôn ngữ đẳng cấp. Nó sang trọng hơn Python (không đề cập đến PHP), mặc dù tôi không biết cái gì là "tốt hơn" (nếu điều đó bằng cách nào đó có thể được phân tích chính thức, điều mà tôi nghi ngờ). Và những anh chàng đẳng cấp đang sử dụng (hoặc đã sử dụng) Perl thường là những người quyết định những gì sẽ là một phần của bản phân phối Linux.

Đối với những gì là thực tế, Perl vẫn keo của rất nhiều thứ: các HĐH và các trang web như nhau (một lần nữa, LAMP, không quên một trong hai Python hay PHP). Vậy tại sao không bao gồm bất cứ điều gì hữu ích cho nhiều mục đích? Và thậm chí còn hơn thế, tại sao loại bỏ bất cứ thứ gì có ở đó (và không gây ra bất kỳ tác hại nào), có hữu ích không?

Nhưng, như nó xảy ra, có một lưu ý về vấn đề này trong số phát hành gần đây nhất của Tạp chí Linux (# 151, tháng 6 năm 2013). Rõ ràng, để biên dịch nhân Linux, một vài tập lệnh Perl ngắn và đơn giản được sử dụng. (Một lần nữa, vai trò "keo" của Perl trong các hệ điều hành.) Bây giờ, một trong những nhà phát triển nhân đã gửi các bản vá viết lại các tập lệnh đó, lần này không phải trong Perl, mà là "tập lệnh shell Unix" (là sh?). Theo cách đó, Perl sẽ không phải cài đặt cho bất kỳ ai biên dịch kernel. Nhưng, bản vá đó (đã gửi nhiều lần) đã không được chọn. Và một lý do cho điều này là, một khi trời lạnh, Perl không có khả năng được cho vào. Những người như Perl, và họ không muốn chia tay với nó.

Bây giờ, điều này chỉ chạm đến rìa của câu hỏi này vì có lẽ một số rất nhỏ người dùng Linux có khả năng biên dịch kernel. Nhưng nó vẫn là một mảnh khác của câu đố (và tôi nghi ngờ có rất nhiều).


1
Không phải là một bình luận cho bạn, Emanuel, nhưng đối với những người không muốn chia tay với perl, việc cài đặt nó sẽ khó đến mức nào nếu bạn cần / muốn nó?
MattBianco
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.