Python là một ngôn ngữ đồ chơi

Một số người cho rằng ``chiến tranh ngôn ngữ'' đã kết thúc và [duy nhất] các lựa chọn hợp lý là. C, C++, Java, Ada [và có thể cả Eiffel]. [[chú thích cuối trang] Đây dường như là sự đồng thuận của cuộc thảo luận nhóm ``Tương lai khả thi cho CS2'' tại SIGCSE '98. ] Tôi tin rằng tuyên bố chiến tranh kết thúc là thừa nhận thất bại quá sớm. Thời điểm mà có rất ít sự đồng thuận về một ngôn ngữ đầu tiên dường như là thời điểm thích hợp để quay lại các nguyên tắc đầu tiên và xem xét ngôn ngữ đầu tiên nên là gì. Trên đường đi, chúng ta có thể phát hiện ra rằng một số ứng cử viên tốt nhất thậm chí còn chưa được xem xét

Trong bài báo này, tôi lập luận rằng các ngôn ngữ kịch bản cấp cao như Python, Perl, Tcl, Rexx và Visual Basic là những ứng cử viên tốt hơn cho ngôn ngữ đầu tiên. Một đặc biệt, Python, có vẻ gần như lý tưởng

2 tiêu chí cho một ngôn ngữ đầu tiên

2. 1 Giả định về CS1 và CS2

Nhận thấy rằng có sự bất đồng đáng kể về tài liệu nào nên được dạy trong CS1 và CS2, bất kỳ cuộc thảo luận thông minh nào về ngôn ngữ nào phù hợp nhất đều phải bắt đầu bằng các giả định cơ bản về bản thân các khóa học. Các giả định sau đây phản ánh một cách tiếp cận khá phổ biến, nhưng tôi hiểu rằng chúng không hoàn toàn không gây tranh cãi

Đầu tiên, trình tự CS1/CS2 về cơ bản là về lập trình máy tính. Mặc dù các khóa học này chắc chắn giải quyết các vấn đề rộng lớn hơn về lý thuyết và thực hành khoa học máy tính, cốt lõi của khoa học máy tính và của các lớp đầu tiên này vẫn là giải quyết vấn đề, thiết kế và lập trình. Học lập trình phần lớn là hoạt động thực hành và các lớp này liên quan đến các dự án thiết kế và lập trình ở nhiều quy mô khác nhau trong môi trường phòng thí nghiệm mở hoặc phòng thí nghiệm kín

Thứ hai, bản thân ngôn ngữ lập trình không phải là trọng tâm của các lớp này. Mặc dù sinh viên của chúng tôi thường gọi các lớp này là ``lớp C++'' hoặc ``lớp Java'', các khóa học được thiết kế để giới thiệu về lĩnh vực khoa học máy tính. Ngôn ngữ đang được sử dụng thực sự là một vấn đề thứ cấp. Xu hướng coi CS1 là phần giới thiệu về một ngôn ngữ cụ thể là dấu hiệu cho thấy sự phức tạp của các ngôn ngữ thường được sử dụng

Thứ ba, các lớp này giới thiệu cho sinh viên các mô hình chính để thiết kế và giải quyết vấn đề được sử dụng ngày nay, cụ thể là các phương pháp hướng đối tượng và có cấu trúc được triển khai bằng ngôn ngữ mệnh lệnh [hướng câu lệnh]. Trong khi có những người ủng hộ mạnh mẽ cho các cách tiếp cận khác [e. g. sử dụng ngôn ngữ chức năng trong lớp đầu tiên], phần lớn các lớp giới thiệu có xu hướng đi theo con đường truyền thống hơn

Thứ tư, và có lẽ gây tranh cãi nhất, tôi cho rằng mục tiêu của CS1 là thu hút và giáo dục các chuyên ngành khoa học máy tính và có lẽ tuyển dụng những người mới. Với nhu cầu hiện tại đối với sinh viên tốt nghiệp của chúng tôi và nhu cầu của tất cả các cá nhân được giáo dục để hiểu về công nghệ thông tin, việc coi CS1 là một lớp học `` bị loại bỏ '' là một điều bất lợi lớn. Lập trình rất khó, nhưng chúng ta nên cố gắng làm cho nó không khó hơn mức cần thiết

2. 2 hàm ý cho việc lựa chọn ngôn ngữ lập trình

Nếu các lớp giới thiệu thực sự là về khoa học máy tính hơn là các chi tiết của một ngôn ngữ cụ thể, thì ngôn ngữ được chọn nên có cú pháp và ngữ nghĩa đơn giản. Tất cả chúng ta đều đã trải qua sự thất vọng của một khóa học CS1 bị sa lầy trong cuộc thảo luận về lỗi cú pháp và cấu trúc ngôn ngữ. Trong phạm vi có thể, chúng ta nên chọn một ngôn ngữ giảm thiểu những phức tạp này để có thể dành nhiều thời gian hơn cho việc phát triển các kỹ năng thiết kế. Hệ quả tất yếu của triết lý này là những vấn đề đơn giản nên được giải quyết một cách đơn giản. Một ngôn ngữ đòi hỏi chi phí công chứng đáng kể để giải quyết các vấn đề ngay cả tầm thường buộc ngôn ngữ thay vì các kỹ thuật giải quyết vấn đề trở thành đối tượng nghiên cứu

Bản chất thử nghiệm, thực hành của các khóa học giới thiệu cũng có ý nghĩa đối với việc lựa chọn ngôn ngữ. Một ngôn ngữ cho phép thể hiện các thiết kế với chi phí tối thiểu khuyến khích thử nghiệm và viết lại. Do đó, ngôn ngữ phải ở mức rất cao và linh hoạt, cho phép học sinh nhanh chóng và dễ dàng thử nghiệm các thiết kế thay thế. Điều này tạo điều kiện cho việc suy nghĩ về các vấn đề về thuật toán và thiết kế hơn là các chi tiết triển khai ở mức độ thấp. Trong phạm vi có thể, ngôn ngữ cũng nên cung cấp sự an toàn cho thử nghiệm. Chúng ta nên ủng hộ các ngôn ngữ bảo vệ khỏi các sự cố bí ẩn do con trỏ hoặc lỗi giới hạn mảng. Học sinh ở cấp độ này chỉ đang học các kỹ thuật để theo dõi và sửa lỗi;

Điều quan trọng nữa là ngôn ngữ hỗ trợ các phương pháp thiết kế hiện đại liên quan đến các kỹ thuật trừu tượng hóa, đóng gói và hướng đối tượng. Mặc dù các thiết kế dựa trên đối tượng có thể được triển khai bằng bất kỳ ngôn ngữ nào, nhưng làm như vậy bằng ngôn ngữ hỗ trợ các đối tượng sẽ trực quan và đơn giản hơn nhiều. Một lần nữa, điều này cho phép khóa học tập trung vào các vấn đề khái niệm cấp cao hơn là các chi tiết triển khai

Cuối cùng, có những cân nhắc thực tế trong việc lựa chọn một ngôn ngữ. Rất mong muốn ngôn ngữ này được phổ biến rộng rãi trên nhiều nền tảng khác nhau. Tương tự như vậy, một ngôn ngữ được sử dụng bởi những người hành nghề bên ngoài học viện sẽ thích hợp hơn một ngôn ngữ ``chỉ dành cho việc giảng dạy'', miễn là nó đáp ứng các tiêu chí khác được thảo luận ở trên. Dạy ngôn ngữ X đơn giản vì nó là ngôn ngữ được sử dụng phổ biến nên bản thân nó không phải là một cân nhắc quan trọng. Học sinh của chúng tôi sẽ học và sử dụng nhiều ngôn ngữ trong sự nghiệp của họ. Điều quan trọng trong các khóa học đầu tiên là cung cấp cho họ nền tảng tốt nhất có thể về các nguyên tắc và kỹ thuật cốt lõi sẽ cho phép họ áp dụng và thích ứng với các ngôn ngữ khác nhau mà họ sẽ đối mặt trong ``thế giới thực. ''

3 Lợi thế của Python

3. 1 Trường hợp ngôn ngữ kịch bản

Ousterhout [1998] đưa ra sự khác biệt giữa các ngôn ngữ lập trình hệ thống [e. g. C, C++, Pascal, Ada, Java] và các ngôn ngữ kịch bản [e. g. Perl, Tcl, Python, Rexx, Visual Basic]. Cái trước được nhập tĩnh, thường được biên dịch và thể hiện sự trừu tượng khiêm tốn từ máy bên dưới. Cái sau được gõ động, thường được giải thích và ở mức rất cao. Ngôn ngữ kịch bản thường được mô tả là ``ngôn ngữ keo dính'' để kết nối các thành phần độc lập vào các ứng dụng quy mô lớn hoặc làm công cụ tạo mẫu để phát triển ứng dụng nhanh chóng. Tuy nhiên, như Ousterhout [1998, 23] chỉ ra
một số xu hướng gần đây, chẳng hạn như máy nhanh hơn, ngôn ngữ kịch bản tốt hơn, tầm quan trọng ngày càng tăng của giao diện người dùng đồ họa và kiến ​​trúc thành phần, và sự phát triển của Internet, đã làm tăng đáng kể khả năng ứng dụng của ngôn ngữ kịch bản. Những xu hướng này sẽ tiếp tục trong thập kỷ tới với ngày càng nhiều ứng dụng mới được viết hoàn toàn bằng ngôn ngữ kịch bản và ngôn ngữ lập trình hệ thống được sử dụng chủ yếu để tạo các thành phần

Theo truyền thống, các chương trình khoa học máy tính đã nhấn mạnh ngôn ngữ lập trình hệ thống hơn ngôn ngữ kịch bản. Tuy nhiên, các ngôn ngữ kịch bản dường như mang lại một số lợi ích, đặc biệt đối với trình tự lập trình giới thiệu. Ngôn ngữ kịch bản thường có cú pháp và ngữ nghĩa đơn giản hơn ngôn ngữ hệ thống. Do tính năng nhập và giải thích động nên chúng rất linh hoạt và khuyến khích thử nghiệm. Bản chất cấp cao cho phép sinh viên xây dựng các dự án phức tạp và thú vị hơn với ít nỗ lực thực hiện hơn

Có lẽ, sự thiếu quan tâm đến ngôn ngữ kịch bản xuất phát từ nhận thức rằng chúng là ngôn ngữ ``đồ chơi'' và không phù hợp với lập trình mục đích chung. Trong khi điều đó có thể đúng với các ngôn ngữ kịch bản đầu tiên [e. g. tập lệnh shell Unix], điều này chắc chắn không đúng với các biến thể hiện đại

3. 2 Một chút trăn trở

Trong số các ngôn ngữ kịch bản phổ biến khác nhau, Python có lẽ gần giống nhất với các ngôn ngữ hệ thống truyền thống [Laird & Soraiz, 1998b]. Nó cũng được cho là có chòm sao tính năng tốt nhất để giới thiệu nó như một ngôn ngữ lập trình đầu tiên. Mục đích của bài viết này không phải là hướng dẫn Python; . [[chú thích cuối trang] Có thể tìm thấy nhiều tài nguyên Python tốt trên Internet tại http. //www. con trăn. tổ chức. ]. Thay vào đó, tôi sẽ tập trung vào các tính năng của Python khiến nó trở thành một lựa chọn đặc biệt tốt trong số các ngôn ngữ kịch bản với tư cách là ngôn ngữ lập trình máy tính đầu tiên. Trong quá trình thảo luận, tôi sẽ so sánh Python với C++, ngôn ngữ đầu tiên phổ biến nhất hiện nay và Java, ngôn ngữ thường được liệt kê là `` đang xem xét. [McCauley và Manaris, 1998]''

3. 2. 1 Python rất đơn giản

Nói chung, các ngôn ngữ kịch bản đơn giản hơn nhiều so với các ngôn ngữ hệ thống như C++ và Java [Laird & Soraiz, 1998b]. Python có cú pháp đơn giản, thông thường. Các câu lệnh được kết thúc ở cuối dòng và cấu trúc khối được biểu thị bằng dấu thụt đầu dòng. Các chương trình Python trông giống như mã giả thực thi. Điều này giúp loại bỏ một loạt lỗi rắc rối cho những người mới bắt đầu lập trình, đặc biệt là vị trí của dấu chấm phẩy, dấu ngoặc và thụt đầu dòng. Ví dụ, một lỗi phổ biến trong C++ và Java là không thể đặt một khối trong dấu ngoặc nhọn như.
if [x < 0]
   cout 

Chủ Đề