1 điểm bởi GN⁺ 2024-06-27 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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ư mouseUp bằ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ư beep hoặc go next card
    • Ví dụ về trình xử lý thông điệp là chạy beep trong on mouseUp, chuyển sang thẻ kế tiếp rồi kết thúc bằng end mouseUp

1 bình luận

 
GN⁺ 2024-06-27
Ý 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

    • Tôi vẫn tin HyperCard là môi trường phát triển năng suất nhất trong lịch sử để tạo ứng dụng cho người dùng cuối
    • Và còn có Macromedia Director nữa. Ngày nay thật sự hiếm khi người ta phải lòng một phần mềm
    • Nếu đang tìm thứ gì đó tương tác số dễ dùng, có thể bạn sẽ thích p5.js. https://p5js.org/
      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
    • Hãy thử xem P5jsProcessing, có thể chúng sẽ phần nào khỏa lấp cơn khát đó
  • 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

    • Tôi tự hỏi nếu HyperCard có sẵn networking tích hợp thì liệu web có vẫn ra đời không
  • Khi còn nhỏ, HyperCardSuperPaint 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

    • Tôi cũng tương tự. Bố mẹ tôi là giáo viên, bố tôi phụ trách phòng thực hành Mac, dù ông không đặc biệt thành thạo Mac. Nhưng mùa hè thì máy tính để không, nên ông có thể mang một chiếc về nhà; ban đầu là Apple IIe, sau đó là Mac đời đầu. Tôi đã lãng phí rất nhiều thời gian chơi trong HyperCard
      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

    • Trong menu hamburger có “New Stack...
      Cũng có thể đăng nhập
      https://hcsimulator.com/mmphosis/Stack
    • Chỉ cần tạo thẻ mới, rồi tạo các nút liên kết đến thẻ tiếp theo hoặc đến bất cứ đâu trong một stack thẻ tuyến tính. Chuyển cảnh, hiệu ứng và timing đều có thể xử lý trong trình biên tập pixel hóa huy hoàng đó
  • 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?

    • Là cả hai. HyperCard đặt sức mạnh của GUI vào tay người dùng bằng những ẩn dụ và cú pháp đơn giản. Ngôn ngữ của nó giống tiếng Anh đủ để cảm thấy dễ viết, nhưng không đến mức khiến người ta ảo tưởng rằng có thể làm cả những việc thực ra không làm được. Nó làm tôi nhớ đến Inform 7.
      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...
    • Hồi lớp 5, HyperCard đối với tôi giống như phát triển phần mềm sơ khai. Tôi dành hàng giờ sau giờ học để làm game và truyện phiêu lưu lựa chọn, có thể đưa vào câu lệnh goto, vòng lặp, hoạt ảnh, các hàm đơn giản kiểu “khi nhấp thì phát âm thanh này và chuyển sang trang này”. Tôi hoàn toàn bị cuốn vào, và có lẽ nó đã dẫn đến niềm say mê phát triển BBS của tôi.
    • Đó là thời trước cả web hay Flash. Nó là một công cụ tạo nội dung đa phương tiện/tương tác tương đối đơn giản dành cho người không phải lập trình viên, có bố cục WYSIWYG. Bạn có thể tạo đủ thứ bằng HyperCard, từ cách tương tác với cơ sở dữ liệu cho đến truyện học đường cho trẻ em.
    • Khi lần đầu bắt gặp khái niệm các card được liên kết với HyperCard, tức siêu văn bản, tôi có cảm giác như đầu óc bị thổi tung. Tôi nghĩ với nhiều người, đó cũng là lần đầu họ tiếp xúc với siêu văn bản, chỉ là họ không nhận ra. Nó là Adobe Flash của thời đó.
    • Tôi cũng nghĩ vậy.
      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.

    • Tôi tò mò đó là stack nào. Nếu muốn nghịch lại cho hoài niệm thì ngày nay vẫn có những cách chạy khác, và tác giả HC Simulator cũng phản hồi khá nhanh trong việc sửa những thứ chưa hoạt động đú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?

    • Tôi không nghĩ HTML/JavaScript là một “công cụ” theo cùng nghĩa với HyperCard
      Đ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
    • Rất nhiều người đã đặt câu hỏi này. Có nhiều công cụ GUI builder đơn giản, bao gồm cả GUI builder cho web, nhưng không cái nào phổ biến vì điểm cân bằng tinh tế giữa nhu cầu và nguồn cung mà HyperCard đã đáp ứng
      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ự
    • HyperCard hạn chế hơn, và chính những hạn chế đó buộc người dùng phải tìm các giải pháp sáng tạo. Đồng thời, về khả năng tiếp cận, nó vượt xa HTML/JS. Dù vậy phép so sánh gần nhất có lẽ vẫn là HTML/JS
      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
    • Một ví dụ là cái này: https://internet-janitor.itch.io/decker
      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
    • Theo tôi thì không có công cụ như vậy. Không phải vì hiện nay không có công cụ nào làm “việc tương tự” như HyperCard đã làm, mà vì không còn môi trường điện toán cá nhân nào nơi một công cụ như thế khớp vào một cách tự nhiên và cốt lõi đến vậy
      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

    • HyperCard Simulator là một dịch vụ tập trung, dựa trên web, hướng tới khả năng tương thích với các stack HyperCard lịch sử và ngôn ngữ script HyperTalk
      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
    • Tôi vẫn chưa có dịp ngồi xuống dùng thử trình mô phỏng này một cách nghiêm túc, nhưng với tư cách người đã dùng cả Decker lẫn HyperCard, Decker có đường cong học tập dốc hơn nhiều đối với người mới bắt đầu