it-swarm-vi.com

Tại sao có nhiều ngôn ngữ lập trình? Tại sao các ngôn ngữ mới vẫn đang được thực hiện?

Tại sao có nhiều ngôn ngữ lập trình?

Và điều gì thúc đẩy ai đó tạo ra một ngôn ngữ lập trình mặc dù thực tế là các ngôn ngữ khác đã tồn tại?

51
Moshe

Ngôn ngữ lập trình phát triển

Các ngôn ngữ lập trình mới thường học từ các ngôn ngữ hiện có và thêm, xóa và kết hợp các tính năng theo một cách mới. Có một vài mô hình khác nhau như hướng đối tượng chức năng và nhiều hiện đại ngôn ngữ cố gắng trộn các tính năng từ cả hai.

Ngoài ra còn có các vấn đề mới cần được giải quyết, ví dụ: sự gia tăng của CPU đa lõi. Giải pháp phổ biến nhất cho vấn đề đó là các luồng, nhưng một số ngôn ngữ lập trình cố gắng giải quyết vấn đề tương tranh theo một cách khác, ví dụ: Người mẫu diễn viên. Xem Erlang - Phần mềm cho một thế giới đồng thời

37
Jonas

Đó là một chu kỳ. Bạn bắt đầu một ngôn ngữ mới và bạn có thể tự do thoát khỏi tất cả các cú pháp xấu và các lựa chọn kém từ những người đi trước. Trong phiên bản 1, ngôn ngữ có vẻ tuyệt vời vì nó không có bất kỳ hành lý nào và nó hoàn thành công việc. Sau đó, trong các phiên bản mới hơn, bạn bắt đầu thử nghiệm các tính năng có thể không hoạt động hoặc bạn mang các tính năng từ các ngôn ngữ mới hơn, khác khiến cho cú pháp của bạn bị thiếu một chút. Xin lưu ý, sau một vài phiên bản nữa, bạn nhận ra rằng ngôn ngữ của bạn bây giờ phức tạp như ngôn ngữ bạn đã thay thế, với các vấn đề cú pháp ngớ ngẩn và hành lý kế thừa. Và đột nhiên, bạn nhận ra rằng nếu bạn tạo một ngôn ngữ mới, bạn có thể sửa tất cả ...

23
RationalGeek

Vì lý do tương tự, có búa, tua vít, tay cầm, cưa máy, búa khoan, xà beng và một loạt các công cụ khác: không phải ngôn ngữ nào cũng hoàn hảo cho mọi nhiệm vụ. Một số ngôn ngữ được nhắm mục tiêu vào các lĩnh vực vấn đề cụ thể: R đặc biệt tốt cho phân tích thống kê, C đặc biệt tốt cho việc viết các hạt nhân hệ điều hành, Haskell đặc biệt tốt cho các tính toán nặng về toán học hoặc tài chính, Erlang đặc biệt tốt trong lập trình đồng thời, v.v.

Ngoài ra, vì cùng một lý do mà áo sơ mi có nhiều màu sắc khác nhau: một số người chỉ thích "phong cách" của ngôn ngữ này hơn ngôn ngữ khác.

Và, tất nhiên, rất nhiều lập trình viên cảm thấy thú vị khi phát minh ra một ngôn ngữ mới, chỉ để xem điều gì xảy ra, hoặc có lẽ vì họ có một số kiến ​​thức về ngôn ngữ và muốn gãi ngứa, hoặc thử một số ý tưởng.

11
mipadi

Bởi vì tất cả đều hút (cách này hay cách khác).

Ngay bây giờ, chúng tôi đã tạo ra khoảng 5000 ngôn ngữ để mô tả các vấn đề tự nhiên và không có ngôn ngữ nào có sẵn để viết chương trình (một ví dụ sẽ là "Tiếng Anh").

Cho đến khi ai đó tìm ra cách tạo ra một ngôn ngữ lập trình có thể diễn đạt những gì bạn có thể diễn đạt trong một câu bằng ngôn ngữ tự nhiên, họ sẽ tiếp tục đến.

8
Aaron Digulla

Rõ ràng một động lực quan trọng để tạo ra một ngôn ngữ mới là đạt được điều gì đó tốt hơn các ngôn ngữ đã có. Và vì luôn có chỗ để cải tiến, sẽ luôn có những ngôn ngữ mới.

Lợi ích thương mại là một lý do lớn khác. Tôi tin rằng điều quan trọng là ví dụ Microsoft rằng họ có thể cung cấp ngôn ngữ cho mọi nhu cầu để các công ty và nhà phát triển thích nền tảng của họ.

6
Carlos

Mã di sản. Nếu bạn bắt đầu một ngôn ngữ mới, bạn không phải lắng nghe/xem xét tất cả các khiếu nại khi bạn thay đổi ngôn ngữ cũ. Ngay cả khi mọi người đồng ý rằng việc triển khai mới tốt hơn, nó không thể phá vỡ mã cũ. Và có rất nhiều mã cũ ngoài kia.

6
JeffO

bởi vì thật vui khi tạo ngôn ngữ mới ngay cả khi chúng không có công dụng thực sự

Ngôn ngữ lập trình bí truyền (đôi khi được rút ngắn thành esolang) là ngôn ngữ lập trình được thiết kế để kiểm tra ranh giới của thiết kế ngôn ngữ lập trình máy tính, như một bằng chứng về khái niệm hoặc như một trò đùa.

4
jk.

Tạo một ngôn ngữ lập trình khá thú vị. Nó gần với công việc sáng tạo thuần túy, vì bạn không bị giới hạn bởi các yêu cầu trước đó. Không còn khó để thực hiện nữa, vì bạn luôn có thể biên dịch thành C và biên dịch mã C để có hiệu suất đầy đủ nếu bạn đang viết trình biên dịch ở vị trí đầu tiên.

Tất nhiên, hầu hết chúng ta có ít ý tưởng tốt hơn chúng ta nghĩ, vì vậy chúng thường gây thất vọng, hoặc không được ai yêu thích ngoài nhà thiết kế ban đầu.

Hãy suy nghĩ về bất kỳ ngôn ngữ lập trình mà bạn biết. Bạn có thể dễ dàng đưa ra một số điều bạn không thích về nó, phải không? Bạn có thể có ý tưởng làm thế nào những cái đó có thể được sửa chữa. Chỉ cần thêm một chút động lực, giả sử bạn biết nhiều về xây dựng trình biên dịch (và rất nhiều người làm), bạn có thể bắt đầu thiết kế và thậm chí tự thực hiện.

3
David Thornley

Trả lời ngắn gọn

Phát minh lại The Wheel ... Xu hướng hiện tại là gì ...

Chán dài trả lời

Nhiều người quên rằng "một ngôn ngữ mới tương tự khác dành cho lập trình viên cũ" là "ngôn ngữ mới đơn giản dành cho lập trình viên mới".

Tôi có ý gì cho điều đó?

Chà, đối với các lập trình viên "vài năm", Java hoặc C # có thể là ngôn ngữ lập trình bổ sung cho Cobol hiện tại, (OO/Thủ tục) Cơ bản, C/C++, trong khi đối với các lập trình viên "mới", = Java hoặc C # là các ngôn ngữ mới, trong khi Cobol, (OO/Thủ tục) Cơ bản, C/C++ không tồn tại đối với chúng, vì vậy việc phát minh lại bánh xe trở thành một điều phổ biến ...

Và, nếu có một xu hướng mới về công nghệ, mọi người có thể tạo ra một ngôn ngữ lập trình mới dựa trên xu hướng đó, như ecmascript/javascript cho web và lập trình chức năng ...

Chúc mừng.

2
umlcat

các ngôn ngữ lập trình mới được xây dựng vì nhiều lý do khác nhau, chủ yếu là do có mô hình lập trình mới hoặc vì những tiến bộ trong phần cứng, người ta tạo ra ngôn ngữ mới để tận dụng các tính năng phần cứng mới như đa nhiệm, v.v.

trong trường hợp của tôi, tôi thường xây dựng các trình biên dịch nhỏ (với ngôn ngữ lập trình mới), vì lý do đặc biệt. nếu tôi phân bổ các trò chơi và tôi tin rằng một ngôn ngữ lập trình dành riêng cho phát triển trò chơi sẽ dẫn đến mã nhỏ hơn nhanh hơn và phát triển nhanh hơn, sau đó tôi xây dựng nó. và cuối cùng, nó chỉ ra rằng nó cũng có thể được sử dụng cho lập trình mục đích chung khác.

Tôi nghĩ rằng hầu hết những người tạo ra ngôn ngữ lập trình đều có một mục đích cụ thể, có những người tạo ra chúng cho mục đích chung ngay từ đầu. nhưng hầu hết là không.

Nhân tiện, tôi nghĩ có quá nhiều ngôn ngữ lập trình, nhưng hàng trăm ngôn ngữ mới sẽ luôn xuất hiện. một số vui vẻ, một số ngoài mục đích thích hợp, như một dự án trường học, hoặc vì hàng trăm lý do khác. và sớm hay muộn một cái mới sẽ trở nên phổ biến. Nó sẽ không bao giờ kết thúc.

1
Sergio Fernandez

Có một vài lý do, hầu hết là vì mọi người nghĩ rằng những gì tồn tại không giúp dễ dàng giải quyết một số vấn đề. Một số chỉ để cho vui hoặc cho lợi ích học tập.

Tôi nghĩ có một lập luận chắc chắn rằng vấn đề về cách bạn thiết kế ngôn ngữ hoàn hảo vẫn chưa được giải quyết (và có thể không bao giờ). Vì vậy, miễn là mọi người có ý tưởng mới về những gì sẽ làm cho một ngôn ngữ tuyệt vời mọi người sẽ tiếp tục cố gắng. Một số trong những lần thử đó sẽ vạch ra không gian mới tuyệt vời như Erlang và một số sẽ thất bại, nhưng miễn là một cái gì đó được học từ flop cũng không sao.

0
Zachary K

Vì lý do tương tự, có rất nhiều <mọi thứ> và chúng tôi tiếp tục tạo <bất cứ thứ gì>

Chẳng hạn, có một tá PHP khung MVC, nhưng mọi người sẽ luôn tạo ra những cái mới để đáp ứng nhu cầu cụ thể, để tránh bị phụ thuộc vào một số nhóm khác hoặc chỉ để thử và tạo ra thứ gì đó tốt hơn. Điều tương tự cũng đúng đối với mọi loại công cụ hoặc ứng dụng.

Theo ý kiến ​​của tôi, đó là một điều rất tốt, gần như là một chiến thắng cùng có lợi cho mọi người.

0
Fosco

Các trường đại học đóng góp rất nhiều ngôn ngữ lập trình và các tập đoàn rất lớn như Ericsson (ngôn ngữ Erlang = Ericsson), Bell Labs (ngôn ngữ B và C), Google (ngôn ngữ của một vài tháng trước đó). Nhiều trong số những bài được viết như một phần của nghiên cứu đại học không được sử dụng nhiều. Có một vài ngoại lệ đáng chú ý, mặc dù. Tôi cho rằng việc viết ngôn ngữ/trình biên dịch của riêng bạn tạo ra một chủ đề hay cho luận án tiến sĩ của những người nghiên cứu Lý thuyết CS hoặc các ngành liên quan. Tôi nhận ra rằng Python là một trong những ngôn ngữ đầu tiên được sinh ra từ nỗ lực hợp tác trực tuyến của các lập trình viên khác nhau xung quanh một ý tưởng.

0
ixtmixilix