Nếu có thể gắn cả hành vi UI vào Figma thì chắc sẽ trông đúng như thế này. Web mấy năm nay có cảm giác đang đi lùi; chúng ta mất Flash và chuyển sang HTML5, nhưng dòng chảy nơi những người sáng tạo làm ra đủ thứ đã dần nhạt đi
Ngày xưa, các IDE như Visual Basic, Delphi, Borland JBuilder có những trình dựng ứng dụng đơn giản, và Eclipse cũng từng có một trình dựng UI Swing đơn giản trong một thời gian. Phía web cũng có Dreamweaver, FrontPage, v.v.
Không phải nói các công cụ đó hoàn hảo, nhưng chưa có sự thay thế đúng nghĩa; giờ thì “thiết kế” trong Figma rồi đội phát triển gần như triển khai lại từ đầu, nhìn có vẻ lãng phí sâu sắc
Tôi không chắc thực tế lãng phí đến mức nào. Có phần chồng lấn, nhưng theo kinh nghiệm của tôi thì không nhiều; phần lớn thời gian frontend dành cho hành vi phía sau component, tương tác với thiết bị, bảo mật và gọi API
Tôi không nghĩ trình dựng UI trực quan từng là con đường tương lai. Nó hợp với UI tĩnh, nhưng sụp đổ ngay khi cố biểu diễn các ràng buộc động
Figma cũng cho thấy điều đó. Để làm prototype nhanh, việc đặt phần tử bằng vị trí tuyệt đối và dùng symbol khá hữu ích, nhưng ngay khi đưa autolayout vào, bạn gần như gặp lại đúng các vấn đề của CSS flexbox và grid. Khác biệt chỉ là bạn gặp chúng trong một hệ thống tệ hơn nhiều, không có quản lý phiên bản, công cụ refactor hay ChatGPT
Về mặt chủ quan, tôi thấy thao tác trực tiếp với cấu trúc XML dễ hơn nhiều so với việc phải double-click qua 15 group hoặc cmd-click để đào xuống chọn một component cụ thể rồi sửa các thuộc tính dạng văn bản. Vì vậy có lẽ Apple và Android đã đẩy interface builder sang hướng DSL
VB6 rõ ràng là IDE tốt nhất cho những người cần tạo ra kết quả ngay lập tức
Hồi giữa những năm 2000, khi tôi lắp đặt hệ thống CCTV chạy trên PC, tôi demo PC cho một khách hàng là nhà hàng và cho họ xem dịch vụ nhạc Pandora; họ hỏi có thể phát ra loa của nhà hàng không. Tôi dùng sợi cáp 3.5mm-RCA-BNC trong xe nối vào ampli, và khách hàng rất thích, nói rằng cảm giác như bước vào thế kỷ 21
Sau đó họ hỏi liệu có thể tạm dừng nhạc để thông báo cho khách không, nên tôi tạo một shortcut tới sound mixer sndvol32.exe trên desktop. Khi họ nói muốn nhân viên làm việc đó ở quầy chứ không phải trong văn phòng, tôi bảo cho tôi một cái kẹp giấy và 30 phút
Tôi lấy từ xe một đoạn Cat 5 lõi đặc và một con chuột IBM màu be cũ hai nút, kéo dây từ văn phòng ra quầy lễ tân, hàn một cặp dây Cat 5 vào công tắc click trái, rồi bắt vít thạch cao xuyên qua thân chuột để treo nó lên tường như một cái đầu hươu nhồi bông. Ở phía văn phòng, vì không mang DB-25 theo, tôi hàn dây dẫn vào cái kẹp giấy để nối ổn định vào cổng LPT của PC
Phần sau thì dễ. Tôi tìm “VB6 Volume Mixer”, tải về, mở checkbox mute của stereo mix, copy đoạn một dòng vào timer rồi cứ mỗi 100ms kiểm tra xem chân LPT có bị chập không; nếu chập thì mute stereo mix và bỏ mute micro
Đây là thứ làm tại chỗ mà không có kế hoạch trước, và khách hàng đó đến giờ vẫn là khách hàng. Với kiểu người làm được đủ thứ, nó thật sự là một công cụ tuyệt vời
Vài năm trước trên Reddit, tôi có cảm giác đã đọc một bình luận nói rằng họ từng thấy nhân viên nhà hàng bấm một con chuột gắn trên tường để phát thông báo. Hình như là thông báo đơn hàng đã sẵn sàng; cấu hình rất độc đáo nên có khả năng cao chính là trường hợp này
Tôi cũng thích VB6, nhưng cái này trông như 10% VB6 và 90% MacGyver. Phoenix Foundation chắc chắn cần một người như vậy
“VB6 là IDE tốt nhất” thì không, nó đứng thứ hai. Tốt nhất là Delphi, và giờ có lẽ có thể là Lazarus
Làm rất tốt, và nếu giờ có thêm Delphi nữa thì tôi nghĩ mình sẽ lại hài lòng với tình trạng của môi trường phát triển
Mã nguồn: https://github.com/BAndysc/AvaloniaVisualBasic6
Vì bình luận giới thiệu Lazarus đã bị xóa nên tôi bổ sung: tôi biết Lazarus và đang dùng cho các dự án cũ. Nhưng tôi muốn một phiên bản hiện đại chạy được cả trong trình duyệt, và như ví dụ này, .NET có vẻ khá hợp cho mục đích đó. Có khi cũng có thể dựa trên https://pascalabc.net/en/
Không đùa đâu, lập trình Pascal/Lazarus và Common Lisp hiện vẫn vui hơn các công cụ ngày nay; không có cảm giác bất an, chỉ có niềm vui và năng suất
Việc có thể dùng công nghệ dựa trên .NET trong client hoặc trong trình duyệt không có nghĩa là nhất thiết nên dùng. Các framework kiểu này thường có những đánh đổi lớn, và một khi bắt đầu dùng thì rất nhanh bị phụ thuộc
Ví dụ, chuyển từ MVC sang MVC dễ hơn nhiều so với chuyển từ webforms sang blazor/avaloniaui/dotvvm
Cần Turbo Pascal/C++ hơn
Cuối thập niên 90 và đầu những năm 2000, tôi đã làm việc cực kỳ năng suất với VB5/6. Tôi tạo rất nhiều ứng dụng tiện ích để giải quyết đủ loại vấn đề nhỏ, và việc dựng chúng như lắp ráp thật quá dễ. Tôi đã cố chuyển sang vb.net nhưng cảm giác không còn như vậy
Trình dựng VB6 WinForms ở đây gần như giống 100% với trình dựng WinForms của Visual Studio 2022 mới nhất hiện nay
Tôi dùng nó vài giờ mỗi ngày; chỉ cần kéo thả vài component lên form và gắn thêm chút logic là trong vài phút đã có một ứng dụng desktop nhỏ chạy được
Từ năm 2021 hỗ trợ tốt hơn nên tiếc là tôi code bằng C#, nhưng thành thật mà nói vì khả năng đọc mã, tôi thấy VB.NET vượt trội hơn
Tôi hiểu cảm giác đó. Thời đại học, tôi là người phụ trách VB6 viết tự động hóa kiểm thử cho thiết bị qua GPIB, UART, RS422, v.v., và kiếm được khá nhiều khi là nghiên cứu sinh ở khoa kỹ thuật điện. Sau khi tôi bỏ việc trợ giảng, tôi được thay bằng vị trí phụ trách thiết bị, và tôi cũng trang trải phần lớn học phí thạc sĩ nhờ việc đó
Nhớ đến một trong những công cụ lập trình xuất sắc nhất thời đó. Khi chuyển từ BASIC sang Visual Basic, cảm giác thật sự gây choáng. Ngay cả thời nay vẫn thấy nhớ những công cụ như vậy, còn các công cụ được gọi là no-code hay low-code bây giờ vận hành theo cách khá khác. Vẫn nghĩ low-code tốt nhất là cách mà VB đã làm
Nói thật, nếu theo cách tiếp cận lập trình phản ứng, việc gắn trải nghiệm người dùng liên quan vào IDE có lẽ cũng không khó đến thế
Có vẻ hầu hết nhà phát triển framework đã quên năng suất là chỉ số cốt lõi. Nói vậy có thể hơi bất công, nhưng việc thiếu các công cụ trực quan thật đáng thất vọng
Wow, VB6 chính là công cụ đã đưa mình đến với phát triển phần mềm khi còn nhỏ. Một màn hồi tưởng đúng thứ hôm nay cần
Cùng trải nghiệm. Nhưng với sự bồng bột tuổi trẻ, chẳng mất lâu để mình tuyên bố BASIC là ngôn ngữ vô dụng rồi chuyển sang MS Visual C++ 6
C++ và MFC còn tệ hơn vì những lý do khác, nhưng sau đó mình phát hiện ra Linux, và phần còn lại thì ai cũng biết
Dù vậy, mình vẫn chưa tìm thấy thứ gì mạnh mẽ như RAD của VB6. Ngày nay thì như người tối cổ, hoặc tự tay bố trí UI, hoặc dùng XML để tạo
Mình cũng vậy. Bắt đầu bằng bản VB6 lậu và một trang web tải xuống giới thiệu khá tốt cách dùng
Vẫn nhớ cả những việc như dùng Win32 API để DMA lên ảnh nhằm tạo phát hiện va chạm từng pixel giữa các sprite. Đó là quãng thời gian vui vẻ
Tạo DLL hiệu năng cao bằng Visual C++, rồi dùng nó trong VB — khi đó VB là điểm cân bằng hoàn hảo
Lướt GitHub của tác giả thì có vẻ họ cũng duy trì một thư viện UI cho giao diện và cảm giác Win9x cổ điển: https://github.com/BAndysc/Classic.Avalonia
Mình thích quá nên muốn dùng nó để tự viết một ứng dụng
Chỉ riêng thư viện đó cũng đáng được đăng riêng chẳng kém gì bản tái hiện VB6. Độ chi tiết tuyệt vời đến mức khiến mình muốn đào lại Avalonia
Nhớ thời đó. IDE nào cũng có trình gỡ lỗi theo từng dòng
Các ứng dụng Angular/React bây giờ qua bao năm vẫn không có thứ như vậy, mà cú pháp thì vẫn còn dễ nhầm
Trước giờ chưa từng nghĩ theo cách này, nhưng đúng thật. React có các công cụ plugin trình duyệt khá ổn, nhưng quá trình đưa nó trở lại IDE vẫn rất đau khổ
Thứ mình viết và thứ thực sự chạy khác nhau quá nhiều, nên tốt hơn nên xem ứng dụng một trang như một ngôn ngữ khác. Firefox có trình gỡ lỗi JavaScript khá ổn, và nếu đầu ra của công cụ build tạo sourcemap thì nó hoạt động tốt
Hay. Có một báo cáo lỗi nhỏ
Mình thêm một nút, nhấp đúp để mở cửa sổ code, nhập một đoạn đơn giản như MsgBox "Hello", rồi bấm nút x ở góc trên bên phải cửa sổ code
Code không được lưu. Muốn cập nhật code thì phải “Save” hoặc “Run” dự án. IDE VB ngày xưa nhớ mọi thứ đã nhập, điểm này thì khác
Với control nút thì hoạt động, nhưng control nhãn có vẻ không phát sinh sự kiện Click dù làm cách nào
Nhớ là vào thập niên 90, rất nhiều công ty nhỏ vận hành bằng VB và Access. Nó thật sự trao quyền rất lớn cho những người không phải lập trình viên
Giá mà trên web cũng có thứ tương tự. Một số giải pháp low-code nhìn bề ngoài thì giống, nhưng điểm khác biệt của VB là nó có thể phát triển thành một ứng dụng hoàn chỉnh mà không cần đổi sang thứ khác giữa chừng. Nhìn độ phức tạp của việc phát triển và triển khai các ứng dụng CRUD trên web ngày nay mình luôn thấy kinh ngạc
Web là một nền tảng ứng dụng thật sự tệ. Nó phổ biến vì hai lý do
Thứ nhất, không cần cài đặt và không phải xử lý chuyện đóng gói cho hệ điều hành. Vì việc đóng gói trên mọi hệ điều hành đều khủng khiếp
Thứ hai, SaaS là DRM. Nếu host phần mềm trên đám mây thì không bị sao chép lậu và dễ thu phí thuê bao hằng tháng
Nếu nêu thêm lý do thứ ba thì đó là việc xây dựng tính năng cộng tác trở nên dễ hơn, nhưng điều này chỉ áp dụng cho một số phần mềm
1 bình luận
Ý kiến trên Hacker News
Nếu có thể gắn cả hành vi UI vào Figma thì chắc sẽ trông đúng như thế này. Web mấy năm nay có cảm giác đang đi lùi; chúng ta mất Flash và chuyển sang HTML5, nhưng dòng chảy nơi những người sáng tạo làm ra đủ thứ đã dần nhạt đi
Ngày xưa, các IDE như Visual Basic, Delphi, Borland JBuilder có những trình dựng ứng dụng đơn giản, và Eclipse cũng từng có một trình dựng UI Swing đơn giản trong một thời gian. Phía web cũng có Dreamweaver, FrontPage, v.v.
Không phải nói các công cụ đó hoàn hảo, nhưng chưa có sự thay thế đúng nghĩa; giờ thì “thiết kế” trong Figma rồi đội phát triển gần như triển khai lại từ đầu, nhìn có vẻ lãng phí sâu sắc
Figma cũng cho thấy điều đó. Để làm prototype nhanh, việc đặt phần tử bằng vị trí tuyệt đối và dùng symbol khá hữu ích, nhưng ngay khi đưa autolayout vào, bạn gần như gặp lại đúng các vấn đề của CSS flexbox và grid. Khác biệt chỉ là bạn gặp chúng trong một hệ thống tệ hơn nhiều, không có quản lý phiên bản, công cụ refactor hay ChatGPT
Về mặt chủ quan, tôi thấy thao tác trực tiếp với cấu trúc XML dễ hơn nhiều so với việc phải double-click qua 15 group hoặc cmd-click để đào xuống chọn một component cụ thể rồi sửa các thuộc tính dạng văn bản. Vì vậy có lẽ Apple và Android đã đẩy interface builder sang hướng DSL
VB6 rõ ràng là IDE tốt nhất cho những người cần tạo ra kết quả ngay lập tức
Hồi giữa những năm 2000, khi tôi lắp đặt hệ thống CCTV chạy trên PC, tôi demo PC cho một khách hàng là nhà hàng và cho họ xem dịch vụ nhạc Pandora; họ hỏi có thể phát ra loa của nhà hàng không. Tôi dùng sợi cáp 3.5mm-RCA-BNC trong xe nối vào ampli, và khách hàng rất thích, nói rằng cảm giác như bước vào thế kỷ 21
Sau đó họ hỏi liệu có thể tạm dừng nhạc để thông báo cho khách không, nên tôi tạo một shortcut tới sound mixer sndvol32.exe trên desktop. Khi họ nói muốn nhân viên làm việc đó ở quầy chứ không phải trong văn phòng, tôi bảo cho tôi một cái kẹp giấy và 30 phút
Tôi lấy từ xe một đoạn Cat 5 lõi đặc và một con chuột IBM màu be cũ hai nút, kéo dây từ văn phòng ra quầy lễ tân, hàn một cặp dây Cat 5 vào công tắc click trái, rồi bắt vít thạch cao xuyên qua thân chuột để treo nó lên tường như một cái đầu hươu nhồi bông. Ở phía văn phòng, vì không mang DB-25 theo, tôi hàn dây dẫn vào cái kẹp giấy để nối ổn định vào cổng LPT của PC
Phần sau thì dễ. Tôi tìm “VB6 Volume Mixer”, tải về, mở checkbox mute của stereo mix, copy đoạn một dòng vào timer rồi cứ mỗi 100ms kiểm tra xem chân LPT có bị chập không; nếu chập thì mute stereo mix và bỏ mute micro
Đây là thứ làm tại chỗ mà không có kế hoạch trước, và khách hàng đó đến giờ vẫn là khách hàng. Với kiểu người làm được đủ thứ, nó thật sự là một công cụ tuyệt vời
Làm rất tốt, và nếu giờ có thêm Delphi nữa thì tôi nghĩ mình sẽ lại hài lòng với tình trạng của môi trường phát triển
Mã nguồn: https://github.com/BAndysc/AvaloniaVisualBasic6
Vì bình luận giới thiệu Lazarus đã bị xóa nên tôi bổ sung: tôi biết Lazarus và đang dùng cho các dự án cũ. Nhưng tôi muốn một phiên bản hiện đại chạy được cả trong trình duyệt, và như ví dụ này, .NET có vẻ khá hợp cho mục đích đó. Có khi cũng có thể dựa trên https://pascalabc.net/en/
Không đùa đâu, lập trình Pascal/Lazarus và Common Lisp hiện vẫn vui hơn các công cụ ngày nay; không có cảm giác bất an, chỉ có niềm vui và năng suất
Ví dụ, chuyển từ MVC sang MVC dễ hơn nhiều so với chuyển từ webforms sang blazor/avaloniaui/dotvvm
Cuối thập niên 90 và đầu những năm 2000, tôi đã làm việc cực kỳ năng suất với VB5/6. Tôi tạo rất nhiều ứng dụng tiện ích để giải quyết đủ loại vấn đề nhỏ, và việc dựng chúng như lắp ráp thật quá dễ. Tôi đã cố chuyển sang vb.net nhưng cảm giác không còn như vậy
Tôi dùng nó vài giờ mỗi ngày; chỉ cần kéo thả vài component lên form và gắn thêm chút logic là trong vài phút đã có một ứng dụng desktop nhỏ chạy được
Từ năm 2021 hỗ trợ tốt hơn nên tiếc là tôi code bằng C#, nhưng thành thật mà nói vì khả năng đọc mã, tôi thấy VB.NET vượt trội hơn
Nhớ đến một trong những công cụ lập trình xuất sắc nhất thời đó. Khi chuyển từ BASIC sang Visual Basic, cảm giác thật sự gây choáng. Ngay cả thời nay vẫn thấy nhớ những công cụ như vậy, còn các công cụ được gọi là no-code hay low-code bây giờ vận hành theo cách khá khác. Vẫn nghĩ low-code tốt nhất là cách mà VB đã làm
Có vẻ hầu hết nhà phát triển framework đã quên năng suất là chỉ số cốt lõi. Nói vậy có thể hơi bất công, nhưng việc thiếu các công cụ trực quan thật đáng thất vọng
Wow, VB6 chính là công cụ đã đưa mình đến với phát triển phần mềm khi còn nhỏ. Một màn hồi tưởng đúng thứ hôm nay cần
C++ và MFC còn tệ hơn vì những lý do khác, nhưng sau đó mình phát hiện ra Linux, và phần còn lại thì ai cũng biết
Dù vậy, mình vẫn chưa tìm thấy thứ gì mạnh mẽ như RAD của VB6. Ngày nay thì như người tối cổ, hoặc tự tay bố trí UI, hoặc dùng XML để tạo
Vẫn nhớ cả những việc như dùng Win32 API để DMA lên ảnh nhằm tạo phát hiện va chạm từng pixel giữa các sprite. Đó là quãng thời gian vui vẻ
Lướt GitHub của tác giả thì có vẻ họ cũng duy trì một thư viện UI cho giao diện và cảm giác Win9x cổ điển: https://github.com/BAndysc/Classic.Avalonia
Mình thích quá nên muốn dùng nó để tự viết một ứng dụng
Nhớ thời đó. IDE nào cũng có trình gỡ lỗi theo từng dòng
Các ứng dụng Angular/React bây giờ qua bao năm vẫn không có thứ như vậy, mà cú pháp thì vẫn còn dễ nhầm
Hay. Có một báo cáo lỗi nhỏ
Mình thêm một nút, nhấp đúp để mở cửa sổ code, nhập một đoạn đơn giản như
MsgBox "Hello", rồi bấm nút x ở góc trên bên phải cửa sổ codeCode không được lưu. Muốn cập nhật code thì phải “Save” hoặc “Run” dự án. IDE VB ngày xưa nhớ mọi thứ đã nhập, điểm này thì khác
Nhớ là vào thập niên 90, rất nhiều công ty nhỏ vận hành bằng VB và Access. Nó thật sự trao quyền rất lớn cho những người không phải lập trình viên
Giá mà trên web cũng có thứ tương tự. Một số giải pháp low-code nhìn bề ngoài thì giống, nhưng điểm khác biệt của VB là nó có thể phát triển thành một ứng dụng hoàn chỉnh mà không cần đổi sang thứ khác giữa chừng. Nhìn độ phức tạp của việc phát triển và triển khai các ứng dụng CRUD trên web ngày nay mình luôn thấy kinh ngạc
Thứ nhất, không cần cài đặt và không phải xử lý chuyện đóng gói cho hệ điều hành. Vì việc đóng gói trên mọi hệ điều hành đều khủng khiếp
Thứ hai, SaaS là DRM. Nếu host phần mềm trên đám mây thì không bị sao chép lậu và dễ thu phí thuê bao hằng tháng
Nếu nêu thêm lý do thứ ba thì đó là việc xây dựng tính năng cộng tác trở nên dễ hơn, nhưng điều này chỉ áp dụng cho một số phần mềm