Tôi nên sử dụng ngôn ngữ nào khi giảng dạy một khóa học đại học về lập trình máy tính?


22

Sẽ dạy cho sinh viên trình độ đại học một khóa học có tiêu đề Giới thiệu về lập trình máy tính. Tôi bối rối một chút. Trong Vật lý tính toán, các nhà khoa học sử dụng C / C ++ hoặc Python hoặc Fortran, CUDA, v.v ..... đây là thời gian để xây dựng cơ sở của họ. Tôi nên dùng gì? Tôi biết bạn có thể học ngôn ngữ lập trình mới bất cứ lúc nào trong đời nhưng đó là lựa chọn khôn ngoan hơn để tôi xây dựng tất cả các khái niệm lập trình cơ bản và khái niệm OOP sau này.


9
@ k20: Tôi hy vọng đề nghị của bạn là tặc lưỡi; nếu không, nó sẽ vi phạm nghiêm trọng đạo đức học thuật.
Christian Clason

6
@ k20: Tất cả điều này là ngoài chủ đề, nhưng việc chọn phần mềm dựa trên các cú đá lại (dưới bất kỳ hình thức nào) cho giáo viên và không dựa trên nội dung sẽ được dạy là điều phi đạo đức. (Chỉ cần làm rõ, đó là "swag" mà tôi phản đối.) Điều thường được thực hiện là các công ty tạo ra phần mềm có sẵn với chi phí giảm đáng kể (hoặc miễn phí).
Christian Clason

3
@ k20: Ngoài ra, hãy nhớ rằng động lực của phần mềm không hoàn toàn vị tha: Sinh viên của bạn có thể nhận phần mềm miễn phí ngay bây giờ, nhưng cũng có khả năng họ phải mua phần mềm một thời gian sau đó (hoặc học một cái mới phần mềm).
Wrzlprmft

3
@ k20 Matlab và Mathematica không thực sự được sử dụng nhiều cho tính toán khoa học nghiêm túc. Chúng là những công cụ khám phá nhiều hơn để thử các ý tưởng. Nếu mục đích của khóa học là dạy các thuật toán cơ bản, thì chúng có thể phù hợp (đặc biệt là Matlab), nhưng nếu đó là lập trình chung, thì bạn muốn sử dụng ngôn ngữ lập trình tổng quát hơn như Python của C ++.
Truman Ellis

2
MATLAB có một thiết kế (nếu tôi không ngoại giao, tôi sẽ nói là thiếu sót :)) yêu cầu những gì trong các ngôn ngữ khác là thực tiễn xấu. Nhiều thứ khác chỉ khác với bất cứ thứ gì khác, vì vậy "đi ra ngoài" có thể khó khăn. Theo tôi, Mathematica có một thiết kế đẹp, nhưng nó không giống với bất kỳ ngôn ngữ nào khác (ngoại trừ Lisp, nhưng nó không được sử dụng trong khoa học), vì vậy những gì bạn học được hầu như vô dụng khi học ngôn ngữ khác. OTOH, đi C <-> Python dễ dàng hơn nhiều.
Davidmh

Câu trả lời:


32

Đầu tiên, nếu sinh viên đại học của bạn giống như chúng tôi và không có phần giới thiệu trước về máy tính, hãy dành thời gian dạy họ cách sử dụng những thứ cơ bản như sử dụng một trình soạn thảo thích hợp (ví dụ, không phải MS Word), dòng lệnh, v.v.

Tôi nghĩ rằng câu trả lời phần nào phụ thuộc vào nơi bạn đặt trọng tâm của khóa học của bạn (hoặc những gì bạn bắt buộc phải dạy). Ví dụ: Làm thế nào có liên quan các hoạt động nội bộ của máy tính? Bạn có cần các lớp học và các cấu trúc OOP nâng cao khác không? Bạn có muốn dạy họ cách sản xuất các chương trình hiệu quả hay bạn có hài lòng nếu họ sản xuất các chương trình làm việc không? Ngoài ra, đừng quên rằng bạn rất có thể sẽ cần gia sư có khả năng.

Nhưng bây giờ một cái gì đó để lợi thế và bất lợi của các ngôn ngữ, tôi đã quen thuộc. Lưu ý rằng điều này chủ yếu là từ kinh nghiệm của tôi với tư cách là một nhà vật lý tính toán và một số điều này có thể phụ thuộc vào lĩnh vực cụ thể, nhóm làm việc, trường đại học, v.v.

Con trăn

Tôi thường khuyên bạn nên sử dụng Numpy ngay từ đầu và tôi cho rằng nó sẽ được sử dụng sau đây.

Ưu điểm:

  • Thật dễ để học và đọc mã của người khác cũng vậy (ví dụ: mã ví dụ của bạn, nhưng cũng là mã của sinh viên dành cho gia sư).
  • Đầu vào và đầu ra (không phải là trọng tâm của khóa học của bạn) có thể được bao phủ hoàn toàn bởi print, Numpy savetxtloadtxt, và có thể sys.argv. Nó có thể được giới thiệu một cách nhanh chóng và nó không ăn nhiều thời gian lập trình.
  • Bạn không cần phải xử lý hoặc chỉ cần xử lý ít chi tiết như biểu diễn số, quản lý bộ nhớ, loại dữ liệu. Do đó, nó rất nhanh để lập trình và bạn có thể tập trung vào các thuật toán thực tế.
  • Nó không phải là một ngôn ngữ được biên dịch. Điều này có hai ưu điểm: Sinh viên không cần phải xử lý trình biên dịch và sinh viên có thể kiểm tra nội dung trực tiếp trong bảng điều khiển mà không phải biên dịch, khởi động lại và chạy lại chương trình. Liên quan, gỡ lỗi dễ dàng hơn.
  • Có thư viện dễ sử dụng cho hầu hết mọi thứ.
  • Bạn không cần phải học các ngôn ngữ tập lệnh bổ sung như shell script, Make, Gnuplot, v.v. - tất cả điều này có thể được thực hiện từ Python.
  • Có rất nhiều hướng dẫn tốt (miễn phí).

Nhược điểm:

  • Nó không được biên dịch. Do đó, các chương trình Python có thể chậm hơn đáng kể so với các chương trình được biên dịch trong một số trường hợp liên quan đến vật lý tính toán. Tuy nhiên, trong các trường hợp khác, các thư viện (đặc biệt là Numpy) có thể mang lại hiệu suất tương đương. Một cách khác, để có được hiệu suất tốt với Python là viết các đoạn mã có liên quan bằng ngôn ngữ khác như C¹. Rõ ràng bạn cần học ngôn ngữ này cho việc này, nhưng điều này có thể được thực hiện sau đó và thời gian học Python của bạn không bị lãng phí.
  • Khó khăn hơn để dạy các chi tiết như biểu diễn số, quản lý bộ nhớ, loại dữ liệu và cạm bẫy của chúng, vì chúng hơi bị xáo trộn.

C / C ++

Ưu điểm:

  • Nó được biên dịch và do đó dễ dàng hơn để tạo mã hiệu quả.
  • Bạn đang trực tiếp xử lý biểu diễn số, quản lý bộ nhớ, các loại dữ liệu và do đó sẽ trực quan hơn khi dạy những điều này - sinh viên của bạn sẽ tiến gần hơn đến những gì đang thực sự xảy ra trong máy tính của họ.
  • Có những thư viện về cơ bản mọi thứ, nhưng việc hiểu và sử dụng một thư viện cần một số công việc.
  • Có một số lượng mã hiện có trong C / C ++ và do đó sinh viên cần học ngôn ngữ nếu họ muốn làm việc với mã này.
  • Nếu bạn đã biết C / C ++, bạn có thể học Python (ví dụ) rất nhanh.

Nhược điểm:

  • Nó được biên dịch và sinh viên của bạn phải đối phó với trình biên dịch, bộ tiền xử lý, tiêu đề, v.v. Bạn sẽ ngạc nhiên về số lượng sinh viên thất bại ở bước này, ngay cả khi kết thúc học kỳ.
  • Nó quá chậm để học và mất nhiều thời gian hơn để tạo mã làm việc.
  • Xử lý các công cụ cận biên như đầu vào và đầu ra mất một thời gian cũng như trong giảng dạy như trong lập trình. Trong C ++, có một cú pháp bổ sung cho đầu vào và đầu ra.
  • Trình biên dịch và phụ thuộc hệ điều hành.
  • Bạn phải đối phó với sự nhầm lẫn C / C ++.
  • Đọc mã của người khác đặc biệt là trong C ++ có thể khá khó khăn do số lượng lớn các tính năng cú pháp.

Những ưu điểm chính của C ++ so với C (Các lớp, mẫu) không liên quan đến khóa học của bạn và chỉ trở nên phù hợp với các dự án lớn hơn. Vì vậy, tôi sẽ chọn C trong hai, vì nó ngắn gọn hơn.

Khác

Một số ý kiến ​​về các ngôn ngữ khác:

  • Fortran: Điều này vẫn được sử dụng bởi rất nhiều nhóm và có rất nhiều mã kế thừa, nhưng bạn không thể giải quyết các tiêu chuẩn cũ và những hạn chế và cạm bẫy lớn của họ (rất nhiều người vẫn đang làm việc với Fortran 77). Ngoài ra, sẽ khó hơn nhiều để tìm hướng dẫn, trợ giúp trên Internet và như vậy.
  • Matlab / Mathematica: Tất cả các vấn đề của phần mềm độc quyền. Đặc biệt xem xét rằng các sinh viên của bạn có khả năng cộng tác với những người không có quyền truy cập vào phần mềm này và các vấn đề tiếp theo.
  • Cuda: Điều này chỉ liên quan đến một số vấn đề nhất định, nếu hiệu suất có vấn đề. Ngoài ra, sau tất cả những gì tôi biết, bạn không muốn học lập trình theo cách này.

Đó là quy trình làm việc tiêu chuẩn ít nhất trong nhóm của chúng tôi.


Câu trả lời rất chính xác
Afnan Bashir

1
Tôi cũng muốn nói rằng một trong những phần thưởng chưa được đề cập của Python là có một số bản phân phối khoa học (Anaconda / Enth think / PythonXY / SAGE) thực sự làm trơn tru quá trình đưa mọi người vào cùng một trang tính toán. Ngoài ra, thậm chí mát hơn là các phương pháp tiếp cận dựa trên web (Wakari và SAGE) cung cấp tất cả thông qua trình duyệt hay phần mềm được cài đặt 0. Dạy học nâng cấp c ++ hoặc Fortran sẽ khiến mất nhiều thời gian hơn khi chiến đấu với trình biên dịch so với thời gian đạt được về tốc độ mã.
meawoppl

Có một hệ sinh thái tuyệt vời trong trăn cho vật lý tính toán. Numpy, scipy để cung cấp cơ sở hạ tầng cơ bản, mayavi, tvtk để trực quan hóa. Python khá trưởng thành trong cộng đồng máy tính khoa học. Tôi sử dụng C ++ trong sản xuất nhưng không có vấn đề gì khi sử dụng.
Sai Venkat

@meawoppl: Dạy học nâng cấp c ++ hoặc Fortran sẽ khiến bạn mất nhiều thời gian hơn khi chiến đấu với trình biên dịch so với thời gian đạt được về tốc độ mã. trừ khi các bài tập được thực hiện cụ thể sao cho chúng không), nhưng tốc độ mã của các chương trình chúng sẽ viết cho đời thực hoặc tương tự. Và có một số thứ không thể được thực hiện hiệu quả trong Python mà thôi.
Wrzlprmft

1
Tôi muốn nói CUDA không nằm trong câu hỏi cho một khóa học có mục đích chung, vì nó yêu cầu phần cứng mà không phải ai cũng có. Và nếu bạn chỉ có một máy tính xách tay mà không có nó, gần như không có cách nào bạn có thể cài đặt nó.
Davidmh

22

Vào năm 2014, tôi đã nói Python. Năm 2017, tôi hoàn toàn tin tưởng rằng ngôn ngữ để dạy cho sinh viên đại học là Julia.

Dạy học luôn là về một sự đánh đổi. Một mặt, bạn muốn chọn một cái gì đó đủ đơn giản để dễ nắm bắt. Nhưng thứ hai, bạn muốn dạy một thứ gì đó có sức mạnh bền bỉ, tức là thứ có thể phát triển cùng bạn. Tất cả các ngôn ngữ động phổ biến (Python / MATLAB / R) đều dễ dàng rơi vào loại 1 do mã soạn sẵn không tồn tại của chúng và dễ dàng mở trình thông dịch và nhổ mã, trong khi C / C ++ / Fortran rơi vào loại thứ hai như các ngôn ngữ mà phần mềm hiệu năng cao cốt lõi của thế giới ngày nay đã được viết.

Nhưng có một số vấn đề với việc sử dụng một ngôn ngữ không hoàn toàn nắm bắt được danh mục khác. Khi sử dụng một ngôn ngữ như Python, nó trừu tượng hóa đi những thứ như kiểu tràn và số nguyên. Điều này rất tốt cho việc dạy máy tính học kỳ đầu tiên, nhưng khi bạn muốn tìm hiểu sâu hơn về cách mọi thứ đang thực sự hoạt động, ngôn ngữ của Python quá xa khỏi kim loại cơ bản để trở thành một công cụ giảng dạy tốt. Nhưng C / C ++ / Fortran (hoặc Java ... tôi đã học Java trước ...) đều có chi phí khởi động lớn đến mức điều khó nhất để học chỉ là làm thế nào để thiết lập và mainbiên dịch tiêu đề , làm sao lãng việc học lập trình .

Nhập Julia. Khi bạn lần đầu tiên sử dụng Julia, bạn có thể trừu tượng hóa toàn bộ ý tưởng về các loại và sử dụng nó giống như MATLAB hoặc Python. Nhưng khi bạn muốn tìm hiểu thêm, có một "lỗ thỏ" chuyên sâu về ngôn ngữ. Vì đây thực sự là một lớp trừu tượng dựa trên một hệ thống loại + nhiều lần gửi qua LLVM, nên về cơ bản là "một cách dễ dàng để viết mã được biên dịch tĩnh" (và các hàm ổn định kiểu thực sự có thể được biên dịch tĩnh). Điều này có nghĩa là các chi tiết của C / C ++ cũng có thể truy cập được. Bạn có thể tìm hiểu cách viết các vòng lặp và các hàm đơn giản mà không cần mã soạn sẵn, sau đó đào sâu vào các con trỏ hàm. Các tính năng siêu lập trình của Julia cho phép bạn truy cập trực tiếp vào AST và có các macro hiển thị mọi phần của chuỗi biên dịch. Ngoài ra, là một Lisp, có thể tuân theo các kiểu lập trình chức năng. Và nó có rất nhiều khả năng tính toán song song. Các ý tưởng như gõ tham số và ổn định kiểu là khá độc đáo và sâu sắc trong Julia.

Nếu bạn muốn tự học ngôn ngữ lập trình, bạn có thể tìm hiểu các bước về cách thức biên dịch hoạt động bằng cách sử dụng @code_loweredđể xem mức giảm là gì, xem AST được gõ với @code_typed, xem LLVM IR với @code_llvm, và cuối cùng là mã lắp ráp gốc @code_native. Điều này có thể được sử dụng để hiển thị chi phí của các biến động là gì và chính xác cách thức "biến quyền anh" hoạt động, và bài đăng trên blog này cho thấy các công cụ hướng nội này có thể được sử dụng như thế nào để dạy cách tối ưu hóa trình biên dịch có thể / không thể xảy ra.

Không chỉ có những ý tưởng khoa học máy tính và kỹ thuật phần mềm để khám phá, mà còn có những ý tưởng toán học phong phú. Vì các thư viện chính của Julia được viết bằng cách gõ chung chung, nên việc tạo các toán tử không có ma trận và sử dụng IterativeSolvers.jl để thực hiện GMRES bằng cách sử dụng chúng là chuyện nhỏ. Bạn có thể sử dụng các công cụ hướng nội muốn @whichcho bạn thấy chính xác mọi thứ đã được thực hiện như thế nào. Ví dụ, làm thế nào để \làm việc?

@which rand(10,10)\rand(10)
#\(A::AbstractArray{T,2} where T, B::Union{AbstractArray{T,1}, AbstractArray{T,2}} where T) in Base.LinAlg at linalg\generic.jl:805

Điều đó chỉ cho tôi thẳng đến định nghĩa của \ . Nó được triển khai ở Julia, vì vậy ai đó biết Julia sau đó có thể học thuật toán và cách thức hoạt động thông qua việc xác định các kiểu con ma trận và chuyên môn khi có thể (quay lại loại bỏ Gaussian). Vì mã của Julia được MIT cấp phép (và hầu hết tất cả các gói đều được MIT cấp phép), nên sinh viên được tự do sử dụng các ý tưởng này trong mã của riêng họ (có ghi công) (khi mã được cấp phép GPL, như trường hợp của hầu hết các gói MATLAB và R, họ cần cẩn thận về các vấn đề cấp phép!).

Vì lõi ngôn ngữ được xây dựng với một cộng đồng nguồn mở rất tích cực, nên cũng có một nguồn tài nguyên phong phú về lịch sử phát triển ngôn ngữ: các vấn đề Github của nó . Hiểu các câu hỏi ngôn ngữ như những gì thực sự là một ma trận chuyển vị? có thể rất giác ngộ để hiểu các đối tượng toán học này một cách chi tiết hơn.

Nhưng cuối cùng, cuối cùng, bạn muốn dạy học sinh của mình cách sáng tạo. Đáng buồn thay, học Python hoặc R không nhất thiết có nghĩa là bạn có những gì cần thiết để "phát triển Python / R" vì hầu hết các gói được sử dụng rộng rãi và được tối ưu hóa tốt đều có một lượng đáng kể mã C / C ++ / Fortran theo thứ tự để có được hiệu suất. Do đó, để những sinh viên này có thể đóng góp cho hệ sinh thái khoa học cho những ngôn ngữ này, cuối cùng họ sẽ phải học một ngôn ngữ khác vào một lúc nào đó. Mặc dù điều đó không hoàn toàn khủng khiếp, nhưng bây giờ Julia vẫn còn tối ưu. Vì Julia ổn định loại có thể đạt được tốc độ của C / Fortran, nên hầu hết các gói trong hệ sinh thái Julia đều là mã Julia thuần túy. Học Julia nghĩa là người ta đã học cách phát triển Julia. Và vì Base Julia cũng chủ yếu là mã Julia (chỉ là một vài nguyên thủy và trình phân tích cú pháp không), nên

Điều đó nói rằng, có một số nhược điểm cho sự lựa chọn của Julia. Đối với một, nó mới hơn nhiều so với các ngôn ngữ khác và vì vậy nó khan hiếm hơn về tài nguyên. Bạn sẽ phải tự mình tìm ra rất nhiều công cụ giảng dạy hoặc lấy từ các tài nguyên trên web được liệt kê trên trang web của Julia . Ngoài ra, các chi tiết ngôn ngữ không hoàn toàn ổn định, mặc dù 1.0 sẽ sớm ra mắt (vào cuối năm 2017). Và cũng có khả năng là bạn, giáo viên tiềm năng của một khóa học ở Julia, có thể không có nhiều kinh nghiệm với ngôn ngữ đó. Tuy nhiên, đây là những loại vấn đề biến mất theo thời gian, trong khi những lợi ích của Julia mà tôi đã đề cập ở trên là cốt lõi hơn nhiều đối với bản thân các ngôn ngữ.


Tự hỏi nếu sử dụng một ít ngôn ngữ được sử dụng có ý nghĩa vì kiến ​​thức về cú pháp sẽ có thể bị mất và không đảm bảo rằng các sinh viên sẽ được học một số ngôn ngữ. Có thể trong quan điểm như vậy, python vẫn là một tốt.
Xavier Combelle

1
Đó là lý do tại sao tôi đã không nói Julia trước đây, nhưng bây giờ nó khá phổ biến bạn cũng có thể sử dụng nó.
Chris Rackauckas

Tôi nghĩ Julia vẫn còn quá mới. Trong ngành công nghiệp, sinh viên sẽ được biết đến Python, C ++, (ew) MATLAB và R. Tôi nghĩ rằng tốt hơn là ngôn ngữ thứ hai hoặc thứ ba để học, như một trải nghiệm phong phú. Học sinh không có khả năng sử dụng Julia một lần nữa trong tương lai gần.
Mateen Ulhaq

2
Học sinh nên học các kỹ năng chuyển nhượng, không phải là một mẫu để sao chép và dán. Theo nghĩa đó, Python / MATLAB / R trừu tượng quá xa máy tính để trở thành một công cụ giảng dạy tốt ngoài chương trình đơn giản nhất, nhưng C ++ quá thấp để trở thành một công cụ giảng dạy tốt. Chắc chắn, nếu bạn sẽ có một ngôn ngữ ở bên cạnh như trong một khóa học phân tích số, hãy làm những gì bạn sẽ sử dụng vì khóa học không phải là về lập trình. Nhưng nếu đó là về các khái niệm lập trình, Julia gần như là ngôn ngữ đơn giản duy nhất thực sự có hầu hết các khái niệm trong thiết kế của nó.
Chris Rackauckas

2

Nói như một sinh viên không quá xa vời và cho rằng bạn không giảng dạy ở khoa CS, tôi nghĩ sẽ là một thảm họa khi giới thiệu sinh viên đến lập trình máy tính với một cái gì đó như C, C ++ hoặc Fortran (hoặc thần cấm CUDA), mặc dù những người khác đã chỉ ra rằng họ có thể là hiện trạng trong điện toán khoa học.

Nếu bạn muốn dạy sinh viên tính toán khoa học giới thiệu cho họ lập trình trong cùng một khóa học, tôi sẽ cá rằng đó là quá nhiều để bao quát trong một học kỳ trừ khi bạn dính vào một ngôn ngữ được giải thích như matlab hoặc python. Theo kinh nghiệm của tôi, hầu hết các lớp về máy tính khoa học ở cấp đại học đều được dạy theo một trong hai cách đó và python ngày càng trở nên hữu dụng như một ngôn ngữ cấp sản xuất mỗi ngày, vì vậy nó vẫn có một số tiện ích như một kỹ năng thực tế ( ngoài việc chỉ dạy cơ bản về lập trình, ý tôi là).

Chỉ hai xu của tôi.


4
Thảm họa là một từ quá mạnh để sử dụng để mô tả việc dạy học sinh C, C ++ hoặc Fortran. Bất kỳ ngôn ngữ nào trong số này (C, C ++, Fortran hoặc Python) đều có thể tốt cho việc dạy lập trình và tính toán khoa học tùy thuộc vào cách bạn thực hiện.
Bill Barth

1
Từ kinh nghiệm của tôi về một lớp học của bộ phận CS (C ++) và một lớp học dành cho các nhà thiên văn học (Fortran 77), C / C ++ / Fortran không cung cấp trợ giúp đầy đủ so với python cho các lập trình viên hoàn toàn mới (segfaults so với ngoại lệ). Sử dụng C / C ++ / Fortran có nghĩa là tìm hiểu về cách sử dụng trình gỡ lỗi (hoặc sử dụng IDE), trong khi python có thể được sử dụng riêng.
James Tocknell

0

C, C ++, & Fortran (được liệt kê không theo thứ tự cụ thể) là ba ngôn ngữ lập trình chính được sử dụng cho toán học / vật lý tính toán nếu bạn muốn giải quyết các vấn đề lớn trên siêu máy tính. Tôi nghĩ CUDA được coi là một thư viện được sử dụng cùng với các ngôn ngữ khác để tăng tốc tính toán GPU. Matlab và python là tuyệt vời để tìm hiểu để chạy chẩn đoán đầu ra và tạo các mô hình nguyên mẫu. Chúng cũng dễ học hơn và có thể tốt hơn cho một khóa học mà bạn muốn tìm hiểu các thuật toán học cách lập trình.

Vì vậy, nếu khóa học của bạn hoàn toàn là về lập trình, tôi sẽ chọn C ++ hoặc, nếu đây là lần đầu tiên sinh viên lập trình, Python. Cả hai ngôn ngữ này đều có tiện ích cao bên ngoài thế giới máy tính khoa học. Nếu khóa học tập trung vào việc học các thuật toán để giải các bài toán dựa trên vật lý thì tôi nghĩ Matlab chắc chắn là người chiến thắng.


0

ngắn gọn: Hãy tính đến việc tính toán khoa học là phức tạp. Bạn có thực sự muốn ngôn ngữ lập trình phát huy tác dụng không?

Toán học sử dụng sự trừu tượng để giải quyết các vấn đề không thể giải quyết bằng trực giác. Do đó các khái niệm có xu hướng trừu tượng. Đây là lý do tại sao nó không tầm thường để hiểu những khái niệm cần gói gọn. Trong tính toán khoa học, các ví dụ thông thường cho các lớp như "Động vật" "Xe" khá vô dụng. Điều này đúng với lập trình hướng đối tượng, nhưng tôi tin rằng việc tái tạo các khái niệm trừu tượng trên máy tính cũng không phải là chuyện nhỏ trong lập trình mệnh lệnh.

Đây là lý do tại sao tôi tin rằng ở đây chúng ta đang đối phó với hai nỗ lực khác nhau: lập trình, một mặt và máy tính khoa học. Ở cấp đại học, nơi sinh viên đến từ những nền tảng không đồng nhất, cuối cùng bạn có thể dạy hai điều khác nhau cùng một lúc.

Nếu mục tiêu của bạn là dạy máy tính khoa học, tôi nghĩ điều đó đủ khó. Có thêm một rào cản là ngôn ngữ lập trình (tất cả chúng ta đều đồng ý rằng C ++ yêu cầu đào tạo) sẽ giải phóng một lượng lớn sinh viên, đây là lý do tại sao tôi khuyên bạn nên đi với python.

Nếu khóa học của bạn là "Giới thiệu về SC", tôi tin rằng trăn có tỷ lệ kết quả / nỗ lực tốt nhất.

Tái bút: bây giờ chúng tôi có máy tính khá tốt, chúng tôi không thực sự cần tìm kiếm hiệu quả ở cấp đại học.


Về PS của bạn: Tại sao hiệu suất không chỉ quan trọng đối với sinh viên đại học? Ngoài thực tế là dễ dàng có được các nhiệm vụ cho sinh viên đại học, nơi hiệu suất không thành vấn đề, đó không phải là những nhiệm vụ mà họ đang học hiệu suất mà là thực tế. Ngoài ra, tốc độ của máy tính có thể đã trở nên cao hơn, nhưng chúng tôi cũng kỳ vọng như vậy.
Wrzlprmft

Xin lỗi tôi đã quá sắc nét. Hãy để tôi viết lại nó trong "sinh viên có thể chạy các ứng dụng lớn thỏa đáng với ngôn ngữ được dịch, trước khi đào sâu vào tối ưu hóa mã và sau đó chuyển sang ngôn ngữ được biên dịch".
Nicola Cavallini
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.