inicio mail me! sindicaci;ón

Chỉ số TIOBE – chỉ số phổ biến của các ngôn ngữ lập trình

Hôm qua rong chơi trên mạng thì tìm được trang này: http://www.tiobe.com/index.htm?tiobe_index

TIOBE là 1 công ty phần mềm (hình như thế). Họ tự lập ra chỉ số TIOBE để xếp hạng các ngôn ngữ dựa trên mức độ phổ biến. Vậy họ dựa trên tiêu chí nào để đánh giá?

Chỉ số TIOBE
Bảng xếp hạng các ngôn ngữ phổ biến nhất dựa trên chỉ số TIOBE
(Click vào để xem đầy đủ)

Tiêu chí đánh giá

Rất khó để có thể biết được chính xác đã có bao nhiêu dự án dùng ngôn ngữ A, bao nhiêu dòng mã được biết bởi ngôn ngữ B, bao nhiêu người đang sử dụng ngôn ngữ C .v.v. Vậy nên hiện giờ cách tốt nhất là xem xem ngôn ngữ nào được nhắc đến nhiều nhất trên mạng. Đó là cách làm của TIOBE.

Họ chọn các cỗ máy tìm kiếm phổ dụng nhất: Google, Google Blogs, MSN, Yahoo và cả dịch vụ chia sẻ video YouTube để xếp hạng các ngôn ngữ (bản thân các cỗ máy này cũng được chọn lọc dựa trên xếp hạng của alexa). Cách tính chỉ số như sau:

Họ sử dụng câu lệnh search +”{ngôn ngữ} programming” trên các cỗ máy tìm kiếm trên, và ghi lại số kết quả của mỗi cỗ máy. Sau đó dùng tổng số kết quả để sắp xếp các ngôn ngữ, và chọn ra 50 ngôn ngữ đứng đầu.

Tiếp theo họ tính chỉ số của từng ngôn ngữ trong 50 ngôn ngữ này bằng phép tính sau:

((hits(PL,SE1)/hits50(SE1) + … + hits(PL,SEn)/hits50(SEn))/n

Trong đó PL là ngôn ngữ lập trình đang xét. SE1, SE2 … SEn là các cỗ máy tìm kiếm (n = 5). hits(PL,SE1) là số kết quả tìm kiếm ngôn ngữ lập trình PL trên cỗ máy SE1. hits50(SE1) là tổng số kết quả của 50 ngôn ngữ đã chọn ra ở trên tìm được trên cỗ máy SE1.

Như vậy, TIOBE index (chỉ số TIOBE) đánh giá gần sát với thực tế về độ phổ biến của các ngôn ngữ trên internet.

Chỉ số này được dùng để làm gì?

Theo định nghĩa chính thức của chỉ số này, các ngôn ngữ được cho điểm A, A-, A–và B. Trong đó các ngôn ngữ điểm A là các ngôn ngữ được đánh giá là chính thống. B là không chính thống, còn A- và A–là nằm ở giữa 2 loại này. Nếu một ngôn ngữ nào giữ được chỉ số TIOBE ở khoảng 0.7% trong vòng ít nhất 3 tháng thì sẽ được điểm A. Trong hai tháng đầu có mặt trong bảng xếp hạng, ngôn ngữ đó sẽ có điểm A– và A-.

Như vậy dựa trên thang điểm đánh giá này, ta có thể đánh giá được xu hướng phát triển của các ngôn ngữ, từ đó xác định được mình nên bổ xung ngôn ngữ nào vào vốn kiến thức của mình để không trở nên lỗi thời.

Nhìn lại bảng xếp hạng, ta có thể để ý thấy vài điểm sau:

Ngôn ngữ họ C đang mất dần ưu thế

Ngôn ngữ C

Mặc dù đang đứng thứ 2 sau Java, chỉ số của C đang tụt xuống nhanh chóng. Cách đây 7 năm C vẫn chiếm 20% số kết quả search, nhưng giờ đây đã tụt xuống còn 13%. Ta cũng có thể thấy C là một trong số ít các ngôn ngữ lập trình cấu trúc còn trụ lại trong bảng này đến giờ (Pascal đứng thứ 19 nhưng không bị giảm sút “phong độ” quá nhiều). C++ cũng đang có chỉ số giảm dần và chắc năm sau sẽ mất vị trí vào tay Python.

Các ngôn ngữ mới như Lua và Ruby đang được đón nhận nồng nhiệt

Ngôn ngữ Lua

Nhìn vào biểu đồ có thể thấy các ngôn ngữ này trưởng thành nhanh như thế nào. Mặc dù đều được sáng tạo ra từ giữa thập kỉ 90, nhưng thời gian gần đây đã chứng kiến sự bùng nổ mối quan tâm về các ngôn ngữ mới này. Có thể hôm nay là lần đầu tiên bạn nghe thấy những cái tên đó, nhưng không biết năm sau bao nhiêu cái tên mới sẽ nổi lên và bao nhiêu cái tên cũ sẽ chìm vào quên lãng.

Ngôn ngữ Ruby

Các ngôn ngữ bạn nên bắt đầu có kế hoạch học từ hôm nay

Java – chắc chắn phải một thời gian dài nữa mới chịu nhường lại ngôi vị của mình cho ngôn ngữ khác.
Visual Basic - khả năng phát triển ứng dụng nhanh chóng trong VB là thế mạnh lớn của ngôn ngữ này. Nhiều người chỉ trích VB là sẽ làm cho coder trở nên lười nhác, nhưng thực tế VB năng suất hơn C++ nhiều đối với những ứng dụng quy mô nhỏ và không đòi hỏi tài nguyên cấu hình cao.
PHP – học lập trình Web ít nhất nên biết qua.
Ruby – Tớ cá với các bạn là năm nay bạn sẽ nghe thấy cái tên này rất nhiều. Ruby on Rails là bộ khung lập trình Web có năng lực ngang bằng với PHP (nhiều khi lại năng suất hơn).
Lua – Chắc bạn nên dành ngôn ngữ này cho 1 hoặc 2 năm nữa sau khi được cộng đồng hỗ trợ nhiều hơn. Nhưng nên làm quen dần với cái tên này :)

Tuy nhiên các bạn không nên dựa vào bảng xếp hạng này để quả quyết ngôn ngữ nào là hay hơn hay thông dụng hơn ngoài đời, vì những con số này chưa chắc đã chính xác. Các cỗ máy tìm kiếm thay đổi thuật toán thường xuyên, và với sự bùng nổ của Internet thì không có gì là tuyệt đối cả. Các bạn chỉ nên sử dụng chỉ số này để tham khảo xem mình nên học tiếp gì và định hướng nghề nghiệp sau này của mình ra sao :D

Chúc may mắn ;)

johan tran said,

January 10, 2008 @ 12:54 pm

Sao cái biểu đồ Lua và Ruby của bạn lại thiếu mất đoạn cuối thế.:D

c40 said,

January 10, 2008 @ 6:26 pm

À không phải thiếu đâu bạn :)
Đó là tháng 1/2008, thời điểm đó chưa có số liệu, với cả chắc người ta cắt thiếu mất số 08 của 2008 thôi ;)
Có số liệu mới của tháng 1/2008 vừa mới ra, trong đó thứ tự một số ngôn ngữ thay đổi khá nhiều :D

johan tran said,

January 10, 2008 @ 9:43 pm

Bạn có thể nói cho mình biết là vì sao bạn lại quan tâm tới Lua và Ruby hơn C family không.

c40 said,

January 10, 2008 @ 10:30 pm

Hì. Kể ra thì dài lắm :)

Tớ học lập trình từ lớp 7, học Pascal. Sau đó thì tớ học chủ yếu về thuật toán và cấu trúc dữ liệu, khoảng 3 4 năm gì đó. Nhưng đến lúc đó thì tớ nhận ra toán học không phải thế mạnh của mình, nên về mặt thuật toán càng ngày tớ càng thấy không theo kịp những bạn cùng lứa khác. Thế là tớ bắt đầu thời kì bay nhảy, mỗi ngôn ngữ học 1 tí. Từ lớp 11 đến năm 2 đại học (bây giờ), tớ chỉ học được PHP, MySQL và VB.NET, nhưng chưa cái gì đến nơi đến chốn cả.

Đến gần đây thì tớ thấy là mình mất căn bản trầm trọng, đồng thời thiếu cập nhật với những công nghệ mới. Nên tớ muốn tìm cách quay lại học lập trình một cách tử tế. Thế nên tớ chọn cách “đi tắt đón đầu” :P Tức là tớ học 1 hoặc 2 ngôn ngữ mới hướng đối tượng, trong khi đó bồi bổ thêm tí kiến thức căn bản chính thống. Thế nên kế hoạch của tớ bây giờ là học Ruby, trong lúc đó thì nghiền ngẫm C và C++, vì tớ hướng đến học về mã nguồn mở hơn.

Hơn nữa Ruby viết từ C, nên học C sẽ giúp cho việc học Ruby khá nhiều, đồng thời nếu đạt đến mức độ nào đó tớ thậm chí có thể tham gia đóng góp cho mã nguồn của ngôn ngữ Ruby nữa.

Ngôn ngữ Ruby thì bây giờ lập trình viên quốc tế rất quan tâm đến nó. Ở Việt Nam thì dân học lập trình thường gặp rào cản về ngôn ngữ, nên việc tiếp cận với công nghệ mới là chậm hơn một bước. Thế nên tớ muốn học Ruby từ sớm để sau này thuận lợi hơn khi quay về Việt Nam làm việc. Mã nguồn mở cũng là một xu hướng mà ở Việt Nam vẫn còn chưa phát triển mạnh. Tớ ước mơ được làm người đi đầu về một lĩnh vực nào đó, mà muốn đi đầu thì phải lấy đà đã :D

Tóm lại mục tiêu của tớ là tập trung vào những gì mà sẽ phát triển tại Việt Nam trong tương lai :), trong khi đó vẫn phải học thật chắc lại căn bản.

johan tran said,

January 12, 2008 @ 11:39 pm

Hay thật! Nhưng sao cậu không làm việc bên đó luôn mà còn về VN làm chi vậy. Cho mình hỏi thêm, chương trình bên đó học thế nào vậy, cậu đang học bằng tiếng Nhật hay tiếng Anh.

c40 said,

January 13, 2008 @ 1:12 am

Tớ thích về VN hơn. Các thứ giá cả rẻ hơn, mà đằng nào tớ cũng quen ở VN rồi :P VN là mục tiêu lâu dài của tớ.

Ra trường chắc định làm cho nước ngoài một thời gian, và tìm cách chuyển về VN lập công ty hay một cái gì đó to tát nếu có thể :) Không định làm việt kiều đâu :P

Trường của tớ học bằng cả tiếng Anh lẫn tiếng Nhật. Chương trình thì chủ yếu là về quản trị kinh doanh, hoặc là xã hội học. Gần đây có thêm mấy ngành trong đó có CNTT. Nhưng tự học vẫn là chính, vì là ngành mới nên chương trình học cũng chưa phải là ổn lắm.

johan tran said,

January 13, 2008 @ 4:21 pm

Tương lai của cậu sáng đấy chứ nhỉ. Lại cũng có thâm niên với máy tính nữa, với khả năng của cậu sau này về VN thì sẽ làm nên chuyện lớn đây. Chúc cậu thành công.

c40 said,

January 15, 2008 @ 11:42 am

Hì, tớ thì chả biết trước tương lai nó thế nào, chỉ cố để sau này không bị tụt hậu là sướng lắm rồi :P Dù gì thì hiện tại tớ cũng chỉ là beginner thôi :)
Thanks cậu đã comment và động viên nhé :D

johan tran said,

February 16, 2008 @ 10:44 am

Hi! Ăn tết thế nào C40. Sao dạo này không viết bài nào vậy.

RSS feed for comments on this post · TrackBack URI

Leave a Comment