Bài viết Lựa chọn ngôn ngữ trong dạy học nhập môn lập trình cho sinh viên phân tích đánh giá các vấn đề liên quan đến lựa chọn ngôn ngữ lập trình trong dạy học cho sinh viên, có tính đến đặc thù dạy học ở các trường đại học ở Việt Nam.
LỰA CHỌN NGÔN NGỮ TRONG DẠY HỌC NHẬP MÔN LẬP TRÌNH CHO SINH VIÊN NGUYỄN THẾ DŨNG Khoa Tin học, Trường Đại học Sư phạm, Đại học Huế Email: nguyenthedung@dhsphue.edu.vn Tóm tắt: Việc lựa chọn ngơn ngữ lập trình hợp lý để dạy học nhập mơn lập trình sinh viên chuyên ngành Công nghệ thông tin trường đại học chủ đề tranh luận sôi nhiều năm qua Với phương pháp tổng quan tài liệu nghiên cứu, báo phân tích đánh giá vấn đề liên quan đến lựa chọn ngơn ngữ lập trình dạy học cho sinh viên, có tính đến đặc thù dạy học trường đại học Việt Nam Bên cạnh dựa tần suất xuất tiêu chí tài liệu nghiên cứu, 20 tiêu chí tiêu biểu để lựa chọn ngơn ngữ đề cập phân tích đánh giá, nhằm định hướng cho việc lựa chọn ngôn ngữ dạy học lập trình Từ khóa: Ngơn ngữ lập trình, dạy học nhập mơn lập trình, dạy học Tin học, lựa chọn ngôn ngữ MỞ ĐẦU Việc lựa chọn ngơn ngữ lập trình (PL) để dạy học học phần nhập mơn lập trình cấp học khác nhau, đặc biệt bậc đại học, vấn đề tranh luận nhiều năm qua khó giải hồn tồn Dạy học nhập mơn lập trình thành cơng, tạo tảng cho việc học môn học chuyên ngành sinh viên (SV) chuyên ngành Công nghệ thông tin (CNTT) Tuy vậy, phức tạp mức việc học lập trình nhập mơn dẫn đến người học giảm động học tập kết học tập thấp [37] Do vậy, câu hỏi “làm để dạy học lập trình hiệu thơng qua nguyên tắc lập trình bản, cấu trúc chương trình, cú pháp ngữ nghĩa?” giảng viên (GV) quan tâm, việc lựa chọn ngôn ngữ cho việc dạy học nhập mơn lập trình cho SV năm học bậc đại học quan trọng Khi lựa chọn PL để dạy học lập trinh, cần cân nhắc động người học, họ mong muốn nhanh có kiến thức kỹ đủ để bắt đầu công việc thực tế sớm tốt Bên cạnh nhu cầu học khái niệm lập trình theo cách dễ tiếp cận họ Các khía cạnh cần cân nhắc việc lựa chọn PL dạy học cho đối tượng SV, bao gồm yếu tố sư phạm dạy học lập trình, u cầu cơng việc người học tương lai Ngơn ngữ lập trình hữu ích SV ngôn ngữ sử dụng rộng rãi thị trường lao động Tuy nhiên, với phát triển kỹ thuật cơng nghệ kích thích nhu cầu phát triển PL, PL phổ biến thường thay đổi ba năm lần [43], [44], [46] nhà trường cần phải tiên liệu thay đổi Do đó, PL sử dụng để giảng dạy cần phải đánh giá lại thường xuyên Tạp chí Khoa học, Trường Đại học Sư phạm, Đại học Huế ISSN 1859-1612, Số 2(62)/2022: tr.41-53 Ngày nhận bài: 15/9/2021; Hoàn thành phản biện: 30/9/2021; Ngày nhận đăng:01/10/2021 42 NGUYỄN THẾ DŨNG Để đánh giá PL người dạy người học cần phải thành thạo ngôn ngữ ấy, báo dựa phương pháp tổng quan tài liệu vấn đề nghiên cứu liên quan để phân tích ngơn ngữ lập trình phổ biến, có tính đến đặc trưng dạy học Xu sử dụng ngôn ngữ lập trình thị trường lao động nghề nghiệp chuyên ngành công nghệ thông tin Phần báo đánh giá tổng quan việc dạy học nhập mơn lập trình trường Đại học Sư phạm Phần phần tổng quan tài liệu website liên quan đến xu lựa chọn PL dạy học nhập môn lập trình cho SV ngành CNTT, thị trường lao động nghề nghiệp Phần dành cho tổng quan tài liệu nghiên cứu tiêu chí lựa chọn PL Phần phân tích số tiêu chí quan trọng lựa chọn PL Phần khái quát mơ hình định lượng để lựa chọn PL Một số kết luận việc lựa chọn PL dạy học nhập mơn lập trình cho SV, trình bày phần Trong báo này, để tiện cho trình bày, SV ngành Sư phạm Tin học xem SV chuyên ngành CNTT Cũng lý nên SV chuyên ngành CNTT không cần phải làm rõ, viết gọn lại SV NGÔN NGỮ LẬP TRÌNH VÀ MỤC TIÊU CỦA DẠY HỌC NHẬP MƠN LẬP TRÌNH Ngơn ngữ lập trình máy tính ngơn ngữ đặc biệt lập trình viên sử dụng việc viết chương trình PL nhóm quy tắc ngữ pháp xác định cho chương trình máy tính Mục đích PL cung cấp hướng dẫn cho máy tính thơng qua quy tắc tương tác người máy, qua máy tính thực yêu cầu người Người dùng xác định liệu máy tính hành động cần thực với trợ giúp PL ([6]) Nói cách khác, PL hệ thống cho phép tương tác người máy tính, hai "hiểu" PL ngơn ngữ hình thức bao gồm thị quy tắc PL phương tiện biểu đạt "nghệ thuật" lập trình máy tính Việc viết chương trình phải ngắn gọn rõ ràng, chương trình có nghĩa phải đưa vào, sửa đổi trì suốt vịng đời phần mềm: ngơn ngữ lập trình tốt phải giúp người khác đọc chương trình hiểu cách chúng hoạt động [10] Một chương trình máy tính tập hợp hướng dẫn tạo nên giải pháp sau mã hóa PL [26] PL xây dựng phù hợp với mơ hình lập trình khác Việc lựa chọn PL dạy học hay cơng việc, cịn tuỳ thuộc sở thích GV lập trình viên Khảo sát khung chương trình số trường đại học Việt Nam ([16][17], [18], [19], [20]…), ta thấy mục đích dạy học nhập mơn lập trình cho SV ngành Tin học, tập trung vào việc mang lại cho người học: - Các khái niệm lập trình, kỹ thuật lập trình - Cú pháp ngơn ngữ lập trình kỹ viết chương trình mức - Năng lực giải vấn đề với hỗ trợ máy tính - Tư tính tốn (computational thinking) LỰA CHỌN NGƠN NGỮ TRONG DẠY HỌC NHẬP MƠN LẬP TRÌNH 43 Mục tiêu dạy học nhập mơn lập trình cho SV Đại học Sư phạm Huế khơng ngồi mục tiêu Tuy nhiên cần tính đến đặc thù đào tạo cụ thể trường, là: năm học đến khung chương trình đào tạo ngành Sư phạm Tin học, ngành Cử nhân Hệ thống thông tin, ngành đào tạo Sư phạm Toán học, có học phần chung SV ngành này, có mơn Cơ sở lập trình Mơn học mang đến cho người học tảng lập trình để hỗ trợ giải tốn đại số tuyến tính toán tảng xác suất thống kê ứng dụng xử lý liệu, chiến lược ngành học nói LỰA CHỌN NGƠN NGỮ TRONG DẠY HỌC NHẬP MƠN LẬP TRÌNH CHO SV NGÀNH CÔNG NGHỆ THÔNG TIN Từ năm 2010, [38], hiệp hội ACM IEEE việc lựa chọn ngơn ngữ lập trình phụ thuộc vào phương pháp mơ hình lập trình chọn cần cho SV thấy có nhiều phương pháp mơ hình lập trình ngồi lập trình thủ tục hướng chức năng, khơng có ngơn ngữ vạn cho lập trình Ở Bồ Đào Nha [33], năm học 2016 - 2017, qua phân tích 46 khóa học mức độ phổ biến PL năm học SV cho thấy mức độ phổ biến PL C (48%), Java (22%), C Haskell (9%), C Java (4%), Scheme Java (4%) Trong [3], năm 2019 xét 10 khố học nhập mơn lập trình ngành Kỹ thuật máy tính [3], người ta thấy trình tự phổ biến sử dụng PL Java Python C (cả hai chiếm 30%), C (20% ), Python Java Haskell C (cả hai chiếm 10%) Ở Anh theo [7], năm 2017 có 73,8% khố học nhập mơn lập trình sử dụng ngơn ngữ lập trình; 21% sử dụng hai PL PL sử dụng rộng rãi Java (46%), ngôn ngữ thuộc họ C (C, C ++ C #) (23,6%) Python (13,2%) Javascript Haskell dùng Có 82,7% người sử dụng đưa lý họ sử dụng Java để phục vụ lập trình hướng đối tượng, sẵn có tài liệu đào tạo phổ biến Java Trong có 72,7% người sử dụng Python, với lý liên quan đến yếu tố sư phạm giảng dạy nhập môn lập trình, khả tiếp cận SV chi phí, tính độc lập tảng học tập, trợ giúp học trực tuyến nhu cầu thị trường lao động, học lập trình với Python Theo tài liệu [7], năm 2016 qua khảo sát 48 khoá học nhập mơn lập trình trường Đại học Úc New Zealand, ta thấy: 15 khoá học sử dụng Java, 15 khoá học sử dụng Python, với C, với ngôn ngữ C#, với Visual Basic 12 khố học cịn lại sử dụng ngơn ngữ lập trình khác Các lý đưa để chọn Python Java khác nhau: lợi ích sư phạm Python (67%), tính khả dụng/chi phí (53%) tính độc lập tảng (40%) Các lý đưa để sử dụng Java liên quan đến cơng nghiệp phần mềm (92%), lập trình hướng đối tượng (86%) độc lập tảng (62%) Ở Hoa Kỳ, tài liệu [27] năm 2018 với khảo sát 486 khố học lập trình SV, cho thấy Java sử dụng với 41,94%, Python 26,45%, C ++ 19,35%, C 4,52%, C # 0,65 % 7,10% khác Các lý để lựa chọn là: tính ngơn ngữ lập trình 44 NGUYỄN THẾ DŨNG 26,19%, dễ học 18,81%, hội việc làm cho SV 14,76%, mức độ phổ biến trường học 13,10%, truyền thông tuyên truyền 8,57%, lựa chọn ban cố vấn 5,95%, sở thích GV, hạn chế lịch trình 5% Một nghiên cứu vào năm 2016 [39] qua phân tích 218 khung chương trình trường cao đẳng 143 trường đại học 35 quốc gia châu Âu, nghiên cứu ngơn ngữ lập trình sử dụng phổ biến C (30,6%), sau C ++ (21,9%) Java (20,7%) Năm 2014, [28] Philip Guo cho Python ngôn ngữ phổ biến cho nhập môn lập trình trường đại học Mỹ [28] Năm 2012, М Lvov V Kruglyk so sánh Python Pascal, nhận định Python ngôn ngữ thích hợp cho nhập mơn lập trình ngày [25], [41] Năm 2013, P Merzlikin cho thấy việc sử dụng thành công ngôn ngữ Python dạy học lập trình cho SV [29] Trong [3], năm 2019 qua khảo sát với 152 chương trình học khoa học máy tính từ số quốc gia khác nhau, tác giả báo kết luận Java PL phổ biến nhất, chiếm (49%) 74 số 152 chương trình Mức phổ biến thứ hai Python, với 36 (24%) C ++ chiếm 30 (20%), ngôn ngữ C (5%) Bài báo cho để đáp ứng giới nghề nghiệp họ ngôn ngữ C (C, C ++, C #), Python, Java JavaScript chắn ngơn ngữ lập trình sử dụng mơn học lập trình nhập mơn Trong thời gian gần đây, có nhiều tác giả ủng hộ việc sử dụng Python cho dạy học nhập mơn lập trình [11], [12] John M Zelle ([11]) cho thấy lựa chọn ngôn ngữ Python dựa tiêu chí sau: đơn giản cú pháp ngữ nghĩa; tính linh hoạt ngơn ngữ, cho phép người học nhanh chóng dễ dàng thử nghiệm với tùy chọn thiết kế chương trình khác nhau; hỗ trợ cho phương pháp thiết kế chương trình đại, bao gồm phương pháp trừu tượng hóa, đóng gói hướng đối tượng; tính khả dụng nhiều tảng khác [11] Trong [2], Ahmad A Bany Abdelnabi Python PL phù hợp dạy học nhập mơn lập trình cho SV chuyên ngành phân tích liệu Người ta cố gắng thiết kế nhiều ngôn ngữ mã giả (pseudo code language) khác nhằm xây dựng PL để việc giảng dạy lập trình hồn hảo tách bạch với PL cụ thể, khơng có giải pháp cuối tìm thấy [24] XU THẾ SỬ DỤNG NGƠN NGỮ LẬP TRÌNH CỦA THỊ TRƯỜNG LAO ĐỘNG NGHỀ NGHIỆP CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN Để đánh giá xu sử dụng PL thị trường nghệ nghiệp chuyên ngành CNTT, dựa số bảng xếp hạng sau TIOBE Index xếp hạng ngơn ngữ lập trình phổ biến đáng tin cậy, số liệu tổng hợp, dựa mức độ tìm kiếm cơng cụ tìm kiếm phổ biến Theo thống kê TIOBE Index đến tháng 9/2021 theo thứ tự C, Python, Java, C++, Python có xu hướng tăng trưởng C có xu hướng giảm ([46]) LỰA CHỌN NGƠN NGỮ TRONG DẠY HỌC NHẬP MƠN LẬP TRÌNH 45 Github xem trang cung cấp dịch vụ mã nguồn mở mạng xã hội lập trình viên lớn Dựa vào liệu trao đổi người dùng, GitHub thường xuyên thực bảng xếp hạng ngơn ngữ lập trình u thích định kì, xem nguồn tham khảo chất lượng xu hướng nghề nghiệp chuyên ngành CNTT Theo trang https://octoverse.github.com/ thứ tự thống kê đến 2020 JavaScript, Python, Java ([43], [44]) PYPL Index số thống kê dựa số lượng câu truy vấn ngôn ngữ lập trình tìm thấy Google PYPL cho nhiều câu truy vấn tìm thấy, xem ngơn ngữ phổ biến Theo thống kê PYPL Index, vào tháng 9/2021, Python dẫn đầu PL phổ dụng nhất, JavaScript Java [44] Website Stack Overflow, nơi lập trình viên khắp giới đặt câu hỏi lỗi khó khăn mà họ chưa giải Theo thống kê đến năm 2020 Stack Overflow Javascript xem PL sử dụng nhiều năm gần đây, Python, Java, TypeScript Trong Rust xem PL u thích giới lập trình viên, TypeScript Python Ngôn ngữ mà lập trình viên thích học cho tương lai theo thứ tự Python, JavaScript, Go TypeScript.([43], [44]) HackerRank website cho phép lập trình viên trau dồi, học hỏi rèn luyện kỹ thân Website yêu cầu người tham gia đưa lời giải cho “thử thách lập trình” hay tốn lập trình Qua kết tốc độ giải đáp vấn đề HackerRank sử dụng để đánh giá xếp hạng lập trình viên tham gia Theo thống kê website JavaScript ngôn ngữ phổ biến năm 2018 Go, Kotlin Python ngơn ngữ lập trình viên thích học vào năm 2019 Điều thú vị quan tâm nhà phát triển Scala giảm xuống, quan tâm họ TypeScript lại tăng lên TypeScript từ vị trí thứ ngơn ngữ phổ biến để học, lên vị trí thứ ([45]) Theo trang Wikipedia ngơn ngữ lập trình sử dụng để phát triển thành phần liên quan đến lập trình back-end server-side, front-end client-side coding trang web phổ biến Google, Facebook, Bing, Twitter, Amazon… C, C++, Go, Java, Python, Node, PHP, Erlang, D, Haskell, Perl ([42]) TIÊU CHÍ LỰA CHỌN PL TRONG DẠY HỌC NHẬP MƠN LẬP TRÌNH CHO SV NGÀNH CƠNG NGHỆ THÔNG TIN Qua tổng quan tài liệu nghiên cứu vấn đề có liên quan xuất năm gần đây, cho thấy có khác biệt đáng kể việc đưa tiêu chí để lựa chọn PL Các lựa chọn đa số có liên quan đến đặc trưng khu vực khác Các quốc gia khác có nhiều cách tiếp cận khác để xây dựng giáo dục CNTT riêng, cách tiếp cận có tác động khác đến việc lựa chọn PL cho khóa học nhập mơn lập trình trường đại học PL tảng lập trình, xu hướng sử dụng PL thường thay đổi đáng kể theo thời gian Các lập trình viên khơng sử dụng ngơn ngữ lập trình, 46 NGUYỄN THẾ DŨNG chí mơ hình lập trình cho tồn cơng việc chun mơn họ ([14]) Việc chọn PL nên tính đến số điểm sau: Mục tiêu khóa học; Sở thích GV; Các tảng kiến thức SV; Mối quan hệ với môn học khác, thị trường lao động, người học thường có động lực học PL, đề nghị từ nhà tuyển dụng [15] Mannilla Raadt [22] so sánh nhiều PL, qua tiêu chí khác như: phù hợp cho giảng dạy; có tính tương tác thực nhanh chóng, hỗ trợ cho việc viết đúng, giúp cho việc viết chương trình nhỏ gọn, liên tục cung cấp mơi trường phát triển tích hợp (IDE), cộng đồng người sử dụng mạnh, nguồn mở, hỗ trợ tốt, miễn phí, có tài liệu giảng dạy tốt, khơng sử dụng cho mục đích giáo dục mà cịn cho nhiều mục đích khác, đáng tin cậy hiệu Cũng có số nỗ lực để xếp ngơn ngữ lập trình có nhiều so sánh ngơn ngữ sử dụng phổ biến nhất: Python C ++, Python C, Java Python, C ++ Java ([12], [35]) S Sherman cộng [32] thiết lập mơ hình định lượng để lựa chọn ngơn ngữ lập trình tốt cho khóa học lập trình trực tuyến J Zhang [13] phân tích phát triển đặc điểm ngơn ngữ lập trình dựa yêu cầu người dùng Farooq cộng ([9]) cung cấp cách tiếp cận đánh giá đầy đủ cho việc lựa chọn ngôn ngữ, quan tâm nhiều đến khía cạnh kỹ thuật môi trường ngôn ngữ, không tập trung vào cân nhắc sử dụng giảng dạy, nhu cầu người học học với mô hình học tập trực tuyến Từ 2006, Parker cộng [30], đưa mô hình đánh giá định lượng tiêu chí để lựa chọn PL cho dạy học nhập mơn lập trình Bên cạnh danh sách đầy đủ tiêu chí để lựa chọn ngơn ngữ lập trình đề xuất, tiêu chí cịn mang tính lý thuyết có tính phổ qt Các tác giả lưu ý nghiên cứu sâu cần làm rõ tiêu chí lựa chọn, thức hóa quy trình lựa chọn PL áp dụng quy trình điều kiện khác Trong [1], nghiên cứu việc lựa chọn ngôn ngữ cho việc dạy học nhập mơn lập trình, tác giả đưa số tiêu chí để lựa chọn PL là: dễ sử dụng, sẵn có tài liệu đào tạo, mơi trường lập trình đơn giản rõ ràng, chi phí trình biên dịch PL Tuy nhiên, nghiên cứu không đưa khuyến nghị việc lựa chọn ngơn ngữ lập trình cụ thể để giảng dạy khóa học nhập mơn lập trình cho SV chuyên ngành CNTT Tony Jenkins [34] cần phải dạy cho SV kỹ PL ưa chuộng theo yêu cầu ngành cơng nghiệp phần mềm [34] Một phân tích chi tiết ngơn ngữ lập trình sử dụng trường đại học ngành công nghiệp phần mềm Hoa Kỳ thực [21] L Grishko lại cho việc bắt đầu học lập trình với hai ngơn ngữ: Pascal C thích hợp [23] D Krpan I Bilobrk thử nghiệm ba ngơn ngữ lập trình (QBasic, C Python) để đánh giá ngơn ngữ lập trình tốt cho SV Mặc dù SV xếp LỰA CHỌN NGÔN NGỮ TRONG DẠY HỌC NHẬP MƠN LẬP TRÌNH 47 loại, C ngơn ngữ lập trình khó trước giải tập thực tế, 70,97% sau cho giải tập C dễ dàng [4] Vardan Grigoryan [17] biện minh cho cần thiết phải bắt đầu học lập trình với C ++ [40] PHÂN TÍCH MỘT SỐ TIÊU CHÍ ĐỂ LỰA CHỌN NGƠN NGỮ LẬP TRÌNH Qua phân tích đánh giá tổng quan tài liệu nghiên cứu có liên quan, dựa tần suất tham chiếu tài liệu liên quan năm gần đây, dựa kinh nghiệm giảng dạy kiến thức lập trình, có tính đến bối cảnh dạy học lập trình ĐHSP Huế số trường Đại học Việt Nam, chúng tơi kết xuất 20 tiêu chí sau: - Dễ dàng để học khái niệm lập trình - Dễ dàng chuyển đổi sang PL khác - Có đầy đủ cấu trúc lập trình PL - Đáp ứng nhu cầu thị trường lao động - Chi phí trình biên dịch - Tính sẵn có tài liệu học tập - Tính dễ sử dụng mơi trường phát triển tích hợp - Sự sẵn có trình biên dịch trực tuyến - Các công cụ gỡ lỗi tốt - Hỗ trợ cho lập trình hướng đối tượng - Chi phí tài hợp lý để tạo mơi trường học tập - Sự tồn cộng đồng trực tuyến - Khả hỗ trợ phát triển web - Có phần mở rộng thư viện hỗ trợ lập trình - Tính độc lập tảng - Hỗ trợ lập trình trực quan (visual programming) - Dễ cài đặt - Tạo chương trình an toàn - Triển vọng nhà phát triển hỗ trợ thêm - Tính liên thơng chương trình học tập Rất nhiều tài liệu xếp tiêu chí “dễ dàng học khái niệm bản” tiêu chí quan trọng nhất, với đăc trưng SV nói chung SV ngành CNTT nay, bạn học lập trình trường phổ thơng, xếp hạng cao cho tiêu chí chưa 48 NGUYỄN THẾ DŨNG Tiêu chí dễ dàng chuyển đổi sang ngơn ngữ lập trình khác diện tất cấu trúc lập trình ngơn ngữ hai tiêu chí quan trọng SV cần có tảng học nhập mơn lập trình để chuyền đổi sang học tập mơn học khác Hơn nữa, để có sở vững vàng, nhằm dạy học tốt trường phổ thông, SV ngành Sư phạm Tin học cần trau dồi thêm cấu trúc lập trình Theo truyền thống, cấu trúc lập trình nhập mơn lập trình liên quan đến: đầu vào-đầu ra; cấu trúc rẽ nhánh; vòng lặp; mảng chiều hai chiều; trỏ; chuỗi/xâu (string); cấu trúc/bản ghi (structure/record); luồng tệp (file) Không phải tất PL có cấu trúc bản, ví dụ, C # khơng có kiểu liệu trỏ (Trong C#, chế cấp phát giải phóng nhớ cho đối tượng, mảng động, kiểu trỏ ẩn kỹ thuật tham chiếu); tương tự Java khơng có kiểu liệu trỏ cấu trúc (thay vào đối tượng) [31] Đối với SV đặc biệt SV ngành CNTT, học để đáp ứng nhu cầu thị trường lao động tương lai quan trọng Ngay từ bắt đầu học, SV nên học họ sử dụng hoạt động nghề nghiệp tương lai họ Do tiêu chí đáp ứng nhu cầu thị trường lao động xem tiêu chí hàng đầu Các phân tích đánh giá nhu cầu thị trường lao động ngành CNTT phân tích mục Cũng với lý do, học sử dụng hoạt động nghề nghiệp tương lai đáp ứng biến chuyển nghề nghiệp, nên tiêu chí dễ dàng chuyển đổi sang ngơn ngữ lập trình khác tiêu chí quan trọng Tiêu chí giúp cho SV học tốt môn học chương trình học Hiện đa số trình biên dịch PL miễn phí, tài nguyên học tập PL phong phú Internet, tiêu chí chi phí trình biên dịch tiêu chí tính sẵn có tài nguyên học tập đánh giá thấp Cũng với lý tương tự nên tiêu chí tính dễ sử dụng IDE/sẵn có trình biên dịch trực tuyến tiêu chí có cơng cụ gỡ lỗi tốt quan trọng, đa số PL phổ biến nhà phát triển PL cung cấp nhiều tính cho người dùng Hỗ trợ cho lập trình hướng đối tượng khơng phải tiêu chí để học kiến thức lập trình Tuy nhiên, có tầm quan trọng lớn môn học SV ngành CNTT “Lập trình hướng đối tượng” nhiều môn học liên quan đến phương pháp lập trình hướng đối tượng Mơn học nhập mơn lập trình thường điều kiện tiên nhiều môn học SV Mặt khác cần có quán việc sử dụng PL định khn khổ chương trình giảng dạy chun ngành Do đó, tiêu chí tính liên thơng chương trình, cần lưu tâm lựa chọn PL cho SV Tiêu chí chi phí tài hợp lý để tạo mơi trường học tập như: chi phí đào tạo lại GV để dạy ngôn ngữ mới; chi phí cho phát triển hệ thồng dạy học phục vụ dạy học thay đổi chương trình dạy học; chi phí cho cài đặt bảo trì hệ thống dạy học mới… Ngày với xu dạy học kết hợp (B-learning) học tập cộng tác, nên dạy học nói chung dạy học lập trình nói riêng, việc có cộng đồng mạng để SV LỰA CHỌN NGƠN NGỮ TRONG DẠY HỌC NHẬP MƠN LẬP TRÌNH 49 tham gia vào cộng đồng để học hỏi, hỗ trợ cần thiết Do đó, tiêu chí tồn cộng đồng trực tuyến, quan trọng dạy học ngày Các phần mở rộng thư viện hỗ trợ thành tố quan trọng PL để mở rộng sức mạnh công cụ hỗ trợ lập trình cho người sử dụng Tiêu chí “Giàu phần mở rộng thư viện hỗ trợ” xem không quan trọng cho người học lập trình, họ chưa có hội để khai thác hết cơng cụ Tiêu chí “Có khả hỗ trợ phát triển web” có mức độ ý nghĩa thấp, điều lập trình thường khơng liên quan đến phát triển web Tuy nhiên, tiêu chí thực ẩn chứa tiêu chí khác như: nhu cầu thị trường lao động; cộng đồng mạng… Đối với PL khơng sẵn có trình biên dịch trực tuyến, tính độc lập tảng yếu tố đáng lưu tâm lựa chọn ngơn ngữ Lập trình trực quan có ý nghĩa cho dạy học lập trình lứa tuổi nhỏ Đối với SV việc bắt đầu dạy lập trình với phương pháp lập trình trực quan khơng có tác động đến hiệu dạy học lập trình cho đối tượng SV [32], chí làm cho họ khó tiếp cận cấu trúc, tính tảng lập trình MƠ HÌNH ĐỊNH LƯỢNG ĐỂ LỰA CHỌN NGƠN NGỮ LẬP TRÌNH TRONG DẠY HỌC Việc lựa chọn ngơn ngữ lập trình thực chất toán định đa tiêu chí [1], cần có cách tiếp cận có cấu trúc cho q trình lựa chọn để việc đánh giá PL hợp lý [30] Việc lựa chọn ngơn ngữ thích hợp, địi hỏi hiểu biết tốt yêu cầu người dùng đặc tính ngơn ngữ lập trình Bên cạnh đó, với số lượng lớn ngơn ngữ lập trình làm cho trình lựa chọn trở nên phức tạp khó khăn Quy trình phân tích thứ bậc (Analytical Hierarchy Process - AHP) phương pháp định để xếp hạng giải pháp thay lựa chọn giải pháp thay tốt sở tiêu chí [5] Mơ hình AHP nhằm trả lời cho câu hỏi “Cái tốt hơn?” AHP sử dụng rộng rãi, tính đơn giản để đưa định chắn cách sử dụng phép đo chủ quan khách quan [8], [36] Hơn nữa, mơ hình có khả giảm thiên lệch việc định cách thực kiểm tra tính quán Cũng có số nghiên cứu sử dụng mơ hình AHP việc lựa chọn ngơn ngữ lập trình K Parker cộng [30] sử dụng mơ hình AHP để chọn PL cho khóa học giới thiệu lập trình Ahmad A Bany Abdelnabi ([2]), đề xuất mơ hình phân cấp để đánh giá để lựa chọn ngơn ngữ cho lập trình viên chuyên ngành phân tích liệu Trong kết này, Ahmad đưa kết luận Python PL phù hợp cho SV chuyên ngành phân tích liệu, tính đến năm 2020 Trong sử dụng mơ hình AHP để xếp hạng đánh giá PL, cần gán điểm hệ số cho tiêu chí tính tốn Các để gán điểm hệ số cho tiêu chí bao gồm: Tần suất xuất tiêu chí tài liệu nghiên cứu có liên quan; Thứ tự PL bảng xếp hạng trang web đánh giá nhu cầu thị trường NGUYỄN THẾ DŨNG 50 lao động nghề nghiệp; Ý kiến chun gia giảng dạy lập trình… Các tiêu chí phân chia thành tiêu chuẩn khác tiêu chuẩn kỹ thuật phi kỹ thuật; tiêu chuẩn bắt buộc không bắt buộc, tiêu chuẩn đánh giá khách quan, ví dụ nhu cầu thị trường lao động cách phân tích thị trường lao động khu vực tiêu chẩn chủ quan, chẳng hạn mức độ dễ học khái niệm lập trình, điều phụ thuộc vào nhận thức cá nhân GV vào tảng ban đầu SV, nên tiêu chuẩn khách quan KẾT LUẬN Với phương pháp tổng quan tài liệu nghiên cứu vấn đề liên quan dựa kinh nghiệm việc giảng dạy kiến thức lập trình, có tính đến đặc điểm giáo dục CNTT ĐHSP Huế Việt Nam, báo phân tích tiêu chí tiêu biểu lập luận sử dụng lựa chọn PL dạy học nhập mơn lập trình cho SV chun ngành CNTT, trường đại học Rất khó để có đồng thuận lựa chọn ngơn ngữ lập trình tối ưu dạy học nhập mơn lập trình Bước đầu nhận định việc lựa chọn ngơn ngữ Python cho dạy học mơn Cơ sở lập trình trường ĐHSP Huế giai đoạn nay, phù hợp với mục tiêu dạy học lập trình cho SV, định hướng chuẩn đầu trường, xu nghề nghiệp họ Ngôn ngữ lập trình chọn để học chuyên gia CNTT tương lai, bước khởi đầu quan trọng cho chặng đường dài nghề nghiệp sau TÀI LIỆU THAM KHẢO [1] [2] [3] [4] [5] [6] R Mishra, A Chandel, D Motwani (2018) Extended MABAC method based on divergence measures for multi-criteria assessment of programming language with interval-valued intuitionistic fuzzy sets, Granul Comput., pp.1–21 Ahmad A Bany Abdelnabi (2019) An Analytical Hierarchical Process Model to Select Programming Language for Novice Programmers for Data Analytics Applications 2019 International Arab Conference on Information Technology (ACIT) 978-1-72813010-1/19/$31.00 ©2019 IEEE A Becker, T Fitzpatrick (2019) What Do CS1 Syllabi Reveal About Our Expectations of Introductory Programming Students?, in 50th ACM Technical Symposium on Computer Science Education Krpan, I Bilobrk (2011) Introductory Programming Languages in Higher Education, in Proceedings of the 34th International Convention MIPRO, Opatija, Croatia, May 2327, pp.1331-1336 R Anderson, D J Sweeney, T A Williams, J D Camm, J J Cochran (2015) An introduction to management science: quantitative approaches to decision making Cengage learning Deng Desen (2011) Selection of Computer Programming Language Science & Wealth, 2011 (5): 272-273 LỰA CHỌN NGÔN NGỮ TRONG DẠY HỌC NHẬP MÔN LẬP TRÌNH [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] 51 Murphy1, T Crick, J H Davenport (2017) An Analysis of Introductory Programming Courses at UK Universities, The Art, Science, and Engineering of Programming, vol.1, no.2 U Padumadasa, S Rehan (2009) Investigation in to decision support systems and multiple criteria decision making to develop a web based tender management system, in International Symposium on the Analytic Hierarchy Process, 2009, pp.21–37 Farooq, M., Khan, S., Farooq, A., Islam, S., & Abid, A (2014) An evaluation quantitative model and comparative analysis of the widely used first programming languages Plos One, 9(2) 1-25 Retrived from http:://plospne.org J.C Mitchell (2013) Concepts in programming languages, Cambridge University Press J M Zelle (1999) Python as a First Language, in 13th Annual Midwest Computer Conference (MMC 1999) Lisl, IL, March 18-19 J.Wainer, E Xavier (2018) A Controlled Experiment on Python vs C for an Introductory Programming Course: Students’ Outcomes, ACM Transactions on Computing Education, vol.18, no.3 J Zhang (2016) Selection and Improvement of Computer Programming Language K Bruce, S N Freund, R Harper, J Larus, G Leavens (2008) What a Programming Languages Curriculum Should Include, in SIGPLAN Workshop on Undergraduate Programming Language Curricula K N King (1992) The evolution of the programming languages course, ACM SIGCSE Bulletin, vol.24, no.1, pp.213-219 Khung chương trình ĐHSP Đà Nẵng, https://daotao.ued.udn.vn/chuong-trinh-dao-taoke-hoach-dao-tao-ap-dung-cho-khoa-ts-2020/ Khung chương trình ĐHSP Hà Nội, https://tuyensinh.hnue.edu.vn/khung-chuong-trinh Khung chương trình ĐHSP Huế, http://www.dhsphue.edu.vn/cd_cmp.aspx?cd=010403&id=0 Khung chương trình ĐHSP Thái Ngun, http://tnue.edu.vn/Article/ViewDetail.aspx?pageid=1536&mid=4640&itemid=3661 Khung chương trình ĐHSP TP Hồ Chí Minh, https://hcmue.edu.vn/vi/dao-tao/daihoc/chuong-trinh-dao-tao/834-chuong-trinh-khung-cac-nganh-dao-t-o-ap-d-ng-tkhoa-tuy-n-sinh-nam-2018 L Ben Arfa Rabai, B Cohen, A Mili (2015) Programming Language Use in US Academia and Industry, Informatics in Education, Vol.14, No.2, pp.143-160 DOI: 10.15388/infedu.2015.09 L Mannila, M d Raadt (2006) An objective comparison of languages for teaching introductory programming, in 6th Baltic Sea conference on Computing education research: Koli Calling 2006 L.V Grishko (2004) Konceptualni pidhodi navchannya osnov programuvannya u vishij shkoli, Komp’yuterno-oriyentovani sistemi navchannya: Zb nauk prac K.: NPU im M.P Dragomanova Vol.8, pp.19-24 M Laakso, E Kaila, T Rajala, T Salakoski (2008) Define and Visualize Your First Programming Language, in 8th IEEE International Conference on Advanced Learning M Lvov, V Kruglyk (2014) Teaching algorithmization and programming using python language, Journal of Information Technologies in Education (ITE) Vol.20, pp.13-23 M Sprankle (2011) Problem Solving and Programming Concepts, edition ed., Pearson 52 NGUYỄN THẾ DŨNG [27] O Ezenwoye (2018) What language? - The choice of an introductory programming language, 48th Frontiers in Education Conference, FIE 2018 [28] P Guo (2014) Python Is Now the Most Popular Introductory Teaching Language at Top U.S Universities, July 7, [Online] Available: https://cacm.acm.org/blogs/blogcacm/176450-python-isnow-the-most-popular-introductory-teaching-language-at-topu-suniversities/fulltext [29] P Merzlikin (2015) Dosvid vikoristannya Python yak pershoyi movi programuvannya dlya studentiv napryamu pidgotovki “Informatika”, Naukovi zapiski Seriya: problemi metodiki fiziko-matematichnoyi Itehnologichnoyi osviti, Vol.2, No.7, pp 66-69 [30] Parker, K.R., Ottaway TA, Chao JT, Chang J (2006), A Formal Language Selection Process for Introductory Programming Courses, Journal of Information Technology Education 5, 133–151 [31] Prokop, Y., Trofymenko, O., Kapustin, M (2018) A study of software development tools that are required in the job market in Ukraine and the world Proceedings of the O.S Popov ОNAT, vol.2, 101–108 [32] S J Sherman, R F Shehane, D W Todd (2018) Quantitative Model for Choosing Programming Language for Online Instruction, J Instr Pedagog., vol.20 [33] S R Sobral (2018) Bachelor's and master's degrees integrated in Portugal in the area of computing: a global vision with emphasis on programming UCS and programming languages used, in 11th annual International Conference of Education, Research and Innovation [34] T Jenkins (2004) The First Language - A Case for Python?, Innovation in Teaching and Learning in Information and Computer Sciences, Vol.3, Issue 2, pp.1-9 DOI: 10.11120/ital.2004.03020004 [35] Sabah A Abdulkareem, Ali J Abboud (2021) Evaluating Python, C++, JavaScript and Java Programming Languages Based on Software Complexity Calculator (Halstead Metrics), 2nd International Scientific Conference of Engineering Sciences (ISCES 2020), IOP Conf Series: Materials Science and Engineering 1076 (2021) 012046 IOP Publishing doi:10.1088/1757-899X/1076/1/012046 [36] T L Saaty (2008) Decision making with the analytic hierarchy process, Int J Serv Sci., vol.1, no.1, pp.83–98 [37] The Joint Task Force IEEE and ACM, CC (2001) Computer Science, Final Report [38] The Joint Task Force on Computing Curricula Association for Computing Machinery (ACM) IEEE Computer Society, 2010 [39] V Aleksić and M Ivanović (2016) Introductory Programming Subject in European Higher Education, Informatics in Education, vol.15, no.2, p.163–182 [40] V Grigoryan (2017) Why CS students must learn C++ as their main programming language, Aug 22, [Online] Available: https://medium.com/@vardanator/why-csstudents-must-learn-c-astheir-main-programming-language-6d3b4f8720bd [41] V Kruglyk, M Lvov (2012) Choosing the First Educational Programming Language, in Processing of 8th International Conference on ICT in Education, Research, and Industrial Application (ICTERI 2012) Kherson, Ukraine, June 6-10, pp.188-198 [42] https://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites [43] https://octoverse.github.com/ [44] https://pypl.github.io/PYPL.html [45] https://research.hackerrank.com/developer-skills/2019 [46] https://www.tiobe.com/tiobe-index/ LỰA CHỌN NGÔN NGỮ TRONG DẠY HỌC NHẬP MÔN LẬP TRÌNH 53 Title: LANGUAGE CHOICE IN INTRODUCTORY PROGRAMMING COURSES FOR STUDENT Abstract: The choice of a reasonable programming language in teaching introductory programming for students majoring in Information Technology at universities has been a hotly debated topic for many years By the method of reviewing research documents, the article will analyze and evaluate related issues, taking into account the characteristics of teaching at universities in Vietnam In addition, based on the frequency of the criteria appearing in the research documents, 20 typical criteria for language selection are mentioned and analyzed to guide the choice of languages in teaching programming Keywords: Programming language, language choice, teaching introductory programming, teaching Informatics ... dạy học lập trình cho đối tượng SV [32], chí làm cho họ khó tiếp cận cấu trúc, tính tảng lập trình MƠ HÌNH ĐỊNH LƯỢNG ĐỂ LỰA CHỌN NGƠN NGỮ LẬP TRÌNH TRONG DẠY HỌC Việc lựa chọn ngơn ngữ lập trình. .. chí lựa chọn, thức hóa quy trình lựa chọn PL áp dụng quy trình điều kiện khác Trong [1], nghiên cứu việc lựa chọn ngôn ngữ cho việc dạy học nhập mơn lập trình, tác giả đưa số tiêu chí để lựa chọn. .. CNTT, trường đại học Rất khó để có đồng thuận lựa chọn ngơn ngữ lập trình tối ưu dạy học nhập mơn lập trình Bước đầu nhận định việc lựa chọn ngơn ngữ Python cho dạy học mơn Cơ sở lập trình trường