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?
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?
Câu trả lời:
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 và chức năng và nhiều ngôn ngữ hiện đại cố gắng trộn lẫ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ụ như 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ụ như Mô hình diễn viên. Xem Erlang - Phần mềm cho một thế giới đồng thời
Đó 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ả ...
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.
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.
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ọ.
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.
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.
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 họ thường 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.
Trả lời nhanh
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 lập trình viên "mới", Java hoặc C # là 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 họ, 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.
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ã nhanh hơn nhỏ 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.
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á các khung công tác PHP MVC, nhưng mọi người sẽ luôn tạo ra các khung mới để đáp ứng các 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.
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 chuyên 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 duy nhất.
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.
Giống như đã nêu trước đây, các ngôn ngữ cố gắng nhắm mục tiêu một số nhiệm vụ cụ thể và các ngôn ngữ mới có thể nhắm mục tiêu đến một khu vực mới. Các ngôn ngữ này có thể lấy các tính năng từ các ngôn ngữ khác hiện đang ra.
Một lý do khác cho các ngôn ngữ mới là cố gắng kết hợp nhiều nhiệm vụ khác nhau và là ngôn ngữ được lựa chọn cho nhiều nhu cầu khác nhau. Một số ngôn ngữ này đang cố gắng trở thành tất cả các ngôn ngữ bao gồm bạn sẽ luôn sử dụng, bất kể bạn có nhu cầu gì.
Tôi đã học trong lớp ngôn ngữ lập trình của mình rằng hầu hết các ngôn ngữ được phát minh để gãi ngứa. Hầu hết các ngôn ngữ được phát minh để có thể diễn đạt một số thuật toán tốt hơn. Ví dụ, các ngôn ngữ chức năng đã được phát minh để cung cấp cho các thuật toán đệ quy một không gian biểu cảm hơn nhiều.
Hỏi tại sao có nhiều ngôn ngữ giống như hỏi tại sao C ++ 0x? :)
Thêm vào đó, bạn càng biết nhiều ngôn ngữ, bạn càng có thể trở nên biểu cảm hơn - điều này đúng trong cả ngôn ngữ lập trình và ngôn ngữ tự nhiên!