Từ vựng phù hợp khi giúp lập trình viên mới làm quen


9

Tôi thấy mình giúp đỡ các lập trình viên mới làm quen tương đối thường xuyên; giải thích lý do tại sao mã của họ sẽ không hoạt động khi họ yêu cầu, đề xuất giải pháp và những thứ tương tự. Những người tôi đang giúp có một nền giáo dục chính thức về lập trình từ mô-đun cấp độ năm thứ nhất, bằng Java, nhưng tôi cảm thấy mình không thể giao tiếp với họ rất tốt.

Ví dụ: người ta có thể viết một hàm nhưng không hiểu tại sao nó không được thực thi, không nhận ra rằng họ quên gọi nó. Nếu tôi sử dụng các cụm từ như "(make a) call (to) the function/it""pass it the.."tôi có vẻ trống rỗng.

Quá trình bình thường của tôi sau đó sẽ là tìm một vị trí nào đó trong mã của họ nơi họ gọi một hàm từ ngôn ngữ và nói với họ rằng họ có thể gọi các hàm của riêng mình giống như cách họ gọi hàm này. Đôi khi ngay cả điều đó có vẻ trống rỗng.

Có những từ vựng khác phù hợp hơn (tốt hơn không?) Giúp lập trình viên mới làm quen? Hay đây không phải là một vấn đề của truyền thông?


5
Người dùng bảng tính biết cách gọi một chức năng. Nhiều người có thể tự viết. Có điều gì đó về cơ bản sai ở đây.
JeffO

@JeffO Tôi đã cảm thấy có gì đó không ổn, nhưng muốn cung cấp cho mô-đun đó và những người đó lợi ích của sự nghi ngờ
Andy Hunt

7
Đợi đã, cái gì? Các lập trình viên mà bạn đang làm việc không biết "gọi hàm" và truyền các đối số nghĩa là gì? Điều đó là cơ bản như bạn có thể đi mà không cần vẽ cho họ hình ảnh và sử dụng phép ẩn dụ liên quan đến mèo và chó. Điều này vượt ra ngoài một vấn đề giao tiếp và không may có thể là một vấn đề thiếu kiến ​​thức. Tôi đọc lại câu hỏi của bạn và có vẻ như về cơ bản họ đã tham gia một khóa học giới thiệu và đó là nó?
wkl

3
@AndyBursh: làm thế nào mà những sinh viên như vậy có được nó vào năm thứ hai? Hy vọng họ sẽ không vượt qua các kỳ thi và chọn một công việc ngoài phát triển phần mềm.
Doc Brown

3
Có lẽ những con rối sock sẽ giúp
MattDavey

Câu trả lời:


15

Cuối cùng, họ sẽ phải học các thuật ngữ thích hợp, càng sớm càng tốt.

Sử dụng chúng một cách chính xác và giải thích chúng bất cứ khi nào bạn nhìn chằm chằm. Chỉ cần cố gắng gửi tín hiệu đúng, rằng bạn có thể hỏi về bất cứ điều gì họ không hiểu - những câu hỏi ngu ngốc duy nhất là những câu hỏi mà bạn không hỏi.


2
Tôi đã định gửi gần như chính xác cùng một phản hồi sau đó bạn đã tải. :) +1
Tom Squires

Đừng mang những lời giải thích xuống cấp độ của họ, hãy nâng cấp độ của họ lên.
Bent

2

Nói chung

Khi một người không hiểu bạn, bạn có hai lựa chọn thay thế:

  1. Điều chỉnh từ vựng theo những gì người đó biết hay không,

  2. Giải thích cho người đó những điều cô ấy không hiểu.

Trường hợp đầu tiên hoạt động tốt khi người đó đã biết từ vựng kỹ thuật khá tốt, nhưng không đủ, hoặc không có trong miền của bạn.

Ví dụ: bạn có thể sử dụng phương thức thuật ngữ trong C # hoặc Java và người chủ yếu làm việc với một số ngôn ngữ khác sẽ không hiểu thuật ngữ này. Sau đó, bạn sẽ giải thích rằng trong C # hoặc Java, phương thức đang đề cập đến cái mà chúng ta thường gọi là hàm (ví dụ trong C) và rằng không có thứ gọi là hàm trong C # hoặc Java . Trong PHP , ví dụ, cả hai phương thức và hàm đều tồn tại và có một ý nghĩa khác nhau . Nếu sự khác biệt quá đau đớn đối với người đó, bạn sẽ nói về các chức năng vì mục đích đơn giản.

Trong trường hợp chính xác của bạn, bạn khó có thể chọn điều đầu tiên: "thực hiện cuộc gọi đến chức năng" không thể được điều chỉnh lại theo bất kỳ cách đơn giản nào. Một cuộc gọi là một cuộc gọi. Bạn không thể đơn giản hóa điều này nhiều hơn.

Điều này có nghĩa là bạn phải chọn cách thứ hai: giải thích cho người đó từng thuật ngữ kỹ thuật.

  1. Hoặc chỉ người đó vào một từ điển hoặc Wikipedia, hoạt động rất tốt cho các khái niệm và thuật ngữ cơ bản.

    Tôi sẽ chọn điều này cho các thuật ngữ thường được sử dụng . Ví dụ, tôi muốn mời người đó đọc Wikipedia để hiểu thế nào là đa hình, hay thế nào là hiệp phương sai và chống chỉ định. Những thuật ngữ này đã được giải thích rất tốt, vì vậy không cần phải phát minh lại bánh xe ở đây.

  2. Hoặc giải thích bằng lời của bạn .

    Tôi sẽ chọn điều này cho các thuật ngữ dành riêng cho bối cảnh và / hoặc chấp nhận nhiều định nghĩa . Ví dụ, Wikipedia không hữu ích lắm để hiểu tầm nhìn của Microsoft về điện toán đám mây và tôi muốn tự mình giải thích đám mây là gì với ai đó sẽ làm việc trên ứng dụng Windows Azure.

Trong trường hợp cụ thể của bạn

Những người bạn đang nói chuyện đang thiếu các khái niệm và thuật ngữ cơ bản nhất được sử dụng trong lập trình. Họ không thể tiếp tục mà không học từ vựng cốt lõi này , vì họ hoàn toàn không thể giao tiếp : họ không thể đọc sách về lập trình hoặc blog, họ không thể lắng nghe đồng nghiệp của mình và thậm chí họ không thể thực sự đặt câu hỏi Các trang web Stack Exchange, vì không ai sẽ hiểu những gì họ đang hỏi.

Trong trường hợp của bạn, thay vì tìm kiếm từ vựng phù hợp, tôi sẽ dành vài ngày hoặc vài tuần để dạy họ một số khái niệm lập trình cốt lõi và các thuật ngữ thường được sử dụng . Sau một vài ngày, bạn sẽ có thể nói chuyện với họ mà không cần phải liên tục "vẽ tranh cho họ và sử dụng phép ẩn dụ liên quan đến mèo và chó" .


1

Thay vì các hàm , bắt đầu với chương trình con . Nói với họ rằng một chương trình chỉ là một danh sách các hướng dẫn, một công thức để nói với máy tính cách làm một cái gì đó. Và rằng nó đang được thực hiện hết lệnh này đến lệnh khác (với khả năng thực hiện song song một số bước, nhưng sẽ nói thêm về điều đó sau).

Một số tác vụ khá phổ biến và lặp đi lặp lại, vì vậy sẽ rất tệ nếu chúng ta phải viết đi viết lại nhiều lần, vì vậy chúng ta viết chúng chỉ một lần và tạo ra một "chương trình nhỏ hơn" - một chương trình con , có thể được sử dụng lại bởi các phần khác của chương trình. Để có thể thực hiện nó nhiều lần, chúng tôi đặt cho nó một cái tên có ý nghĩa trong chương trình của chúng tôi. Và sau đó chúng ta có thể sử dụng tên đó khi chúng ta muốn thực hiện "chương trình nhỏ" này như một phần của một chương trình lớn hơn, bằng cách gọi nó bằng tên đó.

Gọi một chương trình con giống như triệu tập một con quỷ biết cách thực hiện nhiệm vụ đó, bằng tên của con quỷ đó. Vì vậy, khi chúng tôi muốn thực hiện nhiệm vụ cụ thể đó trong chương trình của mình, chúng tôi viết "gọi con quỷ tên là Argoth", và con quỷ xuất hiện và thực hiện nhiệm vụ cho chúng tôi khi chúng tôi hướng dẫn anh ấy làm, và sau đó chúng tôi có thể tiếp tục việc làm.

Đôi khi con quỷ yêu cầu một số thông tin bổ sung mà không có nó, anh ta không thể quyết định nhiệm vụ nào sẽ thực hiện, hoặc những gì chúng ta thực sự muốn từ anh ta. Ví dụ như nếu con quỷ có nghĩa vụ phải xây dựng một lâu đài, ông có thể cần phải biết nơi ông có nghĩa vụ phải xây dựng nó, hoặc lớn như thế nào , vv Đó là các đối số truyền cho các con quỷ ... Ý tôi là, các chương trình con, mà bây giờ trở thành bán tham số .

Các tham số là những phần thông tin bị thiếu, nhưng bắt buộc, để thực hiện nhiệm vụ. Họ thay đổi những gì chương trình con có thể làm một chút. Chúng giống như các ô trống trong công thức cần được điền trước khi chúng tôi có thể thực hiện nó.

Lập luận , mặt khác, là những thông tin thực tế (giá trị) mà chúng tôi cung cấp cho các thông số này.

Đối với thực thi song song, chúng ta có thể nghĩ về nó theo cách này: luôn có ai đó (hoặc một cái gì đó ) đang thực hiện chương trình (danh sách các hướng dẫn). Đó cũng là một con người khác (bạn có biết rằng "máy tính" đã từng là tên của một người đang thực hiện tính toán không?) Hoặc một cỗ máy. Một chương trình chỉ là một danh sách các hướng dẫn, nó không tự hoạt động. Phải có ai đó hoặc một cái gì đó sẽ thực hiện quá trình tính toán(thực hiện các hành động này từ danh sách). Và đôi khi những hành động này có thể được thực hiện song song - chúng tôi có thể phân phối các bản sao của danh sách cho nhiều người và để mỗi người thực hiện một nhóm nhiệm vụ khác nhau từ danh sách, miễn là họ không làm gián đoạn lẫn nhau hoặc không ' T phải chờ kết quả công việc của người khác. Đó là đa luồng cho bạn;)

Đối với sự khác biệt giữa các hàmchương trình con (còn gọi là thủ tục ), sự khác biệt thông thường là một hàm đang được gọi để tính một giá trị nhất định mà nó trả về do thực thi của nó, trong khi các thủ tục được thực thi chỉ để giải trí;) AKA cho "tác dụng phụ" của họ - chỉ vì lợi ích của các hoạt động được thực hiện từ danh sách.

Nhưng nếu việc gọi một thủ tục hoặc chức năng gây ra một số rắc rối lúc đầu, bạn có thể sử dụng một thuật ngữ khác đã từng phổ biến: nhảy . Người ta có thể nhảy vào một chương trình con, điều đó có nghĩa là bạn dừng thực thi bất cứ điều gì bạn đang làm ngay bây giờ và "nhảy" đến một nơi khác trong danh sách (hoặc bất kỳ danh sách nào khác) - chương trình con - để thực hiện các nhiệm vụ của nó. Sau đó, khi bạn hoàn thành, bạn "nhảy lùi" - nghĩa là bạn quay lại nơi bạn đã bị gián đoạn, để bạn có thể tiếp tục với nhiệm vụ trước đó. Sự khác biệt giữa gọi và nhảy là bây giờ bạn là con quỷ.

Đối với các phương thức được đề cập ở đây bởi ai đó hoặc thực tế là một số ngôn ngữ "không có chức năng, chỉ có phương thức" - điều đó không hoàn toàn chính xác, bởi vì phương thức chức năng! - một loại đặc biệt của chúng: chúng là các hàm đang được sử dụng để truy xuất một số thông tin được gói gọn bên trong một đối tượng hoặc hoạt động trên chúng. Chúng là một "phương pháp hoạt động trên những dữ liệu đó". Tên đến từ mô hình hướng đối tượng, trong đó dữ liệu được bao quanh với các đối tượng và không thể được vận hành trực tiếp, chỉ bằng các chức năng đặc biệt gọi là "phương thức".

Một phương thức đặc biệt theo một cách khác: nó phải biết đối tượng cụ thể nào được cho là hoạt động / được gọi (đối tượng "này"). Đó là lý do tại sao các phương thức thường được tô điểm bằng một tham số ẩn bổ sung lưu trữ thông tin về đối tượng mà nó được gọi (con trỏ "này"). Điều này làm phức tạp cách thức chức năng được gọi một chút, nhưng đó là "chi tiết triển khai" mà một lập trình viên không nên bận tâm nhiều, miễn là anh ta biết mình đang làm gì.

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.