Trình mô phỏng HyperCard
(hcsimulator.com)- HyperCard Simulator là trình mô phỏng chạy trên web, cho phép nhập và chạy các stack HyperCard cổ điển trên web hiện đại
- Stack hoạt động như một bộ thẻ có thứ tự; có thể thêm hoặc xóa thẻ và cũng có thể chia sẻ trực tuyến thông qua tài khoản
- Trên thẻ có thể đặt nút và trường, còn các phần tử tạo trong nền có thể được áp dụng lặp lại trên nhiều thẻ trong khi vẫn giữ văn bản riêng cho từng thẻ
- Việc chỉnh sửa được thực hiện trực tiếp trên thẻ và hỗ trợ vẽ đơn giản với bút chì, thùng sơn cùng các mẫu đen trắng và trong suốt
- Có thể dùng mà không cần script, nhưng cũng có thể xử lý các lệnh xTalk và trình xử lý thông điệp như
mouseUpbằng message box và Script Editor
Chạy stack HyperCard trên web
- HyperCard Simulator cho phép nhập các stack HyperCard cổ điển và chạy chúng trong trình duyệt
- Tác giả gửi lời xin lỗi tới những người tạo ra HyperCard và cho biết đã làm công cụ này trong thời gian rảnh để xem HyperCard sẽ hoạt động ra sao trên web hiện đại
- Các tài nguyên liên quan gồm hypercard.org, Merveilles HyperJam, Internet Archive
- Các mục để khám phá thêm stack gồm
More stacks,A Few More Stacks,The "B–Roll",Collected Stacks,Lots More Stacks,The HyperCard Pantechnicon
Mô hình chỉnh sửa xoay quanh thẻ và nền
- Stack HyperCard giống như một bộ bài được lật theo thứ tự, và người dùng có thể thêm hoặc xóa thẻ trong stack
- HyperCard từng tự động lưu stack, còn trong trình mô phỏng này, bạn có thể tạo tài khoản và chia sẻ trực tuyến
- Mỗi thẻ có thể chứa nút và trường
- Chỉnh sửa bằng cách chọn công cụ phù hợp rồi kéo và thay đổi kích thước
- Nút và trường có thể được tạo trên thẻ hoặc trên nền
- Có thể mở thuộc tính bằng cách nhấp đúp hoặc nhấn giữ
- Phần nền được áp dụng lặp lại trên nhiều thẻ
- Mỗi thẻ có thể có phần riêng và văn bản riêng
- Mỗi thẻ có một nền, và nền là lớp nằm phía sau nhóm thẻ
- Với các thẻ dùng chung một nền, có thể đặt văn bản riêng theo từng thẻ trong các trường của nền
Vẽ và viết script
- Việc vẽ được xử lý trực tiếp trên thẻ
- Có thể dùng bút chì hoặc thùng sơn
- Màu đen dùng Shift, màu trắng dùng Option, còn trong suốt dùng mẫu Option+Shift
- Viết script không bắt buộc, nhưng có thể học bằng cách xem script của chính trình mô phỏng
- message box đánh giá các biểu thức và lệnh xTalk
- Có thể mở Script Editor từ hộp thoại Information, hoặc truy cập bằng Command-Option-click, touch-hold, hay nhấp đúp khi giữ Shift
- Script có thể nhận thông điệp do người dùng gửi và thực hiện các hành động như
beephoặcgo next card - Ví dụ về trình xử lý thông điệp là chạy
beeptrongon mouseUp, chuyển sang thẻ kế tiếp rồi kết thúc bằngend mouseUp
1 bình luận
Ý kiến trên Hacker News
Hơi tiếc là HyperCard đã xuất hiện trước thế hệ của tôi. Nếu biết đến nó hồi nhỏ chắc tôi đã chẳng làm gì khác; thử nghịch qua trình giả lập thì thấy khá thú vị
Tôi thích những nỗ lực ban đầu nhằm giúp mọi người dễ tiếp cận lập trình. Dù ở mức độ yếu hơn nhiều, công cụ làm hoạt hình Flash khi lần đầu tôi dùng cũng mang lại cảm giác tương tự; nó dễ tiếp cận ngay lập tức hơn nhiều so với việc cố ghép OpenGL hay SDL với C++, và việc tạo ra thứ gì đó đơn thuần là rất vui. Sau Flash, tôi không tìm được công cụ nào thú vị đến thế khi phát triển; GameMaker cũng tuyệt và vẫn vui, nhưng không mượt mà hay cho cảm giác “có thể làm bất cứ thứ gì” như Flash. Có lẽ chỉ là tôi đã già đi
Flash biến mất nhanh hơn cả khi một thứ thay thế kịp xuất hiện, và khi Flash không còn, rõ ràng là nếu HTML5 thời đó là tương lai và là lựa chọn thay thế tức thì thì chúng ta tiêu rồi. Nếu lần tới cần tìm một công cụ để tạo thứ gì đó, Flutter có vẻ tiếp nối lời hứa của Flash: một codebase chạy được ở mọi nơi. Ngoài ra, những công nghệ tôi kỳ vọng là WebAssembly, và ở một mức độ nào đó là Rust
Cách con trỏ chuyển thành biểu tượng bàn tay khi di chuột lên liên kết được lấy cảm hứng trực tiếp từ HyperCard. Theo nhiều nghĩa, trình duyệt có thể được xem là dạng phát triển tiếp theo của các stack HyperCard
Khi còn nhỏ, HyperCard và SuperPaint là Lego của tôi. Bố tôi là một nhà khoa học cần Macintosh để chạy tính toán, nên hồi đó tôi là một trong số rất ít đứa trẻ có máy tính trong gia đình
Tôi đã làm vô số thiết bị nhỏ bằng HyperCard, và rất yêu thích cách thú vị mà các ứng dụng màn hình đen trắng cùng màu đơn sắc tạo ra các mẫu hoa văn
Chiếc máy tính đầu tiên của tôi, Apple II GS, cũng mua được nhờ chương trình “Apple for a Teacher”, cho phép giáo viên mua với mức giảm giá lớn. Nó giống như tiền thân của Mac có màn hình màu. Tôi đã nhận được 5 game tùy chọn làm giải thưởng trong cuộc thi viết sáng tạo của tạp chí 3-2-1 Contact, rồi thuyết phục bố mẹ rằng tôi cần một chiếc máy tính để chơi các game đó trong thời gian còn lại
Lưu ý: nếu nhấn vào ô phóng to cửa sổ ở góc trên bên phải, nó sẽ thu nhỏ ra HyperCard Editor
Tôi vẫn đang tìm cách bắt đầu từ một bộ thẻ trống, và rõ ràng tay nghề đã rỉ sét. Cũng tò mò không biết có khả thi đến đâu nếu tạo cả một website dựa trên HyperCard bằng thứ này
Cũng có thể đăng nhập
https://hcsimulator.com/mmphosis/Stack
Từ góc nhìn của một người còn quá nhỏ để trải qua thời HyperCard, tôi tò mò sức hút cốt lõi của nó là gì. Đó là khả năng tiếp cận của công nghệ, hay đơn giản là một sản phẩm được thực thi cực kỳ tốt?
Vì mã được gắn trực quan vào các widget, nên khi nhấp nút hoặc nhập vào trường văn bản, cảm giác rằng đoạn mã này tạo ra hành vi kia rất rõ ràng. Hơn nữa, môi trường HyperCard còn triển khai cả tính bền vững của đối tượng, nên rất hữu ích vì không cần tự viết mã xử lý tệp hay chức năng “lưu trạng thái”. Tất nhiên, do ngữ nghĩa đó, nếu làm hỏng một stack thì cũng có thể khó tìm nguyên nhân và sửa, nhưng nhìn chung tôi cho rằng tính bền vững đối tượng trong suốt là một ưu điểm lớn.
Và nếu bạn có một chiếc Mac thì nó đúng nghĩa là có sẵn ở đó. Apple từng bán nó trong một thời gian ngắn như một sản phẩm độc lập giá $49.95, rồi bắt đầu tặng kèm với mọi máy Mac mới trong khoảng 10 năm. Mac chạy System 6, 7, 8, 9 đều có HyperCard, và trong giai đoạn đó nó cũng được đưa vào Apple IIGS. Tôi nhớ đã từng thấy cả những ứng dụng khá không hề tầm thường được triển khai bằng HyperCard, bất chấp các giới hạn của nó.
Trên hết, HyperCard đã khiến điện toán cá nhân trở lại mang tính cá nhân theo cách đã bị mất đi kể từ thời máy tính khởi động thẳng vào trình thông dịch BASIC, và đó là một điều rất tuyệt. Nếu phần giải thích này vẫn chưa đủ, có thể xem đoạn trích này: http://www.cvxmelody.net/HyperCard%20IIGS%201.1%20-%20The%20...
Nó giống một ngôn ngữ kiểu Smalltalk được làm tốt, có thêm thành phần RAD, tuy còn hạn chế, nhưng hạ độ phức tạp của việc tạo GUI xuống ngang với dùng PowerPoint. Đưa nó cho một đứa trẻ “lanh lợi” thì chỉ cần giải thích rất ít, ít nhất nó cũng có thể làm được interactive fiction. Phần lớn các stack HyperCard có thể xem như những bộ slide PowerPoint phi tuyến tính, gồm các card với nút gọi lệnh goto để nhảy sang card khác.
Tôi là trẻ con vào thập niên 90, và có những ký ức mơ hồ về nhiều trò chơi và chương trình nhỏ chạy trên chiếc Mac của gia đình. Chiếc Mac đầu tiên có lẽ là Mac SE. Nghĩ lại thì chúng có lẽ là chương trình HyperCard.
Có một cuốn sách tranh tương tác về một con mèo đen, tôi quên tên rồi nhưng biết nó có trên Macintosh Garden, và 99% khả năng là HyperCard. Bố tôi đưa cho tôi một chương trình tên Soroban, về cơ bản là một chiếc bàn tính; hình như nó đưa ra các bài toán số học đơn giản để bạn dùng bàn tính tính ra đáp án. Cũng có thể bố tôi tự viết, nhưng tôi không chắc. Tiếc là giờ tôi không còn nhớ cách dùng bàn tính nữa. Tôi tò mò không biết những chương trình HyperCard ít được biết đến mà tôi từng gặp thời đó là gì.
Đáng tham khảo: Carson Gross đã tạo ra _hyperscript[0], một ngôn ngữ lấy cảm hứng từ HyperCard và được thông dịch trong trình duyệt.
Cũng chính Carson Gross đã tạo ra htmx[1]. Hai thứ là các dự án riêng biệt nhưng phối hợp với nhau rất ăn ý.
[0]https://hyperscript.org/
[1]https://htmx.org/
Trời ơi, trong này có stack tôi tạo 30 năm trước! Tiếc là nó không chạy đúng trong trình mô phỏng.
Có một câu hỏi cứ khiến tôi bận tâm. Công cụ hiện đại nào ngày nay làm được đúng những việc HyperCard đã làm khi đó? Có phải HTML/JavaScript không?
Điểm mạnh thực sự của HyperCard nằm ở chỗ nó cho phép người dùng bình thường, tức những người không phải lập trình viên, tạo ứng dụng của riêng mình — theo thuật ngữ HyperCard là “stack” — thông qua trỏ và nhấp, cùng ngôn ngữ script giống tiếng Anh là HyperTalk
Nhìn chung chúng ta đã từ bỏ ý tưởng rằng người dùng phải có khả năng tự tạo ứng dụng của mình, nên hiện không có một analog hiện đại phổ biến nào tương ứng với HyperCard. Dù vậy vẫn có những người tiếp tục thử. Chẳng hạn LiveCode là một sản phẩm thương mại lấy cảm hứng trực tiếp từ HyperCard, còn CardStock là một bản clone HyperCard mã nguồn mở dùng Python làm ngôn ngữ script mặc định thay vì một ngôn ngữ giống tiếng Anh
https://livecode.com/
https://github.com/benjie-git/CardStock
Khi HyperCard ra đời, nó được kèm theo mọi máy Mac và miễn phí, còn trên Mac không có thứ gì tương tự. Các lựa chọn thay thế là bố trí widget UI bằng code mà không có GUI builder, hoặc về sau là trả rất nhiều tiền cho IDE chuyên nghiệp như CodeWarrior. Với người mới bắt đầu không có ngân sách nhưng muốn có GUI builder cho Mac, hoặc là dùng HyperCard, hoặc là không có gì để dùng; điều này đã tạo nên cộng đồng người hâm mộ HyperCard
Ngoài ra, Mac thời đó có độ phân giải màn hình tiêu chuẩn. Mọi máy Mac được bán ra đều có độ phân giải 512x342 pixel, nên bạn có thể biết chắc card sẽ trông như thế nào trên bất kỳ máy Mac nào. Hỗ trợ GUI có thể thay đổi kích thước là một trong những việc khó nhất với bất kỳ GUI builder nào, vì những vấn đề như khi màn hình nhỏ như điện thoại hoặc rất rộng như màn hình 16:9 thì nên bố trí nút bấm ra sao. Ngày nay Xcode dùng một bộ giải ràng buộc/trình chứng minh định lý tinh vi để cho phép nhà phát triển tạo UI có thể đổi kích thước trong GUI, và tôi cho rằng nó hoạt động khá tốt, nhưng nó không thể dễ học bằng kiểu “kéo nút lên màn hình thì ở đâu nó cũng hiện đúng như vậy”
Lý do cuối cùng thực sự chí mạng với các công cụ muốn trở thành HyperCard hiện đại là khoảng cách từ GUI builder web sang HTML/CSS thô rất ngắn. Bạn không cần trả nhiều tiền để tiếp cận HTML, CSS, JavaScript ở mức chuyên nghiệp. Không dễ học, nhưng dạy trẻ em cách viết trang web tương tác thì không có vấn đề gì
Vì vậy nhu cầu đối với GUI builder đơn giản thấp hơn so với thời HyperCard, và ngay cả khi giữ được người dùng thì họ cũng có xu hướng sớm “tốt nghiệp” khỏi sản phẩm; cạnh tranh lại cực kỳ nhiều, nên công cụ nào cũng khó xây dựng được một cộng đồng có sức kéo thực sự
Ngay cả nếu chỉ giới hạn ở HTML, niềm vui khi tạo ra thứ gì đó cũng còn kém HyperCard rất xa
Về cơ bản trông nó cũng hơi giống HyperCard. Mang cảm giác độ phân giải thấp, nhưng bên trong cũng có màu sắc
HyperCard xuất hiện vào thời người dùng máy tính cá nhân vẫn còn đang học xem việc sử dụng máy tính là gì. Chính khoảnh khắc đó là lúc lập trình bởi người dùng cuối và các hệ thống có thể biến đổi như HyperCard có thể dẫn dắt. OpenDoc cũng có thể được nói đến theo cách hơi giống vậy, nhưng vẫn khác một chút
Nhìn từ góc độ doanh nghiệp, HyperCard rốt cuộc là gì? Một cách để người dùng máy tính tự tạo các ứng dụng cơ bản của họ? Vậy thì tiếp tục kiếm tiền bằng cách nào? Cộng đồng nhà phát triển của máy tính sẽ ra sao? Vì những lo ngại thương mại như vậy, cách người dùng ngày nay tham gia vào điện toán cá nhân và các công cụ chúng ta dùng để thao tác môi trường điện toán đều bị mô hình tiêu dùng định hình rất mạnh, đồng thời tồn tại sự phân tách rõ rệt giữa người dùng và lập trình viên
Lý do ngày nay không có đối ứng thực sự của HyperCard là vì điện toán cá nhân đã đi theo hướng khác
So với Decker thì cái này thế nào?
https://beyondloom.com/decker/index.html
Decker là một ứng dụng độc lập mã nguồn mở, ở vài mặt thì giống HyperCard, nhưng khác khá nhiều ở chi tiết, chẳng hạn dùng một ngôn ngữ script riêng có nguồn gốc từ APL. Decker không được thiết kế để tương thích với stack HyperCard