Cảnh quan ngôn ngữ mảng, trong khi hấp dẫn, không gây nhầm lẫn khi không có kết thúc. Có lý do nào để chọn một trong J hoặc K hoặc APL hoặc A không? Không có tùy chọn nào trong số này có vẻ là nguồn mở - có phiên bản nguồn mở không? Tôi rất thích việc mở rộng tâm trí của tôi, nhưng tôi vẫn còn bị quấy rầy.APL so với A so với J so với K?
Trả lời
Sự khác biệt giữa các ngôn ngữ này tương đối tinh tế. APL "thích hợp" có những ưu điểm và nhược điểm của ký hiệu tượng trưng ban đầu. (Có những thay đổi nhỏ đã được thực hiện đối với biểu tượng được đặt trong những năm qua, nhưng chúng hoàn toàn đúng với tầm nhìn ban đầu.)
Ngôn ngữ A + là nguồn mở có sẵn. Nó khởi động đáng kể từ các APL "cổ điển", nhưng cũng giống như chúng trong việc giữ hầu hết các bộ ký tự cốt lõi. Ý thức của tôi là nó đã không được cập nhật với những thay đổi công nghệ. Đó là tiền thân của K.
Ngôn ngữ trong họ ngôn ngữ mảng đã khởi hành từ bộ ký tự APL đặc biệt bao gồm J, K và Nial. Nial sử dụng các từ tiếng Anh thay vì các ký hiệu, và có một trình thông dịch mã nguồn mở được gọi là Q'Nial. K và J dựa chủ yếu vào các ký hiệu, nhưng chúng được rút ra từ bộ ký tự ASCII. Tuy nhiên, các từ có thể được sử dụng thay cho các ký hiệu bằng các ngôn ngữ này, chỉ đơn giản bằng cách gán các định nghĩa.
Nhóm ngôn ngữ lập trình APL chủ yếu là độc quyền kể từ khi APL xuất hiện lần đầu tiên như một sản phẩm của IBM vào năm 1964. Các ngôn ngữ mảng độc quyền dường như có nhiều hỗ trợ hơn và phát triển nhanh hơn các khả năng mới hơn so với các lựa chọn nguồn mở tại thời điểm này. Tôi không chắc chắn làm thế nào tất cả các đối thủ cạnh tranh xếp chồng lên nhau, nhưng Dyalog APL chắc chắn đã làm việc tích cực để thúc đẩy việc thực hiện ngôn ngữ như công nghệ hiện tại. APL2000 cung cấp các sản phẩm cho Unix, Linux và Windows, bao gồm cả VisualAPL cho .Net. MicroAPL Ltd cung cấp APLX.
K là ngôn ngữ chuyên biệt không còn được tiếp thị trên thị trường. Hệ thống Kx thay vì tiếp thị cơ sở dữ liệu Kdb + và ngôn ngữ Q (truy vấn), cả hai đều được viết bằng K. Đó là một công cụ chuyên dụng mạnh mẽ, được thiết kế để xử lý tốc độ cao của dữ liệu trực tuyến. Nó khởi động đáng kể từ phương pháp APL gốc. Các sản phẩm của Kx Systems đắt tiền và người dùng của họ chủ yếu làm việc trong lĩnh vực tài chính.
APL đã được hình dung và được thiết kế chủ yếu bởi Ken Iverson. Sau một sự nghiệp đầy đủ của việc áp dụng và tinh chỉnh APL trong các ứng dụng thương mại, ông đã chuyển sang nhiệm vụ thực hiện một phiên bản "hợp lý hóa", sửa đổi các khía cạnh của ngôn ngữ mà ông thấy mình không hài lòng với những năm qua. Chủ đề mới về chủ đề này được gọi là J. Sự khác biệt giữa J và APL được phác thảo trong một bài báo trên wiki Phần mềm J. Một thay đổi đáng chú ý là việc loại bỏ cú pháp lập chỉ mục mảng. Tuy nhiên, tính năng lớn nhất là dạng ngầm, trong đó các chương trình được viết bằng các hàm soạn thảo mà không tham chiếu đến các đối số của chúng. Tacit J liên quan chặt chẽ đến phong cách "không có điểm" được tìm thấy trong các ngôn ngữ lập trình hàm, nhưng khác ở chỗ dạng này là nền tảng cho ngôn ngữ J. Các ký hiệu dựa trên ASCII được sử dụng trong J có thể khó đọc hơn các ký tự APL đặc biệt hơn.
Đối với một cá nhân muốn học ngôn ngữ mảng, lời khuyên của tôi là chọn giữa Dyalog APL, APLX, J và Q'Nial. Dyalog APL (đặc biệt dành cho Windows) hoặc APLX (đặc biệt làcho Linux) có khả năng tốt nhất cho những người muốn sử dụng biểu tượng cốt lõi rất khác biệt với APL và ai muốn kết nối mạnh mẽ với cộng đồng APL nói chung. J có thể là tốt nhất cho những người muốn xây dựng các ứng dụng web, hoặc tập trung vào toán học (như Project Euler,) và đặc biệt là những người bị cuốn hút bởi phong cách ngầm mà nó nhấn mạnh. Q'Nial là những gì tôi muốn chọn nếu ưu tiên của tôi là nguồn mở, nhưng chỉ khi ưu tiên đó không có nghĩa là mong đợi sự hỗ trợ của một cộng đồng OS hoạt động.
CẬP NHẬT: J 7.01 đã được released with open source code theo GPL 3. Ngoài ra có Kona, một biến thể trên K. Điều này làm tăng các tùy chọn cho ngôn ngữ mảng nguồn mở.
CẬP NHẬT bởi Tobia: GNU APL có sẵn theo GPL. Nó tuân thủ chặt chẽ tiêu chuẩn ISO được công bố mới nhất về ngôn ngữ APL mở rộng. Đây là một triển khai APL nguồn mở tuyệt vời và đang được phát triển và duy trì tích cực. Ngoài ra còn có các triển khai thú vị khác, ví dụ: ngn APL, một APL được thực hiện một cách đáng ngạc nhiên và nổi bật hiện đại được viết bằng Coffeescript (được biên dịch sang Javascript.) Các ngôn ngữ Array vẫn còn sống và tốt trong năm 2015.
Tôi vẫn còn lộn xộn (APL luôn làm tôi bối rối - may mắn là đã 20 năm trở lên kể từ lần cuối cùng tôi cố gắng), nhưng một chút tìm kiếm đã tìm thấy A +, phiên bản mã nguồn mở A:
tôi không có ý tưởng đó nó sẽ đáp ứng của bạn (hoặc bất kỳ ai) cần.
J là ký hiệu toán học thực thi được nhập và hiển thị bằng ký tự ascii.
Nó cũng là một Ngôn ngữ lập trình hàm, hướng đối tượng, lập trình đầy đủ.
Việc triển khai phần mềm JS của J (Tôi không biết bất kỳ người nào khác) không phải là nguồn mở, nhưng nó là miễn phí để sử dụng.
Mặc dù động cơ không phải là nguồn mở, có một thư viện người dùng hoạt động gồm mã J mà mọi người có thể đóng góp.
J có tài liệu mở rộng và súc tích http://www.jsoftware.com/help.htm và thành viên diễn đàn vui vẻ và nhanh chóng trả lời mọi câu hỏi hoặc sự cố và muốn giúp người dùng mới trở thành định hướng cũng như các vấn đề nâng cao hơn.
Trên vấn đề nguồn mở bằng cách này, tài liệu (đặc tả) cho J là rộng rãi và bất kỳ ai trong lý thuyết có thể tạo dự án nguồn mở để thử triển khai J nếu họ muốn.
Mã nguồn J cũng có ngay bây giờ [link] (http://jsoftware.com/source.htm) –
Chỉ cần nói rằng nguồn J đã được phát hành theo giấy phép GPL3 kể từ phiên bản http: //www.jsoftware mới nhất .com/source.htm – jpjacobs
Để thêm một số thông tin ...
Có một phiên bản mã nguồn mở của K
gọi Kona
https://github.com/kevinlawler/kona
Đối q/kdb+
, có một phiên bản dùng thử. http://kx.com/download/
Các giới hạn chính là thời gian chờ 2 giờ, bộ nhớ 32 bit, hết hạn giấy phép 3 tháng và bản thân giấy phép. Đây không phải là quá khó chịu nếu bạn chỉ muốn chơi xung quanh và học một cái gì đó.
Cá nhân, tôi thấy q
là thân thiện nhất vì KX đã dịch các động từ đơn lẻ (một đối số) từ K
sang từ tiếng Anh và có số lượng tài liệu tốt @http://code.kx.com. Ngoài ra, hệ thống cơ sở dữ liệu được suy nghĩ rất tốt và linh hoạt.
Trong khi A + xuất hiện (đáng buồn) là một dự án đã chết, có một trình thông dịch APL nguồn mở mới: GNU APL.
ELI là ngôn ngữ lập trình mới, có sẵn, đa nền tảng có sẵn, được phát triển mới. Tương tự như J và k nó dựa trên bộ ký tự ASCII.Nó thực hiện một số tính năng (như tôi biết) là duy nhất đối với k/q/kdb + chẳng hạn như kiểu dữ liệu thời gian và tập hợp con SQL sẵn có.
Điều cần xem xét là từ vựng của toán tử (hàm bậc cao).
gốc APL chỉ có cuối cùng và lần đầu tiên giảm trục (f/
, f⌿
), trục trước và lần đầu tiên giảm tích lũy (f\
, f⍀
), cộng với bên trong và bên ngoài sản phẩm (f.g
, ∘.g
).
APL mở rộng nhất (ví dụ: APLX GNU, APLX, APL + Win, APL2) chỉ thêm mỗi vòng lặp (f¨
) và đặc điểm khung trục (f[
... ]
).
J, thêm plethora (được gọi là trạng từ và liên kết), nhưng khung đã loại bỏ (cả trục và lập chỉ mục), mỗi toán tử (ưu tiên toán hạng chung) và giảm trục cuối cùng (tích lũy).
Hiện tại không còn tồn tại Sharp APL (SAX) giữ lại cả toán tử trục cuối cùng truyền thống và lập chỉ mục khung, trong khi thêm nhiều toán tử mới của J.
Dyalog APL đang dần dần tiếp cận từ vựng của Sharp APL, nhưng cũng đã kết hợp các nhà khai thác độc quyền J không bao giờ đưa nó vào Sharp APL.
Bảng bên dưới so sánh các từ vựng thành phần J, Sharp APL và Dyalog APL. Các mục nhập màu xám đang được đề xuất.
+1 Tổng quan rất hay. –
Đôi khi +1 không đủ: Cảm ơn, kaleidic! – blinry
Gần đây Dyalog cũng đã phát hành phiên bản Mac OSX - http://www.dyalog.com/dyalog/mac-os.htm – firesofmay