Dijkstra có nghĩa là gì khi ông đề xuất một sự thành thạo đặc biệt tốt về ngôn ngữ bản địa của một người? [đóng cửa]


28

Dijkstra viết ở đây :

Bên cạnh thiên hướng toán học, một khả năng làm chủ đặc biệt của ngôn ngữ bản địa là tài sản quan trọng nhất của một lập trình viên có năng lực.

Tôi không hiểu phần sau của trích dẫn này. Bạn có thể vui lòng giải thích hoặc giải thích?

PS tôi đã lớn lên ở Ấn Độ. Tôi nói tiếng Bengal ở nhà; Tôi nói tiếng Marathi trong cộng đồng mà tôi sống; Tiếng Hindi là ngôn ngữ quốc gia và được sử dụng rất rộng rãi, vì vậy tôi biết điều đó, và ở trường và đại học, tôi được dạy bằng tiếng Anh là ngôn ngữ đầu tiên. Tất nhiên, bây giờ tôi nghĩ trong vô số ngôn ngữ và tôi phải thừa nhận rằng tôi không thành thạo bất kỳ ngôn ngữ nào . Điều này thực sự ảnh hưởng đến năng khiếu lập trình của tôi? Nếu có thì thế nào? và có giải pháp nào không?


20
Thú vị ... Tôi có một người bạn tốt là người Ấn Độ (tiếng Tamil), và tôi đã từng thấy anh ta đóng băng hoàn toàn khi ai đó hỏi anh ta cách nói một số cụm từ "trong ngôn ngữ của anh ta". Nói về điều đó với anh ta sau này, tôi đã học được rằng anh ta KHÔNG CÓ ngôn ngữ. Anh ấy và vợ anh ấy lớn lên nói những ngôn ngữ khác nhau hoàn toàn, anh ấy không thể nói chuyện với bố mẹ chồng. Cả hai đều nói được ngôn ngữ của thành phố nơi họ gặp nhau và tiếng Anh. Nó thật hấp dẫn. Tôi không có ý tưởng rằng Ấn Độ bị phân mảnh về mặt ngôn ngữ.
Dan Ray

4
Không phải ngẫu nhiên mà các lập trình viên giỏi cũng có xu hướng trở thành những nhà văn rất giỏi; biết cách thể hiện suy nghĩ của bạn một cách rõ ràng là một điều cần thiết cho cả hai nghề thủ công.
Jon Purdy

1
Tôi không thể tự hỏi liệu sẽ có ít cách giải thích từ ngữ của Dijkstra hơn nếu chúng được viết bằng tiếng mẹ đẻ của anh ấy (tiếng Hà Lan), trong đó (tôi cho rằng) anh ấy có khả năng làm chủ tuyệt vời.
Brendan

Câu trả lời:


29

Trong khi tôi đồng ý với những gì alex và quick_now đã nói, tôi tin rằng có thể có một vòng quay khác. Đây là lý thuyết của riêng tôi và tôi không cho rằng Dijkstra có ý nghĩa tương tự.

"Làm chủ ngôn ngữ" là gì: Đó là khả năng lấy các khối xây dựng cơ bản của ngôn ngữ và đặt chúng vào các cụm từ và câu có tính xây dựng, hữu ích. Bảng chữ cái và ký tự là vô nghĩa trong chính họ. Bạn cần phải đặt chúng lại với nhau và có ý nghĩa từ nó. Từ ngữ là vô nghĩa của chính họ; chỉ khi bạn đặt chúng theo một trình tự phù hợp dựa trên cú pháp và ngữ pháp thì chúng mới thể hiện những ý tưởng cụ thể.

Nó không giống hệt nhau trong lập trình máy tính? Chúng tôi kết hợp một vài từ khóa và biểu tượng và làm cho các công cụ cụ thể ra khỏi chúng. Một ngôn ngữ lập trình có các ký hiệu và ngữ pháp giống như ngôn ngữ tự nhiên. Nắm vững ngôn ngữ lập trình đòi hỏi khả năng kết hợp các biểu tượng và quy tắc (vô nghĩa riêng lẻ) này lại với nhau để làm cho một cái gì đó có ý nghĩa và hữu ích.

Tôi tin rằng điều này có nghĩa là có một sự kết hợp trực tiếp giữa khả năng học ngôn ngữ của con người và truyền thông máy tính. Cả hai đều cần cùng một bộ khả năng và khả năng tư duy của con người. Hãy xem giữa các đồng nghiệp của bạn và bạn sẽ thấy rằng những người có kỹ năng lập trình kém cũng là những người không thể nói hoặc viết rõ ràng như những người khác. Những người giỏi chọn ngôn ngữ của con người cũng có những kỹ năng cần thiết để trở thành lập trình viên giỏi.


3
+1, đây là cách giải thích ban đầu của tôi về tuyên bố của Dijkstra khi tôi đọc nó.
Cướp

1
@quickly_now: "rất nhiều lập trình viên có thể viết mã rất tốt nhưng thiếu khả năng giao tiếp tốt trong một trong hai cách nói hoặc viết" Tôi sẽ tranh luận điều đó. Tôi sẽ thay đổi điều đó từ rất tốt sang chấp nhận được . Sau 30 năm làm nhà thầu, tôi đã gặp rất nhiều lập trình viên. Những cái không rõ ràng có thể - cuối cùng - tạo ra mã làm việc. Nhưng các lập trình viên giỏi thực sự có thể viết bằng nhiều ngôn ngữ, cả tự nhiên và nhân tạo.
S.Lott

4
Bản chất của việc trở thành một lập trình viên giỏi là trở thành một người giao tiếp tốt. Đó là cách tôi diễn giải nó.
Neil

8
@quickly_now, Neil, Onesimus; Tôi nghĩ rằng nó sâu hơn một chút so với giao tiếp bằng lời nói hoặc bằng văn bản. Tôi tin rằng anh ấy đang nói về mối quan hệ giữa ngôn ngữ và nhận thức, vd. web.mit.edu/newsoffice/2008/lingu-0624.html . Tôi nghĩ nó có nghĩa là thông thạo một số tonque (thường là tonque bản địa, vì nó không phổ biến hơn trong ngôn ngữ thứ hai hoặc thứ ba) cho thấy các cấu trúc ngôn ngữ tinh thần mạnh mẽ tương ứng trực tiếp với khả năng lập trình.
Cướp

1
@OnesimusUnbound, tôi nghĩ rằng Dijkstra đã đề cập đến tiếng mẹ đẻ bởi vì thật hợp lý khi hy vọng mọi người sẽ giỏi tiếng mẹ đẻ của họ (trong nhiều trường hợp nhưng không phải tất cả, cũng là ngôn ngữ không cấu trúc của họ) nhưng không nhất thiết phải bằng ngôn ngữ thứ hai / thứ ba của họ . Tuy nhiên, trong thế giới hiện đại, nó có thể khác, ví dụ tôi giỏi tiếng Anh hơn tiếng mẹ đẻ của tôi. Nhưng đó là vì tôi chưa bao giờ học nó ở trường
DPD

23

Dijkstra đang nói rằng bạn phải có khả năng viết và nói rõ ràng, chính xác và mạnh mẽ bằng ngôn ngữ xung quanh nơi làm việc của bạn. Anh ấy hoàn toàn đúng: trừ khi bạn có thể nói và viết về các vấn đề kỹ thuật (và phi kỹ thuật) theo cách mà người khác có thể hiểu ngay lập tức, bạn bị cản trở và hơi kém hiệu quả khi là một kỹ sư phần mềm.

Ý tưởng là viết về mã cũng quan trọng như viết mã.

SO là ví dụ hoàn hảo: đã bao nhiêu lần chúng ta thấy những câu hỏi hay, dứt khoát, có giá trị bị thổi bay hoặc đóng cửa vì người đăng không thể diễn đạt tốt bằng tiếng Anh? Trả lời: quá nhiều.


7

Câu trích dẫn nói rằng bạn cần biết ngôn ngữ mẹ đẻ của mình (ví dụ Marathi trong trường hợp của bạn). Đây là một tài sản quan trọng.

Các nhà tâm lý học thường nghĩ rằng việc biết một ngôn ngữ tốt sẽ giúp bạn thể hiện suy nghĩ của mình tốt hơn. Một số người nói rằng tất cả những suy nghĩ chúng ta làm chỉ giới hạn trong ngôn ngữ chính của chúng ta. Ngôn ngữ càng phong phú (và kiến ​​thức về nó), người đó có thể giao tiếp và cấu trúc các ý tưởng tốt hơn.

Biết nhiều ngôn ngữ cũng giúp hiểu các mô hình tư duy khác nhau.


7
Nếu "Một số người nói rằng tất cả những suy nghĩ chúng ta làm chỉ giới hạn trong ngôn ngữ chính của chúng ta" là đúng, thì ngôn ngữ mẹ đẻ của tôi không phải là (không còn) ngôn ngữ chính của tôi? Thôi nào. Ngôn ngữ mẹ đẻ và ngôn ngữ chính của tôi là tiếng Hà Lan, nhưng ngôn ngữ tư duy của tôi khi lập trình là tiếng Anh ... Và không chỉ bởi vì hầu hết các thuật ngữ và hầu hết tất cả các bài viết giúp tôi nghĩ về các thách thức lập trình đều bằng tiếng Anh. Trên thực tế, tôi cảm thấy khó khăn khi làm việc với một máy tính nói tiếng Hà Lan tại / với tôi, không thể tìm thấy bất cứ điều gì và phụ thuộc vào vị trí thực đơn của mọi thứ. (Một lý do khác tại sao hút cá nhân của menu).
Marjan Venema

7

Nhìn toàn bộ tác phẩm, đây là một danh sách thú vị nhưng có từ năm 1975. Thật công bằng khi nói rằng ở một mức độ nào đó, thời gian đã thay đổi trong giai đoạn can thiệp, khiến các phần của danh sách các nguyên lý đó có phần lỗi thời.

Một kỹ năng quan trọng mà tôi tin rằng các lập trình viên nên có là khả năng giao tiếp hiệu quả. Điều này không chỉ có nghĩa là giải thích; nó có nghĩa là sự hiểu biết Bất kể ngôn ngữ làm việc của bạn là gì, tiếng Anh trong trường hợp của bạn, mặc dù không phải là ngôn ngữ mẹ đẻ của bạn, những người gặp khó khăn trong việc giao tiếp hiệu quả bằng ngôn ngữ mẹ đẻ của họ sẽ không tìm thấy nó dễ dàng hơn ở nơi khác.

Một lưu ý chung, thật công bằng khi nói rằng bất kể vị trí của bạn trong cuộc sống là gì, nếu bạn gặp khó khăn trong ngôn ngữ mẹ đẻ của mình, bạn sẽ bị thiệt thòi trong cuộc sống hàng ngày.

Tôi sẽ không bị cắt ngang những gì anh ấy nói khi làm chủ - dựa trên sự đóng góp của bạn ở trên, tôi nghi ngờ bạn có nhiều hơn tiếng Anh đầy đủ và từ đó, tôi ngoại suy rằng bạn giao tiếp hiệu quả bằng các ngôn ngữ khác của bạn.


Thật. Tôi nghĩ Dijkstra có một điểm, nhưng từ "lập trình viên" nên được thay thế bằng "nhà khoa học máy tính". Tất nhiên một nhà khoa học cần có khả năng tranh luận và viết bằng ngôn ngữ rõ ràng. Điều tương tự cũng áp dụng cho các lập trình viên: bạn không dụ dỗ tôi nghĩ rằng bạn tranh luận với các đồng nghiệp (cũng nói tiếng mẹ đẻ) của mình bằng một ngôn ngữ khác. Ở Hà Lan, tất cả các môi trường phát triển đều bằng tiếng Anh, nhưng khi tôi tranh luận với các đồng nghiệp của mình về một đoạn mã chúng tôi thực hiện bằng tiếng Hà Lan.
vstrien

@vstrien vậy hãy nói cho tôi biết bạn sẽ làm gì nếu mỗi đồng nghiệp của bạn nói một ngôn ngữ bản địa khác nhau? đó là tình hình ở đây mỗi cơ thể đến từ một "trạng thái" Ấn Độ khác nhau và họ có một ngôn ngữ khác nhau (tôi không có nghĩa là phương ngữ .. ý tôi là ngôn ngữ) hy vọng bạn có thể đặt đầu mình xung quanh đó: P và đây chính xác là câu hỏi của tôi .. tôi không thực sự nghĩ trong một lang cụ thể (tôi không đủ khả năng vì tôi phải nói gần 3 lang với 6 diff ppl trong một giờ) Điều tôi muốn hỏi là liệu đây có phải là một thực tiễn tồi không
Chani

RYUZAKI, đây là một tình huống mà mọi người gặp phải trong nhiều bước đi khác nhau của cuộc sống. Tôi đã từng làm việc trong một tổ chức có 3 ngôn ngữ làm việc. Trong một công ty như của bạn, nếu bạn có một ngôn ngữ làm việc, bạn đang làm tốt. Những gì bạn sẽ tìm thấy là có những phần nhất định trong cuộc sống của bạn sẽ hoạt động trong một số ngôn ngữ nhất định.
cám dỗ

@RYUZAKI: xin lỗi, tôi đã không nói chuyện với bạn khi tôi nói rằng bạn không tranh luận với các đồng nghiệp của mình bằng ngôn ngữ không phải là tiếng mẹ đẻ :). Nhưng tôi nghĩ trong trường hợp đó, điều quan trọng là tìm cách giao tiếp rõ ràng - và điều dễ nhất tôi có thể nghĩ đến là sử dụng một ngôn ngữ để giải thích cho nhau. Một lần nữa, tôi không nghĩ rằng nó ảnh hưởng đến bạn trong các kỹ năng lập trình của bạn, nhưng chắc chắn rằng nó sẽ ảnh hưởng đến năng suất nếu bạn không thể giao tiếp qua mã ..
vstrien

1
@teemar: "số lượng lập trình viên đáng kể và ngày càng tăng trên toàn thế giới không có nền tảng về toán học ứng dụng" hoàn toàn không làm mất hiệu lực của tuyên bố. Quan sát của bạn lên tới "những người không được đào tạo chính quy về toán vẫn có thể xoay sở để học một số toán học ứng dụng đằng sau lập trình." Tôi đồng ý với quan sát của bạn. Nhưng điều đó không làm mất hiệu lực (hoặc lỗi thời) tuyên bố của Dijkstra. Thật vậy, nó có vẻ bổ sung.
S.Lott

5

Tôi nghi ngờ anh ta đang đề cập đến việc có một sự hiểu biết tốt về những gì mọi người muốn về bạn - nói cách khác, khả năng giao tiếp bằng lời nói tốt.

.


1
Tôi cũng sẽ đưa vào đó khả năng truyền đạt ý tưởng của bạn rõ ràng cho người khác. Một người cũng quan trọng như các imo khác :)
Demian Brecht

1
Tôi đồng ý với những gì bạn nói, nhưng tôi không nghĩ đó là những gì Dijkstra đang nói.
Cướp

1
Tất cả điều này nhắc nhở tôi các lớp học văn học tiếng Anh ở trường trung học. Bạn có thể tranh luận hàng giờ về ý nghĩa của tác giả. Tôi luôn tự hỏi tại sao chúng ta không đi và hỏi họ. Ôi ... Văn học Anh. Một số trong số họ đã chết bây giờ. (Tôi luôn luôn làm con số dù rằng bạn không nên cố gắng và giải thích F. Scott Fitzgerald quá nhiều -.. Điểm của ông về thế giới được hình thành bằng cách nhìn vào nó thông qua một chai whisky giáo viên tiếng Anh của tôi không thích tôi nói rằng, một trong hai)
quick_now

Bạn có thể tranh luận vô nghĩa trong nhiều giờ, hoặc bạn có thể hỗ trợ các lập luận của mình bằng sự thật. Ví dụ: xem các trích dẫn khác của Dijkstra trên cùng một trang, ví dụ: "Thực tế không thể dạy lập trình tốt cho những sinh viên đã tiếp xúc với BASIC trước đó: vì các lập trình viên tiềm năng họ bị cắt xén tinh thần ngoài hy vọng tái sinh." - một lần nữa nói về chủ đề ngôn ngữ và nhận thức.
Cướp

Và một tuyên bố như vậy chỉ là viêm. Crikey, tôi đã bắt đầu lập trình trong BASIC khoảng 30 năm trước bởi vì tất cả đã có. Tôi không coi mình là siêu nhân, nhưng tôi cũng không "bị cắt xén tinh thần ngoài hy vọng tái sinh". Tôi thấy một tuyên bố như vậy là khá xúc phạm, và điều đó có nghĩa là tôi đối xử với bất cứ điều gì khác mà anh ta nói là có độ tin cậy hạn chế.
quick_now

2

Tôi nghĩ việc giỏi (bất kỳ) ngôn ngữ nào phục vụ điều này -

Nếu quan điểm của bạn không rõ ràng, bạn có thể suy nghĩ, sửa đổi, phục hồi theo cách cải thiện. Cho đến khi những gì bạn nói là chính xác những gì bạn muốn người tiếp theo (hoặc máy) hiểu.

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.