Ngôn ngữ là 1 tập hợp những quy tắc và câu lệnh. Ví dụ đối với C bạn phải viết for như thế nào, đối với Pascal bạn phải viết for như thế nào.
Compiler lại là một chương trình dùng để chuyến 1 file source code theo 1 ngôn ngữ nào đó và chuyển đó thành 1 ngôn ngữ mà máy có thể đọc được.Vì thế cho cùng 1 ngôn ngữ C sẽ có nhiều compiler. Và 1 compiler không nhất thiết chỉ hiểu 1 ngôn ngữ nào đó. 1 compiler sẽ cung cấp sẵn 1 số cái gọi là builtin function. Đó là những hàm căn bản mà developer có thể sử dụng. Nó thông thường được chứa trong những library đi kèm. Builtin function sẽ được nói kỹ ở phần sau.Theo như điều kiện ở trên Compiler chỉ là 1 chương trình. Vì thế nó có thể được tạo ra từ bất cứ 1 compiler nào khác.Who say a C compiler cant be compiled by a C dot Net compiler ? Cũng từ đó suy ra chẳng có ngôn ngữ nào được gọi là cấp cao hay cấp thấp. Cái cấp cao hay cấp thấp ở đây là sự tùy biến cho người developer.Ở những compiler sử dụng những ngôn ngữ được gọi là cấp cao. Các builtin-function sẽ được cung cấp nhiều hơn. Tuy nhiên nó sẽ ràng buộc người developer nhiều hơn. Ví dụ như trong Java bạn sẽ không được đụng vào việc memory allocation hay deallocation.Ở những cái tạm gọi là "cấp thấp", sẽ có ít builtin-function hơn.Tuy nhiên nó tạo cơ hội cho developer được xen vào hệ thống nhiều hơn. ví dụ với C compiler bạn có thể tùy biến cấp phát vùng nhớ ở vị trí bạn muốn. Một compiler ít builtin-function hơn sẽ giúp việc chuyển từ source code người sử dụng sang mã máy ngắn gọn hơn vì đơn giản bạn biết đích xác bạn muốn làm gì. Trong khi builtin function nó phải dùng cho vô số những tình huống khác nhau và vì thế nó sẽ sinh ra mã máy dài hơn.Hiện nay với tốc độ lên đến vài tỷ phép tính một giây của 1 con chip xử lý trung tâm ( bao gồm cả các con embedded Micro CPU) , việc viết thừa ra vài trăm triệu dòng xử lý không còn quan trọng và tác động lắm đến tốc độ của hệ thống. Có chăng chỉ đối với những embedded developer viết codecs hay những chương trình đòi hỏi gần như sức mạnh của toàn bộ hệ thống.Vì thế các bạn hãy quên đi và đừng tranh cãi ngôn ngữ nào hay hơn, ngôn ngữ nào mạnh hơn. Không phải vô cớ khi thế giới có quá nhiều ngôn ngữ quá nhiều compiler hiện nay. Mỗi thứ có mặt mạnh và mặt yếu riêng của nó. Và tùy vào môi trường, tùy vào công việc tùy vào tốc độ xử lý của hệ thống, tùy vào bộ nhớ bạn đang có, tùy vào việc bảo hành hệ thống mà người designer sẽ chọn những compiler nào để làm việc.Thật có mà điên khi viết web bằng C để viết CGI ( mặc dù vẫn còn nhiều server làm thế) thay vì viết bằng php, C#.Hay có bạn nào biết rằng 1 chương trình text parser viết bằng Python chỉ tốn 4 đến 5 dòng cho 1 cái chương trình vài chục dòng nếu viết bằng C. Và bạn sẽ té xỉu nếu khi có 1 con ROM để chứa code có size 4KB và dùng C++ compiler để viết 1 Hello world đã hơn 10KB.Ông bà ta có câu : Người nào việc đó. Tôi áp dụng vô câu "Ngôn ngữ nào, compiler nào việc đó :)" Ý quên dài dòng quá mà hổng nói ý chính.Đa số compiler hiện nay được viết trên C hoặc C++. Lý do : đã nói ở trên : C và C++ tùy biến nhất, có khả năng port qua các hệ thống khác dễ dàng nhất vì không phụ thuộc nhiều vào hệ thống ( như ASM) nhưng vẫn không mất đi khả năng uyển chuyển trong việc quản lý bộ nhớ, xử lý text. Còn nếu thích bạn vẫn có thể dùng C# hay pascal để viết 1 compiler Simple C. Ở đây đâu phải là vấn đề CON GÀ đẻ quả trứng đâu.
TK:http://www.ddth.com/archive/index.php?t-14169.html
Thứ Sáu, 25 tháng 4, 2008
Đăng ký:
Đăng Nhận xét (Atom)
Không có nhận xét nào:
Đăng nhận xét