Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
796,65 KB
Nội dung
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN BÁO CÁO ĐỒ ÁN MƠN CS111 – NGUN LÝ VÀ PHƯƠNG PHÁP LẬP TRÌNH Đề tài: CÁC TIÊU CHUẨN ĐÁNH GIÁ NGÔN NGỮ LẬP TRÌNH Giảng viên hướng dẫn: Thầy Trịnh Quốc Sơn Sinh viên thực hiện: Lê Nguyễn Khánh Nam MSSV: 20520073 TP HỒ CHÍ MINH, Tháng Năm 2022 NHẬN XÉT CỦA GIẢNG VIÊN Nguyên lý phương pháp lập trình 2022 TPHCM, Ngày … Tháng … Năm … Người nhận xét (Ký tên) CS111.M21.KHTN Page Nguyên lý phương pháp lập trình 2022 Phần 1: Mở đầu MỤC LỤC Lý chọn đề tài Đối tượng nghiên cứu Cơ cấu đồ án .4 Phần 2: Các tiêu chí đánh giá ngơn ngữ lập trình tổng quan ngơn ngữ lập trình phổ biến I Các tiêu chí đánh giá ngơn ngữ lập trình Tiêu chí mặt ngơn ngữ Tiêu chí mặt lập trình, ứng dụng Error! Hyperlink reference not valid.II Tổng quan ngôn ngữ lập trình phổ biến C++ Java C# JavaScript Python Phần 3: So sánh, đánh giá số ngơn ngữ lập trình phổ biển I Tính bảo mật ngơn ngữ lập trình II Lập trình Web III.Lập trình Game 11 IV Lập trình AI 12 KẾT LUẬN .14 CS111.M21.KHTN Page Nguyên lý phương pháp lập trình 2022 Phần 1: Mở đầu Lý chọn đề tài Việc chiệco chọn đề ngôn mà đáp chọn đề ngôn ng vtp chọn đề ngôn ngữ lập trìnhập trình phổ biểnn ngơn ngữ lập trình phổ biến.g dp chọn đề ngơn ngữ lập trìnhập trình phổ ngơn ngữ lập trình thích h lập ngơn ngữ lập trì, ta phích h lập ngơn ngữ lập trìnhập trình phổ biểnn ngơn ngữ lập trình phổ biến.hphích h lập ngơn ngữ lập trìnhập tcác lớp trích h lập ngơn ngữ lập trìnhập trình thực thu lậtoán phức tạp số nhì vào ngưu ung phổ thơng Câu hng ập nc tôu hng ập ngơn ngữ lập trìnhập trình phổ biểnn tính bảo mật an tồn ngơn ngơn ngữ lập thiết kế Web App, có hỗ trợ đợhỗ Appn ngơn ngơn ngữ lập trìn hay khả lập trình mobile, lập trình Game nhập trìnhơn ngữ lập trìnhập trình phổ biểnn ngôn ngữ lập t Trong báo cáo này, th gáo cáo p trìnhơn ngữ lập trìnhập trình phổ biểnn ngơn ngữ lập trình phổ b Đối tượng nghiên cứu Đồ án chủ yếu nghiên cứu tiêu chí để đánh giá ngơn ngữ lập trình, bao gồm tiêu chí mặt ngơn ngữ tiêu chí mặt ứng dụng, đồng thời so sánh ngơn ngữ lập trình phổ biển qua tiêu chí Cơ cấu đồ án Nội dung báo cáo gồm phần: Phần 1: Khái quát chung đề tài Phần 2: Các tiêu chí đánh giá ngơn ngữ lập trình tổng quan ngơn ngữ lập trình phổ biển Phần 3: So sánh, đánh giá ngơn ngữ lập trình phổ biển với tiêu chí nêu CS111.M21.KHTN Page Nguyên lý phương pháp lập trình 2022 Phần 2: Các tiêu chí đánh giá ngơn ngữ lập trình tổng quan ngơn ngữ lập trình phổ biến I Các tiêu chí đánh giá ngơn ngữ lập trình: Tiêu chí vêề mặt ngơn ngữ: Các tiêu chí chủ yếu đánh giá mặt chất ngơn ngữ lập trình, bao gồm tiêu chuẩn chính: Readability: Mã phải đơn giản dễ hiễu, không nên bao gồm cú pháp phức tạp, tránh việc có nhiều cách để viết chức đơn giản Ngơn ngữ phải có tính trực quan, đồng thời phải có chế điều khiển đơn giản for, while thay go to khó đọc Writability: Đánh giá độ phức tạp viết mã Ngôn ngữ lập trình khơng nên chứa cú pháp phức tạp, nên hỗ trợ lớp trừu tượng cho liệu tiến trình để việc lập trình trở nên đơn giản Reliability: Ngơn ngữ lập trình nên hỗ trợ việc kiểm tra kiểu liệu trước biên dịch, nên hỗ trợ chế Exception Handling để kiểm soát lỗi xảy run time Cost: Các chi phí : thời gian viết mã, chi phí biên dịch chương trình, chi phí sử dụng phần cứng chi phí bảo trì phải thiết kế tối ưu Mặc dù tiêu chí quan trọng để đánh giá chất ngơn ngữ lập trình với phát triển vượt bậc ngành công nghệ thông tin lẫn phần cứng máy tính, ngơn ngữ lập trình phổ biến đáp ứng tốt tiêu chí này, mà người ta thật quan tâm tới tính ngơn ngữ đáp ứng cho công việc họ CS111.M21.KHTN Page Nguyên lý phương pháp lập trình 2022 Tiêu chí vêề mặt lập trình, ứng dụng: Về tiêu chí đánh giá mặt ứng dụng ngơn ngữ lập trình đa dạng, bao gồm khả bảo mật an ninh, khả lập trình tính tốn thuật tốn phức tạp xây dựng hệ thống phân tán, hệ thống sở liệu hay không, đồ án em tập trung vào tiêu chí chính: Tính bảo mật an ninh ngơn ngữ lập trình: - Bảo mật vấn đề quan trọng cho việc thiết kế cài đặt ngôn ngữ lập trình - Một ngơn ngữ lập trình coi bảo mật thoả mãn tiêu chí: o Type safety: Định dạng kiểu liệu phải rõ ràng, minh bạch o Memory safety: Có khả kiểm sốt nhớ, nên có chế tự động dọn rác để giảm chi phí lập trình Lập trình Web App: - Một Web App ứng dụng người dùng tương tác trực tiếp trình duyệt server lưu trữ xử lý thông tin, web app chia nhỏ làm phần: • Phần hiển thị web app, file html xử lý ( thông qua client-rendering sever-rendering) browser biểu diễn thành phần web lên cho người dùng tương tác • Phần logic web app, xử lý yêu cầu người dùng trả server Lập trình Game: Game sản phẩm ngành phần mềm tiêu thụ nhiều có lợi nhuận Việc ngơn ngữ có khả tính tốn xử lý đồ hoạ tốt điểm mạnh thị trường cạnh tranh ngơn ngữ lập trình CS111.M21.KHTN Page Nguyên lý phương pháp lập trình 2022 Lập trình AI : - Với phát triển mạnh mẽ trí tuệ nhân tạo, ngơn ngữ lập trình cần có khả thêm vào chương trình chức AI để thu hút người dung, đồng thời có khả xử lý liệu, chạy mơ hình học máy, học sâu II Tổng quan số ngơn ngữ lập trình phổ biển C++ • Xuất lần đầu năm 1985, kế thừa phát triển từ ngơn ngữ C • Là ngơn ngữ biên dịch, có mặt hầu hết hệ điều hành thông dụng Windows, MacOs, Linux, … • Vượt trội hiệu năng, hướng tới lập trình hệ thống máy tính hệ thống nhúng Java • Được cơng ty Sun Microsystems (sau Oracle mua lại ) phát hành vào năm 1995 với giấy phép độc quyền • Là ngơn ngữ lập trình hướng đối tượng mạnh mẽ, với mục đích tạo cho phép nhà phát triển viết lần, chạy nơi • Phổ biển việc xây dựng web app C# • Được phát triển Mircosoft, xuất lần đầu năm 2000 • Xây dựng, kế thừa từ tảng C++, Java • Là ngơn ngữ lập trình hướng đối tượng đa năng, có nhiều ứng dụng trải dài nhiều lĩnh vực lập trình web, desktop app, thực tế ảo VR, phát triển game 2D, 3D, ứng dụng đồ hoạ, mobile app, điện toán đám mây, blockchain, AI, IOT, … JavaScript • Xuất lần đầu năm 1995 CS111.M21.KHTN Page Ngun lý phương pháp lập trình 2022 • Là ngơn ngữ lập trình thơng dịch, với phong cách hướng đối tượng theo kiểu nguyên mẫu (prototype – based) kết hợp với lập trình hàm • Được dùng rộng rãi cho trang web (phía người dùng) phía máy chủ (với Nodejs) • Top ngơn ngữ phổ biển (theo stackoverflow) Python Python ngơn ngữ lạp trình bậc cao cho mục đích lập trình đa năng, Guido van Rossum tạo lần đầu mắt vào năm 1991 • Được thiết kế với ưu điểm mạnh dễ đọc, dễ học dễ nhớ Python ngơn ngữ có hình thức sáng sủa, cấu trúc rõ ràng, thuận tiện cho người học lập trình ngơn ngữ lập trình dễ học • Được sử dụng rộng rãi xử lý liệu trí tuệ nhân tạo • Phầền 3: So sánh, đánh giá sơố ngơn ngữ lập trình phổ biển Em đánh giá, so sánh ngơn ngữ lập trình phổ biến nêu mục II phần với tiêu chí mặt ứng dụng, lập trình nêu mục I phần I Tính bảo mật ngơn ngữ lập trình: C++ • Về mặt type-safety, C++ hỗ trợ mạnh định dạng kiểu liệu • C++ gần với hệ điều hành, với trỏ cung cấp khả truy cập vùng nhớ, làm cho trở nên khơng an tồn • Việc cấp phát thu hồi nhớ không code gây nhiều lỗi memory leak… • Địi hỏi lập trình viên phải có tay nghề cao CS111.M21.KHTN Page Nguyên lý phương pháp lập trình 2022 Java • Type-safety: Java hỗ trợ mạnh việc định dạng kiểu liệu • Memory- safety: Java có chế tự động quản lý nhớ - Garbage Collector mà cụ thể Java RMI collector • Có hệ thống thư viện hỗ trợ bảo mật đồ sộ • Vẫn cịn khó khăn việc xây dựng hệ thống bảo mật nghiêm ngặt, chi phí cao chế tự động thu gom rác, ảnh hưởng đến thời gian chạy hệ thống C# Với kết hợp cân C++ Java, C# bảo đảm tiêu chí : • Type-safety: Hỗ trợ static-type dynamic-type • Memory-safety: Có chế tự động thu gom rác, giảm tải công việc cho lập trình viên • Hỗ trợ xử lý dọn dẹp tài nguyên thừa sau đọc file, kết nối database, … interface IDisposable JavaScript • JavaScript cung cấp khả dynamic type, không đảm bảo tiêu chí type- safety • JavaScript có chế Garbage Collectors giúp quản lý tốt nhớ • Khơng có giới hạn nhớ cho array, string Do array string JavaScript cung cấp nhớ tuỳ ý Python • Với dynamic type, Python khơng đảm bảo tiêu chí type- safety CS111.M21.KHTN Page Ngun lý phương pháp lập trình 2022 • Quản lý nhớ tốt với chế Garbage Collectors II Lập trình Web C++ Với thư viện Wt C++ Toolkit, C++ dùng để làm web app hoàn chỉnh, bao gồm thành phần: • Thư viện Wt cung cấp Web Widget cho phép C++ xử lý DOM HTML server (server-side rendering) • Với hiệu cao, C++ mạnh việc xử lý logic, thao tác xử lý thông tin nhanh chóng Do chất ngơn ngữ khó, C++ lập trình viên ưa chuộng việc lập trình web app CS111.M21.KHTN Page 10 Nguyên lý phương pháp lập trình 2022 JavaScript JavaScript ngơn ngữ phổ biển dùng để lập trình web app, với chức năng: • Front-end: Với khả xử lý trực tiếp file HTML browser người dùng, JS thực việc thay đổi nội dung trang web cách linh hoạt mà không cần tải lại trang (client-side-rendering), từ giảm tải cơng việc server, với hỗ trợ mạnh mẽ nhiều thư viện, framework React, Angular, Vuejs • Back-end: JavaScript thực xử lý logic server, kết nối database, với nodejs Java Java xây dựng web app chất lượng cao thơng qua API: • Xây dựng mơ hình web MVC với Java Bean làm model, JSP làm mẫu view template thành phần servlet làm controller để xử lý, tính tốn data • Java EE hỗ trợ việc bảo mật, định danh, xác thực • Quản lý kết nối database với JNDI API • Xử lý file XML với JAXP sử dụng Document Object Model (DOM) C# Với công nghệ ASP Net, C# sử dụng rộng rãi đ ể t ạo web app v ới hiệu cao : CS111.M21.KHTN Page 11 Nguyên lý phương pháp lập trình 2022 • Với môỗi file ASPX CSHTML nhúng C# Class, class có th ể chứa biêến khởi tạo, x lý ki ện để thay đổi nội dung trang web, sau View Engine xuấết file HTML đích để browser đ ọc Hoặc với cơng nghệ web form dùng làm web đ ộng • Xử lý logic băằng ASP Net MVC ASP Net Web API s d ụng đa m ục đích (dùng cho browser thiêết bị di động) Python Python với đơn giản cú pháp cộng đồng ủng hộ lớn, có khả lập trình web Server-side với nhiều Framework bottle.py, Flask, CherryPy, Pyramid, Django, tạo nên nhiều trang web lớn Spotify, Mozilla, Reddit, the Washington Post… III Lập trình Game C# • Với cơng nghệ Unity Game Engine NET, C# ngơn ngữ phổ biển để lập trình game • Là ngơn ngữ lập trình hướng đối tượng chặt chẽ, đa tốc độ tính tốn, xử lý logic nhanh, C# tạo game từ nhỏ đến game địi hỏi cấu hình đồ hoạ lớn CS111.M21.KHTN Page 12 Nguyên lý phương pháp lập trình 2022 • Unity Game Engine cung cấp lương lớn công cụ khiến cho việc xây dựng phát triển sản phẩm game với C# trở nên dễ dàng nhanh chóng C++ • C++ ngơn ngữ mạnh việc lập trình game với hiệu cao, phù hợp với game từ nhẹ đến nặng đồ hoạ • Lập trình đa tảng hệ điều hành: Windows, Linux, iOS, Android • Game Engine Unity viết c# runtime lại chạy c++ JavaScript • Cùng với ngơn ngữ văn HTML CSS, JavaScript lập trình game chạy trình duyệt • Các games chạy trang web tiếng y8.com, game24h.vn zing.vn (xưa) đa số viết JavaScript để chạy trình duyệt • Cùng với phổ biển ngày tăng JavaScript, nhiều thư viện, Game Engine GDevelop, melonJS, PixiJS, PlayCanvas, phát triển làm cho việc lập trình game JavaScript trở nên dễ dàng Python • Python ngơn ngữ thơng dịch với cú pháp đơn giản, với cộng đồng lớn nên lập trình game python dễ dàng, nhanh chóng kể người CS111.M21.KHTN Page 13 Nguyên lý phương pháp lập trình 2022 • Điểm yếu python tốc độ thực thi chậm nó, nên python thường sử dụng để lập trình game nhỏ, 2D • Python có nhiều thư viện hỗ trợ việc lập trình games Pygame, PyKyra, Pyglet, PyOpenGL, Kivy IV Lập trình AI Python Với cú pháp đơn giản, với cộng đồng lớn cung cấp nguồn thư viện khổng lồ, python lựa chọn phổ biển để lập trình AI: • Xử lý liệu với thư viện Pandas, Matplotlib, xử lý Big Data với PyShark • Xử lý tính tốn logic với Numpy • Xây dựng mơ hình học máy, học sâu với thư viện Scikit-learn, Tensorflow C++ Nhờ có hiệu cao, C++ xương sống xây dựng thư viện xử lý data, tính tốn model Machine Learning, Deep Learning : • Những thư viện Deep Learning phổ biển python phần lớn code C++, ví dụ Tensorflow( 62.7% code C++), PyTorch ( 52.4% code C++) • C++ dùng nhiều để lập trình Computer Vision, ứng dụng cho xe tự lái hay robot tự hành- thiết bị với tài nguyên phần cứng hạn chế CS111.M21.KHTN Page 14 Nguyên lý phương pháp lập trình 2022 JavaScript JavaScript với phát triển ngày mạnh mình, lập trình đa dạng lĩnh vực từ Web, Mobile, Desktop App kể lập trình AI: • Cộng đồng lớn, có nhiều thư viện dùng để phát triển ứng dụng AI JavaScript Brain.js, TensorFlow, ml5.js • Nhờ thư viện Tensorflow.js, JavaScript tạo web app chạy chương trình AI, Deep Learning trình duyệt người dùng, nhờ giảm tải nhiều tài nguyên cho server đồng thời làm cho ứng dụng chạy nhanh Java Do điểm mạnh Web Service tốc độ nhanh, Java chủ yếu phát triển ứng dụng AI chạy Server Java có nhiều thư viện hỗ trợ để lập trình AI, Machine Learning, Deep Learning TensorFlow, DL4J, MAHOUT KẾẾT LUẬN Sau so sánh ngơn ngữ lập trình với tiêu chí, ta kết luận rằng, mặt bảo mật C++ với trỏ có khả truy cập nhớ mạnh mẽ có khả gây lỗi thời gian chạy Python với JavaScript có chế định kiểu liệu động nên đánh giá khơng an tồn C# Java ngơn ngữ đại an toàn, với định kiểu tĩnh chế dọn rác tự động hệ thống thư viện bảo mật lớn Đa số ngôn ngữ lập trình mà nghiên cứu có khả lập trình Web JavaScript ngơn ngữ lập trình client-side lẫn server-side CS111.M21.KHTN Page 15 Nguyên lý phương pháp lập trình 2022 Trong Python, C++, C#, Java phù hợp cho việc xây dựng web service C# với công nghệ NET Java với hệ thống thư viện lớn ngơn ngữ lập trình Web phổ biển giới C# ngôn ngữ phổ biển lập trình Game nhờ cơng nghệ NET Microsoft Game Engine Unity, cung cấp cho lập trình viên nhiều công cụ hỗ trợ C++ ngôn ngữ lớn cho việc lập trình game, xương sống xây dựng nên Game Engine tiếng Unity Java, Python, JavaScript có khả lập trình game JavaScript tạo game mà chạy trực tiếp trình duyệt Python với cú pháp đơn giản cộng động thư viện lớn khiến cho việc code game dễ dàng kể với người Trong lĩnh vực lập trình AI, Python dẫn đầu nhờ cú pháp đơn giản dễ học tiếp cận, với hệ thống thư viện hỗ trợ mạnh C++ với hiệu tính tốn cao thường dùng để lập trình ứng dụng AI thiết bị hạn chế tài nguyên, đồng thời tảng cho thư viện máy học lớn JavaScript thường dùng để tạo ứng dụng AI chạy trình duyệt người dùng cịn C# Java thường dùng bên server nhiều Tài liệu tham khảo Comparative Studies of 10 Programming Languages within 10 Diverse Criteria: https://arxiv.org/pdf/1008.3561.pdf https://vi.wikipedia.org/wiki/Java_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA %ADp_tr%C3%ACnh) https://vi.wikipedia.org/wiki/C%2B%2B https://vi.wikipedia.org/wiki/C_Sharp_(ng%C3%B4n_ng%E1%BB%AF_l %E1%BA%ADp_tr%C3%ACnh) CS111.M21.KHTN Page 16 Nguyên lý phương pháp lập trình 2022 https://vi.wikipedia.org/wiki/JavaScript http://carlcheo.com/startcoding CS111.M21.KHTN Page 17