Điều gì tạo nên một ngôn ngữ lập trình và làm thế nào để bản quyền một ngôn ngữ lập trình?


12

Tôi đã quyết định tạo một ngôn ngữ lập trình của riêng mình, chủ yếu chỉ để giải trí. Tuy nhiên, tôi đã quan tâm đến khía cạnh pháp lý của tất cả.

Bạn có thể, ví dụ, cấp phép cho các chương trình cụ thể theo các điều khoản cụ thể. Tuy nhiên, làm thế nào để bạn đi về việc cấp phép một ngôn ngữ ? Ngoài ra, do đó tôi không chỉ có nghĩa là việc thực hiện ngôn ngữ (trình biên dịch & VM), mà là bản thân tiêu chuẩn. Có điều gì khác với ngôn ngữ lập trình mà tôi đang thiếu không?

Những gì tôi muốn đạt được bằng cách cấp phép như vậy:

  1. Làm cho nó hoàn toàn FOSS (một ngôn ngữ thậm chí có thể là FOSS, hoặc đó là việc thực hiện có thể là FOSS?)
  2. Thiết lập bản thân là tác giả (bạn có thể là tác giả của một ngôn ngữ một cách hợp pháp không? Hoặc, một lần nữa, chỉ là việc thực hiện?)
  3. Làm cho nó để bất kỳ ai thực hiện ngôn ngữ của tôi sẽ được yêu cầu gán cho tôi (theo kiểu MIT. Xin lưu ý rằng tôi không có bất kỳ hy vọng nào cho bất kỳ ai thực sự làm điều đó mặc dù, tôi chỉ đang học.)

Tôi nghĩ rằng giải pháp sẽ là cấp phép riêng cho VM và trình biên dịch cho ngôn ngữ của tôi, là "triển khai chính thức", và sau đó cấp phép cho tài liệu thiết kế là ngôn ngữ .

Chính xác thì tôi đang thiếu gì ở đây?


10
Re (1): Một đặc tả ngôn ngữ không phải là phần mềm, vì vậy FOSS không áp dụng. Ngoài ra, nếu tôi bắt gặp một ngôn ngữ mà tác giả đã thử một thứ như vậy, cho dù với mục đích gì, tôi sẽ cực kỳ thận trọng (có nghĩa là, có lẽ tôi hoàn toàn không sử dụng nó). Nó tràn ngập nghiện kiểm soát, không tin tưởng và kiến ​​thức kém về các vấn đề pháp lý.

Tôi hơi hụt hẫng vì mục tiêu cuối cùng của bạn là gì. Có lẽ nếu chúng tôi biết điều đó, chúng tôi có thể giúp bạn điền vào những khoảng trống về cách đạt được nó. Cũng sẽ hữu ích để biết thị trường mục tiêu của bạn là ai.
pdr

Đợi đã, làm thế nào để ghi nhãn bất cứ thứ gì của cơn nghiện kiểm soát, @delnan? Hay bạn đang đề cập đến bản quyền một thông số kỹ thuật? AFAIK, bản quyền không phải là xấu, nó hoàn toàn không phải là hạn chế.
jcora

1
Tôi đoán tôi sẽ giữ thông số kỹ thuật trong phạm vi công cộng sau đó.
jcora

1
Tôi không phải là luật sư, nhưng bản quyền một tài liệu (ngay cả khi nó chỉ định một ngôn ngữ) không phải là bản quyền của một ngôn ngữ. Ví dụ, tôi sử dụng từ điển có bản quyền và tôi nói tiếng Pháp mà không vi phạm.
Basile Starynkevitch

Câu trả lời:


15

Tuyên bố từ chối trách nhiệm.IANAL ();

Bạn không thể giữ bản quyền một ngôn ngữ lập trình không quá bản quyền ngôn ngữ nói. Bạn có thể cấp phép cho việc triển khai cụ thể ngôn ngữ và thậm chí bán trình biên dịch đó nhiều như cách Borland đã làm với Delphi trong nhiều năm.

Nhiều ngôn ngữ ngày nay có một BDFL (Nhà độc tài nhân từ cho cuộc sống), người quyết định những gì đi vào ngôn ngữ và những gì không. Python, Ruby và Perl là tất cả các ví dụ về điều đó.

Các ngôn ngữ khác đã chính thức thiết kế các tiêu chuẩn theo một trong một số bảng tiêu chuẩn, điển hình là ANSI, ECMA hoặc ISO. Ví dụ bao gồm C, C ++ và Javascript.

Một số ngôn ngữ rơi vào khu vực thầm lặng do chính trị giữa các công ty. Java là một ví dụ vì Microsoft ngồi trên một số bảng tiêu chuẩn.

Một số ngôn ngữ chuyển từ ngôn ngữ này sang ngôn ngữ khác, điển hình là từ BDFL sang Tiêu chuẩn hóa, C là một ví dụ điển hình.

Tùy thuộc vào đặc điểm kỹ thuật của ngôn ngữ, một số người viết trình biên dịch có thể triển khai các tính năng khác nhau theo các cách khác nhau (ví dụ CPython vs PyPy) hoặc thêm các tính năng (Microsoft C ++ so với GNU C ++ hoặc MySQL vs PostGreQuery vs SQL Server)


1
Loglan là tiền lệ cho tình trạng không có bản quyền của các ngôn ngữ được xây dựng. Lojban thực sự là một sự tái hiện mở của Loglan. Mặt khác, Sun đã kiện Microsoft vì đã triển khai Java J ++ của họ
Jon Purdy

2
@JonPurdy: Với Java, đó là vấn đề về nhãn hiệu, không phải là vấn đề bản quyền. Hãy xem cách LiveScript trở thành Javascript, trong khi đó là sở thích kết hợp của Sun / Netscape, sau đó Microsoft đã phát hành JScript để thể hiện sự tương đồng trong khi tránh các vấn đề về nhãn hiệu và sau đó mọi người đồng ý với ECMAScript là tên chung.
pdr

1
@ JonPurdy, @ pdr Tôi nghĩ cũng có vấn đề về luật hợp đồng trong tranh chấp giữa Sun và Microsoft. Microsoft đã cấp phép công nghệ JVM từ Sun và một phần của giấy phép đã đồng ý không tạo ra các triển khai Java không chuẩn.
Charles E. Grant

1
@pdr Theo như tôi có thể nhớ, có một đặc tả rất chính xác về những gì một triển khai Java sẽ cung cấp (bao gồm một vài nghìn thử nghiệm mà việc triển khai phải vượt qua). Microsoft đã bị kiện vì họ có cách triển khai không chuẩn (có thể là khóa người dùng bằng cách phân phối các applet chỉ hoạt động với Internet Explorer). Sau khi chiến lược phân phối triển khai Java không chuẩn, thất bại, Microsoft tiếp tục tạo C #.
Giorgio

3
@Giorgio - chính xác. Điều mà Sun phản đối là MSFT gọi ngôn ngữ của họ là Java trong khi thực hiện các thay đổi quan trọng (để khóa nó vào nền tảng của MSFT) về cơ bản họ đang sản xuất một Java giả
Martin Beckett

8

Bất kỳ nỗ lực nào để hạn chế / kiểm soát / sở hữu một ngôn ngữ đều phải chịu thất bại. Để một ngôn ngữ được sử dụng rộng rãi, mọi người phải cảm thấy a) rằng nó giải quyết vấn đề tốt hơn một số ngôn ngữ hiện có, đã được thiết lập và b) họ cảm thấy thoải mái khi họ không đột nhiên sử dụng sai giấy phép / luật bộ đồ. Nếu họ nghĩ rằng điều đó thậm chí có thể, họ sẽ đi nơi khác.

Tôi đưa ra Bi kịch tuyệt đối của Java, được thực hiện bởi Larry Ellison (AKA Oracle) và Google. Ellison đã thực hiện một faceplant pháp lý quy mô toàn cầu hoàn thành 2 điều:

  1. Anh ta cho thế giới thấy rằng anh ta sẽ kiện bất cứ ai mà anh ta nghĩ rằng anh ta có thể nhận được tiền từ, và
  2. Ông đảm bảo rằng các phát triển trong tương lai chưa hoàn toàn gắn liền với Java sẽ chọn bất kỳ thứ gì khác ngoài Java.

Google không chỉ giành chiến thắng vụ kiện này, họ đã xé toang ruột tuyên bố thảm hại của Oracle của bằng sáng chế và bản quyền. Sau này, không ai tôi biết sẽ đặt bất kỳ niềm tin nào vào bất kỳ "công nghệ nguồn mở" nào có dấu vân tay của Oracle trên đó (nghĩ: MySQL).

Nếu bạn muốn, bạn có thể bỏ qua các thế kỷ nhà phát triển đằng sau Java và đi thẳng vào việc bị bỏ qua ... chỉ cần tất cả các nhà phát triển ký hợp đồng trước khi họ có thể sử dụng ngôn ngữ mới của bạn.


1
+1 để làm cho nó hoàn toàn rõ ràng. Bạn nhấn móng tay với điểm thứ 2 của bạn về Java. Đây là một yếu tố chính trong việc quyết định nên tiếp tục sử dụng Java hay tự tạo một ngôn ngữ tương tự. Mặc dù, tôi không thực sự mong đợi mọi người sử dụng nó, như tôi đã nói, nó cho mục đích cá nhân và giáo dục. Nhưng, tôi muốn giữ cho các tùy chọn của tôi mở.
jcora

1
Cập nhật: vào tháng 5 năm 2014, một tòa án mạch liên bang đã đảo ngược quyết định đó và nói rằng các API có thể có bản quyền. eff.org/deeplinks/2014/05/ Kẻ
không ai là

Nhưng đó không phải là điểm thực sự của bài viết của tôi. Sau sự thất bại hoàn toàn về trò chơi quyền lực của Oracle với Java, không ai có thể nghĩ đúng và với bất kỳ kiến ​​thức nào về lịch sử, sẽ cố tình đặt loại thòng lọng này quanh cổ công ty hoặc dự án của họ. Nếu bất cứ điều gì, sự đảo ngược của Tòa phúc thẩm chỉ có tác dụng mang lại sức nặng lớn hơn cho tranh luận khi chỉ sử dụng các công cụ và ngôn ngữ OSS. Thật đáng kinh ngạc, và thật mỉa mai, rằng một lỗ hổng ** như Larry Ellison phải là người mang về nhà giá trị đích thực của phần mềm Libre / Free cho cả nhà tư bản hay doanh nhân khó tính nhất.
Peter Rowell

2

Bạn có thể viết một ngữ pháp cho ngôn ngữ của bạn và khẳng định bản quyền của bạn về điều đó. Tất nhiên, điều đó sẽ không bảo vệ bạn trước ai đó viết một ngữ pháp khác mô tả cùng một ngôn ngữ.

Câu hỏi lớn nhất của tôi sẽ là "tại sao bạn muốn". Rốt cuộc, bạn có thể muốn mọi người chấp nhận ngôn ngữ của bạn. Nếu ai đó tuyên bố đã tạo ra nó, thì chỉ cần có sự hiện diện web tốt là đủ để cho phép bạn gọi họ là kẻ nói dối.

Như những người khác đã lưu ý, nếu mục tiêu chính của bạn là ngăn chặn người khác ăn cắp namengôn ngữ của bạn, một nhãn hiệu sẽ hữu ích hơn.


Viết một ngữ pháp cho ngôn ngữ vẫn sẽ không bảo vệ nó. Điều duy nhất nó sẽ làm là ngăn người khác viết lại ngữ pháp theo cách tương tự với bạn. Tôi có thể viết một ngữ pháp cho tiếng Anh, điều đó sẽ không ngăn bạn có thể đăng bài trên SE.
Gavin Coates

Gavin - tôi đã viết .... "điều đó sẽ không bảo vệ bạn trước ai đó viết một ngữ pháp khác mô tả cùng một ngôn ngữ." Tôi hy vọng điều này làm rõ rằng bản quyền như vậy sẽ không bảo vệ ngôn ngữ, chỉ có cách mô tả ngôn ngữ đó. Tuy nhiên - nó có thể làm cho một người cảm thấy tốt hơn.
Đaminh Cronin

1

Đã có những câu trả lời khác nhau cho câu hỏi này theo thời gian:

Vào năm 2012, một câu hỏi tương tự đã được trả lời "bạn không thể" trong trường hợp Oracle và Google về việc sử dụng API Java trong Android và một câu trả lời tương tự đã được đưa ra trong trường hợp triển khai ngôn ngữ lập trình SAS của WPL trong sản phẩm của họ. Lý do cho câu trả lời này là khả năng tương tác giữa các cách triển khai ngôn ngữ khác nhau đòi hỏi phải sao chép cú pháp của ngôn ngữ lập trình, và do đó, nên làm như vậy theo quy tắc "sử dụng hợp lý".

Tuy nhiên, vào năm 2014, tòa phúc thẩm Hoa Kỳ đã quyết định rằng câu trả lời hợp pháp thực sự là "có, bạn có thể", với lý do cung cấp khả năng tương tác (hoặc không), và theo quy định nào là theo quyết định của bản quyền gốc người giữ Theo cách hiểu gần đây nhất này, nếu ai đó không muốn bạn tương thích với ngôn ngữ lập trình, API hoặc đặc tả giao diện khác của họ, họ có quyền ngăn bạn.

Tóm lại, vào năm 2014, có thể công bằng khi giả định: có, một ngôn ngữ lập trình (cú pháp, cấu trúc và trình tự cấu trúc ngôn ngữ) có thể có bản quyền

Lưu ý rằng luật bản quyền phải tuân theo phiên dịch địa phương và các quy tắc ở quốc gia của bạn có thể khác nhau. Nếu nghi ngờ, hãy hỏi ý kiến ​​luật sư ...

(loại bỏ phần còn lại của đối số, xem lịch sử)

Tuyên bố miễn trừ trách nhiệm: IANAL


Annnddd ... phán quyết này đã bị đảo ngược. Oracle đã kêu gọi và lần này các thẩm phán không phải là lập trình viên.
jmoreno

@jmoreno cảm ơn bạn đã chỉ ra điều này. đã cập nhật câu trả lời để phản ánh sự phát triển mới này ...
miraculixx

Chỉ muốn nói, không phải luật sư hay bác sĩ tâm thần, chỉ là lập trình viên, nhưng phán quyết năm 2014 dường như ranh giới điên rồ với tôi. Đó là một loạt các lệnh!
jmoreno
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.