Tôi nghĩ rằng bạn về cơ bản là chính xác. Một thời gian chạy ngôn ngữ đã là một hệ thống điều khiển dữ liệu hoàn toàn linh hoạt. Nó lấy một phần dữ liệu (chương trình) và sử dụng nó để xác định cách nó sẽ hoạt động trên dữ liệu khác. Nó thậm chí có thể có một lược đồ nhiều người dùng để lưu trữ mã để sử dụng lại bởi các chương trình khác (từ đường dẫn bao gồm đến quản lý cài đặt thích hợp).
"Ngôn ngữ kịch bản", nói một cách đại khái, là thời gian chạy ngôn ngữ trong đó đầu vào mã này có thể đọc được. Một trình biên dịch đặt thêm một bước giữa người dùng và thời gian chạy. Các ngôn ngữ "Trò đùa" như Malbolge và APL không cần phải có thể đọc được bằng con người dưới mọi hình thức. Nhưng tất cả đều giống nhau ở một cấp độ và dù sao con người cũng có thể đọc được không có nghĩa là tất cả người dùng tiềm năng đều có kỹ năng đọc hoặc viết nó, hoặc có thể được dự kiến sẽ phát triển chúng.
Có nhiều lý do tại sao bạn thường không phơi bày thời gian chạy ngôn ngữ trực tiếp cho người dùng cuối. Cái chính là loại bỏ tính linh hoạt làm tăng sự tiện lợi.
Nếu tôi muốn gõ một bài SO, tôi chỉ muốn gõ nó. Tôi hoàn toàn có khả năng thay vì viết chương trình C ++ để xuất nó, nhưng tôi sẽ không sử dụng trình duyệt web tiếp xúc với trình chỉnh sửa chương trình C ++ thay vì hộp văn bản thông thường. Những người không biết C ++ không chỉ không sử dụng trình duyệt, họ không thể.
Nếu tôi muốn định cấu hình một số tham số nghiệp vụ nhất định thì tôi không nhất thiết phải thực hiện điều đó bằng ngôn ngữ đặc tả Turing-Complete và ngay cả khi tôi đã làm điều này có lẽ không thể phân biệt được với "mã hóa cứng" các tham số kinh doanh tương tự đó trong bất kỳ chương trình nào khác ngôn ngữ. Bạn vẫn cần xem xét những gì bạn viết có nghĩa là những gì bạn muốn nó có nghĩa. Bạn vẫn cần kiểm tra những thay đổi đó là chính xác. Nghĩa là, bạn vẫn cần kỹ năng lập trình cho bất kỳ công việc mà đều là phòng không tầm thường và không lường trước bởi một người không có kỹ năng lập trình người chuẩn bị một chuyên ngành phụ hệ thống ( "ứng dụng") để bạn có thể cấu hình ( "sử dụng").
Vì vậy, nếu bạn chuẩn bị bắt tay vào một hệ thống dựa trên dữ liệu 100%, có thể làm bất cứ điều gì được cung cấp đúng dữ liệu, bạn có hai câu hỏi để tự hỏi:
- Chúng ta đang kinh doanh trong việc phát minh ngôn ngữ lập trình, hay chúng ta nên?
- Ngôn ngữ lập trình mới của chúng tôi sẽ tốt hơn (cho mục đích của chúng tôi) so với ngôn ngữ chúng tôi đã có và chúng tôi sẽ hỗ trợ và phát triển ngôn ngữ đó khi cần?
Đôi khi các câu trả lời là có, và bạn viết một ngôn ngữ cụ thể theo tên miền. Hoặc thậm chí là một ngôn ngữ lập trình đa năng thực sự nếu bạn là Sun / Microsoft / Stroustrup / van Rossum / nhiều người khác. Đôi khi các câu trả lời là không và bạn có hiệu ứng "nền tảng bên trong" - sau nhiều nỗ lực và thử nghiệm và lỗi bạn kết thúc với một cái gì đó. Nếu bạn may mắn, nó chỉ kém hơn một chút so với ngôn ngữ lập trình mà bạn đã viết nó và không dễ sử dụng hơn.
Một số ngôn ngữ khó hơn hoặc dễ sử dụng hơn các ngôn ngữ khác, đặc biệt nếu chúng chuyên về một mục đích như R thì một số người dùng sẽ thấy chúng dễ dàng hơn nhiều. Những gì bạn có thể sẽ không làm, là làm cho các ứng dụng chung lập trình dễ dàng hơn về cơ bản. Tại bất kỳ thời điểm nào, có thể có một số người / tổ chức trên thế giới có tiềm năng để làm điều đó, nhưng ông chủ / công ty của bạn phải thành thật xem xét liệu có bao gồm anh ấy / bạn hay không.
Có một mẹo thường được sử dụng cho các trò chơi, đó là phơi bày các ràng buộc Lua cho công cụ trò chơi. Điều này cho phép các nhà thiết kế lập trình bằng một ngôn ngữ tương đối dễ dàng, nhưng vẫn thu hút được một lập trình viên "thực sự" khi cần thiết cho hiệu suất hoặc truy cập chức năng cụ thể của động cơ hoặc nền tảng. Các tập lệnh Lua kết quả là "dữ liệu" khi có liên quan đến động cơ. Tất cả chúng không cần bao gồm phần lớn những gì bạn gọi là "logic" trái ngược với dữ liệu cấu hình và thường thì chúng xác định khá rõ tất cả cốt truyện và môi trường, nhưng không phải toàn bộ trò chơi. Đây không phải là 100% dữ liệu và nó chắc chắn không phải là 100% không có lỗi, nhưng đó là một sự thỏa hiệp thực tế thú vị.