"Lập trình" bảng tính là một loại lập trình dataflow.
Chúng tôi có một vấn đề ngôn ngữ với nó, chúng tôi không nên gọi nó là "lập trình", bởi vì nó ít hơn nhiều so với chúng tôi gọi là lập trình, nhưng nó chắc chắn nhiều hơn là nhập dữ liệu vào một chương trình.
Lập trình Dataflow là một kiến trúc và kỷ luật, trong đó ứng dụng là một mạng gồm các mô-đun độc lập, chúng gửi các thông điệp (dữ liệu) cho nhau. Mô hình này không áp dụng cho mọi vấn đề, chỉ áp dụng cho những vấn đề, nơi có dữ liệu nguồn hoặc luồng (hoặc có nhiều hơn), đi qua mạng xử lý và tạo ra dữ liệu / luồng đầu ra. Xem danh sách dưới đây.
Lập trình Dataflow có một số loại, hãy xem một số:
- Bảng tính: số đầu vào được xử lý theo công thức, sau đó kết quả số và biểu đồ. Các đặc điểm đặc biệt: thời gian ngoại lệ là "một lần bắn", khi giá trị đầu vào (thành phần) thay đổi, phần chiếm dụng của biểu đồ xử lý sẽ chạy lại và tạo đầu ra.
- Unix pipe: shell khởi chạy một số chương trình và liên kết stdout-> stdin. Đặc điểm đặc biệt: chỉ cho phép liên kết kiểu ống, biểu đồ là một hàng đợi duy nhất.
- Thực hiện đồng bộ hóa: có một đồng hồ, kích hoạt xử lý khung hoặc mẫu theo tần số xác định. Mỗi thành phần chạy một lần một chu kỳ đồng hồ. Các hệ thống xử lý video và âm thanh là các ví dụ, chúng hoạt động với tốc độ khung hình / mẫu được chỉ định.
- Thực thi không đồng bộ: biểu đồ ở chế độ chờ, cho đến khi xảy ra sự kiện bên ngoài. Sau đó, nó xử lý sự kiện, tạo ra một số đầu ra (hoặc không) và chuyển sang trạng thái không hoạt động.
Quay lại câu hỏi của bạn: Tôi nghĩ là có, nên xuất bản một ứng dụng dataflow dưới dạng một ứng dụng độc lập. Tôi đã thực hiện nó. Hai lần .
Tôi và một người bạn của tôi đã tạo ra một hệ thống DF nguyên mẫu cho tự động hóa nhà. Chúng tôi không có trình chỉnh sửa biểu đồ, do đó người dùng không thể chỉnh sửa ứng dụng, một số tham số được lưu trữ trong tệp cấu hình, nhưng không có gì khác. Chúng tôi có một ngôn ngữ tập lệnh DF, được "biên dịch" thành mã C ++ (một danh sách các định nghĩa thông báo và tạo thành phần), được biên dịch thành một tệp thực thi riêng. Các mô-đun là các lớp C ++ (các lớp khác, chỉ để có được một số thông tin về hệ thống của chúng tôi: Message, Dispathcer, Thành phần (trừu tượng), Cổng (trừu tượng), ConsumerPort, ProducerPort).
Ngoài ra, chúng tôi rất ngạc nhiên về những ưu điểm của hệ thống DF cung cấp: chúng tôi đã tạo ứng dụng sniffer nối tiếp trong vòng 2 phút hoặc chúng tôi đã thực hiện một chương trình thử nghiệm tại chỗ , trong đó nhấp nháy từng cái một (không có tài liệu nào trên ID phần cứng). Chúng tôi đã tạo các thành phần MIDI và joypad chỉ để giải trí, tôi cũng đã tạo ra một cơ quan nhẹ với nó (xem http://homeaut.com/under_con cản / ).
Tôi chỉ có thể thấy một khó khăn trong trường hợp bảng tính: vì mọi số và công thức (có khả năng: mọi ô) là một thành phần, biểu đồ của bạn không phải là cuối cùng. Khi bạn thêm một dòng vào ứng dụng sum () đơn giản của mình, điều đó có nghĩa là biểu đồ dataflow bị thay đổi. Vì vậy, bạn phải "lập trình lại" biểu đồ trong thời gian chạy, hoặc chúng ta nên gọi nó là "siêu lập trình". Trong Excel, một macro sẽ thực hiện công việc, nhưng sau đó chúng ta mất đi độ tinh khiết của dataflow.
Tôi có một giải pháp không quá tệ nhưng không hoàn hảo. Tôi đã tạo một bảng tính, một ứng dụng AJAX với phụ trợ PHP. Trục dọc là thời gian (ngày), các đường là thành phần. Có các thành phần, như đầu vào (dòng có thể được chỉnh sửa bởi người dùng), trung bình dọc, trung bình / tổng ngang và một số tính toán thống kê theo miền cụ thể. Chỉ có một vấn đề với nó: đây là "một chiều". Miễn là tôi muốn chỉ tổng và avg và bất cứ điều gì, tôi có thể thêm các dòng mới và tạo thành phần, tính toán các công cụ. Nhưng có một hạn chế lớn: các cột luôn là ngày (tôi đã thực hiện "lượt xem" trong tuần và tháng, hiển thị dữ liệu hàng ngày dưới dạng tổng / avg, nhưng nó vẫn là một chiều). Tôi không thể hiển thị nó, nó hợp tác và yêu cầu tác vụ phụ trợ PHP để chạy 7/24, nó không được nhà cung cấp máy chủ của tôi hỗ trợ.
Vì vậy, mô hình của tôi (có thể được mô tả tốt nhất là: "ngày theo chiều ngang") không thể xử lý các loại vấn đề khác.
Tôi có một ý tưởng, làm thế nào để giải quyết vấn đề này: các tab .
Khi bạn bị kẹt trong Excel và phải tạo một bảng khác, bạn có thể sử dụng một khu vực riêng biệt trên cùng một tab hoặc mở một tab khác. Ngoài ra, tham chiếu giữa các tab là không thoải mái, tôi thích phương pháp đầu tiên. Tôi nghĩ, các tab nên được hiển thị trên cùng một màn hình, giống như các cửa sổ không chồng chéo.
Mỗi bảng nên có trục phát triển: dọc, ngang hoặc cố định. Các bảng tăng trưởng dọc có các thành phần dòng (như bảng tính dựa trên ngày của tôi), trong đó tất cả các cột có công thức "giống nhau", các thành phần nằm ngang có các thành phần cột, các bảng có kích thước cố định giống như bất kỳ bảng tính nào.
Vì vậy, khi người dùng thêm một dòng / cột mới, dòng / cột mới sẽ có cùng một công thức.
Ngoài ra, trong bảng tính, tôi ghét điều này, rằng tôi cần sao chép các công thức rất giống nhau 1000 lần, nếu tôi có 1000 dòng. Đó là một nguồn lỗi (giữ phiên bản cũ của công thức trong một số dòng), lãng phí bộ nhớ (lưu trữ cùng một công thức 1000x).
Có thể tôi sai, và có lỗi khái niệm trong mô hình này, nhưng tôi hy vọng nó là một cách kích thích tư duy tốt.