2009-02-26 28 views
6

Sử dụng một yếu tố hoặc ra, Arc hoặc bất cứ điều gì làm ví dụ (lưu ý: yếu tố là một ví dụ xấu bởi vì nó có một tập hợp lớn các thư viện thực tế). Cho phép nói rằng bạn đang xem xét sử dụng một ngôn ngữ lập trình. Có một tập hợp lớn các thư viện thực tế có quan trọng không? Nếu ngôn ngữ của bạn được thiết kế tốt, thì sẽ dễ dàng tạo ra một thư viện 'chuỗi' hoặc một thư viện 'ngày'. Có lẽ ngay cả một khuôn khổ web?Ngôn ngữ lập trình mới hay mới nổi thực sự cần thư viện thực tế?

Tôi đề cập đến điều này, bởi vì khi một ngôn ngữ xuất hiện, có vẻ như ai đó sẽ trả về 'thư viện thực tế'.

Trả lời

11

Chắc chắn vấn đề - chín lần trong số mười, tôi sẽ chọn một ngôn ngữ với các thư viện tốt, được hỗ trợ tốt giúp hoàn thành những gì tôi muốn làm. Đây không phải là để nói rằng tôi sẽ không thích viết thư viện của riêng tôi (hoàn toàn ngược lại), nhưng đối với một dự án sản xuất, kết quả nhanh chóng, chính xác là rất quan trọng, đó sẽ không phải là một lựa chọn thực tế bởi bất kỳ khoảng thời gian nào trí tưởng tượng.

3

Thư viện thực là quan trọng. Tôi không được trả tiền để viết một khuôn khổ, tôi được trả tiền để tăng thêm giá trị cho một doanh nghiệp. Nếu tôi nói với một khách hàng, tôi phải tính phí cho họ để viết một loại dữ liệu chuỗi, tôi sẽ mất công việc/hợp đồng của mình.

2

Chỉ cần nhìn vào phần lớn các câu hỏi ở đây trên SO để xem các công cụ quan trọng như thế nào đối với mọi người.

Điều đó nói rằng, nếu bạn tìm thấy một ngôn ngữ mới phù hợp với nhiệm vụ của bạn thực sự tốt và bạn có thời gian và độ nghiêng để viết các công cụ của riêng bạn thì tất cả có nghĩa là bổ nhào. Đó là một cách mà ngôn ngữ mới nhận được thư viện đẹp, sau tất cả.

4

Java và .Net có những người hư hỏng với sự phong phú của các lớp trong khung hoặc trong các thư viện chất lượng cao bổ sung (hoàn toàn miễn phí và nguồn mở). Cũng vậy với Ruby và Python. Sẽ rất khó để áp dụng một ngôn ngữ mới mà không có một thư viện như vậy, vì năng suất của bạn sẽ bị ảnh hưởng một cách khủng khiếp bởi phải thực hiện lại mọi tính năng bạn cần.

Trừ khi đó là ngôn ngữ mang tính đột phá giới thiệu một cái gì đó cực đoan như lập trình có chủ ý (tôi nói với máy tính những gì tôi muốn nó làm và nó suy ra mã thích hợp để làm điều đó) ... Tại sao, bạn có một trong số đó? :-)

1

Thư viện lớn làm cho ngôn ngữ hiệu quả hơn nhiều để sử dụng. Một ngôn ngữ thực sự tuyệt vời mà không hỗ trợ phân tích cú pháp XML, mật mã, khung công tác web, khung giao diện người dùng, v.v. mất nhiều thời gian hơn để tạo mã làm việc. Đối với mục đích học tập, một ngôn ngữ không có thư viện lớn là tốt, nhưng với mục đích thực tế, nó sẽ tốn thời gian và tiền bạc để sử dụng một ngôn ngữ như vậy. Hãy tưởng tượng nếu mỗi lần bạn muốn tải một hình ảnh, bạn phải viết mã để phân tích cú pháp tiêu đề .jpg. Điều gì sẽ xảy ra nếu bạn phải viết mã cho trình phân tích cú pháp XML của mình thay vì tải nó vào một trình dựng sẵn. Bạn có thể sẽ làm hỏng nó và tốn rất nhiều thời gian để gỡ lỗi. Nếu mục tiêu của dự án là tạo ra một công cụ mới, việc viết mã hỗ trợ không phải là việc sử dụng thời gian của bạn.

1

Tôi nghĩ rằng lý do lớn cho sự phổ biến của Python là thư viện chuẩn lớn của nó. Tương tự với Java và PHP. Trong thực tế, tôi có thể nói rằng việc lựa chọn các thư viện là quan trọng hơn bản thân ngôn ngữ.

+0

Tôi muốn đi xa như vậy để nói rằng điều duy nhất đi cho PHP (và có thể java) là thư viện mà họ đi kèm với. như ngôn ngữ đi, chúng đều khá đáng sợ. – SingleNegationElimination

+0

Tôi đồng ý. Và đó là lý do tại sao tôi không làm như nhiều C# lập trình như tôi muốn. Đơn giản là không có nhiều phần mềm nguồn mở chất lượng cao cho C#. –

1

Nếu ưu tiên hàng đầu của bạn là tạo một sản phẩm đã hoàn thành với ít thời gian và công sức nhất có thể, thì có, có các thư viện có sẵn quan trọng. (Nếu mục tiêu của bạn là thú vị, hoặc học tập vì lợi ích của việc học tập, thì việc viết thư viện của riêng bạn có thể là một trải nghiệm tốt.)

Một thư viện tốt là đủ trưởng thành mà nhiều người đã sử dụng nó và loại bỏ hầu hết các lỗi.Nó không quan trọng như thế nào tuyệt vời ngôn ngữ lập trình của bạn là hoặc làm thế nào nó là dễ dàng để viết một thư viện từ đầu. Không có sự thay thế nào cho việc kiểm tra mã của bạn theo thời gian.

Rất nhiều thư viện không thú vị hoặc thú vị để viết và tái hiện lại chúng sẽ không cách mạng hóa thế giới theo bất kỳ cách nào. Chỉ có rất nhiều bạn có thể làm với một thư viện ngày hoặc một thư viện chuỗi bất cứ điều gì. Nó hoạt động hoặc không. Nhiều thư viện chỉ đơn giản là thực hiện một tiêu chuẩn hoặc một số hành vi tiêu chuẩn thực tế, và ai đó chỉ cần phải slog thông qua các công việc cần thiết để làm cho nó đúng. Bạn càng ít phải làm điều đó, thì càng tốt.

Bất kỳ ngôn ngữ hoàn toàn mới nào có thể tận dụng lợi thế của các thư viện hiện có đều bắt đầu theo cách trước, theo ý kiến ​​của tôi. Ví dụ, Clojure, mặc dù một ngôn ngữ rất mới, cũng có quyền truy cập vào tất cả các thư viện của Java. Điều này được cho là một lý do lớn mà nó đang làm rất tốt vào lúc này. Nỗ lực được đưa vào những điều mới lạ hơn là tái phát minh ra bánh xe.

0

Đó là một ý tưởng hấp dẫn và chắc chắn nó hoạt động nếu bạn là Paul Graham hoặc Chuck Moore.

Nó có thể hoạt động nếu miền của bạn rất bị giới hạn và bạn sẽ không nhận được yêu cầu được đưa ra ngoài miền đó, đơn giản như ứng dụng yêu cầu tính năng "nhập từ Excel". Mặt khác, Paul Graham đã sử dụng Lisp để viết một hệ thống cửa hàng web, đó là một yêu cầu rất rộng; Tôi muốn biết cách anh ta xử lý một thứ như xuất PDF, liệu anh ta có đưa ra thông số PDF và cẩm nang Lisp cho một số thực tập vào kỳ nghỉ hè từ MIT hay anh ta đã đi đến thư viện C?

Nó có thể hoạt động nếu tên miền của bạn được thúc đẩy bởi logic hoặc bằng các nguyên tắc tự nhiên lâu dài, giống như mô phỏng thiên văn học. Nếu họ là yêu cầu của con người, họ sẽ có đầy mâu thuẫn và trường hợp đặc biệt (chuỗi và thư viện ngày rơi vào danh mục đó), và không có tính năng trừu tượng hoặc ngôn ngữ hoàn toàn cắt ngang, bạn sẽ có để đăng nhập thông qua các trường hợp đặc biệt cho dù bạn đang viết bằng Haskell hay PHP. Nó có thể hoạt động ở nơi tối ưu hóa rất quan trọng (EDIT: và nơi bạn đủ thông minh để tự tối ưu hóa nó) - bạn có một hệ thống bị tước bỏ, nơi bạn biết mọi lớp của ngăn xếp bởi vì bạn đã tự thực hiện nó với một mục tiêu cụ thể trong tâm trí.

Tôi liên kết toàn bộ cụm ý tưởng với sinh viên tốt nghiệp: họ nằm trong top 1% về kỹ năng lập trình và thông minh chung; họ đang làm việc trong một miền rất hẹp; họ có thể không có thiết bị tốt nhất để họ cố gắng loại bỏ mọi thứ và tối ưu hóa chiều sâu; và họ không có học tập và làm việc tiến thoái lưỡng nan của các lập trình viên làm việc.

1

Bạn nghĩ rằng các thư viện chuỗi dễ viết? Đi xem Unicode, UTF-8, UTF-16, các trang mã kế thừa, các vấn đề về thứ tự byte và không có gì.

Bạn nghĩ rằng thư viện ngày/giờ thật dễ viết? Đi có một cái nhìn vào giây nhuận, chương trình đánh số tuần và whatnot.

Có những điều này được suy nghĩ cho bạn, được triển khai một lần và được triển khai đúng cách, tiết kiệm thời gian và đau đầu hơn bạn nghĩ.

Các vấn đề liên quan