1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ĐỒ án môn học tìm hiểu quá trình phát triển của hai ngôn ngữ lập trình pascal và c

39 26 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 39
Dung lượng 186,63 KB

Nội dung

- Ban đầu được phát triển như một đề xuất cho cải tiến của phiên bản ALGOL X, nhưng sau đó đã được phát triển riêng biệt thành ngôn ngữ lập trình mới... Lịch sử đầu tiên tại Apple - Obje

Trang 1

ĐỒ ÁN MÔN HỌC:

Tìm hiểu quá trình phát triển của hai ngôn ngữ lập trình

Pascal và C

Trang 2

Môn học:

Nguyên lý và phương pháp lập trình - CS111.K21.KHCL

Giảng viên hướng dẫn:

Trịnh Quốc Sơn

Thành viên thực hiện:

- Nguyễn Hữu Nghĩa – 18521144

- Nguyễn Huỳnh Nhi – 18521204

2

Trang 3

Tóm tắt nội dung

I Tìm hiểu quá trình phát triển của Pascal

A Ngôn ngữ PASCAL và tiền đề cho sự ra đời của PASCAL

B Những đặc điểm cơ bản của PASCAL và các phiên bản PASCAL

C Hệ thống PASCAL – P.

D OBJECT PASCAL – Hỗ trợ lập trình hướng đối tượng.

E TURBO PASCAL – trình biên dịch và IDE PASCAL nổi tiếng nhất

F PASCAL được chuẩn hóa.

G PASCAL trong thời điểm hiện tại.

Trang 4

Tóm tắt nội dung

II Tìm hiểu quá trình phát triển của C

A Quá trình phát triển ban đầu của ngôn ngữ lập trình C

Trang 5

I Tìm hiểu quá trình phát triển của Pascal

Trang 6

A Ngôn ngữ PASCAL và tiền đề cho sự ra đời

của ngôn ngữ này

- Được Niklaus Wirth phát triển vào năm 1970.

- Được đặt tên theo nhà toán học, triết gia và nhà vật lý người Pháp

Blaise Pascal.

- Được phát triển theo khuôn mẫu của ngôn ngữ lập trinh ALGOL

60

- Thích hợp với kiểu lập trinh cấu trúc và cấu trúc dữ liệu

- Ban đầu được phát triển như một đề xuất cho cải tiến của phiên bản ALGOL X, nhưng sau đó đã được phát triển riêng biệt thành ngôn ngữ lập trình mới

6

Trang 7

B Những đặc điểm cơ bản của PASCAL và các phiên bản PASCAL

1 Những điểm cơ bản

- Ngôn ngữ lập trình mang tính hiệu quả cao dựa trên lập trình

có cấu trúc.

- Là ngôn ngữ lập trình strong typing.

- Cho phép định nghĩa các hàm hay chương trinh con (thủ tục) ở

bất kỳ độ sâu nào

- Trở nên rất thành công vào những năm 1970

- Được giảng dạy tại các trường đại học vào những năm 1980

Trang 8

B Những đặc điểm cơ bản của PASCAL và các phiên bản PASCAL

2 Những phiên bản của Pascal

- UCSD Pascal, 1997, cho phép chuyển sang các nền tảng khác

nhau

- Object Pascal, 1985, được thiết kế hỗ trợ lập trinh hướng đối

tượng, sau đó được phát triển thành Delphi

- Các biến thể của Pascal cũng thường được sử dụng trong mọi lĩnh vực từ các dự án nghiên cứu trò chơi trên máy tinh cá nhân và các hệ thống nhúng

8

Trang 9

C Hệ thống PASCAL – P

- Một bộ công cụ chuyển mã được viết tại Zurich bao gồm một

trình biên dịch sang “mã máy ảo” và một bộ giả lập cho loại máy này được gọi là P – system (Hệ thống Pascal – P).

- Nhóm cơ bản gồm: Pascal – P1, Pascal – P2, Pascal – P3,

Pascal – P4

- Pascal – P3 được phát triển với khả năng tương thích ngược với

Pascal – P2 và Pascal – P4

- Pascal – P5 được tạo ra có thể sử dụng đầy đủ ngôn ngữ Pascal và

có khả năng tương thích ISO 7185

Trang 10

C Hệ thống PASCAL – P

- Kenneth Bowles đã sử dụng Pascal – P2 để tạo ra UCSD p-system Đây là một trong ba hệ điều hành có sẵn khi phiên bản đầu tiên của IBM PC được ra mắt

- Vào đầu những năm 1980, Watcom Pascal đã được phát triển,

cũng cho hệ thống IBM 370

- Vào những năm 1990, Pascal vẫn được sử dụng trên các thiết bị

tại Đại học George Mason để dạy lập trinh máy tinh

10

Trang 11

D OBJECT PASCAL – Hỗ trợ lập trình hướng đối tượng.

1 Lịch sử đầu tiên tại Apple

- Object Pascal là phiên bản cải tiến của Pascal hỗ trợ lập trình

hướng đối tượng được ra mắt vào năm 1986

- Được biết đến nhiều nhất với vai trò là ngôn ngữ lập trinh chinh của Delphi

- Tại Apple Computer, Object Pascal được phát triển với sự tham

vấn của chinh Niklaus Wirth Lúc này Object Pascal là thành phần cần thiết cho MacApp

Trang 12

D OBJECT PASCAL – Hỗ trợ lập trình hướng đối tượng.

1 Lịch sử đầu tiên tại Apple

- Một phần mở rộng của Object Pascal cũng được phát triển trong Think Pascal IDE

- Vào năm 1994, Apple chuyển từ chip Motorola 68K sang kiến

trúc PowerPC của IBM vào năm 1994 MacApp 3.0, sau đó đã được viết lại bằng C++

12

Trang 13

D OBJECT PASCAL – Hỗ trợ lập trình hướng đối tượng.

2 Thời đại của Borland và CodeGear

- Công ty Borland phát triển Delphi với sơ đồ thiết kế Object

Pascal của Apple làm cơ sở

- Phiên bản Delphi 1.0 chinh thức ra mắt ở Hoa Kỳ vào ngày

14/02/1995

- Delphi có những thay đổi như sử dụng từ khóa “class” để thay

“object”, hàm tạo Create, hàm hủy ảo Destroy, các thay đổi về thuộc tính, con trỏ hàm,…

- Delphi vẫn được phát triển tiếp tục nhiều năm sau đó

Trang 14

E TURBO PASCAL – trình biên dịch và IDE

nổi tiếng nhất cho PASCAL.

1 Lịch sử hình thành

- Turbo Pascal là một trinh biên dịch và IDE cho Pascal chạy trên

hệ điều hành MS-DOS và CP/M, được phát triển bởi hãng phần mềm

Borland

- Cái tên Borland Pascal là tên gọi cho phiên bản tốt hơn của Turbo Pascal, ngoài ra cũng được dùng để chỉ trinh biên dịch Pascal của hãng Borland

14

Trang 15

E TURBO PASCAL – trình biên dịch và IDE

nổi tiếng nhất cho PASCAL.

2 Các phiên bản

- Turbo Pascal 4 sửa lại thư viện đồ họa của Turbo Pascal 3 và đưa

vào khái niệm unit (đơn vị chương trình)

- Turbo Pascal 5 có tính năng lập trình hướng đối tượng (OOP)

- Turbo Pascal 6 có một số tính năng mới trong đó IDE được cải

thiện, cho phép mở nhiều cửa sổ soạn thảo cùng lúc (Multi- document interface) (MDI)

- Turbo Pascal 7 có một số tính năng mới trong đó có cải thiện IDE

trong đó có hỗ trợ đổi màu mã lệnh (color-coding)

Trang 16

E TURBO PASCAL – trình biên dịch và IDE

nổi tiếng nhất cho PASCAL.

3 Turbo Pascal trong giáo dục

- Borland Pascal vẫn được sử dụng để giảng dạy ở một số quốc gia

ở cấp trung học và đại học Một số trường đại học trên thế giới dùng

Turbo Pascal như cách để giới thiệu về lập trình máy tinh trước khi

giảng dạy sâu cho sinh viên về C hay Java

- Một số giảng viên thích sử dụng Borland Pascal 7 hoặc Turbo

Pascal 5.5 hơn là các IDE hiện đại như MVS

- Phù hợp với các sinh viên không quen với việc tinh toan với các tác

vụ thông thường như sử dụng phím tắt và bàn phím hoặc làm quen với các lệnh DOS

16

Trang 17

F.PASCAL được chuẩn hóa.

1 ISO/IEC 7185: 1990 Pascal

- Năm 1983, Pascal được chuẩn hóa, theo tiêu chuẩn quốc tế

IEC/ISO 7185 và một số tiêu chuẩn cụ thể của quốc gia khác bao gồm ANSI/IEEE770X3.97-1983 và ISO 7185:1983 đều của Mỹ

- Năm 1989, ISO 7185 được sửa đổi

2 ISO/IEC 10206: Mở rộng Pascal 1990

- Năm 1990, một chuẩn Pascal mở rộng được tạo ra dựa theo tiêu

chuẩn ISO/IEC 10206, giống hệt về nội dung kỹ thuật cho IEEE/ANSI 770X3.160-1989

Trang 18

G PASCAL trong thời điểm hiện tại.

- Các điểm mạnh của ngôn ngữ lập trinh này vẫn được công nhận

- Vẫn được sử dụng rộng rãi như một “ngôn ngữ lập trình học

đường” tại các trường trung học tại nhiều quốc gia

- Nhưng, với sự ra đời, thay đổi, phát triển liên tục và mạnh mẽ của các ngôn ngữ lập trình ngày nay Từ lâu, Pascal đã không còn phù hợp

và được sử dụng nhiều trong thực tế, ngoài việc dạy học nữa

18

Trang 19

II Tìm hiểu quá trình phát triển của C

Trang 20

A Quá trình phát triển ban đầu của ngôn ngữ

lập trình C

- Phát triển khởi đầu của C diễn ra tại phòng thí nghiệm Bell của

AT&T (Hoa Kỳ) giữ những năm 1969 và 1973, được thực hiện bởi Brian W.Kernighan và Dennis Ritchie

- Được đặt tên là C vì có nhiều đặc tính rút ra từ ngôn ngữ B trước đó

- Mục đích: tạo ra ngôn ngữ lập trình bậc cao có khả năng chuyển đổi

từ hệ thống này sang hệ thống khác thay cho hợp ngữ trong lập trình

hệ thống

- 1973, C được dùng viết nhân cho UNIX thay cho Assembly trước đó trong các máy PDP-11/20 Đây là lần đầu tiên mà nhân hệ điều hành được lắp thành bằng một ngôn ngữ khác Assembly

20

Trang 21

B K&R C ra đời

- Năm 1978 Ritchie và Brian Kernighan xuất bản lần đầu cuốn The C Programing Language Cuốn này được người lập trình biết đến như

là K&R như một đặc tả không chính thức của C

- K&R giới thiệu các chức năng sau:

+ Kiểu dữ liệu struct

+ Kiểu dữ liệu long int

+ Kiểu dữ liệu unsigned int

+ Toán tử =+ được đổi thành +=, và tương tự cho các toán tử khác để tránh gây hiểu nhầm cho bộ phân tích từ vựng của trình dịch C

Trang 22

B K&R C ra đời

- Sau nhiều năm, sự tái bản của K&R C nhiều chức năng “ không chính thức” được thêm vào cho ngôn ngữ, được hỗ trợ bởi trình dịch của AT&T và một số khác Trong đó bao gồm:

+ Các hàm có kiểu void và dữ liệu kiểu void *

+ Các hàm trả về kiểu struct hay union

+ Tên các miền trong một không gian tên cho mỗi kiểu struct

+ Phép gán cho kiểu dữ liệu struct

+ Hằng const được xem là đối tượng chỉ cho phép đọc.

+ Một thư viện chuẩn được sự hợp tác để xây dựng bởi nhiều nhà sản xuất.

+ Các kiểu enumeration

+ Kiểu chính xác đơn float

22

Trang 23

C Chuẩn ANSI C và ISO C

Trong 1983, Viện Tiêu chuẩn Quốc gia Hoa Kỳ (ANSI) thành lập hội đồng X3J11 để hoàn tất một tiêu chuẩn dặc tả của C Sau một quá

trình khó khăn và lâu dài, tiêu chuẩn đã hoàn tất vào 1989 và được công nhận là "Programming Language C" ANSI X3.159-1989 Phiên bản ngôn ngữ này thường được nhắc đến như là ANSI C

Trang 24

24

Trang 25

D C99

Các tính năng quan trọng mới phiên bản C99

+ Một số tính năng giống như các phần mở rộng cho C90 do trình biên dịch GNU cung cấp, chẳng hạn như macro có số lượng đối số thay đổi.+ C99 cho phép sử dụng số tinh vi và bộ khởi tạo được chỉ định

+ Con trỏ hạn chế cũng được thêm vào trong C99

+ Có một số từ khóa và định danh mới

+ Kỹ thuật bình luận mới

+ Hàm nội tuyến

+ Chiều dài mảng thay đổi

Trang 26

D C99

Các từ khóa mới: C99 đã thêm các từ khóa mới, là tính năng quan

trọng nhất của C99

+ complex: Được sử dụng để khai báo các biến kiểu số phức để lưu

trữ số phức toán học Dùng thư viện <complex.h>

+ Imaginary: Được sử dụng để khai báo các biển kiểu ảo trong lưu trữ các số ảo trong toán học Dùng thư viện <complex.h>

+ Inline: Được sử dụng để đề nghị với chương trình biên dịch rằng

một hàm cụ thể nào đó là đối tượng của việc khai triển nội tuyến

(inline expansion)

+ restrict: Chỉ có thể sử dụng cho con trỏ Một con trỏ khi đủ điều

kiện với từ khóa “restricted” được gọi là “restricted pointer”

26

Trang 27

D C99

Ngoài ra, còn có một số thay đổi như sau:

+ Khai báo các biến: Việc khai báo các biến tại bất kì điểm nào của chương trình trong dấu ngoặc nhọn của hàm main() là hợp lệ

+ Độ dài mảng biến: C99 cho phép khai báo kích thước mảng bằng các biến số nguyên hoặc bất kì biểu thức số nguyên hợp lệ nào Đây được gọi là mảng chiều dài biến

+ Kỹ thuật bình luận: C99 cho phép đưa bình luận bằng cách sử dụng dấu gạch chéo kép(//) được thực hiện trong C++ và trình biên dịch C không hiển thị lỗi bất kì nào không thể xảy ra trong ANSI C

Ví dụ: //Đây là một bình luận

Trang 28

E C11

- Là tên không chính thức cho tiêu chuẩn ISO/IEC 9899: 2011 Nó đã thay thế

C99 và được thay thế bởi C18.

- Bản dự thảo cuối cùng, N1570, đã được xuất bản vào tháng 4 năm 2011

Tiêu chuẩn mới đã thông qua bản đánh giá dự thảo cuối cùng vào ngày 10 tháng

10 năm 2011 và được ISO chính thức phê chuẩn và xuất bản dưới dạng ISO / IEC 9899: 2011 vào ngày 8 tháng 12 năm 2011.

- C11 chủ yếu chuẩn hóa các tính năng đã được hỗ trợ bởi các trình biên dịch

hiện đại phổ biến và bao gồm một mô hình bộ nhớ chi tiết để hỗ trợ tốt hơn cho

nhiều luồng thực thi Do khả năng tuân thủ C99 bị chậm trễ, C11 làm cho một số tính năng nhất định là tùy chọn, để giúp tuân thủ tiêu chuẩn ngôn ngữ cốt lõi dễ

dàng hơn

28

Trang 29

- Khái niệm: C18 (trước đây gọi là C17 ) là tên không chính thức cho ISO / IEC

9899: 2018 , [1] tiêu chuẩn gần đây nhất cho ngôn ngữ lập trình C , được xuất bản vào tháng 6 năm 2018 Nó đã thay thế C11 (tiêu chuẩn ISO / IEC 9899: 2011).

Thay đổi so với C11: C18 đã giải quyết được các khiếm khuyết trong C11 mà

không giới thiệu các tính năng mới.

_STDC_VERSION_ vĩ mô tăng lên giá trị 201710L.

Trình biên dịch hỗ trợ:

+ GCC 8.1.0

+ LLVM Clang 7.0.0

+ IAR EWARM v8.40.1

Trang 30

G C2x

- Khái niệm: là tên không chính thức cho lần sửa đổi tiếp theo của tiêu chuẩn

ngôn ngữ C (sau C18) Dự định sẽ áp dụng chính thức một tiêu chuẩn sửa đổi vào cuối năm 2021 và sẽ xuất bản vào năm 2022

Tính năng được đề xuất:

+ Đối số đơn _Static_assert

+ Cú pháp thuộc tính kiểu C++11

+ Số học dấu phẩy động mở rộng, số học dấu phẩy động thập phân.

+ memccpy(), strdup(), strndup() tương tự như các hàm được tìm thấy

trong phần mở rộng POSIX và SVID C

+ Loại char8_t, trong cùng một mạch với char16_t và char32_t được

thêm vào trong C11.

30

Trang 31

G C2x

- Nguyên tắc mới:

+ Nó bổ sung 1 nguyên tắc mới cho “Nguyên tắc gốc ” của C:

+ Giao diện lập trình ứng dụng (API) nên tự ghi lại tài liệu khi có thể Cụ thể, thứ tự của các tham số trong khai báo hàm nên được sắp xếp sao cho kích

thước của một mảng xuất hiện trước mảng Mục đích là để cho phép ký hiệu Mảng có độ dài thay đổi (VLA) được sử dụng Điều này không chỉ làm cho mục đích của mã rõ ràng hơn đối với người đọc mà còn giúp phân tích tĩnh dễ dàng hơn Bất kỳ API mới nào được thêm vào Tiêu chuẩn nên xem xét điều này.

+ Trình biên dịch hỗ trợ: Clang 9.0, GCC 9 compiler has -std=c2x

Trang 32

32

Trang 33

+ Từ khóa bool trong C99 thì có riêng tập tin tiêu dề của nó là <stdbool.h> Các

chuẩn C trước đây đã không định nghĩa kiểu boolean và nhiều phương pháp không tương thích đã được dùng để mô phỏng kiểu boolean.

+ Các hằng ký tự (được đặt trong dấu ') có độ lớn của một int trong C và có độ lớn của một char trong C++ Mặc dù vậy, ngay cả trong C các hàng này sẽ

Trang 34

H Quan hệ với C++

+ Trong C++, trình dịch tự động tạo một "thẻ" cho mỗi struct, union hay enum,

do vậy, struct S {}; trong C++ tương đương với typedef struct S {} S; trong C.

+ C99 tiếp thu một số tính năng mà xuất hiện đầu tiên trong C++ Trong số đó là:

* Bắt cuộc khai báo nguyên mẫu của hàm.

* Thêm từ khóa inline.

* Hủy bỏ "hiểu ngầm" của sự trả về sẽ có kiểu int.

34

Trang 35

J.Các trình biên dịch quan trọng:

Những trình dịch về C ngày nay thương được cung cấp kèm chung với C++ Những sản phẩm trình dịch được bán phổ biến trên thị trường cũng thường cung cấp thêm nhiều công cụ trợ giúp cho người lập trình như là IDE, debugger,

Các trình biên dịch phổ biến: GCC,Turbo C++, Borland C/C++,Microsoft C/C++

Trang 36

III Tài liệu tham khảo

Trang 37

A Tài liệu tham khảo về Pascal

+ Niklaus Wirth, 1976, Algorithms + Data Structures = Programs

+ Marco Cantù, 2017, Essential Pascal

+ Charles Babbage Institute, 2004, An Interview with John Brackett and Doug Ross

+ Gibson, Steve (May 8, 1989) "Borland and Microsoft Enter the

Object-Oriented Pascal Ring" Infoworld p 28.

+ Lischner, Ray (2000) Delphi in a nutshell: a desktop quick reference (1st ed.) + Intersimone, David (2000-02-01) "Antique Software: Turbo Pascal v1.0"

+ Intersimone, David (2002-02-21) "Antique Software: Turbo Pascal v5.5“

Trang 38

B Tài liệu tham khảo về C

 Ritchie, Dennis M (March 1993) "The Development of the C Language"

 Johnson, S C.; Ritchie, D M (1978) "Portability of C Programs and the UNIX System.

+ Kernighan, Brian W.; Ritchie, Dennis M (February 1978) The C Programming Language (1st ed).

+ ISO/IEC 9899:1990/AMD 1:1995 Programming languages — C — Amendment 1: C

Integrity.

+ Seebach, Peter (24 March 2004) "Open source development using C99".

+ John Benito, Convener "C - The C1X Charter".

+ "ISO/IEC 9899:2018 - Information technology Programming languages C"

+ Michael Larabel(14 May 2019 ) "LLVM Clang 9.0 Picks Up Initial C2x Language Mode“ + B.Stroustrup (July 2002) "C and C++: Siblings The C/C++ Users Journal “

+ O’Regan, Gerard(September 24, 2015) “Pillars of computing: a compendium of select, pivotal technology firms.” 38

Ngày đăng: 18/08/2021, 19:27

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w