2 điểm bởi GN⁺ 2023-12-02 | 1 bình luận | Chia sẻ qua WhatsApp
  • Turbo Pascal do Borland giới thiệu vào tháng 11 năm 1983 đã chính thức tròn 40 năm vào tháng 11 năm 2023
  • Turbo Pascal được đánh giá là sản phẩm đặt nền móng cho Borland và là môi trường phát triển tích hợp (IDE) đầu tiên được sử dụng rộng rãi trong ngành
  • Vào thời điểm đó, sản phẩm để lại ấn tượng mạnh về trải nghiệm phát triển và mức độ hoàn thiện, đồng thời đạt được thành công thương mại lớn
  • Embarcadero vẫn đang tiếp tục phát triển dòng trình biên dịch kế nhiệm, và trình biên dịch dòng lệnh Win32 của Delphi 12 Athens dùng phiên bản 36.0
  • Vì hệ thống đánh số phiên bản hiện tại nối tiếp từ Turbo Pascal đầu tiên, cột mốc 40 năm lần này cũng gắn trực tiếp với lịch sử của dòng Delphi

Turbo Pascal khởi đầu vào tháng 11 năm 1983

  • Turbo Pascal là sản phẩm do Borland phát hành vào tháng 11 năm 1983
  • Tính đến tháng 11 năm 2023, sản phẩm này chính thức tròn 40 năm

Vị trí trong lịch sử Borland và IDE

  • Turbo Pascal được xem là một cột mốc của ngành
  • Đây là sản phẩm đã khai sinh công ty Borland
  • Nó được nhắc đến như IDE đầu tiên được biết đến rộng rãi
  • Theo tiêu chuẩn thời đó, đây là một sản phẩm xuất sắc và quy mô thành công cũng rất lớn

Tài liệu đọc thêm và bối cảnh của Pascal

Dòng trình biên dịch kế nhiệm tiếp nối tại Embarcadero

  • Embarcadero vẫn đang tiếp tục phát triển dòng trình biên dịch kế nhiệm của Turbo Pascal
  • Gần đây hãng đã phát hành phiên bản 36 của trình biên dịch này
  • Trình biên dịch dòng lệnh của Delphi 12 Athens hiển thị phiên bản là Embarcadero Delphi for Win32 compiler version 36.0
  • Số phiên bản 36 này thuộc hệ thống đánh số có thể truy ngược về Turbo Pascal đầu tiên

Easter Egg kỷ niệm 40 năm

  • Embarcadero đã dành Easter Egg trong sản phẩm để kỷ niệm 40 năm lần này nhân dịp ngày kỷ niệm của Turbo Pascal
  • Thông điệp kết lại là “Happy 40th birthday, Turbo Pascal!”

1 bình luận

 
GN⁺ 2023-12-02
Ý kiến trên Hacker News
  • Một trong những trò chơi máy tính tôi yêu thích là ZZT, được viết bằng Turbo Pascal. Đó là một trò chơi chế độ văn bản kỳ lạ do Tim Sweeney của Epic Megagames tạo ra, kết hợp giữa giải đố và bắn súng, và ngay cả bản shareware miễn phí cũng có kèm trình chỉnh sửa trò chơi, thậm chí còn bao gồm cả một ngôn ngữ lập trình nhỏ tên là ZZT-OOP
    Mã nguồn gốc của ZZT đã bị thất lạc, nhưng vài năm sau Adrian Siekierka đã kiên trì dịch ngược mã Pascal gốc để khi biên dịch bằng đúng phiên bản Turbo Pascal ban đầu thì tạo ra tệp thực thi giống hệt từng byte. Thật đáng kinh ngạc
    https://blog.asie.pl/2020/08/reconstructing-zzt/
    https://news.ycombinator.com/item?id=22609474
    https://benhoyt.com/writings/zzt-in-go/

    • Chính ZZT là lý do tôi cài Turbo Pascal trên máy tính của mình
    • Với tôi nữa, ZZT là một phần mềm thật sự đặc biệt và là cơ duyên giúp tôi tiếp cận việc lập trình một cách nghiêm túc. Trước đó tôi từng gõ lại các đoạn mã BASIC in trên tạp chí hoặc làm mấy thứ linh tinh trên BBC Micro ở trường, nhưng trên chiếc PC đầu tiên của mình tôi đã học bằng cách tạo ra thứ mình muốn từ đầu với ZZT-OOP
    • ZZT cũng đã truyền cảm hứng cho overworld của Frog Fractions 2
  • Turbo Pascal là thứ đã đưa tôi vào con đường lập trình. Tôi còn nhớ đã bỏ ra hàng trăm mark Đức cho giấy phép Borland Pascal 7.0, rồi sau đó là Delphi 1.0 và 2.0, và cuối cùng còn làm ra phần mềm “thương mại” đầu tiên mà mình bán lấy tiền
    Ở thời DOS, ngoài Basic ra thì có lẽ Turbo Pascal là con đường dễ nhất để bước vào lập trình, còn trên Windows 3.1/95 thì Delphi là một công cụ mở mang tầm mắt khi cho thấy lập trình GUI có thể dễ đến thế nào
    Xét trên nhiều phương diện, có cảm giác chúng ta thậm chí còn thụt lùi so với thời đó. Trình biên dịch Turbo Pascal / Delphi có thể tạo ra các chương trình GUI hoàn chỉnh dưới dạng những tệp nhị phân nhỏ gọn, nên tôi tự hỏi vì sao phần mềm ngày nay với hiệu năng tương tự lại phình to thêm đến vài bậc độ lớn như vậy

    • Ở các phiên bản Turbo Pascal đầu tiên, miễn là chương trình và mã nguồn còn vừa trong RAM thì ngay cả trên máy móc thời đó, việc sửa mã rồi xem kết quả cũng gần như tức thì. Tương tác cũng được thiết kế với tính tức thời đó; nếu tôi nhớ không nhầm, thay vì phun ra một màn hình đầy báo cáo lỗi biên dịch, nó sẽ đưa bạn thẳng tới dòng bị lỗi
      Nếu nguyên nhân chỉ là lỗi gõ sai thì sửa xong, biên dịch lại và chạy chỉ mất 1 giây. Các công cụ ngày nay thường theo một triết lý khác, buộc lập trình viên phải thực hiện thêm những thao tác không cần thiết
    • Một chương trình GUI “đầy đủ tính năng” của thập niên 90 có lẽ gần như không thể dùng được theo tiêu chuẩn ngày nay. Nói cách khác, các framework và chương trình hiện nay không có hiệu năng tương tự với những thứ giữa thập niên 90, và chỉ cần biên dịch lại một ứng dụng 25 năm tuổi bằng phiên bản framework hiện tại thì về lý thuyết nó đã được bổ sung những thứ như Unicode, quốc tế hóa, khả năng truy cập và hỗ trợ mạng
      Ngoại lệ là SAP, bằng cách nào đó dường như đã thành công trong việc kết hợp tính thù địch với người dùng của UI thập niên 90 với mức tiêu tốn tài nguyên của phần mềm hiện đại. Ngôn ngữ tôi dùng sau BASIC cũng chính là Turbo Pascal
    • À, nhắc đến mark mới thấy lâu thật rồi. Không rõ có phải chỉ ở Anh không, nhưng khi nói hoặc viết thì người ta không dịch tên mark sang tiếng Anh mà luôn gọi là Deutschmark
    • Tệp thực thi đó ít nhất đã thiếu một con voi rất lớn trong phòng: hỗ trợ Unicode. Có lẽ nó cũng chẳng thể nhét vừa vào RAM của PC thời đó
    • Turbo Pascal không chỉ dạy lập trình thủ tục từ trên xuống, vốn là cách tiếp cận phổ biến của Pascal thời ấy, mà còn dạy cả lập trình hướng đối tượng thông qua bản demo Breakout
  • Điều đáng nhớ nhất ở TP là mỗi hàm đều có ví dụ mã đơn giản, dễ hiểu, được sắp xếp logic nên rất dễ tìm và sử dụng. Vì thế dù khi đó chỉ là một thiếu niên mới hiểu BASIC ở mức sơ sơ, tôi vẫn có thể tự học Turbo Pascal chỉ với IDE, không cần Internet
    Nhiều hệ thống ngày nay thậm chí còn chẳng có được thứ gì gần như vậy. Tôi tự hỏi đó là nhờ đặc tính đơn giản của hệ thống x86 DOS thời ấy, hay vì tốc độ thay đổi quá nhanh, yêu cầu đa nền tảng và độ phức tạp hiện đại đã khiến việc tạo ra thứ như vậy trở nên bất khả thi

    • Processing(P5) từng có tính năng như vậy. Trong IDE, bạn có thể chọn một chuỗi văn bản để tìm trong tài liệu, và nếu đó là hàm tích hợp hay hằng số thì nó sẽ mở một trang HTML tĩnh được cài cùng phần mềm, không cần Internet hay máy chủ. Dù đang offline vẫn có thể duyệt tài liệu, và tôi có cảm giác năng lực cơ bản kiểu này dường như đã biến mất trong thời đại tạo site tĩnh ngày nay
      Tôi muốn nói thêm rằng vào thời đó, Processing gần như là framework lập trình sáng tạo duy nhất có tài liệu offline hoàn chỉnh. Ví dụ, OpenFrameworks đến giờ phần lớn vẫn gần như chỉ là bộ tài liệu rỗng được tạo tự động
      Theo tôi, đây là một trong những yếu tố giúp Processing vượt trội hơn các lựa chọn khác trong môi trường giáo dục. Khá đáng tiếc là p5.js không hoàn toàn kế thừa truyền thống đó: muốn đọc tài liệu thì phải lên mạng, và nó cũng không còn là website tĩnh mà là kiểu khi mở ra, văn bản được render bằng JavaScript. Dù vậy, bản thân tài liệu vẫn đầy đủ, kể cả ví dụ
      https://processing.org/
      https://p5js.org/
    • Đó là vì ngày nay người ta không viết tài liệu nữa. Các ngôn ngữ mới thường là mã nguồn mở, và có kiểu văn hóa bảo người ta cứ đi đọc source, nhưng tôi nghĩ như vậy là sai
    • Tôi cũng học Turbo Pascal mà không cần sách. Tôi có một quyển sách BASIC đi kèm với máy tính, nhưng Turbo Pascal dễ hơn nhiều. Vẽ pixel chỉ đơn giản là chọn chế độ hiển thị có double buffering rồi vẽ pixel thôi, còn đọc cổng joystick hay chuột thì cũng chỉ việc đọc là được
    • Turbo C cũng vậy. Bây giờ muốn tìm ví dụ thì đúng là phải cầu may
    • Tôi cũng thế. Sau vài năm dùng GFA Basic, khi gặp Turbo Pascal, nó giống như một phiên bản BASIC có block code, kiểu biến gồm cả record, hàm và procedure, thậm chí cả tham chiếu, nên giúp ích rất nhiều. Tôi đã học Pascal chỉ bằng cách đọc tài liệu trợ giúp và xem những ví dụ cực kỳ rõ ràng, hữu ích có mặt trên gần như mọi trang
      Khi đó còn vài năm nữa tôi mới biết đến Internet ở trường đại học, nên chẳng có cách nào dễ dàng để tiếp cận tài liệu học tập. Trước đó tôi đã vài lần cố học C mà không thành công, nhưng sau khi học TP, tôi mới có thể chuyển những gì học được từ Pascal sang C, và lúc ấy cũng nhờ thêm một sản phẩm Borland tuyệt vời khác là C++ Builder
  • Turbo Pascal là ngôn ngữ lập trình “thật sự” đầu tiên tôi học, sau 6809E assembly, các biến thể BASIC có cấu trúc và batch/shell vào cuối thập niên 80. Khi vào khoa khoa học máy tính đầu thập niên 90, các lớp năm nhất vẫn dạy bằng Borland Pascal, nên kinh nghiệm đó khá hữu ích
    Vài năm sau, nhờ nền tảng Pascal, tôi làm phát triển ứng dụng tùy chỉnh bằng Delphi khoảng 5 năm, rồi tiếp tục sang làm kiểm thử Kylix và IDE C++Builder tại Borland. Đó là những ngày tháng đẹp đẽ
    Đến giờ tôi vẫn nhớ Delphi. Ngày nay chuyện thiếu plugin cho IDE bị xem như một khuyết điểm chí mạng là điều quá đỗi hiển nhiên, nhưng thời đó, ý tưởng về một thư viện component và môi trường lập trình có thể dễ dàng mở rộng bằng chính ngôn ngữ của nó giống như phép màu thuần túy. Việc mày mò với VCL và chính IDE thực sự rất vui
    Thật tiếc khi Borland theo đuổi thị trường enterprise, bỏ lại các lập trình viên grassroots phía sau và về cơ bản đã giết chết đà tăng trưởng trong việc được cộng đồng đón nhận. Ít nhất cho đến khoảng Delphi 7, đó thật sự là một hệ sinh thái tuyệt vời

    • Ở nước tôi, Delphi là môi trường phát triển phổ biến nhất một cách áp đảo. Trong khi phần lớn thế giới chuyển sang VB 5 thì chúng tôi lại dùng Delphi, một tình huống khá lạ. Nhìn từ bên ngoài, đó có vẻ là một môi trường tuyệt vời, nhưng vì lý do nào đó nó dường như chỉ thành công lớn ở một vài thị trường
    • Tôi cũng đi con đường tương tự, nhưng về sau đành phải chuyển sang Visual Basic 5 vì việc làm. Dù vậy, tôi vẫn cảm thấy trong phát triển GUI, đến nay vẫn chưa có gì sánh được với Delphi. VCL thật sự là thiên tài
  • Lần đầu tôi biết đến TP là mùa đông năm 1993, lúc 14 tuổi, khi sao chép lậu nó từ một BBS warez. Cảm giác về sức mạnh nguyên sơ khi tự tay biên dịch ra EXE, thay vì chỉ chạy file .BAS, thật sự mê hoặc
    Tôi bắt đầu chỉnh sửa Renegade BBS và viết các chương trình door, thậm chí còn thử làm sâu, trojan và virus dù đều thất bại. Trải nghiệm đó đã thay đổi cuộc đời tôi và tạo nên con đường dẫn tôi đến ngành công nghệ hiện nay. Với lại, tính nổi loạn thời thiếu niên của tôi giờ cũng đã sửa rồi. Tôi mang ơn Borland rất nhiều

    • Với một thiếu niên còn chưa thực sự hiểu compiler với interpreter là gì, việc có thể tự tạo file EXE bằng TP4 giống như có được siêu năng lực. Tôi cảm thấy mình đã trở thành một lập trình viên thực thụ
      Vài năm sau, khi 16 tuổi, tôi viết một ứng dụng nhỏ để quản lý khách hàng cho cha mình và thực sự được trả tiền, rồi dùng một phần số tiền đó để mua bản TP6 hợp pháp. Những ngày tháng thật đẹp
    • Thật nhớ thời hoàng kim của BBS. Năm 1989, khi 17 tuổi, sau khi học cách viết driver serial dựa trên interrupt, tôi đã tạo một thư viện door cho Turbo Pascal và phát hành dưới dạng shareware. Nó được dùng khá nhiều cho đến khi thế giới BBS biến mất chóng vánh vào giữa thập niên 90
    • Tôi cũng có trải nghiệm tương tự trong cùng thời kỳ đó. Ngoài mấy chuyện nổi loạn ra, tôi còn mày mò lập trình đồ họa, dùng inline assembly cho những phần “cần hiệu năng” trên chiếc 386SX. Trải nghiệm đó chắc chắn đã đặt nền móng cho công việc tôi đang làm bây giờ
  • Free Pascal vẫn còn một chế độ trông giống IDE TP gốc. Tuy vậy, như chính họ thừa nhận, phần mã này đang dần mục ruỗng và vẫn phụ thuộc rất nhiều vào những đặc điểm kỳ quặc cũ kỹ của nền tảng MS-DOS nguyên bản
    Điều đáng tiếc là chưa có một phiên bản tương tự nào có thể dùng như trình soạn thảo thông thường trong terminal kiểu neovim hay emacs, đồng thời tích hợp với các tính năng hướng IDE hiện đại như LSP, parser tree-sitter, hay Debug Adapter Protocol. Khi chỉnh sửa mã từ xa qua kết nối SSH/terminal, điều đó có thể thay đổi cuộc chơi

    • https://github.com/magiblot/tvision
    • Hơn 10 năm trước một chút, vài người bạn vốn là fan Turbo Pascal đã chuyển sang Lazarus. Nó có vẻ là người kế thừa hợp lý của Turbo Pascal và Free Pascal. Còn cá nhân tôi thì không thích ngôn ngữ Pascal lắm nên đã chuyển sang dùng C++ trong Emacs
  • Khó mà nói quá về việc Turbo Pascal nhanh hơn sản phẩm cạnh tranh đến mức nào. Nó nhanh đến mức khiến người ta tưởng như có dùng mánh khóe gì đó, và chương trình được tạo ra cũng chạy nhanh hơn
    Với thời đó, đây đúng là một kiệt tác, và mọi lời khen mà nó nhận được đều hoàn toàn xứng đáng

    • Ở lớp đồ họa đại học, lại còn là lớp do Jack Bresenham giảng dạy, tôi đã hỏi liệu có thể dùng Borland Turbo C mới cho bài tập không. Sau khi vội vàng biên dịch lại để trình diễn, tôi phát hiện vì chiếc PC trong lớp không phải 80286 nên mã của tôi chỉ chạy bằng một phần ba tốc độ so với mã của những người khác viết bằng Turbo Pascal v4
      Từ đó tôi học được rằng một trình biên dịch đã trưởng thành sẽ tốt hơn trình biên dịch bản phát hành 1.0
    • Đúng vậy. Ngay cả trên những bộ xử lý chậm thời đó, trình biên dịch Turbo Pascal vẫn xử lý mã nhanh như lao đi. Nó rất khác với các hệ thống build phức tạp ngày nay, nơi chỉ để biên dịch một chương trình làm cùng việc cũng mất rất lâu
    • Đến giờ Pascal vẫn được nhắc đến như một ngôn ngữ biên dịch nhanh. Trong các cuộc tranh luận Go vs Rust cũng thường xuất hiện theo kiểu đó
      Tôi nhớ vài năm trước đã build một phiên bản FPC dòng 2.0 trên máy Windows có 512MB RAM, và còn chưa mất đến 5 phút
    • Hậu duệ của nó là Delphi cũng vẫn như vậy. Có một bài viết về một dự án thực tế hơn một triệu dòng mã, kèm video, và phần bình luận cũng bàn về thời gian biên dịch Win64
      https://www.tmssoftware.com/site/blogold.asp?post=759
    • https://prog21.dadgum.com/47.html
  • Hồi nhỏ, một chủ cửa hàng máy tính tốt bụng đã bán cho tôi một máy tương thích PC một phần chạy MS-DOS 1.25 với điều kiện rất tốt. Cái giá cỡ như cắt cỏ cả trăm lần và trông trẻ vậy
    Ông ấy bán cho tôi bản Turbo Pascal dành cho MS-DOS thông thường, tức bản không giả định có PC BIOS, trên đĩa mềm 8 inch, rồi chép sang định dạng 5.25 inch 160KB mà chiếc máy tương thích một phần của tôi dùng. Tôi mong rằng hồi đó mình đã biết ơn đủ nhiều như bây giờ cảm thấy, vì chính điều đó đã khởi đầu sự nghiệp của tôi

    • Vậy để tôi hỏi. Chính xác thì cái máy tương thích PC một phần mà bạn nói là thứ gì?
  • Đầu thập niên 80, tôi dùng Apple Pascal trên Apple ][+ và //e, tức môi trường dựa trên UCSC p-system Pascal, rồi chuyển sang Turbo Pascal trên DOS. Turbo Pascal thực sự rất phấn khích: trình biên dịch cực nhanh, phản hồi tốt, trình soạn thảo có màu, và các phím tắt WordStar mà tôi đã quen khiến trải nghiệm rất tuyệt
    Tôi cũng nhớ là chương trình từng lớn đến mức phải dùng tính năng overlay. Đó là tính năng cho phép về cơ bản nạp các phần khác nhau của chương trình như các trang trong DOS
    Tôi còn nhớ đã gặp David Intersimone, đại sứ tuyệt vời của Borland, vào một thời điểm nào đó trong thập niên 80, có lẽ là nửa sau. Khi đó ông đến theo lời mời của chi hội ACM địa phương ở trường đại học của chúng tôi

  • Kỳ lạ là Turbo Pascal lại là ngôn ngữ lập trình bậc cao đầu tiên tôi học, và môi trường đó là Macintosh Plus. Mãi sau này tôi mới nhận ra Turbo Pascal gần với thế giới PC hơn
    Thời đại học, tôi dùng tiền vay học để mua chiếc máy Apple đầu tiên của mình là Macintosh Plus, rồi tình cờ thấy một bản Turbo Pascal cho Mac trong mục rao vặt của báo trường. Một giáo sư đang bán nó với giá khoảng 40 đô la, nên tôi mua ngay
    May là có manual, nhưng các công cụ phát triển cho Macintosh cực kỳ sơ sài. Không có ResEdit; thay vào đó có một ứng dụng R-Maker kỳ quặc yêu cầu bạn tạo tài nguyên Macintosh bằng file văn bản rồi đưa qua công cụ để tạo resource fork
    Vài ứng dụng đầu tiên tôi làm là hiện thực các thuật toán từ chuyên mục Computer Recreations của Scientific American bằng Turbo Pascal. May mắn là hầu như không cần UI, nên thường chỉ cần một cửa sổ và vài nút bấm
    Sau đó tôi biết đến THINK Pascal, một IDE mang tính Mac hơn rất nhiều, và chuyển sang đó; rồi sau nữa lại nhảy sang THINK C
    Dù vậy, Turbo Pascal sẽ mãi là một ký ức đầy trìu mến với tôi. Trong thời kỳ còn thô ráp khi bước vào một thế giới mới, Turbo Pascal chính là thứ đã mở cánh cửa ấy cho tôi