Biên dịch trong Pascal là gì
PASCAL là ngôn ngữ lập trình bậc cao do Niklaus Wirth, giáo sư trường đại học kĩ thuật Zurich (Thụy Sĩ) phát triển dựa trên ngôn ngữ lập trình Algol năm 1970 đề xuất với tên Pascal để kỉ niệm nhà toán học và triết học nổi tiếng Blaise Pascal (người Pháp). Show Ngôn ngữ lập trình Pascal có đặc điểm : ngữ pháp, ngữ nghĩa đơn giản và có tính logic, cấu trúc chương trình rõ ràng, dễ hiểu. Pascal là ngôn ngữ đặc biệt thích hợp cho kiểu lập trình cấu trúc, dễ sửa chữa, cải tiến. Cho đến nay, Pascal vẫn được dùng để giảng dạy về lập trình trong nhiều trường trung học và đại học trên thế giới. Đó là ngôn ngữ cho phép mô tả thuật toán thuận tiện. Pascal cũng phục vụ nhiều ứng dụng kĩ nghệ khoa học và lập trình hệ thống. Phần lớn hệ điều hành Macintosh được viết bằng Pascal. Hệ sắp chữ TeX được Donald Knuth viết bằng ngôn ngữ mang nhiều yếu tố của Pascal. Trình biên dịch Free Pascal được viết bằng Pascal là một trình biên dịch mạnh có khả năng biên dịch cả ứng dụng cũ và mới (phân phối miễn phí dưới giấy phép GNU), hỗ trợ nhiều hệ điều hành. Các hệ thống phục vụ lập trình trên Pascal (Các trình biên dịch Pascal)Trình biên dịch, còn gọi là phần mềm biên dịch, compiler, là một chương trình máy tính làm công việc dịch một chuỗi các câu lệnh được viết bằng một ngôn ngữ lập trình (gọi là ngôn ngữ nguồn hay mã nguồn), thành một chương trình tương đương nhưng ở dưới dạng một ngôn ngữ máy tính mới (gọi là ngôn ngữ đích) và thường là ngôn ngữ ở cấp thấp hơn, như ngôn ngữ máy. Trước hết phải kể đến các bộ dịch Pascal của hãng Borland dưới tên gọi Turbo Pascal trong những thập niên cuối thế kỉ XX.
Các bộ dịch trên có thể tải về từ các trang web: http://dn.codegear.com/museum hoặc http://pascal.sources.ru/museum/index.htm hoặc Turbo Pascal 7.0: Tải về Turbo Pascal 7.0 Turbo Pascal 7.0 VN: Tải về Turbo Pascal 7.0 VN Hướng sử dụng Turbo Pascal 7.0 VN:
Có thể nói các bộ dịch Pascal cho MS-DOS mà đại diện cuối cùng và nổi bật nhất là Borland Pascal 7.0 có thể đáp ứng những yêu cầu cơ bản về giảng dạy lập trình có trúc trên ngôn ngữ lập trình bậc cao. Với sự phát triển mạnh mẽ của hệ điều hành và phần cứng máy tính, công cụ lập trình phải được cải tiến không ngừng để tương thích với hệ điều hành và tận dụng khả năng của phần cứng. Chỉ hỗ trợ hệ điều hành DOS và dành cho Windows một phần khiêm tốn, Turbo Pascal và Borlan Pascal đã không đáp ứng được yêu cầu của người lập trình. Một trong những hạn chế cơ bản của các bộ dịch này là chúng là các bộ dịch 16 bit. Hạn chế 64KB cho tất cả các biến và dữ liệu thực sự đã là cản trở lớn cho người lập trình. Mặc dù Borland không còn quan tâm đến các bộ dịch Turbo Pascal (họ đã xếp chúng vào bảo tàng và chuyển sang các phát triển các bộ dịch mới), nhưng những người yêu thích ngôn ngữ này vẫn phát triển Pascal. Dưới đây ta nêu vài bộ dịch 32/64 bit của Pascal.
http://www.gnu-pascal.de/gpc/h-about.html
http://freepascal.org Free Pascal: Tải về Free Pascal 2.4.0 Trong quá trình cài đặt, học tập ngôn ngữ này, nếu có gì thắc mắc, các em có thể phản hồi, trao đổi tại đây. Chúc các em học tốt.
Biên dịch và thông dịch khác nhau như thế nào? Đề bài Biên dịch và thông dịch khác nhau như thế nào? Lời giải chi tiết Biên dịch và thông dịch khác nhau ở những điểm sau: - Trình biên dịch duyệt, kiểm tra, phát hiện lỗi, xác định chương trình nguồn có dịch được không. Dịch toàn bộ chương trình nguồn thành một chương trình đích có thể thực hiện trên máy và có thể lưu trữ lại để sử dụng về sau khi cần thiết. Trình thông dịch lần lượt dịch từng câu lệnh ra ngôn ngữ máy rồi thực hiện ngay câu lệnh vừa dịch được hoặc thông báo lỗi nếu không dịch được. Loigiaihay.com Trình biên dịch, còn gọi là phần mềm biên dịch, compiler, là một chương trình máy tính làm công việc dịch một chuỗi các câu lệnh được viết bằng một ngôn ngữ lập trình (gọi là ngôn ngữ nguồn hay mã nguồn), thành một chương trình tương đương nhưng ở dưới dạng một ngôn ngữ máy tính mới (gọi là ngôn ngữ đích) và thường là ngôn ngữ ở cấp thấp hơn, như ngôn ngữ máy. Chương trình mới được dịch này gọi mã đối tượng.
Hầu hết các trình biên dịch sẽ chuyển dịch mã nguồn viết trong một ngôn ngữ cấp cao thành mã đối tượng hay ngôn ngữ máy mà có thể được thi hành trực tiếp bởi một máy tính hay bởi một máy ảo. Dù vậy, việc chuyển dịch từ một ngôn ngữ cấp thấp sang một ngôn ngữ cấp cao hơn cũng có thể xảy ra; quá trình này thường được hiểu như là bộ biên dịch ngược nếu nó có thể tái tạo lại một chương trình trong ngôn ngữ cấp cao. Cũng tồn tại các trình biên dịch chuyển đổi từ ngôn ngữ cao này sang ngôn ngữ cao khác, hay là chuyển đổi sang một ngôn ngữ mà nó cần để tiếp tục xử lý về sau; những trình biên dịch như vậy được biết như là bộ biên dịch phân tầng. Các loại trình biên dịch cho kết quả là mã đối tượng thì một cách cơ bản bao gồm mã máy tăng cường thêm các thông tin về tên vị trí của các ngõ vào và các gọi ngoài (đến các hàm mà không có sẵn bên trong của nó). Một tập hợp của các tập tin đối tượng, mà không hẳn được cung cấp từ cùng một trình biên dịch, thì vẫn có thể được liên kết với nhau để tạo nên các chương trình khả thi cuối cùng cho một người dùng. Dĩ nhiên, để làm được như vậy thì các tập tin đối tượng đó phải được thiết kế chung nhau về dạng thức. Ví dụ của kiểu tập đối tượng này là các tập có đuôi là.obj có thể dùng chung giữa ASM, C/C++, Fortran... hay các tập tin.DLL trong các kiến trúc Windows dùng chung được cho nhiều ngôn ngữ. Nhiều trình biên dịch thử nghiệm đã được phát triển từ thập niên 1950. Tuy vậy chỉ có nhóm làm việc với FORTRAN dẫn đầu bởi John Backus ở IBM thành công trong việc giới thiệu trình biên dịch hoàn bị đầu tiên trong năm 1957. COBOL là một ngôn ngữ sớm có được trình biên dịch trên nhiều loại kiến trúc trong năm 1960 (Xem thêm [1] Lưu trữ 2012-02-20 tại Wayback Machine) Ý kiến về sự biên dịch được nhiều người chú ý và hầu hết các nguyên lý của thiết kế trình biên dịch đã được phát triển từ suốt thập niên 1960. Một trình biên dịch tự nó là một chương trình máy tính được viết từ vài ngôn ngữ thực thi. Ban đầu các trình biên dịch đều viết trong ngôn ngữ ASM (tức là Assembler). Trình biên dịch tự lập là trình biên dịch có khả năng được biên dịch và được tạo ra từ mã nguồn trong ngôn ngữ cấp cao bởi chính nó. Trình biên dịch tự lập đầu tiên đã được dùng cho Lisp bởi Hart và Levin ở MIT trong năm 1962, (xem [2]). Việc sử dụng ngôn ngữ cấp cao để tạo ra các trình biên dịch bắt đầu ra đời vào đầu thập niên 1970 khi mà trình biên dịch Pascal và C đã được tạo nên từ chính ngôn ngữ của chúng. Xây dựng một trình biên dịch tự lập là một vấn đề về bẫy khởi động. Nghĩa là, phiên bản đầu tiên của trình biên dịch tự lập này cho một ngôn ngữ phải được biên dịch từ một trình biên dịch mà được viết trong một ngôn ngữ khác hay là, bắt chước theo cách của Hart va Levin trong trình biên dịch Lisp, biên dịch bằng cách thi hành trình biên dịch này trong một phần mềm thông dịch. Trong suốt thập niên 1980 và thập niên 1990 hàng loạt các trình biên dịch miễn phí và các công cụ phát triển trình biên dịch đã được tạo ra cho mọi loại ngôn ngữ. Cả hai như là một phần của đề án GNU và của những khởi xướng về nguồn mở khác. Một số trong chúng được xem là có chất lượng cao và nguồn mở tạo nên hứng khởi cho bất kì ai quan tâm trong các nguyên lý về trình biên dịch hiện đại. Tất cả các trình biên dịch đều hoặc là biên dịch cùng bản hoặc là biên dịch chéo bản. Một trình biên dịch có thể sản xuất ra mã chủ định để chạy trên cùng một kiểu máy tính và một kiểu hệ điều hành như là chạy trên máy mà trình biên dịch tự nó tiến hành được gọi là một trình biên dịch cùng bản. Một loại khác, trình biên dịch có thể sản xuất ra mã mà được thiết kế để chạy trên các kiểu máy tính khác hay hệ điều hành khác. Trường hợp này gọi là trình biên dịch chéo bản. Các trình biên dịch chéo bản thì rất có ích khi gặp một hệ thống phần cứng mới trong lần đầu tiên. Trình biên dịch chéo bản cũng rất cần khi việc phát triển phần mềm cho các hệ thống vi điều khiển, mà chúng chỉ có vừa đủ kho lưu trữ cho mã máy cuối, không đủ để tải trình biên dịch. (như trường hợp dịch chương trình để chạy trên các palmtop và các điện thoại di động chẳng hạn). Số bước chuyển dịchTất cả các trình biên dịch thì có thể là một bước hay nhiều bước
Các đặc tính khácĐặc biệt, một trình biên dịch có thể có thêm các chức năng sau đây:
Nhiều người còn phân chia các ngôn ngữ lập trình cấp cao thành các ngôn ngữ biên dịch và các ngôn ngữ thông dịch. Mặc dù vậy, rất hiếm khi một ngôn ngữ lại đòi hỏi là loại biên dịch hay loại thông dịch. Các trình biên dịch và các phần mềm thông dịch là các sự thực hiện của các ngôn ngữ chứ không phải bản thân ngôn ngữ. Việc phân chia này chỉ phản ánh thực trạng phổ biến của sự thực hiện của các ngôn ngữ chẳng hạn như BASIC được nhiều người cho là một ngôn ngữ thông dịch và C thì lại được xem là ngôn ngữ biên dịch nhưng thực tế ra vẩn tồn tại các trình biên dịch cho BASIC và các phần mềm thông dịch cho C. Trong quá khứ, các trình biên dịch thường chia quá trình biên dịch thành nhiều bước để tiết kiệm kho chứa. Mỗi bước trong nghĩa vừa nêu của một trình biên dịch, thông qua mã nguồn của chương trình, là một sự thực thi dẫn tới kết quả trong việc dựng nên một bộ dữ liệu nội tại (chẳng hạn như là sự tham gia của các bảng ký hiệu và các dữ liệu hướng dẫn cho việc chuyển dịch). Khi một bước hoàn tất, thì trình biên dịch có thể xóa các dữ liệu nội tại không cần nữa trong suốt bước đó nhằm tiết kiệm chỗ trống. Như vậy phương pháp nhiều bước là kỹ thuật thông dụng ở thời đó, và nó cũng nhằm giải quyết các khó khăn về khối lượng các bộ nhớ của máy chủ còn nhỏ so với khối lượng mã nguồn và dữ liệu. Nhiều trình biên dịch hiện đại chia sẻ chung một dạng thiết kế hai mặt. Mặt ngoài chuyển dịch ngôn ngữ nguồn sang một sự biểu trưng trung gian. Mặt thứ nhì là mặt trong, mà trong đó, chủ yếu là sự làm việc với các biểu trưng nội tại (như là các bảng ký hiệu và các dữ liệu cần thiết khác) để làm ra kết quả là mã trong ngôn ngữ đích. Mặt ngoài và mặt trong lại có thể tiến hành trong nhiều bước và có cả trường hợp mặt ngoài gọi mặt trong như là một chương trình con, và chuyển vào đó những biểu trưng trung gian. Phương thức trên giảm nhẹ sự phức tạp. Mặt ngoài thường lo về các xử lý xung quanh về ý nghĩa ngôn ngữ. Trong khi mặt trong sẽ chú trọng đến việc làm ra các kết quả phải đạt hiệu quả và dúng. Điểm mạnh của phương thức này còn bao gồm việc cho phép dùng chung một mặt trong từ nhiều ngôn ngữ (nguồn) khác nhau và ngược lại là việc cho phép sử dụng các mặt trong khác nhau để phục vụ cho những mụch tiêu khác nhau. Thường thì các bộ phận tối ưu hóa và các bộ phận kiểm lỗi có thể chia sẻ chung các mặt ngoài và mặt trong nếu chúng được thiết kế để hoạt động trên ngôn ngữ trung gian mà nó được chuyển từ mặt ngoài sang mặt trong. Điều này có thể dẫn đến việc nhiều trình biên dịch (kết hợp của các mặt ngoài và mặt trong) tái sử dụng được một lượng lớn công việc mà thường được tiến hành trong các bộ phận tối ưu hóa và bộ phận kiểm tra lỗi. Có nhiều ngôn ngữ, dựa vào thiết kế của ngôn ngữ và các quy tắc dùng cho việc khai báo các biến và các đối tượng khác cũng như là dùng cho sự khai báo trước khi sử dụng hay trước khi tham chiếu của các hàm hay thủ tục, có khả năng được dùng trong một bước. Ví dụ: Pascal là ngôn ngữ được biết nhiều đến do khả năng này. Ngôn ngữ C cũng có thể dùng trong cách dịch một bước và đạt được ngay các tệp khả thi.Mặt ngoài của trình biên dịch tự nó bao gồm nhiều pha. Các pha theo lý thuyết ngôn ngữ là:
Một trình biên dịch hoàn bị sẽ chuyển giao biểu trưng trung gian được làm ra bởi mặt ngoài cho mặt trong. Nhiệm vụ của mặt trong là sản xuất ra chương trình tương đương về chức năng ở ngôn ngữ đích. Việc này bao gồm các giai đoạn:
Wikibooks có thông tin Anh ngữ về: Compiler construction
Lấy từ “https://vi.wikipedia.org/w/index.php?title=Trình_biên_dịch&oldid=67949755” |