Friday, August 2, 2013

Ngôn ngữ lập trình web

Với sự phổ biến của intemet, nhu cầu thiết lập trang web cũng trở nên thịnh hành. Không chỉ các công ty có nhu cầu giao dịch trên Net mới thiết lập website mà nhiều người dùng cá nhân cũng rất thích tạo trang web cá nhân để đưa lên Net. Để cho trang web sinh động, hấp dẫn, bạn phải tạo tính động cho trang web của mình như khả năng thay đổi nội dung hiển thị tương tác với người dùng... dạng như chương trình ứng dụng web chạy trên Net.

Những ứng dụng lớn, nghiêm túc trên web như các ứng dụng thương mại điện tử đòi hỏi nhiều công cụ phần mềm và lập trình rất phức tạp. Nhưng không phải tất cả các trang web động đều yêu cầu đến mức như vậy. Đa phần các trang web động và ứng dụng thông thường trên Net được thiết kế với ngôn ngữ kịch bản (script) đơn giản và có thể lập trình nhanh chóng.
Khi bạn tạo một trang web động thì đoạn mã tạo nên những thay đổi trên trang web hoặc thực thi ở máy khách (client), hoặc thực thi ở máy chủ (server). Mã kịch bản chạy trên máy khách có ưu điểm là giảm bớt tải cho máy chủ, nhưng có khuyết điểm là bạn không thể bảo mật đoạn mã chương trình của mình và cũng không thể thực hiện các tác vụ với hệ thống file hay cơ sở dữ liệu. Với mã kịch bản chạy trên máy chủ, nhờ mã lệnh thực thi ở máy chủ trước khi trang HTML gửi tới trình duyệt ở máy khách nên mã nguồn được giấu kín. Môi trường thực thi trên máy chủ cho phép thực hiện các tác vụ truy cập cơ sở dữ liệu và hệ thống file. Do trang HTML gửi tới máy khách thường ở dạng mã HTML đơn giản nên không bị lệ thuộc vào trình duyệt và phiên bản của trình duyệt (một khó khăn đối với mã lệnh thực thi ở môi trường trình duyệt trên máy khách). Tuy nhiên việc thực thi lệnh trên máy chủ cũng có vấn đề về hiệu suất do mỗi trang động đều phải được
phân giải trước khi gửi tới máy khách.
Nếu thiết kế website tận dụng ưu điểm của cả hai giải pháp này, bạn có thể vừa bảo mật mã nguồn xử lý quan trọng vừa đảm bảo hiệu suất cho website. Trong khi ngôn ngữ kịch bản chạy trên môi trường máy khách hầu như chỉ có Javascript và Vbscript thì có khá nhiều lựa chọn với môi trường máy chủ. Bài viết này giới thiệu cho bạn thông tin tổng hợp về các ngôn ngữ kịch bản chạy trên môi trường máy chủ.
CGI
Ngôn ngữ kịch bản chạy trên môi trường máy chủ nói chung có thể phân thành hai loại cơ bản: Com mon Gateway Interface (CGI, chương trình trả về mã HTML) và ngôn ngữ đánh dấu nhúng trong trang HTML.
Những thế hệ máy chủ web (web server hay HTTP server) đầu tiên không tích hợp sẵn mô đun xử lý tạo nội dung động mà dùng các giao tiếp (interface) để gọi các chương trình khác bên ngoài xử lý yêu cầu tạo nội dung động lúc thực thi. Chuẩn giao tiếp đầu tiên được dùng để tạo nội dung web động là CGI. CGI không phải là một ngôn ngữ cụ thể mà là giao thức liên lạc giữa máy chủ web và một chương trình ứng dụng bên ngoài. Nhiều người thường gắn liền CGI với Perl do phần lớn kịch bản CGI thường được viết bằng ngôn ngữ này, nhưng nói chung CGI có thể viết bằng bất kỳ ngôn ngữ nào để được gọi như một chương trình chạy độc lập từ web server, chẳng hạn như Python, Tcl, C/C + + và cả Java.
Phương pháp CGI có những hạn chế về hiệu suất. Chương trình CGI chạy bên ngoài web server và mỗi khi có yêu cầu một trang web động thì đều phải khởi tạo tiến trình mới. Việc khởi tạo các tiến trình mới làm hao tốn tài nguyên hệ thống và chậm tốc độ đáp ứng. Để giải quyết hạn chế của CGI, các phần mềm máy chủ web thế hệ sau tích hợp sẵn khả năng xử lý tạo nội dung web động. Cũng có nhiều mô đun bổ sung cung cấp các hàm API tương tác trực tiếp với web server.
Perl
Perl (Practical Extraction and Report Language) là ngôn ngữ kịch bản mã nguồn mở có cú pháp tương tự như C. Perl chạy ở chế độ nền phía server tạo nội dung web theo cách thức ẩn đối với người xem. Năm 1987, lrry Wall xây dựng và phát triển Perl như là phiên bản cải tiến của awk với mục đích thực hiện tự động một số tác vụ quản trị hệ thống Unix (awk là một chương trình xử lý văn bản của Unix) . Sau đó Perl được phát triền dần và phổ biến với nhiều dạng ửng dụng. Perl có tính đối tượng, nhờ vậy việc bổ sung thư viện mới rất dễ dàng. Nó thích hợp cho cả ứng dụng web phức tạp lẫn các tác vụ xử lý dữ liệu đơn giản.
Đã có thời tất cả những việc tạo trang web động có lập trình đều dùng Perl, trước khi có những công nghệ khác như ASP, JSP, PHP... và hiện Perl vẫn là một trong những ngôn ngữ được dùng phổ biến nhất để viết các ứng dụng web.
Hầu hết các máy chủ web hiện nay đều hỗ trợ Perl. Apache có hỗ trợ miễn phí tích hợp trình dịch Perl mod-perl. Điều này không chỉ giúp tăng tốc mã lệnh Perl mà còn cải thiện hiệu suất nhờ mod-perl lưu lại các mã lệnh biên dịch trong bộ nhớ. Mod_perl kết hợp với một số công nghệ khác cho phép xây dựng các website cao cấp, nổi bật nhất là hai công nghệ HTML::Embperl và HTML::Mason.
Cá c giải pháp thương mại của Activestate và Binary Evolution cũng giúp tăng tốc Perl theo cách thức tương tự như mod-perl. PerlEx của ActiveState tăng tốc chương trình CGI/PERL cho IIS trong khi sản phẩm của Binary Evolution dùng cho Netscape, Apache, và IIS trên cả nền Windows và Unix.
Có rất nhiều tài liệu trên Net về Perl cũng như nhiều thư viện chương trình tiện ích miễn phí. Bạn có thể tìm thấy những mô đun viết sẵn ở website CPAN (Comprehensive Perl Archive Network - www.cpan.org). Ngôn ngữ Perl hiện đang phát triển đi xa hơn thiết kế ban đầu của nó.
ASP
Công nghệ Microsoft Active Server pages (ASP) đi cùng với Microsoft Intemet Information Server (IIS). ASP hỗ trợ nhiều ngôn ngữ kịch bản như PerlScript, JScript và VBScript. PerlScript dựa trên ngôn ngữ Perl, JScript dựa trên ngôn ngữ JavaScript, nhưng ngôn ngữ mặc định của ASP là VBScript, một ngôn ngữ kịch bản dễ học, là tập con của ngôn ngữ Visual Basic - một trong những ngôn ngữ lập trình phổ biến nhất hiện nay. Công nghệ ASP cho phép trộn nội dung HTML tĩnh với mã lệnh kịch bản thực thi ở môi trường server để tạo ra kết quả động.
Ưu điểm nổi bật nhất của ASP là khả năng dùng thành phần COM và ADO (Activex Data Object), nhưng cũng chính khả năng này làm cho chương trình ASP phức tạp và khó viết hơn. Khi cần phát triển, bạn có thể tạo thành phần COM riêng. Microsoft khuyến cáo xây dựng thành phần COM để xử lý mức luận lý. Thành phần COM có thể phát triển bằng Visual Basic, Visual C++ hay Java.
Tuy nhiên, với môi trường máy chủ dùng chung, thường các công ty cung cấp dịch vụ máy chủ giới hạn chỉ cho phép bạn dùng VBScript.
Trở ngại lớn nhất của ASP là chỉ dùng trên IIS chạy trên máy chủ Win32. Có một số sản phẩm của các hãng thứ ba cho phép ASP chạy trên môi trường và máy chủ web khác như các sản phẩm thương mại InstantASP của Halcyon, Chili!Soft của Chili!Soft và sản phẩm miễn phí OpenASP của ActiveScripting.org. Có hai phiên bản Perl cho ASP: phiên bản Unix (Apache::ASP) dùng với Apache và phiên bản Windows PerlScript của hãng ActiveState.
Việc cài đặt môi trường máy chủ hỗ trợ ASP rất đơn giản, IIS mặc định hỗ trợ sẵn ASP. Personal Web Server cung cấp môi trường chạy ASP cho Windows 95, 98. Công cụ Visual Interdev rất mạnh, giúp tạo trang ASP đơn giản và nhanh chóng. Có rất nhiều website, sách và mã nguồn miễn phí cho ASP. Đây là một lợi thế.
ASP.NET (ASP+) là bước phát triển mới của công nghệ ASP dùng với nền tảng NET. Ngôn ngữ chính dùng để phát triển trang ASP.NET (.aspx) là VB.NET, C#. Ngoài ra ASP.NET còn hỗ trợ nhiều ngôn ngữ khác như JScript.NET, Smalltalk.NET, Cobol.NET, Perl.NET...
JSP
Java Server Pages (JSP) là sự mở rộng của công nghệ JavaServlet, một thành phần trong chuẩn J2EE của Sun. Với JavaServlet, bạn phải xử lý đầu vào HTTP và đầu ra HTML trong lớp Java, bạn cần có kiến thức lập trình để xây dựng các ứng dụng phức tạp. Với JSP bạn có thể tách riêng lớp hiển thị HTML ra khỏi lớp Java xử lý nghiệp vụ phức tạp. Điều này có nghĩa là người phát triển có kinh nghiệm ngôn ngữ kịch bản, hay thậm chí người thiết kế web có thể viết mã lệnh hiển thị đơn giản, trong khi người phát triển có kiến thức về Java tập trung viết JavaServlet hay JavaBean đề giải quyết nghiệp vụ phức tạp.
Tương tự ASP, JSP cũng thực hiện phép trộn nội dung HTML tĩnh với mã lệnh kịch bản thực thi ở môi trường server để tạo ra kết quả động. JSP dùng ngôn ngữ kịch bản mặc định là Java; tuy nhiên theo đặc tả kỹ thuật thì cũng có thể dùng các ngôn ngữ khác. JSP có ưu điểm so với ASP là sau lần thực thi đầu tiên thì mã biên dịch (Servlet) của trang JSP được lưu lại trong bộ nhớ của máy chủ web và sẵn sàng đáp ứng cho các yêu cầu truy cập sau đó (trang ASP/VBSCRIPT hay Asp/jscript phải được dịch lại với mỗi yêu cầu). Lợi thế của JSP là sử dụng được toàn bộ sức mạnh của ngôn ngữ Java với các tính năng khả chuyển, chạy được trên nhiều nền tảng hệ thống và máy chủ web, mã lệnh hướng đối tượng, bảo mật an toàn...
Hiện chưa có nhiều dịch vụ đặt web hỗ trợ JSP. Tuy Java miễn phí nhưng các công
cụ phát triển Java và phần mềm máy chủ Java khá đắt. Các công cụ phát triển trang JSP tốt là Borland Jbuilder, IBM WebSphere Studio. Một số phần mềm máy chủ Java hỗ trợ JSP miễn phí như Tomcat, JONAS.
Server-side JavaScript (SSJS) là sự mở rộng của JavaScript, ngôn ngữ kịch bản phổ biến chạy ở trình duyệt máy khách có cú pháp giống như C, mặc dù có tên gọi tương tự nhưng nó không phải là Java. SSJS có các tính năng tích hợp hỗ trợ cơ sở dữ liệu và email, quản lý phiên làm việc và khả năng liên tác với các lớp Java dùng công nghệ Livewire của Netscape. SSJS chỉ chạy trên máy chủ web Netscape.
PHP
Năm 1995 , Rasmus Lerdorf tạo ra PHP nhằm giải quyết việc viết lặp đi lặp lại cùng
đoạn mã khi tạo các trang home (vì vậy PHP được viết tắt từ Personal Home Page). Ban đầu, tác giả chỉ có ý định tạo bộ phân giải đơn giản để thay thế các thẻ lệnh trong file HTML bằng các đoạn mã lệnh viết bằng C. Dự án này đã được phát triển thành ngôn ngữ kịch bản mã nguồn mở PHP - Hypertext Preprocessor được cài đặt cho khoảng 20% máy chủ web trên Internet, theo số liệu khảo sát của công ty Netcraft.
PHP tương tự JSP và ASP với tập thẻ lệnh dùng cho trang HTML. Điểm đặc biệt là PHP được phát triển hoàn toàn cho nền tảng web, chính vì vậy mà các ứng dụng viết bằng PHP rất ngắn gọn so với VBScript hay JSP. Đây cũng chính là điểm mạnh của PHP so với Perl.
Cú pháp PHP mượn từ nhiều ngôn ngữ khác như C, Java, Perl... PHP có thể giao tiếp với nhiều hệ CSDL như Sybase, Oracle, Informix, Postgres và cả Microsoft SQL. Không chỉ có khả năng thao tác CSDL, PHP còn có nhiều khả năng khác như IMAP, SNMP, LDAP, XML... PHP chạy trên hầu hết các nền tảng hệ thống. Trình máy chủ phân giải mã lệnh PHP có thể tải về miễn phí từ trang web chính thức của PHP. Có lẽ yếu tố hấp dẫn nhất của PHP là nó hoàn toàn miễn phí. Với máy tính cấu hình vừa phải chạy Linux, cài đặt Apache, PHP và MYSQL, bạn sẽ có máy chủ có thể phục vụ được nhiều ứng dụng web tương đối. Toàn bộ chi phí hầu như chỉ là thời gian bạn bỏ ra để cài đặt các phần mềm. PHP được xem là một thay thế cho Perl. PHP không thể làm được nhiều như Perl, thế nhưng chính sự hạn chế này làm cho PHP dễ học và dễ dùng. Nhiều nhà phát triển dùng kết hợp cả hai: Perl dùng cho những tác vụ chạy bên dưới còn PHP dùng cho việc xử lý bề mặt. Komodo của Active State Corp là công cụ miễn phí dùng để phát triển trang PHP.
ColdFusion
Đây là ngôn ngữ kịch bản do hãng Allaire phát triể n, hiện đã được Macromedia mua lại. Coldfusion được thiết kế ngay từ đầu chuyên dành cho nền tảng ứng dụng web, nó không bị ràng buộc bởi các mô hình công nghệ trước đây trong việc tìm giải pháp thích hợp cho những vấn đề mà các nhà phát triển web gặp phải. CFML (Cold Fusion Markup Language) là ngôn ngữ rất mạnh và dễ học, dùng tập thẻ lệnh tương tự như thẻ lệnh HTML. Một điểm đặc biệt là mỗi trang Colfusion có thể dùng như một thẻ lệnh: ví dụ bạn có file list.cfm thì một trang khác có thể dùng nó như thẻ Coldfusion cũng có tập hàm API mạnh và có một số chức năng hay như mảng, cấu trúc, xử lý lỗi...
Công cụ phát triển Coldfusion Studio là một trong những công cụ phát triến tốt nhất. Công cụ thiết kế web Macromedia Dreamweaver hỗ trợ tạo tự động mã lệnh CFML và cả JSP. Phần mềm máy chủ Coldfusion không miễn phí, do vậy tăng phí dịch vụ web.
Các ngôn ngữ như ASP, Coldfusion, JSP và PHP được quan tâm rất nhiều, nhưng các ngôn ngữ giới thiệu dưới đây cũng được dùng để phát triển một số ứng dụng chuyên biệt và được dùng cho số lượng không nhỏ website.
Tcl hay Tcl/Tk (Tool Command Language/Toolkit)
Theo John Ousterhout, cha đẻ của ngôn ngữ Tcl, thoạt đầu nó được tạo như là ngôn ngữ lệnh kết nối các chương trình ứng dụng đánh giá sinh viên ở đại học Berkerley. Tcl không được thiết kế để xây dựng các chương trình tính toán lớn và phức tạp. Chương trình Tcl - được gọi là script - thực hiện phân luồng dữ liệu từ một chương trình này đến chương trình khác. Các chương trình lớn và chạy nhanh thực hiện phần công việc nặng nhọc, chương trình Tcl gắn các chương trình lớn này lại với nhau. Tcl là ngôn ngữ hướng đối tượng.
Điểm mạnh nhất của Tcl là khả năng điều khiển, liên kết các thiết bị hay chương trình ứng dụng. Hai đặc tính chủ chốt của ngôn ngữ: khả năng nhúng và mở rộng. Phương tiện mở rộng mà Tcl cung cấp (giao diện lập trình) có thể dùng để tạo các tính năng mới trong ngôn ngữ bằng chương trình C, C++ hay Java. Rất nhiều mô đun mở rộng cho Tcl được viết và cung cấp miễn phí trên internet, công cụ GUI hỗ trợ thiết kế giao diện Toolkit (Tk) là một ví dụ điển hình. Các ngôn ngữ khác như Perl, Python cũng dùng Tk. Một điểm mạnh khác của Tcl là khả năng kiểm soát văn bản nhập vào chính khả năng này làm cho Tcl được dùng phổ biến để tạo các trang và hình ảnh lúc thực thi trên web. Với khả năng này, có thể Tcl càng phổ biến hơn trong tương lai nhờ XML (Extensible Markup Language), ngôn ngữ cho phép thể hiện dữ liệu dưới dạng văn bản. Công cụ miễn phí Tclpro của Scriptics cung cấp môi trường phát triển Tcl. Một số mô đun miễn phí tích hợp Tcl với Apache như mod_tcl, Neowebscript.
Python
Được phát triển từ năm 1990, Python là ngôn ngữ có tính đối tượng cao, khả chuyển, cú pháp đơn giản và mã nguồn mở. Python có thể mở rộng về mặt hệ thống bằng cách bổ sung thêm mô đun mới viết bằng ngôn ngữ biên dịch như C hay C++. Mô đun bổ sung có thể định nghĩa hàm mới và biến mới cũng như các kiểu đối tượng mới. Python đặc biệt thích hợp cho lập trình tính toán khoa học.
Python chưa phổ biến như PHP, ASP hay Perl, và hiện phần lớn dịch vụ web chưa hỗ trợ ngôn ngữ này. Apache có mô đun miễn phí mod-python hỗ trợ Python. Một chọn lựa khác là Zope - máy chủ ứng dụng Python có mã nguồn mở của Digital Creations.
Chọn ngôn ngữ cho website của bạn
Có nhiều yếu tố bạn nên cân nhắc trước khi quyết định chọn ngôn ngữ kịch bản cho website của mình như: Nhân sự bảo trì website, kỹ năng của họ và tài nguyên hiện có? Dịch vụ đặt máy chủ và hỗ trợ của dịch vụ? Hệ thống cơ sở dữ liệu sẽ sử dụng? Nền tảng hệ thống (Windows, Unix...)? Tuy PHP có vẻ như là ngôn ngữ thật hấp dẫn (mã nguồn mở, chạy trên nhiều hệ điều hành), nhưng nó không phải là lựa chọn thích hợp nếu bạn không có chuyên gia thành thạo Unix, Perl và C. Ngay cả nếu bạn có chuyên gia trong tay nhưng không có gì đảm bảo sẽ giữ được họ làm việc với công ty, trong khi việc tìm người thay thế rất khó khăn do khan hiếm chuyên gia về lĩnh vực này.
Nói chung, các ngôn ngữ kịch bản đều đơn giản, dễ học, dễ sử dụng và có nhiều
tính năng gần như tương tự nhau. Thảo chương viên Visual Basic sẽ thấy mã lệnh
ASP đơn giản. Người phát triển mã HTML sẽ thấy quen thuộc với Coldfusion. Những người lập trình C hay Perl thì sẽ thấy nhiều điểm tương đồng trong PHP. Chọn ngôn ngữ mà bạn nắm vững thường là giải pháp tốt nhất.

Thanh Phong

No comments:

Post a Comment