Học ngôn ngữ lập trình được thiết kế riêng cho công ty đó [đã đóng]


10

Tại sao ai đó sẽ phát triển ngôn ngữ của riêng mình để chỉ sử dụng ngôn ngữ đó trong công ty đó khi bạn có các ngôn ngữ khác XY có thể giúp bạn với thư viện, logic, v.v.? Không phải là nó đơn giản hơn nhiều để đi theo dòng chảy với bất cứ điều gì khác hơn là phát triển ngôn ngữ của riêng bạn?


6
Khá nhiều ngôn ngữ "mới" mà chúng ta có trong tự nhiên có thể sử dụng các thư viện được thiết kế cho các ngôn ngữ "cũ hơn": ví dụ: C ++ có thể sử dụng C libs, Scala Kotlin và các ngôn ngữ khác có thể sử dụng bất kỳ lib nào chạy trên JVM, Bản mô tả có thể sử dụng lib lib. Vì vậy, có một ngôn ngữ mới không có nghĩa là mất hỗ trợ lib ...
Timothy Truckle

3
Tại sao bạn sẽ xây dựng một con rồng để đi đua xe chứ không phải làm với một chiếc xe cổ?
candied_orange

3
Hoặc thực sự, điều tra lý do và hợp lý đằng sau việc tạo ra bất kỳ ngôn ngữ lập trình. Một số người tin rằng bạn không phải là nhà khoa học máy tính thực sự cho đến khi bạn tạo ra ngôn ngữ của riêng mình. Điều này giống như không phải là một kỹ sư hóa học thực sự cho đến khi bạn tạo ra bột súng (và làm nổ tung một phần nhỏ trong nhà của bạn).
candied_orange

4
Erlang cũng được sinh ra theo cách này: nếu tôi không nhầm thì ban đầu nó được phát triển tại Ericsson để sử dụng nội bộ.
Giorgio

3
Một ngôn ngữ được thiết kế riêng cho một công ty là ngu ngốc, mặt khác, một ngôn ngữ được thiết kế dành riêng cho một miền có vấn đề mà công ty xảy ra, đôi khi có thể khá hữu ích. Bạn biết bạn có cái sau, hơn là cái trước, khi thiết kế và kiến ​​trúc của ngôn ngữ bị hạn chế ở những gì làm cho miền vấn đề dễ giải quyết / diễn đạt hơn, đôi khi phải trả giá là hữu ích cho lập trình mục đích chung.
Lie Ryan

Câu trả lời:


25

Sẽ dễ hiểu hơn nhiều khi bạn nhận ra rằng nó thường là sản phẩm của quá trình dài và không phải ai đó chỉ nói "chúng tôi muốn tạo ra ngôn ngữ mới".

Nó thường bắt đầu với ý tưởng rằng một số vấn đề có thể được giải quyết bằng một ngôn ngữ cụ thể theo tên miền đơn giản. Mục đích thường là để những người không phải là chuyên gia sử dụng ngôn ngữ này, vì vậy nó đơn giản và thường thiếu các tính năng như gõ mạnh và mô-đun.

Càng xa càng tốt. Nhưng sau đó, mọi người bắt đầu đánh những vấn đề không thể giải quyết bằng ngôn ngữ. Vì vậy, các "tính năng" mới đang dần được thêm vào để giải quyết những vấn đề đó. Và vì quá trình này chậm và các tính năng không thường xuyên, không có động lực để thiết kế các tính năng mới đó đúng cách, miễn là các vấn đề được giải quyết.

Theo thời gian, ngôn ngữ mới đạt được các tính năng biến nó từ ngôn ngữ cụ thể theo miền đơn giản thành ngôn ngữ mục đích "chung" phức tạp, thường có ngữ nghĩa mâu thuẫn, khó hiểu và quy tắc cú pháp khó theo dõi.

Và đến lúc mọi người nhận ra họ đã tạo ra một con thú khổng lồ như vậy, thì đã quá muộn để giết nó và thay thế nó bằng một ngôn ngữ được thiết kế hợp lý.

Có một vài ngôn ngữ mà phát triển như thế này mà không bị ràng buộc cho các công ty cụ thể ho Javascript ho PHP ho .


10
Câu trả lời tuyệt vời và trong khi JavaScript có vấn đề của nó, tôi không nghĩ rằng việc đặt nó trong cùng một câu với PHP là công bằng. Điều đó giống như nói rằng: "Chúng ta cần đuổi Bill và Ted ra khỏi khu phố của chúng ta, họ là tội phạm!" Nhưng, Bill (JavaScript) là một người đi bộ và Ted (PHP) là một kẻ giết người hàng loạt.
TheCatWhisperer

12
@TheCatWhisperer tôi không đồng ý. JavaScript cũng tệ, hoặc thậm chí tệ hơn như PHP. Bởi vì bạn phải sử dụng (hoặc chuyển mã thành) JavaScript, trong khi PHP có thể được bỏ qua một cách an toàn.
Euphoric

2
đó là một điểm hợp lệ
TheCatWhisperer

1
@Euphoric Hãy để chúng tôi chờ đợi WASM , có thể cảnh sẽ thay đổi sau đó ...
Kroltan

@Kroltan +1 cho WASM!
CraigR8806

15

Không phải là nó đơn giản hơn nhiều để đi theo dòng chảy với bất cứ điều gì khác hơn là phát triển ngôn ngữ của riêng bạn?

Chắc chắn, nhưng để làm theo điều đó đến một kết thúc vô lý, tất cả chúng ta sẽ viết mọi thứ trong hội đồng nếu không ai phát triển ngôn ngữ mới.

Đôi khi không có dòng chảy. Các ngôn ngữ mới xuất hiện bởi vì ai đó bị ngứa, dù đó là người có sở thích ngôn ngữ, người chỉ muốn phát minh ra thứ gì đó mới hay công ty có nhu cầu không được đáp ứng bởi những gì đã tồn tại.

Đây chính xác là những gì đã xảy ra khi John Backus đề xuất Hệ thống dịch công thức toán học của IBM vào năm 1953. Ông muốn một cách dễ dàng hơn cho người dùng khoa học để chỉ định các công thức toán học hơn là viết chúng trong tập hợp. Sản phẩm độc quyền đó đã trở thành ngôn ngữ lập trình đầu tiên không được lắp ráp và bạn biết đó là Fortran.

Trường hợp Fortran là người đầu tiên đã đi theo con đường đó, Erlang gần như là đứa trẻ áp phích cho nó. Ericsson muốn cải thiện cách thức phát triển phần mềm cho các thiết bị chuyển mạch điện thoại và phát minh ra một ngôn ngữ để tạo mẫu với các tính năng dành riêng cho những gì họ cần. Khi tôi lần đầu tiên khám phá nó, điều đáng nói của tôi là nó được phát triển bởi những người có vấn đề thực sự để giải quyết mà sẽ không được phục vụ bởi bất kỳ ngôn ngữ nào khác có sẵn vào năm 1986. Erlang vẫn là một sản phẩm nội bộ độc quyền như của bạn đồng nghiệp gặp phải cho đến khi nó được mở nguồn hơn một thập kỷ sau đó, và bây giờ nó là ngôn ngữ chính.

Cả Go và Scala đều là những ngôn ngữ tương đối trẻ trong sơ đồ lớn và hoàn toàn có thể ngôn ngữ được sử dụng tại công ty của đồng nghiệp của bạn có trước cả hai. Những gì anh ta cần làm là hỏi về lịch sử của nó, tại sao nó lại tồn tại và tại sao nó tiếp tục được sử dụng.

Tôi đã dành cả thập kỷ từ 2003 đến 2013 để làm việc cho một công ty sử dụng rộng rãi môi trường dành riêng cho ngành bao gồm ngôn ngữ của chính nó bắt nguồn từ cuối những năm 1970. Mặc dù một số ngôn ngữ mới hơn có thể đã được thay thế phù hợp hơn (và móc cho chúng được ghép theo thời gian), ngành công nghiệp đó đã đầu tư đủ lớn vào nó và một khối lượng lớn mã được chứng minh rõ ràng rằng đơn giản là không phải là một trường hợp kinh doanh tốt để chuyển sang một cái gì đó khác.


-1

Tôi đã thấy điều này trước đây. Nó không bao giờ hoạt động tốt. Một số người có phức hợp "không được phát minh ở đây". Nó thường làm cho một công ty chạy xung quanh phát minh lại bánh xe.

Hãy suy nghĩ về nó. Ngôn ngữ mới này có thể phá vỡ tất cả các thời gian. Giữa một trình phân tích cú pháp, trình biên dịch, VM, trình liên kết, bất cứ điều gì ... Hiện tại có hàng ngàn lỗi mà mọi người sẽ lãng phí hàng giờ để gỡ lỗi các vấn đề ngẫu nhiên. Tất cả cho những gì họ nghĩ rằng họ cần mà các ngôn ngữ khác không có.

C / C ++ được sử dụng để viết các hệ điều hành như, bạn biết đấy, tất cả chúng. Nhưng ai đó nghĩ rằng họ cần một cái gì đó khác nhau.


7
Rõ ràng là bạn chưa bao giờ thấy Kotlin. Hoặc Javascript hoặc C #, cho vấn đề đó. Fog Creek Software đã sử dụng ngôn ngữ lập trình riêng của họ được gọi là Wasabi (dựa trên VB) trong nhiều năm (mặc dù phải thừa nhận rằng nợ kỹ thuật cuối cùng đã bắt kịp chúng ). Vì vậy, chắc chắn có trường hợp nó làm việc.
Robert Harvey

1
Theo như tôi có thể nhớ, C # đã ra đời sau khi Microsoft cố gắng tạo ra một triển khai Java không tuân thủ, đã bị Sun kiện và bị mất. cnet.com/news/sun-microsoft-seling-java-suit Vì họ không thể gọi nó là Java nữa, họ đã phát triển ngôn ngữ của riêng họ, ban đầu, rất giống với Java.
Giorgio

1
"Ngôn ngữ mới này có thể bị hỏng mọi lúc" - nếu thiết kế ngôn ngữ của bạn cho phép bạn tránh được toàn bộ một lớp lỗi ứng dụng, thì đây có thể là một sự đánh đổi chấp nhận được
Eric

16
Bạn đã từng nghe về C chưa? Nó đã được phát triển nội bộ chỉ cho một hệ điều hành trên một máy tính. Tại sao K & R không sử dụng thứ gì đó đã được chứng minh là được sử dụng để viết các hệ điều hành, chẳng hạn như PL / 1, BCPL hoặc Algol 68?
idrougge
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.