PDA

View Full Version : Các ngôn ngữ lập trình. Làm thế nào để chọn được ngôn ngữ thích hợp nhất?


kaiser
23-07-2012, 04:13 PM
Hiện có rất nhiều ngôn ngữ lập trình. Một số ngôn ngữ rất phổ biến, một số ngôn ngữ lại rất hấp dẫn và một số ngôn ngữ khác thì rất mạnh trong các ứng dụng chuyên biệt. Làm thế nào để chọn được ngôn ngữ thích hợp?<br>
<br>
Một câu hỏi thường gặp của những người mới bắt đầu lập trình là “Nên học hay nên dùng ngôn ngữ lập trình nào?”. Đây không chỉ là mối băn khoăn của các bạn trẻ chập chững bước vào thế giới “0 và 1” mà còn của cả những người trong nghề muốn củng cố hay nắm bắt cơ hội nghề nghiệp. Không có một qui tắc đơn giản để phân hạng các ngôn ngữ (NN). Mỗi NN đều có những điểm mạnh và điểm yếu. Một NN có thể “sáng chói” trong một số lĩnh vực nhưng trong một số lĩnh vực khác bạn lại phải “đánh vật” với nó. Sự lựa chọn NNLT có thể xem như vấn đề “tín ngưỡng” cá nhân. Tuy vậy, có một số cơ sở giúp bạn đưa ra quyết định đúng đắn.<br>
<br>
Phân loại Ngôn ngữ lập trình<br>
Ngôn ngữ lập trình (NNLT) là phương tiện để giao tiếp và ra lệnh cho máy tính thực hiện những công việc cụ thể. Máy tính chỉ có thể hiểu các con số 0 và 1, nhưng con người lại không thành thạo kiểu suy nghĩ với các con số này để ra lệnh cho máy tính. Vì vậy người ta đã phát triển các dạng câu lệnh mà con người có thể đọc hiểu, tập các câu lệnh này được gọi là mã nguồn (source code). Mã nguồn phải tuân thủ một tập các từ vựng, cú pháp và qui tắc do những người thiết kế NN đặt ra. Ví dụ, đoạn mã nguồn mẫu ra lệnh cho máy tính hiển thị dòng chữ “Xin chào.” trên màn hình:<br>
<br>
#!/usr/bin/perl<br>
<br>
print “Xin chào.”<br>
<br>
Mã nguồn được một phần mềm thiết kế đặc biệt có thể hiểu các câu lệnh và dịch thành dạng mã mà máy có thể hiểu và thực thi.<br>
<br>
Cấp thấp và cấp cao<br>
<br>
Một cách tổng quát, một NNLT có 2 thành phần chính: (1) tập các thành phần cơ bản của NN (lệnh, hàm, thủ tục...) có thể kết hợp thành chương trình, và (2) bộ biên dịch để chuyển mã nguồn thành mã máy.<br>
<br>
Những NNLT thế hệ đầu tiên gần gũi với mã máy và thường gắn chặt với nền tảng phần cứng, các thế hệ NNLT mới hơn gần gũi với con người hơn và ít lệ thuộc nền tảng phần cứng hơn. Xét theo khía cạnh này, có thể phân các NNLT thành 3 nhóm. <br>
<br>
1. Các NNLT cấp thấp (LLL - Low Level Language), 'hướng đến máy tính“, tương tác trực tiếp với phần cứng. Các NN này có tập lệnh tương ứng với tập lệnh của CPU. Có 2 loại NNLT cấp thấp: NN mã máy dùng các con số và NN Assembly dùng các từ gợi nhớ. Các NNLT cấp thấp nhanh và hiệu quả trong việc tương tác với phần cứng.<br>
<br>
2. NNLT cấp cao (HLL - High Level Language), 'hướng đến nhiệm vụ“, có từ vựng giống tiếng Anh giúp dễ dàng trong việc viết chương trình. Các NN này có cú pháp chặt chẽ, có khả năng chạy trên nhiều hệ thống phần cứng khác nhau. Đa phần các phần mềm được phát triển dùng các NN này. Các NNLT quen thuộc trong nhóm này như C, C++, Pascal, Java...<br>
<br>
3. NNLT cấp rất cao (VHLL - Very High Level Language), 'hướng đến con người“, được thiết kế để phát triển các ứng dụng chuyên biệt mà không đòi hỏi nhiều kiến thức về lập trình. Các NN này khá mới và vẫn đang tiếp tục phát triển. VHLL tương tự HLL nhưng dễ học và dễ sử dụng hơn. VHLL có nhiều loại, có thể kể 2 loại thông dụng nhất:<br>
<br>
- Các NN tương tác (authoring) như NN đánh dấu (HTML, DHTML, XML) và NN mô hình (VRML) dùng để tạo trang web và nội dung đa phương tiện.<br>
<br>
- Các NN kịch bản (scripting) như JavaScript dùng để viết các chương trình nhỏ đi kèm các trang web để tạo các hiệu ứng động và tương tác.<br>
<br>
Tổng quát và chuyên biệt<br>
<br>
Xét ở cấp độ tổng quát, tất cả các NNLT đều tương tự nhau. Chúng đều yêu cầu bạn 'mô tả“vấn đề cần giải quyết và đều đòi hỏi các kỹ năng tương tự. Nếu nắm vững một NN, bạn sẽ có đất để sử dụng những kỹ năng của mình với một NN khác. Nhưng thực tế ứng dụng có những NN thực hiện những kỹ thuật hay giải quyết những dạng vấn đề chuyên biệt dễ hơn những NN khác, và có những NN có khả năng thực hiện nhiều dạng ứng dụng.<br>
<br>
Không có lằn ranh rõ ràng giữa các NN chuyên biệt và NN tổng quát. Tuy nhiên có thể phân định một cách đơn giản như sau: Các NN tổng quát được thiết kế để viết các chương trình lớn, có cú pháp phức tạp, thời gian biên dịch dài và phải thực hiện biên dịch trước, và có bộ thư viện riêng. Nói chung các NN tổng quát có thể dùng cho bất kỳ công việc tính toán nào, tuy nhiên thực tế thường mỗi NN thích hợp hơn với một lĩnh vực nhất định nào đó: Fortran thích hợp cho tính toán khoa học; Java dùng cho ứng dụng phân tán không lệ thuộc nền tảng hệ thống; C dùng cho lập trình hệ thống và trình biên dịch; Pascal thích hợp cho việc giảng dạy về lập trình...<br>
<br>
Các NN chuyên biệt được thiết kế cho các chương trình nhỏ, cú pháp đơn giản, thường được biên dịch lúc thực thi, và có nhiều tác vụ xây dựng sẵn. Nói chung, các NN chuyên biệt chỉ dùng trong các ứng dụng chuyên biệt: Matlab dùng trong toán học, SQL dùng trong cơ sở dữ liệu, PHP dùng để tạo trang web...<br>
<br>
Một số lĩnh vực ứng dụng đặc thù có thể dùng các NN tổng quát nhưng phải bổ sung thêm các hàm thư viện và môi trường đặc biệt. Ví dụ, lập trình đồ hoạ có thể dùng bất kỳ NN tổng quát nào kết hợp với một tập các hàm đồ hoạ.<br>
<br>
Mô hình tính toán<br>
<br>
Mô hình tính toán của một NNLT tổng quát có ảnh hưởng đến khả năng sử dụng của nó trong một lĩnh vực đặc thù. Có các mô hình tính toán chính: lệnh hay thủ tục (imperative, procedural), khai báo hay phi thủ tục (declarative, non-procedural), hướng đối tượng (object-oriented) và kịch bản (scripting).<br>
<br>
Với các NN lệnh, chương trình bao gồm chuỗi lệnh mô tả cách thức thay đổi dữ liệu (trạng thái). Fortran, Cobol, C và Pascal thuộc nhóm này.<br>
<br>
Trong khi các NN lệnh chú trọng đến cách thức giải quyết vấn đề, các NN khai báo quan tâm đến vấn đề cần giải quyết, định nghĩa đầu vào và đầu ra của chương trình. Có 2 loại NN khai báo: NNLT chức năng như Lisp và Haskell, và NNLT luận lý như Prolog.<br>
<br>
Ở các NNLT hướng đối tượng, toàn bộ thông tin để giải quyết vấn đề (dữ liệu và tác vụ) được nhóm chung lại thành các đối tượng. Các NN hướng đối tượng thuần tuý như Smalltalk và Java chỉ hỗ trợ mô hình này, còn có NN lai như C++ hỗ trợ cả các mô hình khác.<br>
<br>
Chọn NNLT<br>
<br>
Hiện có rất nhiều NNLT (con số có thể lên đến hàng trăm). Mỗi NNLT đều có những điểm mạnh và điểm yếu. Có một số yếu tố kỹ thuật và cả phi kỹ thuật tác động đến việc chọn NNLT.<br>
<br>
Yếu tố kỹ thuật<br>
<br>
- Yêu cầu của ứng dụng: có những NN phù hợp với những ứng dụng đặc thù.<br>
<br>
- Nền tảng hệ thống: Ứng dụng sẽ chạy trên nền Intel, Sun, HP hay máy chủ IBM? và hệ điều hành Windows, Sun Solaris, Linux hay IBM OS? Không phải tất cả các NNLT đều có thể chạy trên mọi nền tảng hệ thống.<br>
<br>
- Phát triển và bảo trì: NN có hỗ trợ phát triển ứng dụng nhanh và dễ bảo trì?<br>
<br>
- Công cụ hỗ trợ và tài liệu: Công cụ hỗ trợ thường là một trong những yếu tố then chốt trong việc chọn NN. Các NN có công cụ hỗ trợ và tài liệu tốt thường dễ phổ biến, ví dụ như Visual Basic.<br>
<br>
Yếu tố phi kỹ thuật<br>
<br>
- Sự phổ biến của NN: Sự phổ biến, theo nghĩa thị phần và số lập trình viên sử dụng NN, có ảnh hưởng đến việc chọn lựa NN. Với một NN phổ biến như C bạn sẽ dễ dàng tìm thấy nhiều nguồn tài liệu và sự trợ giúp hơn là một NN ít được dùng hơn như Ada.<br>
<br>
- Kinh tế: NN có được hỗ trợ tốt bởi các tổ chức thương mại hay cộng đồng phát triển phần mềm miễn phí? (Nghĩa là trình biên dịch và môi trường phát triển của NN sẽ được tiếp tục phát triển trong tương lai).<br>
<br>
Chọn đúng công cụ cho công việc<br>
<br>
Thực sự, khó có thể nói NNLT nào tốt hơn. Với bất kỳ NN nào cũng đều có những chương trình được viết rất tốt hay dở tệ. Chất lượng của chương trình chịu ảnh hưởng bởi chất lượng của lập trình viên nhiều hơn là chất lượng của NN. NNLT khó nhất chính là NN đầu tiên mà bạn học. Có một số NN có thể giúp cho việc viết chương trình dễ hơn đối với một số dạng ứng dụng, và ngược lại. Ví dụ C rất mạnh về lập trình hệ thống nhưng nếu dùng để viết ứng dụng quản lý dữ liệu thì bạn sẽ phải vất vả xây dựng những thứ đã có sẵn trong dBase hay Foxpro.<br>
<br>
Việc xác định các yêu cầu và mục đích sẽ giúp bạn chọn được NN thích hợp. Hãy chọn NN phù hợp với công việc, hay tốt hơn, chọn cả hai. Nếu bạn định viết ứng dụng có yêu cầu xử lý giao diện, nên chọn NN có hỗ trợ đồ họa, như Visual Basic chẳng hạn. Bạn có thể đặt câu hỏi 'NN nào thực hiện việc này dễ hơn?“ thay vì 'Làm thế nào để thực hiện việc này với C++?“.<br>
<br>
Có thể ứng dụng của bạn có nhiều phần với nhiều yêu cầu khác nhau. Chẳng hạn như chương trình game, có những phần (gồm trí tuệ nhân tạo, luật chơi, giao diện người dùng...) chỉ yêu cầu việc xây dựng và thay đổi dễ dàng, nhưng không yêu cầu tốc độ; nhưng có những phần (như đồ họa) lại đòi hỏi tốc độ.<br>
<br>
Một cái áo không bắt buộc dùng chỉ một màu. Trong lập trình cũng vậy, không nhất thiết phải dùng một NN cho toàn bộ chương trình. Có các cách thức cho phép bạn 'nhúng“ gần như bất kỳ NN nào vào một NN khác. Cách này giúp cho bạn khai thác ưu điểm của từng NN. Tuy nhiên nên cẩn thận, có quá nhiều 'màu sắc“ sẽ làm bạn rối trí!<br>
<br>
Và một điều nên lưu ý: Không hẳn các NN mới hơn luôn là lựa chọn tốt hơn. C++ mới hơn C, thế nhưng C vẫn tồn tại vì vẫn có ưu thế về tốc độ và kích thước nhỏâ gọn.<br>
<br>
Trở lại câu hỏi ban đầu, 'Nên học hay dùng ngôn ngữ lập trình nào?“, có thể bạn tìm thấy lời giải với vấn đề được đặt ngược lại: 'Để làm gì?“.<br>
<br>
SỰ LỰA CHỌN CỦA CÁC NHÀ PHÁT TRIỂN<br>
<br>
Theo số báo cáo Worldwide IT Benchmark 2003 của META Group, C++ và Java tiếp tục là các NNLT được lựa chọn hàng đầu để phát triển ứng dụng, chiếm tỉ lệ lần lượt là 18% và 16,7%. HTML, JavaScript, ASP và XML cũng là nhóm NNLT quan trọng chiếm vị trí thứ 3 với tỉ lệ 13,6%, năm trước nhóm NNLT này chiếm tỉ lệ 9,7%. Việc dễ lập trình cùng với xu hướng phát triển của web có lẽ là lý do của sự gia tăng này. Tuy rất nổi tiếng với công cụ phát triển mạnh và được nhiều người dùng nhưng vị trí của Visual Basic trong ngành công nghiệp phần mềm khá khiêm tốn, chiếm vị trí thứ 4 với tỉ lệ 9,8%.<br>
<br>
Báo cáo cũng cho thấy Windows vẫn duy trì vị trí dẫn đầu trong lựa chọn nền tảng phát triển, chiếm tỉ lệ áp đảo 61,9% (năm 2002, 53,1%). Nền tảng IBM chiếm vị trí thứ 2 với tỉ lệ 18,3%. Vị trí thứ 3 thuộc về Sun Solaris, 9,4%.<br>
<br>
Nhìn chung, số liệu của META Group có sự tương đồng (ngoại trừ trường hợp của VB) với số liệu của một trong những công ty phần mềm hàng đầu ở Việt nam, công ty ParagonSolutions (PSV).

daykem004
16-10-2013, 08:41 PM
Gia sư dạy kèm cấp 1 tại trung tâm là tập thể giáo viên nhiều kinh nghiệm, có tâm với nghề, đang dạy tại các trường Tiểu học ở khắp các quận, huyện nội thành Tp HCM. Đảm bảo tiến bộ qua mỗi tháng cho các cháu.
Vì việc học của trẻ rất quan trọng nên gia sư Tiểu học cần thiết cho sự tư duy của trẻ sau này. Một học sinh ngay từ thửa cấp 1 đã ham chơi không tập trung vào việc học, được sự nuông chiều của gia đình rất dễ hình thành các tính cách lười biếng, sợ học, ham chơi và xu hướng kết giao với những bạn bè giống mình vì vậy các em rất dễ hình thành tính cách tiêu cực ngay từ nhỏ lớn lên sẽ khó sửa đổi. Mà kiến thức ở cấp 1 là rất cần thiết, là nền tảng cho bé phát triển sau này, các bé dựa trên những nền tảng đó để học tập tốt. Do đó ngay từ nhỏ việc giúp các em học tập theo phương pháp khoa học và đúng cách là việc vô cùng cần thiết và phải được đầu tư đúng mức mà các bậc phụ huynh và những người làm công tác giáo dục đặc biệt quan tâm. Vì vậy trung tâm gia sư dạy kèm cấp 1 với phương châm “ĐỊNH HƯỚNG TƯƠNG LAI” giúp cải thiện việc học và nhân cách của các em nên Quý phụ huynh yên tâm giao con em mình cho các gia sư của trung tâm.
Giáo Viên Dạy Kèm Cấp 1 – Giáo Viên Kạy Kèm Lớp 1,2,3,4,5 Ở Tp.HCM yêu trẻ, kinh nghiệm kèm học sinh lớp lá, 1-5, luyện chữ đẹp, Toán, Tiếng việt, Tập Đọc, Chính Tả, tô màu, Anh van trẻ em, Organ, Piano, rèn trẻ chăm học, vâng lời, dễ hiểu, theo sát báo bài ở trường, chuẩn bị bài mới, tận tâm nâng đỡ học sinh yếu, lười, ôn lại căn bản, dạy nâng cao, dạy mọi nơi Tp.HCM.
Tập thể giáo viên nhiều kinh nghiệm, có tâm với nghề, đang dạy tại các trường Tiểu học ở khắp các quận, huyện nội thành Tp HCM. Gia sư dạy kèm cấp 1 đảm bảo tiến bộ qua mỗi tháng cho các cháu.
Vì việc học của trẻ rất quan trọng nên gia sư Tiểu học cần thiết cho sự tư duy của trẻ sau này. Một học sinh ngay từ thuở cấp 1 đã ham chơi không tập trung vào việc học, được sự nuông chiều của gia đình rất dễ hình thành các tính cách lười biếng, sợ học, ham chơi và xu hướng kết giao với những bạn bè giống mình vì vậy các em rất dễ hình thành tính cách tiêu cực ngay từ nhỏ lớn lên sẽ khó sửa đổi. Mà kiến thức ở cấp 1 là rất cần thiết, là nền tảng cho bé phát triển sau này, các bé dựa trên những nền tảng đó để học tập tốt. Do đó ngay từ nhỏ việc giúp các em học tập theo phương pháp khoa học và đúng cách là việc vô cùng cần thiết và phải được đầu tư đúng mức mà các bậc phụ huynh và những người làm công tác giáo dục đặc biệt quan tâm.
Sau đây là mẫu tin cần gia sư của một phụ huynh: “Tôi có đứa con gái nay lớp 1. Do không có thời gian nhiều để kiểm soát bài vở của con, mà bé thì hay mất tập trung trong lúc học nên làm mất thời gian nhiều mà ít nhớ bài, học không hiệu quả. Tôi định nhờ giáo viên/gia sư dạy kèm bé ở nhà. Không biết cả nhà có biết giáo viên nào tận tâm và có dạy kèm không thì tư vấn giúp tôi.”

phụ huynh có nhu cầu tìm gia sư dạy kèm cấp 1 (http://giasudaykemtaitphcm.wordpress.com/2013/10/15/gia-su-day-kem-cap-1/) liên hệ: 0907.044.895 – 08.3601.9600 (Thầy Nhân – Cô Ngọc).