- Trong thí nghiệm học Python, năng lực ngôn ngữ và khả năng giải quyết vấn đề dự đoán tốt nhất tốc độ học, cho thấy việc nhập môn lập trình có thể gần với học ngôn ngữ hơn là học toán
- Nhóm nghiên cứu tuyển 42 người và cho họ học 10 bài Learn Python của Codecademy, rồi so sánh bài kiểm tra đầu vào, quiz và bài tập cuối kỳ của 36 người hoàn thành
- Thành tích học tập chủ yếu được phân tách bởi giải quyết vấn đề và trí nhớ làm việc, nhưng tốc độ học còn chịu tác động đồng thời của năng lực nhận thức chung và năng khiếu ngôn ngữ
- Năng khiếu ngôn ngữ giải thích gần 20% khác biệt về tốc độ học Python, trong khi bài kiểm tra toán đầu vào chỉ giải thích 2% khác biệt về tốc độ và không liên quan đến thành tích
- Dao động beta trong EEG trạng thái nghỉ cũng liên quan đến việc học nhanh hơn và có nhiều kiến thức lập trình hơn, nhưng quan hệ nhân quả và cơ chế hoạt động vẫn chưa rõ
Những năng lực dự đoán việc học Python
- Nghiên cứu của các nhà nghiên cứu tại University of Washington cho rằng trong việc học Python, năng lực ngôn ngữ và khả năng giải quyết vấn đề dự đoán tốt nhất tốc độ học
- Nghiên cứu được đăng trên Scientific Reports và so sánh mức độ nhanh và tốt mà người tham gia học lập trình thông qua các bài kiểm tra hành vi và đo hoạt động não
- Điểm xuất phát là giả thuyết rằng việc học các ngôn ngữ lập trình như Python hay Java có thể giống với việc học ngôn ngữ tự nhiên như French, Spanish, Chinese hơn ta vẫn tưởng
Thiết kế nghiên cứu và cách đo lường
- Tổng cộng có 42 người được tuyển để tham gia khóa học lập trình trực tuyến “Learn Python” của Codecademy
- Khóa học gồm 10 bài học, mỗi bài 45 phút
- Có 36 người hoàn thành toàn bộ nghiên cứu
- Trước khi học trực tuyến, người tham gia thực hiện nhiều bài kiểm tra đầu vào
- năng lực toán học
- trí nhớ làm việc
- giải quyết vấn đề
- khả năng học ngôn ngữ thứ hai
- Trong quá trình học, tốc độ học và mức độ thực hiện được theo dõi bằng các quiz tích hợp trong phần mềm trực tuyến
- Cuối nghiên cứu, một bài quiz tổng hợp và bài tập lập trình bổ sung được thực hiện để kiểm tra toàn bộ kiến thức mã hóa
Những yếu tố tạo ra khác biệt về tốc độ và thành tích học
- Những người tham gia cho thấy kết quả khác nhau về tốc độ học Python và năng lực lập trình cuối cùng
- Việc họ học Python tốt đến mức nào chủ yếu phụ thuộc vào năng lực nhận thức chung
- khả năng giải quyết vấn đề
- trí nhớ làm việc
- Việc họ học Python nhanh đến mức nào được giải thích bởi cả năng lực nhận thức chung lẫn năng khiếu ngôn ngữ
- Năng khiếu ngôn ngữ chiếm gần 20% khác biệt về tốc độ học Python
- Kết quả bài kiểm tra toán đầu vào chỉ giải thích 2% khác biệt về tốc độ học và hoàn toàn không liên quan đến việc học Python tốt đến đâu
- Trong kết quả này, việc học lập trình phụ thuộc nhiều hơn vào năng lực ngôn ngữ so với năng lực toán học
Bằng chứng từ EEG và những giới hạn
- Người tham gia được đo EEG ở trạng thái nghỉ trước khi học trực tuyến
- EEG là phương pháp đo hoạt động não thông qua các mẫu điện được ghi lại qua hộp sọ
- Hoạt động điện ở trạng thái nghỉ có nhiều mẫu khác nhau, trong đó một mẫu là dao động beta, một dạng hoạt động điện chậm
- Các nghiên cứu trước đây từng cho thấy mức dao động beta cao ở trạng thái nghỉ có liên quan đến khả năng học ngôn ngữ thứ hai
- Trong nghiên cứu này, mức dao động beta cao cũng liên quan đến việc học nhanh hơn và có nhiều kiến thức lập trình hơn
- Tuy vậy, cách dao động beta liên kết với kết quả học tập vẫn chưa rõ ràng, nên cần thêm nghiên cứu
Tác động đến giáo dục lập trình và các định kiến sẵn có
- Kết quả nghiên cứu ủng hộ nhận định rằng trong lập trình, ít nhất là khi học Python, năng lực ngôn ngữ là một yếu tố quan trọng, còn năng lực toán học không dự đoán mạnh tốc độ học hay thành tích
- Lập trình thường được xem là lĩnh vực “đậm đặc toán học”, nhưng nghiên cứu này khiến người ta phải nhìn lại những giả định lâu nay về điều kiện tiên quyết để học lập trình
- Một số lĩnh vực đòi hỏi cả toán học và năng lực lập trình, nhưng không thể vì thế mà khẳng định đó là phần lớn các nghề lập trình khả dĩ
- Việc yêu cầu mọi sinh viên ngành khoa học máy tính phải học toán cao cấp dường như là không cần thiết nếu nhìn từ kết quả nghiên cứu này, và sự linh hoạt trong yêu cầu toán học có thể giúp ích cho việc tuyển sinh và giữ chân sinh viên
- Trong bối cảnh lập trình trở thành điều kiện đầu vào của nhiều nghề nghiệp, vẫn có thể có những người phù hợp với khoa học máy tính dù họ không phải kiểu người “giỏi toán”
Bình luận về tính đa dạng và phương pháp giáo dục
- Phụ nữ thường cảm thấy mình không khớp với hình ảnh “lập trình viên máy tính điển hình”
- Trung bình, bé gái có xu hướng có năng lực ngôn ngữ cao hơn bé trai, và nếu năng lực ngôn ngữ dự đoán khả năng học lập trình thì phụ nữ cũng có thể nhận được danh tiếng nhiều hơn là học lập trình tốt
- Việc kết nối rõ ràng lập trình với năng lực ngôn ngữ, đồng thời cung cấp các lựa chọn đào tạo không yêu cầu toán cao cấp, có thể giúp cải thiện tính đa dạng
- Các lựa chọn kiểu bootcamp đang tăng nhanh về độ phổ biến có thể dẫn người tham gia đến sự nghiệp lập trình mà không buộc họ phải học giải tích
- Một bài bình luận đồng hành cho rằng giáo dục lập trình có thể đang thiên về các bài tập nặng tính toán học như tính số Fibonacci hay triển khai thuật toán sắp xếp, trong khi các bài tập sáng tạo và thiên về ngôn ngữ hơn có thể giúp nhiều sinh viên học tốt hơn
1 bình luận
Ý kiến trên Hacker News
Nếu đọc bài báo thực sự thì tiêu đề gần như là câu view, và kết quả nghiên cứu cũng bị phóng đại khá nhiều
Mẫu quá nhỏ nên chỉ có 36 người hoàn thành, và năng lực toán có R²=.27, ngôn ngữ khoảng R²=.31
Sau đó họ dùng hồi quy từng bước để tính mức đóng góp vào phương sai, nhưng gần như bỏ qua kết quả trước đó và cho ra vẻ như đóng góp của năng lực toán hầu như không đáng kể. Lý do là hai biến có khoảng 10% phương sai dùng chung, và hồi quy từng bước thì tham lam nên biến nào vào trước sẽ lấy phần đó
Nếu thêm một bài kiểm tra ngôn ngữ tương tự nữa thì cũng có thể cho ra kết quả rằng đóng góp phương sai riêng gần như không có
Các phép đo cũng đều rất nhiễu, từ người đánh giá là con người đến thời gian hoàn thành, nhưng không có nỗ lực nào để xử lý việc này
Với các giá trị được đưa ra, nếu xét kết luận “học ngôn ngữ có ý nghĩa hơn năng lực toán” bằng Steiger test thì p-value là 0.772, hoàn toàn không có ý nghĩa thống kê
Cuối cùng thì năng lực toán giải thích 27% phương sai, năng lực ngôn ngữ giải thích 31%, nhưng chỉ là sau khi thêm biến có tương quan thì đóng góp riêng của năng lực toán giảm xuống còn 2%
Việc hồi quy cho ra độ dốc dương cũng có vẻ bị ảnh hưởng mạnh bởi vị trí của các điểm ngoại lai, còn biểu đồ phân tán về năng khiếu ngôn ngữ thì ít nhất vẫn có thể nhìn thấy bằng mắt một quan hệ đi lên giữa hai biến
Tôi cho rằng code tốt không dừng ở việc giải được bài toán, mà còn giải theo cách dễ đọc và được mô-đun hóa
Phần giải quyết vấn đề trong việc viết code cần năng lực toán học, còn phần tổ chức cấu trúc thì cần năng lực viết lách. Code lộn xộn khiến sau này khó đọc lại hoặc mở rộng, từ đó cản trở chính việc giải quyết vấn đề
Những chứng minh toán dài cũng cần khả năng tổ chức, nhưng trong toán học dường như có nhiều “bước nhảy lớn” hơn hoặc những khái niệm vốn dĩ phức tạp mà chỉ viết tốt thôi cũng khó chạm tới
Trong khi đó, lập trình có nhiều “bước nhỏ”, nên ngay cả khi không quá xuất sắc, nếu kiên trì xây từng thành phần và không để phụ thuộc chồng chéo quá nhiều thì vẫn có thể tạo ra những chương trình ấn tượng
Trên thực tế, thời gian đọc cơ sở dữ liệu và schema giao diện để hiểu hệ thống còn nhiều hơn thời gian thao tác toán học
Dù có những ngoại lệ như game engine, ngay cả đồ họa 3D cũng nhiều khi không cần vượt quá phần đầu của đại số tuyến tính
Nhiều khi code không mô-đun lại dễ đọc hơn và nhanh hơn, còn trong ngôn ngữ bậc thấp hoặc ngôn ngữ quản lý bộ nhớ thủ công, lời giải tốt nhất hoặc đúng nhất đôi khi lại khá xa rời tính dễ đọc
Tính dễ đọc còn tùy người xem và bị xếp sau các yêu cầu hình thức
Cá nhân tôi thích các hàm dài nhưng được sắp xếp tốt, chỉ mô-đun hóa ở mức tối thiểu. Ranh giới file, ngữ cảnh của hàm mới và những lần chuyển ngữ cảnh như vậy từng là nguồn gốc lớn nhất của độ phức tạp và lỗi khi bảo trì hay mở rộng
Mô-đun hóa có thể làm tăng những ranh giới này, che giấu độ phức tạp và khiến khó suy luận hay sửa các vấn đề về tổ chức hơn. Hàm dài có thể kém dễ đọc hơn lúc đầu, nhưng lại tạo ra mô hình tinh thần rõ ràng hơn và dẫn tới lời giải tốt hơn
Khác với những thứ có tương tác phức tạp với cái khác, các khái niệm tự thân đã phức tạp dường như giống công cụ tùy biến trong một chứng minh hơn là đối tượng tổng quát
Câu “lập trình có nhiều bước nhỏ” được diễn đạt rất hay. Tôi cũng thường nghĩ rằng với các lập trình viên viết code dễ bảo trì, trí nhớ làm việc ở mức trung bình lại có thể là lợi thế
Vì nếu bạn không nhớ nổi thứ mình viết 3 phút trước thì cũng chẳng thể tạo ra đống spaghetti code chạy được. Dĩ nhiên đây cũng là một giả thuyết khá tự hợp lý hóa
Việc tránh phụ thuộc không cần thiết giữa các component, phân tích vấn đề để tìm ra những phần có thể tách rời cũng vậy
Điều gây bức bối khi dạy lập trình là áp lực phải luôn giữ thái độ rằng “ai cũng chắc chắn có thể học lập trình”
Nhiều người muốn học lập trình ngay từ động lực đã mơ hồ hoặc lệch hướng, và có thể đầu tư vào kỹ năng khác sẽ hiệu quả hơn nhiều. Đây không phải chuyện tinh hoa, mà là tôi cũng có thể không làm được những việc người khác thấy tự nhiên
Nỗ lực chia dài trong đầu khá giống với nỗ lực lần theo một mớ spaghetti code khó hiểu
Bạn có thể trở nên nhanh và giỏi ở phép chia nhẩm, nhưng vẫn mãi không hiểu được định lý cơ bản của giải tích
Có những người rất giỏi bới tung trong code rác, và vì được trả tiền nên buộc phải giỏi việc đó, nhưng vẫn mơ hồ là họ đang giỏi phần nào của lập trình
Nếu tôi cảm thấy công việc chỉ toàn là luyện kiểu chia dài trong đầu thì lúc nào tôi cũng đi tìm chỗ làm mới. Nếu cái giá của việc tụt lại là như vậy thì có nhiều tiền đến đâu cũng không đáng
Dù nghiên cứu của Prat et al. (2020) gợi ý rằng năng lực ngôn ngữ là biến dự báo tốt hơn năng lực toán học trong việc học Python, nhưng kết luận này rất dễ bị đơn giản hóa quá mức nên cần đọc thận trọng
Thứ mà nghiên cứu đo lường là năng lực tính toán chức năng trong việc giải các bài toán số học thường ngày. Điều này khá khác với toán học bậc cao thường gắn với lập trình như logic hình thức, trừu tượng ký hiệu và ngôn ngữ hình thức
Điều quan trọng để hiểu đệ quy, suy luận kiểu và thiết kế thuật toán không phải là số học cơ bản mà là những năng lực trừu tượng hơn này. Vì vậy, việc năng lực tính toán chức năng có sức dự báo thấp trong nghiên cứu này không có nghĩa là suy luận toán học chuyên sâu không liên quan đến lập trình
Ngoài ra, ngôn ngữ được nghiên cứu là Python, vốn gần với ngôn ngữ tự nhiên và được thiết kế để dễ đọc. Điều này có thể có lợi cho những người mạnh về ngôn ngữ, nhưng chưa chắc có thể khái quát sang C, Lisp hay Haskell, những ngôn ngữ có mật độ ký hiệu và logic cao hơn
Ngôn ngữ và toán học không phải là hai lĩnh vực đối lập mà cùng chia sẻ nền tảng nhận thức như trí nhớ làm việc, sự chú ý điều hành và khả năng xử lý cấu trúc phân cấp. Điểm cốt lõi không phải là bên nào “thắng”, mà là chúng tương tác và bổ sung cho nhau ra sao trong các bối cảnh lập trình khác nhau
Giới học thuật đã cố gắng hình thức hóa nhiều khía cạnh của lập trình suốt hàng chục năm, nhưng dường như vẫn chưa hiểu được vì sao tương quan giữa người tốt nghiệp khoa học máy tính và các lập trình viên đổi mới lại thấp đến vậy
Nhiều người làm tốt trong thực tế học về đệ quy theo cách khác: khi đâm đầu vào một bức tường nào đó rồi chợt nhận ra “à, thì ra đệ quy tồn tại vì thế”. Không phải vì họ đã học trừu tượng ký hiệu, ngữ nghĩa ký hiệu hay lý thuyết kiểu
Sự thật khó chịu là gần như toàn bộ lập trình chuyên nghiệp và lập trình đổi mới không dùng đến phần toán cao cấp bắt buộc trong chương trình đại học
Tôi cho rằng sự hà khắc của nền giáo dục này phần lớn được duy trì bởi kiểu “tôi đã phải làm thì bạn cũng phải làm” và vai trò gác cổng học thuật
Khi bạn lập trình đủ giỏi để bước vào giai đoạn năng suất nhất đời mình, nó mang cảm giác như một ngôn ngữ. Bạn có thể đơn giản diễn đạt nó như đang nói vậy
Kết quả nghiên cứu này khá thuyết phục với tôi. Tôi luôn đọc rất tốt và đọc rất nhanh, và khả năng đó đã cực kỳ hữu ích trong sự nghiệp lập trình của mình
Điểm SAT toán của tôi là 710, cũng ổn, nhưng SAT ngôn ngữ vào cuối thập niên 1990 là 800 tuyệt đối
Khi bắt đầu dự án thạc sĩ về mạng cảm biến không dây, người hướng dẫn đã in mã nguồn TinyOS ra, bảo tôi mang về đọc một tuần rồi quay lại khi nghĩ rằng mình đã hiểu đủ
Trải nghiệm đó có tính định hình, và từ đó về sau mỗi khi tham gia một dự án mới, tôi đều dành thời gian đọc mã để hiểu toàn bộ các phần khớp với nhau như thế nào
Giờ tôi là lập trình viên web cấp cao, và vẫn không giỏi hơn mức toán cơ bản cần cho đời sống hằng ngày. Dù vậy, nhờ 18 năm làm dịch vụ ăn uống nên tôi ước lượng phần trăm khá nhanh
Những lập trình viên giỏi nhất mà tôi từng làm việc cùng vẫn là những người có tư duy ngôn ngữ rất mạnh. Họ dùng được nhiều ngôn ngữ dù không cần thiết, hoặc có bề dày đọc văn chương khó trong thời gian dài
Ít nhất họ có một kiểu sắc sảo rất riêng ở cấp độ siêu nhận thức và siêu ngôn ngữ
Tôi vẫn cho là vậy, nhưng khi bằng cấp và lộ trình nghề nghiệp trở nên đại chúng hơn thì điều đó khó nhận ra ngoài đời hơn. Thêm nữa, trong thực tế, khả năng thiết kế tốt và giải thích rõ ràng được cần đến thường xuyên hơn nhiều so với việc tự xây thuật toán từ nền móng, nhưng nếu tối ưu kiểu leetcode thì dĩ nhiên bộ não thiên toán sẽ có lợi thế hơn
Nhưng tôi rất dở toán và còn ghét nó. Đọc phần lớn văn bản toán học khiến tôi có cảm giác như bị chứng khó đọc
Hồi tiểu học tôi học khá tốt, nhưng rồi nhanh chóng thấy nản khi mọi thứ chuyển sang tập trung vào phương trình, những thứ trừu tượng và các nội dung không rõ ứng dụng hơn là thuật toán
Ngược lại, lập trình đến với tôi rất tự nhiên và dễ học. Khi học những chủ đề bị coi là “khó” như con trỏ hay đệ quy, thực ra chúng quá dễ đến mức tôi còn mất nhiều thời gian hơn để tự thuyết phục rằng “không thể dễ thế được, chắc mình đang bỏ sót gì đó”
Ở chỗ làm nào tôi cũng là người nhận các bài toán “khó” hay các vấn đề “mức thấp”
Mỗi khi buộc phải đọc toán, tôi chỉ hiểu được khi biến mọi thứ thành từng bước và để các giá trị ví dụ đi qua từng bước đó, tác động lẫn nhau theo cách cụ thể. Tôi phải chuyển tất cả thành thuật toán
Cách cố gắng biểu đạt ý nghĩa bằng phương trình và chứng minh không hợp với tôi; tôi chỉ hiểu được khi biến từng ranh giới giữa các ký hiệu thành từng bước rồi lần lượt đi qua chúng
Có lẽ lập trình hợp với tôi vì cách người ta thường tiếp cận và học nó xoay quanh thuật toán, còn các kiểu biểu đạt toán học khác thì ít hơn nhiều. Ngữ cảnh về việc biến và thủ tục có ý nghĩa gì cũng phong phú hơn rất nhiều so với một đống ký hiệu
Nếu Perl bị gọi là đống dây rối thì không biết văn phong toán học phải gọi là gì. So với mớ lảm nhảm thuần túy của một tín đồ Cthulhu điên loạn, Perl còn là thứ rõ ràng nhất thế giới
Vấn đề thực sự là các ngôn ngữ có cú pháp kiểu toán học. Lối viết theo thói quen dùng biến một ký tự và khai báo đẳng thức để xử lý công việc thì rất khó đọc, và tôi hoàn toàn không đọc nổi Haskell
Những khái niệm khó tương tự như monad hay type class lại dễ hơn khi xem bằng các ngôn ngữ bình thường hơn, nhưng cứ học qua Haskell là tôi không tiến nổi chút nào. Ngay cả chương trình mức fizzbuzz viết bằng Haskell tôi cũng mất rất lâu mới hiểu được
Điểm phần ngôn ngữ của tôi cao hơn hẳn, và tôi đã xây dựng một sự nghiệp kỹ sư phần mềm tuyệt vời qua các dự án chuyên nghiệp quy mô lớn ở những tập đoàn lớn mà ai cũng biết, làm việc với nhiều ngôn ngữ cùng lúc
Khái niệm “bộ não thiên về ngôn ngữ” hay “bộ não thiên về toán học” không đứng vững trừ khi thí nghiệm cho thấy các neuron liên quan thực sự được chia thành hai vùng riêng biệt, không chồng lấn, chuyên trách lần lượt cho ngôn ngữ và toán học
Bản thân toán học cũng là một ngôn ngữ hình thức do con người tạo ra; nó bắt đầu từ các định nghĩa và tiên đề của logic và lý thuyết tập hợp, nhưng ngay cả những định nghĩa và tiên đề đó cũng phải được diễn đạt trước hết bằng ngôn ngữ của con người
Những nhà toán học thành thạo đọc các định lý viết bằng chữ cái Hy Lạp trên bảng như đọc tiếng Anh bình thường, điều này gợi ý rằng họ suy nghĩ về chúng theo cách tương tự như với tiếng Anh thông thường
Tất nhiên nếu muốn, họ cũng có thể hình dung trong đầu một biểu diễn trực quan đẳng cấu với ngôn ngữ đó
Cụm từ “bộ não ngôn ngữ” và “bộ não toán học” chỉ là những hư cấu hữu ích; việc chúng có thật sự là các khối thịt khác nhau hay không thì không quan trọng
Dù vậy, hầu hết mọi người có lẽ đều đồng ý rằng giải quyết vấn đề, diễn đạt suy nghĩ bằng lời và diễn đạt suy nghĩ bằng toán học là những kỹ năng rất khác nhau
Như câu nói của Henri Poincaré: “Thơ là nghệ thuật đặt những cái tên khác nhau cho cùng một thứ, còn toán học là nghệ thuật đặt cùng một cái tên cho những thứ khác nhau”, rốt cuộc tôi nghĩ nó gần với khả năng đặt tên tốt, đặc biệt là cho sự trừu tượng hóa
Tuy nhiên theo kinh nghiệm của tôi, bài SAT cách đây 20 năm ở phần ngôn ngữ cũng có nhiều dạng trừu tượng như phép loại suy, và phần toán cũng tương tự. Trong một lần thi tôi được 660 ngôn ngữ và 650 toán, gần như ngang nhau
Oliver Sacks đã viết về những tác dụng phụ kỳ quái của chấn thương não
Cũng có thể làm thí nghiệm bằng cách gây tổn thương nhiều vùng não của nhà toán học hay nhà văn, nhưng kích thích thần kinh hoặc gây mê ở các vùng não có lẽ cũng có thể cho thấy điều gì đó
Lập luận này kỳ lạ ở nhiều phương diện. Tôi không tin có thực thể nào như “bộ não ngôn ngữ” hay “bộ não toán học”, nhưng đồng thời cũng có thể thấy rằng nhiều người không hiểu toán học là gì, và chính điều đó lại có thể được xem là bằng chứng ủng hộ “bộ não toán học”
Toán học không phải về tính toán mà là về mẫu hình. Khi học đại số, người ta nghĩ “Tại sao toán lại có chữ cái?”, nhưng đi xa hơn nữa thì sẽ nghĩ “Tại sao toán lại có số?”
Bi kịch lớn của giáo dục toán là quá tập trung vào tính toán. Những chủ đề hữu ích như lý thuyết nhóm, tổ hợp, đồ thị, lý thuyết tập hợp, lý thuyết phạm trù đều có nền tảng mà trẻ em cũng có thể hiểu, thế mà chỉ đến khi học chuyên ngành toán bậc đại học hoặc cao học mới được dạy
Những chủ đề này có chiều sâu khổng lồ, nhưng nhiều phần trong đó giúp hình thức hóa cách tư duy thì trẻ em cũng có thể hiểu được. Ví dụ tôi khuyên xem Visual Group Theory[0]
Toán học là về sự trừu tượng hóa, nhưng kỳ lạ là chúng ta lại để dành nó đến tận “cuối game”
Tôi có thể nói chắc rằng hiểu được những điều này sẽ giúp học nhanh hơn và có ảnh hưởng sâu sắc đến cách suy nghĩ. Tuy nhiên, phải thật sự tiếp nhận sự trừu tượng đó, và không tự giới hạn nó như một công cụ chỉ dùng cho một vài ứng dụng cụ thể
Nhiều người thấy khó với các bài toán có lời văn, nhưng ngay cả tình huống khôi hài kiểu người anh em họ Throckmorton định mua 500 quả dưa hấu thì đó rốt cuộc vẫn là một phần của việc nối toán học với thế giới thực
Lý do toán “cao cấp” giúp tôi học nhanh hơn là vì ở cấp độ đó, toán dạy về sự trừu tượng hóa, tức là dạy một cách tư duy. Ngay cả khi không viết phương trình, nó vẫn cực kỳ hữu ích
Thực ra toán học không phải là viết phương trình, nhưng khi mọi thứ trở nên phức tạp thì phương trình rất hữu ích nên người ta dùng chúng
[0] https://www.youtube.com/watch?v=UwTQdOop-nU&list=PLwV-9DG53N...
Ví dụ, tôi chưa từng nghe ai nói rằng ma trận là một sự trừu tượng hóa hữu ích, hay một cách viết rút gọn, để biểu diễn các phương trình tuyến tính
Tương tự, số ảo cũng là một sự trừu tượng hóa được phát minh ra để làm cho một số phép tính trở nên dễ dàng hơn
Tôi ước gì mình đã được học từ góc nhìn về việc những sự trừu tượng đó hình thành như thế nào và vì sao chúng hữu ích
“Trong giờ âm nhạc, chúng tôi lấy khuông nhạc ra, giáo viên viết các nốt lên bảng, và chúng tôi chép lại hoặc chuyển giọng sang điệu khác. Phải viết đúng khóa nhạc và hóa biểu, và giáo viên soi rất kỹ xem nốt đen có được tô kín hoàn toàn hay không. Có lần tôi làm đúng một bài về âm giai nửa cung nhưng không được điểm vì hướng thân nốt bị sai.”
https://en.m.wikipedia.org/wiki/A_Mathematician%27s_Lament
Bản thân tôi cũng đã trải nghiệm việc khả năng học tập và suy luận tăng nhanh khi tự học đại số trừu tượng
Về cơ bản có bốn lộ trình; một lộ trình đến năm cuối cấp ba mới học xong Đại số 1, một lộ trình học lượng giác vào năm cuối, một lộ trình khác cũng đến lượng giác nhưng không có tiền giải tích, và chỉ lộ trình cuối cùng là học đến lượng giác và tiền giải tích
Ngay cả lớp cuối cùng đó cũng lại được chia nhỏ thêm: một số chỉ học tiền giải tích, một số học Giải tích 1 cùng AP Calculus AB hoặc IB Math SL, và một nhóm nhỏ hơn học AP Calculus BC hoặc IB Math HL
Trong khối của tôi, chỉ khoảng 20 học sinh trong tổng số 500–600 học sinh tốt nghiệp dự thi AP Calculus AB
Cụm từ “năng lực ngôn ngữ và năng lực giải quyết vấn đề” tự nó đã là tín hiệu cảnh báo đầu tiên. Tiêu đề đã biến chuyện này thành vấn đề chỉ của ngôn ngữ
Việc năng lực giải quyết vấn đề có liên quan là khá hiển nhiên, nhưng ngôn ngữ thì kém rõ ràng hơn
Tôi đã lập trình gần như suốt cả đời nhưng không nghĩ mình là người ăn nói giỏi. Năng lực ngôn ngữ cũng chỉ ở mức tạm được, và khó có thể kỳ vọng học thêm ngôn ngữ tự nhiên mới
Vì vậy tôi hoài nghi, và khi xem nghiên cứu thì trước hết, “toán học” đã bị đổi thành năng lực tính toán. Tôi nghĩ lập trình gần với đại số hơn, nhưng ngay cả như vậy thì vẫn ít nghiêm ngặt hơn và dễ debug hơn
Cách đo năng lực tính toán trong nghiên cứu là một thang đo dựa trên Rasch, chọn ra 8 câu có khả năng dự báo cao nhất sau khi đánh giá 18 câu hỏi về năng lực tính toán trên nhiều thước đo
Hơn nữa, nghiên cứu này giờ cũng là dữ liệu từ 5 năm trước rồi
Nếu có thể giải một vấn đề nhưng không thể giải thích vấn đề là gì, hoặc vì sao lời giải đó giải quyết được nó, thì khó mà gọi là người giải quyết vấn đề giỏi
Người giải thích vấn đề rất tốt nhưng không nghĩ ra lời giải vẫn còn hơn nhiều lập trình viên ngoài kia, và tôi muốn làm việc cùng họ hơn là với người chỉ ném ra lời giải mà không có “quá trình giải”
Thực ra, nếu không có khả năng biểu đạt như vậy thì cũng khó mà nắm được giải quyết vấn đề là gì theo nghĩa nguyên sơ
Trong bối cảnh này, sáng tạo có thể là khả năng tái cấu trúc vấn đề theo cách dễ tiếp cận hơn. Trong nhiều trường hợp, kiểu đóng khung đó hàm ý một lời giải hiển nhiên, hoặc một tập lời giải với những đánh đổi rõ ràng
Tôi từng thấy một tương quan khá thú vị giữa những người học lập trình giỏi và những người giỏi spelling bee tiếng Anh
Có vẻ giống nhau ở chỗ vừa thực hiện một quy trình mang tính thuật toán, vừa giữ trong đầu rất nhiều giai thoại và các ngoại lệ quy tắc khó nhằn
Não tôi dường như hợp với việc lưu trữ và truy xuất loại dữ liệu này, và điều đó cũng tương quan cao với các giao diện CLI và những cấu trúc lệnh kỳ quặc kiểu vậy
Tôi rất cho rằng việc định nghĩa “não thiên về ngôn ngữ” và “não thiên về toán học” là một lưỡng phân giả tạo và là khoa học thần kinh vớ vẩn
Toán học, tự thân nó, là một ngôn ngữ: một tập hợp ký hiệu được tạo ra để biểu đạt các khái niệm
Nghiên cứu này cho tôi cảm giác như đang cố nói điều mà hầu hết mọi người vốn đã biết: rằng nếu có hứng thú, động lực và cơ hội, ai cũng có thể trở thành lập trình viên giỏi, nhà toán học giỏi hay bất cứ thứ gì
Có một cuốn sách thú vị cho thấy sự thay đổi trong nhận thức xã hội về các nhà toán học, và xa hơn là các nhà khoa học máy tính, là “Duel at Dawn”
Hình ảnh hiện đại, tương đối gần đây của họ là một thiên tài ẩn dật với năng lực bẩm sinh, xa lạ và siêu phàm trong việc xử lý con số và thông tin, đôi khi còn bị ám chỉ là tự kỷ. Một nguyên mẫu như “Sheldon Cooper” trong show truyền hình “the big bang theory”
Nhưng điều đó là sai
Không ai sinh ra đã có năng lực siêu phàm để giỏi bất cứ thứ gì. Người làm điều gì đó cực kỳ giỏi là người đã nỗ lực rất nhiều để giỏi việc đó, dù người khác có nhận ra hay không
Ban đầu tôi chỉ trích nghiên cứu khi mới đọc bài báo, nhưng sau khi lướt qua bài báo khoa học được trích dẫn thì tôi đã điều chỉnh những phê bình cụ thể của mình. Dù vậy, bản thân bài báo đó vẫn không có vẻ gì hơn một lập luận ưu sinh yếu ớt được bọc trong thuật ngữ tâm lý học và thống kê
Bài báo gây hiểu lầm ở mức cực độ, tôi gần như muốn gọi nó là ác ý
Bản thân nghiên cứu nói rằng suy luận lưu loát và dung lượng trí nhớ làm việc giải thích 34%, năng lực ngôn ngữ giải thích 17%, công suất dải beta và low-gamma của EEG trạng thái nghỉ giải thích 10%, còn năng lực tính toán giải thích 2%
Nhưng ở đây họ lại đồng nhất năng lực toán học với năng lực tính toán. Bản thân nghiên cứu cũng gợi ý như vậy, nhưng tôi về cơ bản không đồng ý
Tôi cho rằng năng lực toán học gần với suy luận lưu loát hơn nhiều so với năng lực tính toán