Sau khi chuyển đổi qua lại giữa một số ngôn ngữ kịch bản trong tuần này, tôi thấy mình đang suy nghĩ về sự tương đồng của chúng. Tuy nhiên, tôi luôn luôn tiếp cận với Google (hoặc ngày nay SO) để ghi nhớ các chi tiết như những gì tương đương cục bộ của "instanceof" và "endswith" là, hoặc cú pháp đúng để khai báo một giao diện, hoặc bất cứ thứ gì.những gì sẽ là những trở ngại để tạo ra một ngôn ngữ kịch bản phổ quát kiểu "Europanto"?
Điều này nhắc tôi về ngôn ngữ (con người) Europonto. Chỉ cần chọn một số cú pháp tiếng Anh mơ hồ và một số từ điển Lãng mạn/Germanic/Slavic, và tất cả đều tốt!
Vậy điều gì sẽ xảy ra nếu chúng tôi cố gắng làm điều tương tự với ngôn ngữ kịch bản. Trong tâm trạng cho các khối thụt lề kiểu Python ngày nay? Khỏe! Bạn muốn sử dụng một đối tượng nguyên mẫu? Được! Chỉ có thể nhớ cách đánh vần tên PHP của một số chức năng thư viện? Không vấn đề gì!
Dù sao, đó là ý tưởng hoang dã và điên rồ. Vì chúng ta cần một câu hỏi thừa nhận câu trả lời cụ thể, hãy thắt chặt nó như sau:
Điều gì sẽ là xung đột quan trọng nhất trong việc tạo ngôn ngữ kịch bản cho phép tất cả cú pháp và chức năng thư viện gốc của [Python, Ruby, PHP, Perl, shell và JavaScript], sao cho bạn có thể tự do trộn các khối mã và tên hàm giữa các ngôn ngữ?
Và giả sử rằng bất kỳ công trình xây dựng cụ thể nào phải nhất quán ở cấp tuyên bố. Vì vậy, chúng tôi sẽ cho phép:
foreach($foo as $bar)
{
if $foo == 2:
print "hi"
}
nhưng không, nói,
foreach($foo as $bar)
{
if $foo == 2:
print "hi"
endif
end
Xung đột có thể bao gồm: sự mơ hồ phân tích cú pháp; va chạm tên; các ngữ nghĩa xung đột cho các đối tượng hoặc chức năng hoặc các bao đóng; vv Tôi đoán rằng phạm vi sẽ là một vấn đề ginormous, nhưng bạn nói với tôi.
Tôi sẽ bắt đầu hoạt động này dưới dạng "wiki cộng đồng", vì vậy nếu bạn nghĩ đó là một câu hỏi thú vị nhưng muốn làm cho nó trở nên khắt khe hơn, hãy chỉnh sửa.
Không bao giờ thấy Europanto trước đây. Rất buồn cười, tôi có thể đọc rất nhiều ngay lập tức. Nhờ để chia sẻ liên kết ;) – OregonGhost