Ví dụ tốt để hiển thị cho một người không phải là lập trình viên để giải thích "trông như thế nào" của chương trình?


74

Một người bạn của tôi ngày trước đã hỏi tôi rằng liệu tôi chỉ xem danh sách các con số khi lập trình hay cách nó hoạt động. Tôi đã cố gắng giải thích rằng nó thường giống các công thức toán học hơn, với một từ tiếng Anh kỳ quặc được đưa vào, và nó thường có thể đọc được. Nhưng đó là một lời giải thích rất mơ hồ và nó không thực sự giải thích nhiều cho một người không phải lập trình viên.

Nhưng nó khiến tôi phải suy nghĩ về điều gì sẽ là một ví dụ điển hình. Không phải vì tôi muốn dạy cô ấy lập trình hay bất cứ điều gì, mà chỉ đơn giản là để cho cô ấy biết mã chương trình "trông như thế nào".

Và điều đó khiến tôi tự hỏi về điều gì thực sự sẽ hoạt động như một ví dụ điển hình. Và điều đó trở nên khó khăn một cách đáng ngạc nhiên.

Suy nghĩ đầu tiên của tôi rõ ràng là một chương trình "Hello World" đơn giản. Nhưng nó thực sự không hiển thị bất cứ điều gì hữu ích. Nó không thực sự chỉ ra cách chúng ta sử dụng các hàm, hoặc biến, hoặc cấu trúc luồng điều khiển như ifhoặc whileđể tạo một chương trình thực sự làm một việc gì đó . Không có logic nào cho nó. Chương trình không phản ứng với bất cứ điều gì.

Vì vậy, có lẽ một cái gì đó như tính toán các số nguyên tố sẽ là một ví dụ tốt hơn. Nhưng một lần nữa, điều đó có thể quá lý thuyết và không thực tế ... (Điều đó có ích lợi gì? Nó liên quan gì đến việc viết các chương trình "thực"?) Và một lần nữa, không có logic luồng điều khiển đáng kể nào trong đó. Nó chỉ là một chuỗi toán học thẳng.

Và ngoài ra, ngôn ngữ nào nên được sử dụng?

Lý tưởng nhất, tôi không nghĩ nó phải là một ngôn ngữ quá "sạch". Nhưng đúng hơn, nó có lẽ nên làm cho cấu trúc rõ ràng. Nếu nó làm được điều đó, thì một lượng tiếng ồn và sự lộn xộn nhất định có thể ổn. Có lẽ một cái gì đó như C ++ thực sự sẽ là một ví dụ tốt hơn Python vì lý do đó. Dấu ngoặc nhọn rõ ràng và bộ chỉ định kiểu là những "móc nối" rõ ràng để giúp giải thích cách chương trình được cấu trúc hoặc để làm nổi bật rằng nó không chỉ là những câu lệnh đơn giản mà hầu như có thể đọc thành tiếng Anh.

Nhưng với C ++, chúng ta cũng gặp phải một số cú pháp hết sức kỳ lạ. Tại sao được std::cout << xsử dụng để in ra x? Tại sao không phải là cú pháp gọi hàm "bình thường"? Và printfcũng không tốt hơn nhiều, với chuỗi định dạng phức tạp và thiếu khả năng mở rộng (tôi có muốn làm phức tạp chương trình bằng cách sử dụng char*cho các chuỗi không? Hay tôi sử dụng std::stringvà giải quyết việc gọi những thứ dường như không cần thiết s.c_str()để có được một chuỗi có thể được in bằng printf?

Có lẽ một ngôn ngữ cấp cao hơn sẽ tốt hơn sau tất cả. Nhưng cái nào? Và tại sao?

Tôi biết có rất nhiều câu hỏi tương tự ở đây về việc sử dụng ngôn ngữ / chương trình ví dụ nào để dạy lập trình. Nhưng tôi nghĩ rằng các yêu cầu ở đây là khác nhau. Khi dạy lập trình, chúng tôi muốn sự đơn giản hơn bất cứ điều gì. Chúng tôi muốn tránh bất cứ điều gì chưa được dạy. Chúng tôi muốn đảm bảo rằng học sinh có thể hiểu mọi thứ trên màn hình.

Tôi không quan tâm đến sự đơn giản. Nhưng đúng hơn là đưa ra một ý tưởng cho "người ngoài cuộc" về "chương trình trông như thế nào". Và các chương trình không đơn giản. Nhưng họ làm thường thể hiện một cấu trúc nhất định và phương pháp để sự điên rồ. Ngôn ngữ / chương trình nào sẽ làm nổi bật điều đó tốt nhất?

Chỉnh sửa
Cảm ơn cho tất cả các đề xuất cho đến nay. Một số bạn đã có một góc nhìn hơi khác với tôi dự định.

Có lẽ một ví dụ là theo thứ tự. Tôi không thể lái máy bay, nhưng tôi đã hiểu cơ bản về buồng lái trông như thế nào và phi công "làm gì" khi bay.

Và tôi không phải là một thợ mộc được đào tạo, nhưng tôi biết một cái cưa hoặc một cái búa khi tôi nhìn thấy một cái.

Nhưng khi bạn thấy bất cứ điều gì liên quan đến lập trình trong phim, chẳng hạn, đó thường chỉ là những màn hình chứa đầy rác (như trong văn bản màu xanh lá cây trong Ma trận). Nó không giống như điều mà một con người bình thường thực sự có thể làm . Không có gì có thể nhận ra trong đó. Ai đó không phải là lập trình viên chỉ đơn giản nghĩ rằng đó là ma thuật đen.

Tôi không muốn dạy cô ấy bay, hay lập trình phần mềm. Nhưng tôi muốn cung cấp cho cô ấy một hệ quy chiếu cơ bản. Chỉ là một ý tưởng về "à, đó là những gì bạn đang làm việc. Vì vậy, nó không chỉ là các ký hiệu và số ngẫu nhiên trên màn hình". Ngay cả khi chỉ hiển thị một câu lệnh đơn giản ifcũng sẽ là một sự tiết lộ so với các ký hiệu và số ngẫu nhiên kiểu Ma trận.

Một số bạn đã đề xuất giải thích một thuật toán hoặc sử dụng mã giả, nhưng đó là điều tôi muốn tránh. Tôi muốn thứ gì đó đơn giản chỉ ra mã thực tế trông như thế nào, giống như cách mà bạn không cần phải là một thợ mộc để nhìn vào một cái cưa và có được ý tưởng cơ bản về nó là gì và nó hoạt động như thế nào.

Khi tôi còn nhỏ, chúng tôi đã từng đi nghỉ ở Ý. Trên đường xuống, phi công cho tôi vào buồng lái của máy bay. Tất nhiên, tôi không học cách lái máy bay. Nhưng tôi đã nhìn thấy thế giới của phi công. Tôi có ý tưởng về cách họ điều khiển máy bay, những gì phi công thực sự làm.

Đó thực sự là tất cả những gì tôi muốn làm. Bạn tôi không có hứng thú với việc học lập trình, và tôi không muốn ép cô ấy hiểu mã nguồn. Nhưng cô ấy tò mò về loại công cụ hoặc thực thể mà tôi làm việc. Đó có phải là các biểu tượng kiểu Ma trận cuộn trên màn hình không? Toán học thuần túy? Tiếng Anh ở dạng văn xuôi?

Tất cả những gì tôi muốn truyền đạt là sự hiểu biết rất cao về "Tôi trông như thế nào khi làm việc".


44
Tôi nghi ngờ rằng cô ấy không còn hứng thú nữa, và nếu bạn cố gắng giải thích lại chi tiết hơn, bạn sẽ bị ám ảnh.
Breton

17
Nhưng khi bạn thấy bất cứ điều gì liên quan đến lập trình trong phim, chẳng hạn, đó thường chỉ là những màn hình đầy rác : đó cũng là một bản tóm tắt khá hay về lập trình thực, phải không?
chỉ ai đó

15
Cái gì, bạn đang nói với tôi rằng các bạn không lập trình bằng cách chỉ nhìn vào những con số kiểu ma trận màu xanh lá cây cả ngày? Người đàn ông, không có gì ngạc nhiên khi C # rất khó để tìm kiếm.
Lasse V. Karlsen

15
"Ai đó không phải là một lập trình viên chỉ đơn giản nghĩ rằng đó là ma thuật đen." - Xin đừng phá hỏng ảo tưởng này; chúng ta phải kiếm tiền bằng cách nào đó. :)
Jeff

18
Khi vợ tôi thấy tôi làm việc ở nhà một ngày, cô đã rất thất vọng khi phát hiện ra rằng 'săn lỗi' không phải là thú vị để xem như âm thanh ...
Paddy

Câu trả lời:


35

Để trả lời trực tiếp câu hỏi của bạn - chương trình “trông như thế nào” , tôi sẽ cho họ xem bản in từ một ứng dụng lớn. Các ứng dụng đồ chơi hoặc những thứ dễ thương như qsort trong haskell thực sự đưa ra ý tưởng sai lầm.


Vâng, đó thực sự có thể là cách tiếp cận tốt nhất. Chỉ cần để cô ấy xem qua một số mã thực tế mà tôi hiện đang làm việc
jalf

39
Tất nhiên, nếu cô ấy bắt đầu phê bình phong cách thụt lề của bạn hoặc việc sử dụng kém các thuật toán STL của bạn, bạn có thể sẽ hối hận khi thực hiện phương pháp này.

6
Haha, nếu cô ấy làm điều đó, cô ấy có thể tiếp tục gỡ lỗi về tình trạng cuộc đua mà tôi đã theo đuổi trong tuần trước ... Điều đó sẽ dạy cho cô ấy! ;)
jalf

Nhưng không phải mọi người thường hỏi những câu hỏi này sau khi nhìn thấy màn hình makeđầu ra đầy đủ và tuyên bố rằng họ thậm chí không thể hiểu được điều đó trong suốt cuộc đời của họ?
Michael Krelin - hacker

1
Đây là những gì tôi đã kết thúc, khá nhiều. Trên thực tế, cuối cùng tôi đã sửa được chiếc cốc mà tôi đã tìm kiếm khi cô ấy hỏi lần đầu, và chỉ đơn giản là chỉ cho cô ấy dòng sai và tôi sẽ thay nó bằng gì. Dù sao, chấp nhận điều này :)
jalf

51

CĂN BẢN

10 PRINT "Sara is the best"
20 GOTO 10

Cập nhật: khi tôi 12 tuổi, anh họ tôi (anh ấy 14 tuổi) đã mang Turbo Pascal 7.0 và cài đặt nó trong máy tính của tôi.
Anh ấy đã lập trình một trò chơi tic tac toe từ đầu (ở chế độ BGI, dành cho những người biết).
Tôi đã xem / quan sát từng bước cách một chương trình phát triển cho đến khi nó trở thành một ứng dụng hoàn chỉnh.
Cho đến lúc đó, tôi chỉ biết cách in chuỗi trong CƠ BẢN: -B

Bạn có thể làm một điều tương tự. Lập trình cặp. Chà, thực ra bạn của bạn sẽ là người quan sát nhưng cô ấy sẽ có ý kiến;)


12
Trên thực tế, tôi nghĩ đây là ý tưởng tốt nhất cho đến nay.

3
Đó chắc chắn là Sara tốt nhất :).
Liran Orevi

Cung cấp số lần cô ấy sẽ được đánh giá cao bởi bây giờ ... (câu trả lời đã được gửi phút 37 trước, theo SO)
Michael Krelin - tin tặc

3
+1 cho lập trình cặp và thực tế là bạn có thể hướng dẫn cô ấy từng bước và cho cô ấy thấy đầu ra nghe khá tuyệt!
melaos

3
+1 ít nhất vì đã đề cập đến BGI :) --- Xin lưu ý thêm, bà tôi rất tự hào khi thấy tên bà trong một trong những chương trình cơ bản đầu tiên của tôi - Khác.
peterchen

41

Tại sao không xem xét một ngôn ngữ không tồn tại (hoặc có, nếu bạn tin tưởng) và sử dụng Pseudo Code ? Tôi nghĩ, tùy thuộc vào những gì bạn muốn đạt được - tôi sẽ coi ví dụ về nhiệm vụ quen thuộc với mọi người, nhưng được khắc họa thành một ví dụ về mã giả.

Nhìn chung, tôi thấy ý tưởng về "nấu ăn" hoặc "công thức nấu ăn" rất phù hợp khi giải thích mọi thứ cho những người không phải là lập trình viên.

Tôi yêu cầu người đó tưởng tượng rằng họ có một công thức nấu ăn khá phức tạp - ví dụ như món cà ri & cơm. Sau đó, tôi đề nghị họ nên thử và viết nó ra cho một người hoàn toàn không biết họ đang làm gì, để họ có thể nấu ăn.

Có một vài giai đoạn nhất định liên quan:

  • Thu thập các thành phần và công cụ cho công việc.
  • Chuẩn bị các nguyên liệu. Điều này thật phức tạp. ví dụ
    • nhận được 3 Ớt Đỏ Nhỏ.
    • Đối với mỗi quả ớt đỏ bạn có, xắt thành những miếng vuông khoảng 1cm.
    • đặt các khối ớt đỏ vào một cái bát để sau đó.
  • Riêng với điều này, hãy gọi chức năng chuẩn bị cơm và chức năng này hoạt động không đồng bộ trong nền trong khi bạn tiếp tục nấu.

Tôi chắc rằng bạn có thể thấy điều này sẽ đi đến đâu ...;)

Có rất nhiều điểm tương đồng với Nấu ăn và Lập trình (vì có rất nhiều thứ, nhưng nhiều người hiểu về nấu ăn hơn là xây nhà). Có các giai đoạn / điểm tương đồng (như tôi thấy) là:

  • Thu thập : (tuyên bố về những gì cần thiết để đạt được mục tiêu và tập hợp chúng lại với nhau).
  • Chuẩn bị trước : Cắt nhỏ các thành phần hoặc chuẩn bị các đối tượng kết nối dữ liệu, v.v. để sử dụng lần đầu.
  • Không đồng bộ : Khả năng có một thứ diễn ra trong khi một thứ khác đang diễn ra.
  • Chức năng : Làm cơm, nấu gà và nấu cà ri đều yêu cầu các quy trình riêng biệt và chỉ khi kết thúc bạn mới có chức năng makeCurry (ChickenMeat, rice).
  • Kiểm tra : Đảm bảo rằng trong quá trình thực hiện, bạn không bỏ sót bất kỳ phần nào và mọi thứ diễn ra suôn sẻ - ví dụ: đảm bảo thịt gà được nấu chín trước khi bạn chuyển sang giai đoạn tiếp theo.
  • Rác : Sau khi hoàn thành, bạn phải đảm bảo rằng bạn đã thu dọn. ;)
  • Nguyên tắc của Thực tiễn Tốt nhất : Có những cách hiệu quả để làm những việc như nấu ăn, các lập trình viên mới bắt đầu phải học ngoài mã - đôi khi bạn có thể khó hiểu. ví dụ như KHÔ, cách chặt hiệu quả bằng dao & không ăn thịt gà sống;)

Về cơ bản, tôi nghĩ việc dạy lập trình là một chủ đề chung - tôi sẽ không nhất thiết phải dạy từ một ngôn ngữ trừ khi bạn có lý do thuyết phục để làm như vậy . Thay vào đó, hãy dạy ban đầu từ phần trừu tượng cho đến khi chúng hiểu ít nhất các nguyên tắc cơ bản về cách mọi thứ có thể kết hợp với nhau. Sau đó, họ có thể thấy dễ dàng hơn khi ngồi trước màn hình và bàn phím.

Tôi nghĩ rằng có thể không có một "câu trả lời đúng" cho câu này. Nhưng tôi nghĩ có lẽ một vài ý tưởng thực sự hay mà bạn có thể rút ra từ tất cả.


9
Câu trả lời chính xác. Cuối cùng, ai đó tập trung vào các nguyên tắc lập trình hơn là vào những thứ ngớ ngẩn gần như vô nghĩa đối với những người không phải là lập trình viên.
CesarGon

5
Trong nhiều trường hợp, tôi đồng ý, nhưng trong trường hợp này, tôi nghĩ rằng đó là những thứ kỳ quặc phù hợp nhất. Câu hỏi của cô ấy không phải là "bạn viết một chương trình như thế nào", mà chỉ đơn giản là "nó trông như thế nào? Bạn chỉ nhìn chằm chằm vào một màn hình đầy những con số?" Tôi nghĩ câu trả lời tốt nhất là hiển thị một số mã thực tế, cho thấy rằng có ý nghĩa và cấu trúc thực sự ẩn trong đó. Những gì nó thực sự có nghĩa là ít liên quan hơn. Không quan trọng nếu cô ấy có thể đọc mã, nhưng nếu cô ấy có thể nhận ra rằng nó được tạo thành từ một vài từ tiếng Anh (if, while) và các biểu thức toán học nhỏ (x = y + z) sẽ cho một hệ quy chiếu cơ bản.
jalf

3
Tôi thực sự không thể đồng ý với điều đó chút nào. Loại nhận xét đó xuất phát từ sự hiểu lầm cơ bản về cách hoạt động của việc học. Tất cả những khái niệm trừu tượng có thể đã thực hiện chương trình dễ hiểu hơn đối với bạn , nhưng chỉ bởi vì bạn đã có những lợi ích của hàng trăm ví dụ cụ thể, và có lẽ một số kinh nghiệm thực tế lập trình. Những gì một người hoàn toàn mới khao khát là những ví dụ cụ thể về việc thực sự thực sự lập trình với mã thực, nếu không thì không có gì liên quan đến những khái niệm trừu tượng này, không có kinh nghiệm cá nhân liên quan đến nó. Ngoài ra, nó là quá nhiều.
Breton

Xin lỗi, bình luận của tôi đã được hướng vào CesarGon và Amadiere, không jalf
Breton

Tôi nhấn mạnh vào nhận xét của mình rằng Mã giả sẽ đủ cho những gì người đó có thể muốn đạt được. Nó trông đủ giống mã để hiển thị cấu trúc được mã hóa, đồng thời cung cấp các chi tiết chính. Nếu cô ấy quan tâm đến việc học lập trình - thì chắc chắn phải có ngôn ngữ. Nhưng để hiển thị cho ai đó những gì bạn có thể mong đợi để xem thay vì 1 & 0 - mã giả (imho) là lý tưởng. Tuy nhiên, nếu bạn có ý định hiển thị một số mã thực tế, tôi sẽ cho cô ấy xem một số thứ mà bạn biết và có thể giải thích đủ (và tôi khuyên bạn không nên quá dài).
Amadiere

35

Tôi sẽ giải thích rằng lập trình là đưa ra các hướng dẫn chi tiết để máy tính có thể thực hiện các tác vụ phức tạp.

Làm thế nào để pha hai tách cà phê?

  1. Đổ đầy ấm
  2. Nước sôi

  3. Cà phê trong tách

  4. Đổ nước vào
  5. Thêm đường
  6. Thêm sữa

  7. Làm lại từ 3 đến 6


9
Mặc dù điều này hữu ích để mô tả kỷ luật lập trình, nhưng nó không thực sự đưa ra ý tưởng về 'mã chương trình' trông như thế nào '.' Bạn của jalf hỏi liệu anh ấy có chỉ nhìn vào danh sách các số trong khi lập trình không: cô ấy muốn hình dung các thực thể mà jalf làm việc với là gì. Vì vậy, tôi nghĩ anh ấy muốn hiển thị ví dụ như các hàm, các lớp và các biến: ấm và tách của chương trình , không phải của việc pha cà phê.
itowlson

5
Mã chỉ là hướng dẫn từng bước, tôi nghĩ đây là ví dụ hoàn hảo về việc lập trình "trông như thế nào" mà không hiển thị kho thuật ngữ và ngôn ngữ khá đáng sợ. Và đối với tất cả những gì chúng ta biết, một ngày nào đó lập trình sẽ như thế này.
kowsheek

1
Tôi thích ví dụ này, hãy ném vào goto 'nếu ấm nước trống' 1. Sau đó, bạn có một cấu trúc lập trình.
Qwark

1
Tôi chỉ định đề xuất điều này, khi tôi nhìn thấy bài đăng này. Tôi luôn nói với những người tò mò rằng viết mã giống như viết công thức nấu ăn. Đó là một sự tương tự phù hợp cho thuật toán là gì.

1
Tôi nghĩ rằng ví dụ đó thực sự tệ, nhưng có lẽ vì tôi chưa bao giờ viết ứng dụng cà phê. bạn không lập trình bên ngoài công việc, phải không?
IAdapter 21/12/09

23

Một lập trình viên cấp dưới tại nơi làm việc

Nó trông giống như thế này. Đôi khi.


6
+1 cho LOL. (Và vì tôi đã gỡ lỗi chương trình đó trước đây!)
Toji

15

Có thể mọi người đang tập trung quá nhiều vào mã hơn là công cụ. Có thể tốt nhất là cho cô ấy xem một dự án trong IDE và cách nó bao gồm các tệp nguồn khác nhau và có thể là một số thứ sơ đồ như lược đồ cơ sở dữ liệu hoặc nhà thiết kế giao diện người dùng trực quan. Visual Studio, Eclipse hoặc Xcode khác xa so với hình ảnh tinh thần của hầu hết mọi người về việc cuộn nhanh các biểu tượng màu xanh lá cây phát sáng trên nền đen.


Vâng, đây cũng là những gì tôi nghĩ. Chỉ cần cho cô ấy biết xung quanh trong môi trường làm việc của bạn cho một vài khoảnh khắc, như tôi bấm vào đây để chạy, vào đây để mở các tập tin, ở đây tôi chỉnh sửa các văn bản, vv
Fabian Steeg

13

Tôi nghĩ bạn nên tải xuống một ứng dụng win32 lớn nào đó, được viết bằng hợp ngữ AT&T và đưa nó cho cô ấy xem trong notepad, và nói với cô ấy, "Như bạn thấy, cần một siêu nhân như tôi để lập trình."


7
+1. Cuối cùng áp dụng châm ngôn "Người dùng của bạn là một thanh niên 22 tuổi trong phòng ký túc xá của trường đại học. Phần mềm này sẽ khiến anh ta bị sa thải như thế nào?" thành Stack Overflow. Anh là một nhà cách mạng.
Adrian Petrescu

Gà con đào Unix guru? Cái lời nguyền chết tiệt này của MS đã thanh toán hóa đơn của tôi!
Jason D

1
LOL @ Carson Myers's bình luận ... Một chút giống như cách tôi đào dọn một vũng chất nôn NGAY LẬP TỨC HƠN việc dọn dẹp hai vũng nước. :)
j_random_hacker

(Nói như một lập trình lắp ráp thường xuyên và Unix aficionado)
j_random_hacker

10

Viết mã thứ gì đó có bất kỳ giá trị nào có thể hiểu được đối với người không phải là lập trình viên. Nếu tôi muốn chứng minh Quicksort cho mẹ tôi, nó sẽ không có ích gì.

Hỏi người đó về sở thích của họ. Ví dụ: nếu anh ấy / cô ấy tham gia vào sàn giao dịch chứng khoán, hãy hack tập lệnh đọc một số thống kê chứng khoán từ một trang web thích hợp và biên dịch chúng thành một trang tính excel (sử dụng csv, để tránh tổn thương não nặng nề ^^) hoặc có thể thành một biểu đồ đẹp .

Nếu người đó sử dụng Twitter, hãy viết mã thứ gì đó đếm lượt theo dõi của những người theo dõi anh ta hoặc tương tự như vậy.

Những tác vụ này đủ đơn giản để thực hiện trong thời gian rất ngắn và chúng đã sử dụng rất nhiều công cụ cơ bản mà các lập trình viên chúng tôi sử dụng, như vòng lặp, thư viện (cho tất cả những thứ liên quan đến http), có thể là đệ quy.

Sau khi hoàn thành hoặc khi đang viết mã (thậm chí tốt hơn), bạn có thể giải thích cách chương trình của bạn thực hiện điều kỳ diệu của nó.

Chỉ cần giữ nó đơn giản và nói chuyện bằng ngôn ngữ của con người. Nếu bạn cho họ xem hàng megabyte mã và nói về những thứ như kế thừa nguyên mẫu, bạn chỉ dọa họ và họ sẽ mất hứng thú ngay lập tức.


1
Tôi thích ý tưởng liên quan đến Twitter. Có lẽ hãy làm điều đó bằng cách sử dụng HTML và JS / jQuery: điều này cho phép bạn tạo ra một cái gì đó mà họ cũng có thể thấy trên máy tính của họ. Chết tiệt, hãy bung nó trên Interwebs. "Và bây giờ bất kỳ ai cũng có thể sử dụng tính năng này chỉ bằng cách truy cập example.com/myawesomestuff. Điều đó thật thú vị làm sao?"
Samir Talwar

9

Để cung cấp cho vợ tôi ý tưởng về những gì tôi làm để mang lại tiền lương (Đó là công việc thực sự! Tôi hứa! Chúng tôi không chỉ duyệt web cả ngày!) Tôi đã ngồi xuống với cô ấy vào một buổi tối với Python và cho cô ấy xem một vài các khái niệm cơ bản: gọi một hàm (in), gán và đọc một biến, và cách hoạt động của câu lệnh if. Vì cô ấy là một giáo viên, tôi đã ví khái niệm điều kiện để làm việc với trẻ mẫu giáo :)

IF you hit Jonny THEN you're in time out OTHERWISE you can have a snack.

Sau khi xem xét một vài khái niệm ở cấp độ rất cao, tôi sau đó cho cô ấy xem mã của một trò chơi đoán số đơn giản và để cô ấy chơi nó trong khi nhìn qua mã.

# Guessing Game
import random

print("Guess a number between 1 and 100: ")

target = random.randint(1, 100)
guess = 0
guess_count = 1

while guess != target:
    guess_count += 1
    guess = int(input())

    if guess == target:
        print("Correct!")
    if guess < target:
        print("Higher...")
    if guess > target:
        print("Lower...")

print("Congratulations! You guessed the number in " + str(guess_count) + " guesses!")

Bên cạnh khái niệm hơi trừu tượng về "nhập", đây là một ví dụ rất đơn giản, dễ làm theo và "kết nối" với những gì đang xảy ra trên màn hình, chưa kể nó thực sự làm điều gì đó thú vị và tương tác. Tôi nghĩ rằng vợ tôi đã bước ra khỏi trải nghiệm bớt hoang mang hơn một chút bởi toàn bộ khái niệm mà không thực sự cần biết nhiều về cách viết mã.

Tôi nghĩ chìa khóa là có thể có ai đó xem mã VÀ đó là kết quả cuối cùng cạnh nhau.


8

Có một gói đồ họa CLI được gọi là LOGO , và được biết đến nhiều nhất với Đồ họa Rùa , được sử dụng để vẽ các hình dạng trên màn hình bằng các lệnh như LT 90, RT 105v.v. Hãy xem nếu bạn có thể tìm thấy điều đó, sẽ là một trải nghiệm tuyệt vời khi thử và vẽ thứ gì đó có độ phức tạp trung bình.

LOGO - Ngôn ngữ lập trình định hướng đồ họa logic.

REPEAT 360 [FD 1 RT 1] -- draws a circle, etc.

Xem thêm tại logothings hoặc Wikipedia cũng có liên kết đến trình thông dịch logo hiện đại.


Đây hẳn là bài giới thiệu đầu tiên của tôi về lập trình. Nó có đủ nguyên tắc cơ bản để mọi người hiểu lập trình là gì mà không làm họ nhàm chán.
Robert Paulson

6
sau đó bạn bè của bạn có thể đặt một câu hỏi về SO về cách di chuyển con rùa trong logo ...
Antony

+1 Antony. Tôi sẽ bật cười nếu tôi nhìn thấy một câu hỏi LOGO ở đây ... nói về điều mà tôi đã không làm bất kỳ LOGO nào trong nhiều thập kỷ ... nó hơi ... tốt ... không thú vị đối với tôi ... ngay cả tại 12 tuổi ...
Jason D

điều này đã được dạy ở trường tiểu học của tôi! không thể nói rằng nó có liên quan đến sở thích của tôi bây giờ. đã lâu lắm rồi. Tuy nhiên, bạn có thể làm những điều thú vị với nó, tôi nhớ rằng chúng tôi đã ghép một số trò chơi (tương đối) ấn tượng.
Nona Urbiz

@Jason D: Có lẽ bạn nên kiểm tra cái này sau đó. stackoverflow.com/questions/1003841/…
Samir Talwar

8
  1. Lập trình viên máy tính viết chương trình.
  2. Trong khi không lập trình, lập trình viên máy tính làm phiền những phụ nữ hấp dẫn ở nơi làm việc của mình.

Sau đó: (nguồn: markharrison.net )


Hiện nay:


3
Vì vậy, bạn đang nói rằng tất cả các lập trình viên là những người đàn ông lười biếng trong xã hội. Tôi thấy buồn khi thấy mọi người cổ vũ cho định kiến ​​tiêu cực này. Tôi sẽ cung cấp cho bạn [1] như đề xuất đọc và để nó ở đó. [1] sas.upenn.edu/~nathanen/files/cbi-uality.pdf
Steve Landey

1
Tôi là một lập trình viên máy tính. Tôi đã biết nhiều người phù hợp với khuôn mẫu được mô tả ở trên ... và nhiều người không. Tôi vẫn cười khúc khích vì nó.
Jason D

Steve, nhẹ đi, thật buồn cười nó được coi là một khuôn mẫu. Hai hình ảnh cách nhau gần nửa thế kỷ, nhưng về cơ bản giống hệt nhau. Tôi đã nghĩ rằng mọi người sẽ nhận ra Khỉ mã Coulter / SpiffWorld, nhưng tôi đã thêm một liên kết vào hình ảnh. Kiểm tra nó ra, nó là tuyệt vời!
Mark Harrison

8
hehe, tôi đồng ý, nếu lập trình viên không thể giễu cợt lập trình viên, thì chúng ta có thể giễu cợt ai? :)
melaos

2
Điều này là không chính xác về mặt lịch sử. Trong bức ảnh trên cùng, người phụ nữ trẻ có nhiều khả năng là lập trình viên, và người khác có nhiều khả năng là quản lý.
Marcin

7

Khi đứa con gái 5 tuổi của tôi hỏi tôi câu hỏi, tôi đã bắt nó "phát triển" chương trình cho một "robot" mũi tên nhỏ sẽ đưa nó vào góc trên bên trái của bảng bằng cách sử dụng các mảnh giấy giống như sơ đồ biểu thị các chuyển động, quay điều kiện. Tôi nghĩ nó cũng áp dụng cho những người trưởng thành.

Tuy nhiên, tôi không yêu cầu phát minh ra câu trả lời này.

Về bản chỉnh sửa của bạn : Tôi e rằng, các lập trình viên thậm chí còn ít hiểu ý tưởng của người khác về lập trình. ;-) Mọi người nghĩ rằng lập trình là một sự hư hỏng của thẻ video xanh giống như ma trận nhiều như họ nghĩ rằng các điệp viên đều được trang bị đồ chơi công nghệ cao của James Bond. Và bất kỳ chuyên gia trong bất kỳ lĩnh vực nào cũng thường bị kích thích khi xem bộ phim liên quan đến công việc của mình. Vì người làm phim không có ý kiến! Mặt khác, chúng ta có biết cách mô tả đúng chương trình trong phim không? ;-)


3
Đôi khi lập trình giống như RoboRally ( en.wikipedia.org/wiki/RoboRally ) hơn là hoàn toàn thoải mái.
itowlson

1
Có một môi trường lập trình Python ban đầu được gọi là [Guido van Robot (hoặc GvR)] [1] được thực hiện khá độc đáo. Đáng ngạc nhiên là nó liên quan đến việc học cách lái một biểu tượng robot nhỏ xung quanh lưới theo nhiều cách khác nhau. [1]: gvr.sourceforge.net
Peter Rowell

itowlson, tôi biết các kỹ thuật từ các tiền chất của bây giờ có sẵn programm Nga Kumir (không thể nhớ tên của nó) trở lại trường vào cuối thập niên 80 ;-)
Michael Krelin - tin tặc

Peter, lúc đầu tôi nghĩ sẽ thoải mái hơn nếu nó không liên quan đến máy tính và ngôn ngữ. Hóa ra, mặc dù, viết rằng bước xuống như chúng tôi làm bằng các ngôn ngữ lập trình là một kỹ thuật có thể chấp nhận bây giờ mà cô ấy 5 năm và 4 tháng tuổi khi chúng tôi đã có một chương trình "phiên"
Michael Krelin - tin tặc

6

Tôi thấy rằng cách tiếp cận tốt nhất để "dạy ai đó lập trình là gì mà không dạy họ lập trình" thực ra là chỉ bỏ bất cứ thứ gì liên quan đến một ngôn ngữ lập trình cụ thể.

Thay vào đó (giả sử họ thực sự quan tâm), tôi sẽ nói chuyện với họ thông qua việc triển khai một chức năng trong một chương trình, như một ứng dụng vay ngân hàng đơn giản (hầu hết mọi người đã phải xử lý các khoản vay ở một số giai đoạn, nếu họ trên một độ tuổi nhất định) , và sau đó chọc lỗ trong tất cả các giả định.

Giống như, điều gì sẽ xảy ra nếu người dùng nhập khoản vay âm? Điều gì xảy ra nếu người dùng không đủ khả năng vay? Làm thế nào để đơn xin vay biết được điều đó? Làm thế nào để đơn xin vay biết được tài khoản ngân hàng nào cần kiểm tra và lịch sử thanh toán cần kiểm tra (tức là người dùng thực sự là ai)? Điều gì sẽ xảy ra nếu người dùng cố gắng nhập tên của mình vào trường số tiền vay? Điều gì sẽ xảy ra nếu người dùng cố gắng trả khoản vay trong 75 năm? Chúng ta có nên giới hạn các lựa chọn trong danh sách các độ dài có sẵn không?

Và cuối cùng: Lập trình là sử dụng tất cả các quy tắc đó và viết chúng bằng một ngôn ngữ mà máy tính hiểu được, để nó tuân theo các quy tắc đó thành chữ cái. Tại thời điểm này, nếu cảm thấy cần thiết, tôi sẽ rút ra một số mã đơn giản để ngôn ngữ tổng thể có thể được xem xét, và sau đó có thể viết ra một trong các quy tắc trong ngôn ngữ đó.

Điểm thưởng nếu bạn có thể khiến bạn của mình phản ứng lại bằng cách: Nhưng nếu chúng ta quên thứ gì đó thì sao? Chà, sau đó chúng ta có lỗi, và bây giờ bạn biết tại sao không có chương trình phần mềm nào là không có lỗi :)


5

Chắc chắn là thứ gì đó có đồ họa hoặc cửa sổ bằng ngôn ngữ cấp cao hơn.

Tại sao? Một người không phải lập trình viên thường cũng là một người không quan tâm đến vật chất, đó là lý do tại sao anh ta sẽ không có được vẻ đẹp của việc sắp xếp. Tuy nhiên, hiển thị một cái gì đó được vẽ trên màn hình ("nhìn kìa, một cửa sổ!", "Nhìn kìa, gõ quá ít và chúng ta có một hộp 3D xoay!") Có thể làm nên điều kỳ diệu;).


"nhìn này, gõ rất ít và chúng tôi có một hộp 3D xoay!" - Và ngôn ngữ kỳ diệu nào bạn đang làm việc có thể tạo ra một hộp xoay 3D trong "quá ít gõ"? Hầu hết các hộp "Tôi có thể haz!" mã ít nhất khoảng 100 LOC. (Tạo cửa sổ, khởi tạo lib 3D, thiết lập ma trận, tạo các đỉnh / chỉ số, đẩy chúng vào bộ nhớ đồ họa, cập nhật các phép quay, liên kết và hiển thị các ngành dọc, thậm chí đừng NÓI CHUYỆN về kết cấu hoặc ánh sáng ...)
Toji

Dưới đây là một hộp 3D xoay trong "một" dòng mã mà ai đó đưa ra: codegolf.stackexchange.com/a/5168 Không sử dụng điều này như một ví dụ :)
1j01

5

Nó trông như thế nào khi bạn làm việc?

Nó trông giống như đánh máy.

Nghiêm túc mà nói, việc lập trình giống như nếu Legos là văn bản và để xây dựng một ngôi nhà Lego lớn, bạn phải nhập rất nhiều văn bản, vừa phải, nối đúng chốt với các lỗ phù hợp. Vì vậy, đó là cách tôi mô tả chung về nó.


Nó giống như nướng một chiếc bánh, ngoại trừ nguyên liệu là các từ, và để làm đông nó, bạn phải nhập rất nhiều từ.
Breton

Nó giống như chơi khúc côn cầu, ngoại trừ gậy khúc côn cầu là bàn phím, puck là các từ và các mục tiêu là đúng cú pháp.
Breton

Nó giống như con người sợ hãi của một chú hề, ngoại trừ những lời bạn nói để làm cho chú hề đi xa là những từ, và insistance của chú hề cố gắng để được vui đùa giống như sự thất vọng hàng ngày của bạn với quản lý của công ty bạn
Breton

Nó giống như một chiếc bánh burrito, ngoại trừ các hạt đậu là các từ, salsa là các chỉ thị chuẩn bị trước và tortilla là trình biên dịch.
Breton

Nó giống như tham dự rạp chiếu phim, ngoại trừ việc kịch bản được viết bằng lời, và bạn không ngủ quên 5 phút trước khi tạm nghỉ.
Breton

5

Thực sự rất khó để hiểu lập trình là như thế nào chỉ từ một ví dụ mã nguồn, bởi vì nó quá trừu tượng.

Không có gì sai khi bắt đầu trên hello world, miễn là bạn có thể hiển thị những gì máy tính thực sự làm với nó. Sau đó, bạn có thể giới thiệu một cấu trúc tại một thời điểm. Lập trình là như vậy - Thực hiện các thay đổi gia tăng và xem kết quả.

Vậy là bạn đã có chương trình hello world. Bây giờ thay đổi nó thành

string Name = getLine();
printf("Hello, %s", name);

thì cấu trúc if

printf("Do you like cake?");
string answer = getLine();
if(answer == "yes") {
    printf("Yeay! I like cake too!");
} else if(answer == "no") {
    printf("Filthy cake hating pig!");
}

sau đó chứng minh rằng chương trình cuối cùng không thành công khi nó nhận được câu trả lời không phải là "có" hoặc "không", và bạn sẽ sửa nó như thế nào ....

và như thế. Tôi không nghĩ rằng bạn cần phải đi sâu vào các khái niệm như đệ quy, hoặc thậm chí các hàm thực sự.

Bạn sử dụng chương trình gì cho việc này không thực sự quan trọng, miễn là bạn có thể hiển thị kết quả của các chương trình khác nhau này trên máy tính. (mặc dù các ví dụ mã psuedocode này có lẽ khá gần với việc trở thành python hợp lệ)


Tôi thích ví dụ trong câu trả lời này, +1!
Carl Smotricz

4

Tôi nghĩ rằng người máy rất tốt để giải thích lập trình, bởi vì ngay cả những ví dụ đơn giản, giả tạo cũng thực tế. Công cụ robot tương đương với Hello World hoặc in danh sách các con số có thể là để robot di chuyển theo đường thẳng hoặc quay theo vòng tròn. Một người không phải lập trình viên có thể dễ dàng hiểu rằng để robot làm được BẤT CỨ ĐIỀU GÌ hữu ích thì trước tiên nó phải tự di chuyển và định vị. Điều này cho phép bạn giải thích cấu trúc chương trình đơn giản và điều khiển luồng.

Bạn muốn robot tiến về phía trước, nhưng chỉ khi không có gì cản đường của nó. Sau đó, bạn muốn nó quay và di chuyển lại. Đó là một thói quen đơn giản bằng cách sử dụng điều khiển luồng cơ bản và các chức năng mà bạn đang gọi khá dễ hiểu (nếu nền tảng của bạn dù sao cũng có những nội dung trừu tượng phù hợp).

Đồ họa cũng có thể hoạt động. Bất cứ điều gì có kết quả ngay lập tức . jQuery thậm chí, bởi vì mọi người đều quen thuộc với việc xoay ảnh và hoạt ảnh web. Ngay cả các ví dụ giả tạo như đẩy các phần tử xung quanh trong DOM cũng có tác dụng dễ dàng nhận thấy và hầu hết mọi người sẽ hiểu những gì và tại sao các câu lệnh trong chương trình làm.

Những thứ như Robocode và LOGO có lẽ thực sự tốt cho việc này.


4

văn bản thay thế
(nguồn: wikimedia.org )

{
   wait for 6/8;
   play F (5), sustain it for 1/4 and a half;
   play E flat (5), sustain it for 1/8;
   play D flat (5), sustain it for 1/8 and a half;
   play F (4), sustain it for 1/16;
   // ...
}

Có lẽ một phép ẩn dụ có thể là một nhà soạn nhạc viết một bản nhạc. Công việc của một nhà soạn nhạc là hoạt động trí tuệ để tạo ra âm nhạc. Với một bản nhạc, nhà soạn nhạc đang nói với nghệ sĩ piano nên chơi gì, và anh ta thực hiện nó bằng các chỉ dẫn chính xác (nốt nhạc, khoảng dừng, v.v.). Nếu "hướng dẫn" không đủ chính xác, nghệ sĩ piano sẽ chơi thứ gì đó khác.

Công việc của một nhà phát triển phần mềm là hoạt động trí tuệ để giải quyết các vấn đề (các vấn đề liên quan đến xử lý tự động dữ liệu). Với mã nguồn , nhà phát triển ra lệnh cho máy tính phải làm gì và anh ta thực hiện bằng các hướng dẫn chính xác. Nếu các hướng dẫn không đủ chính xác, máy tính sẽ làm điều gì đó khác và sẽ không giải quyết vấn đề một cách chính xác.


2
Với âm nhạc, người biểu diễn được mong đợi một cách rõ ràng sẽ tạo ra một cách diễn giải nghệ thuật về các nốt nhạc trên trang, mà có nhiều cách diễn đạt có thể xảy ra. Máy tính không có khái niệm như vậy. Do đó, sự so sánh này sẽ đặc biệt tệ nếu sử dụng với một nhạc sĩ.
Phil Miller

Sự so sánh này có lẽ CHỈ có ý nghĩa đối với một nhạc sĩ tại thời điểm đó. Có bao nhiêu người thấy việc đọc nhạc cũng giống như đọc code?
Toji

@Novelocrat: tất nhiên tôi đồng ý rằng diễn giải là một phần của câu chuyện, máy tính vẫn có thể thêm các biến thể nhỏ (không phải với mục đích nghệ thuật). Ví dụ, suy nghĩ ngẫu nhiên (). Ngoài ra, nhiều nhạc điện tử đương đại thực sự được viết bằng các phương tiện của "chương trình" (trong ngôn ngữ lập trình đồ họa, với khối sơ đồ vv)
Federico A. Ramponi

3

Tôi chỉ muốn viết một cái gì đó bằng mã giả trình bày cách sử dụng máy tính để giải quyết một vấn đề hàng ngày. Có lẽ xác định cửa hàng nào rẻ hơn để mua một danh sách tạp hóa cụ thể từ hoặc một số như vậy.


3

Tại sao không chỉ hiển thị video timelapse Một ngày trong cuộc đời của Nhóm Scrum ?


1
Vấn đề là hầu hết các lập trình viên sẽ xác định được điều gì đang xảy ra trong video đó, nhưng bất kỳ ai khác sẽ thấy một nhóm người đến muộn, trò chuyện rất nhiều, ăn trưa lâu, nói bậy và chỉ thỉnh thoảng vẫy tay theo hướng máy vi tính. (Tôi biết rằng những gì chúng tôi làm, nhưng chúng tôi không muốn để cho mọi người ấn tượng sai bây giờ, đúng không?)
Toji

3

Một lập trình viên viết các hướng dẫn để máy tính thực hiện.
Việc chạy chương trình cho kết quả máy tính thực sự theo các hướng dẫn đó.

Một ví dụ là một đầu bếp sẽ làm theo một công thức để nướng một ổ bánh mì. (ngay cả khi nó nằm trong đầu họ) ... đó là lập trình. Không giống như vợ tôi, máy tính làm theo công thức chính xác mọi lúc. Vợ tôi, làm điều đó trong đầu của cô ấy và nó trở nên khác nhau nhưng lần nào cũng ngon ;-)

Nếu bạn muốn đi trước và dạy điều này chi tiết hơn thì mã giả rất dễ hiểu.

ví dụ

IF today's date is the 1st of may then
  print to screen "Happy Birthday"
ELSE
  print to screen "It's not your birthday yet"

Vẻ đẹp của mã psuedo gần như bất kỳ ai cũng có thể hiểu được nó và đây là điểm chính của nó.


2

Bạn muốn cho cô ấy xem chương trình trông như thế nào? Chỉ cần bật một thiết bị đầu cuối và

find / 

2

Ngạc nhiên là điều này vẫn còn mở, và ngạc nhiên là chưa có ai đưa ra câu trả lời này. (Tôi nghĩ. Tôi có thể đã vô tình bỏ qua một trong 40 câu hỏi mà dù sao cũng không ai đọc.)

Câu trả lời của bạn là trong câu hỏi của bạn

Khi tôi còn nhỏ, chúng tôi đã từng đi nghỉ ở Ý. Trên đường xuống, phi công cho tôi vào buồng lái của máy bay. Tất nhiên, tôi không học cách lái máy bay. Nhưng tôi đã nhìn thấy thế giới của phi công. Tôi có ý tưởng về cách họ điều khiển máy bay, những gì phi công thực sự làm.

Đó thực sự là tất cả những gì tôi muốn làm.

Đó là tất cả những gì bạn phải làm. Chọn một bài tập ngắn trong phần hướng dẫn . GUI dài hơn vừa phải cũng có thể có lợi do các hình ảnh được bổ sung. (Trò chơi có thể kéo dài thời lượng một chút.) Và để cô ấy xem bạn viết mã . Đó là nó. Nó giống như ví dụ thí điểm của bạn.

Ngoài ra, có một số REPL trực tuyến sẽ giúp bạn xem mã ngay lập tức nhiều hơn.


1

Tôi nói hãy cho anh ấy xem loại bong bóng.

Đó là một thủ thuật dễ hiểu, dễ hiểu, được chuyển đổi sang một ngôn ngữ chính thức.

Đó là công việc của chúng tôi. Diễn đạt ý tưởng của chúng tôi bằng một ngôn ngữ trang trọng, chặt chẽ mà ngay cả máy móc cũng có thể hiểu được. Một chút tương tự như thiết kế các thủ tục cho thiết kế tổ chức.


1
Nhưng đó không phải là những gì làm cho nó trở thành một ví dụ tốt? Bạn không lập trình máy tính giống như bạn chỉ dẫn cho một người. Máy tính không có trực giác; hoặc khả năng nhìn và sử dụng một lối tắt thích hợp. Thực tế là một loại bong bóng thậm chí còn tồn tại giải thích rằng chúng ta có các lập trình viên. Nhiều khía cạnh của lập trình phụ thuộc vào thực tế là máy tính nhanh chứ không phải thông minh.
mmc

3
@Set Tôi nhìn vào chúng TẤT CẢ MỘT LẦN và tìm thấy chúng lớn nhất. Những gì tôi không làm, là nhìn vào thẻ 1, so sánh nó với thẻ 2, v.v. trong một vòng lặp.

3
Khi tôi phải sắp xếp một số lượng lớn các mục, chẳng hạn như khi tôi phải đóng gói hàng nghìn cuốn sách và xếp chúng theo thứ tự trên giá, tôi nghĩ tôi sử dụng một thứ gì đó giống như sắp xếp chèn hơn.
Giàu

1
Vâng, tôi muốn nói rằng sắp xếp chèn là một thuật toán bình thường hơn của con người (mặc dù như Neil đã chỉ ra, chúng tôi thường có thể xem xét các lô lớn hơn 2 thẻ cùng một lúc để tìm thẻ lớn nhất. Nhưng khi đã có thẻ lớn nhất, chúng tôi thường làm một cái gì đó như sắp xếp chèn.)
jalf

1
@Neil, Có thể khả năng của bạn để xem tất cả chúng cùng một lúc là một điều trừu tượng so với thuật toán sắp xếp thực tế của bộ não của bạn :) Bạn biết là phải có một.
Carson Myers

1

Viết mã một thứ gì đó nhanh chóng để đọc báo giá cổ phiếu và ghi chúng vào bảng tính excel. Điều này đủ dễ dàng để thực hiện trong vài phút và gây ấn tượng rất nhanh với những loại không chuyên về kỹ thuật khi họ thấy giá trị thực tế của nó.


Tuy nhiên, nó không thực sự là về "gây ấn tượng", mà chỉ là cho họ ý tưởng về mã "trông như thế nào". Một cái gì đó về cơ bản là "gọi thư viện A. Chuyển kết quả đến thư viện B" có lẽ không phải là lý tưởng.
jalf

1
có lẽ "gây ấn tượng" không phải là từ chính xác. Substitue "chương trình giá trị của" thay vì
ennuikiller

Ừ, nhưng điều tôi muốn thực sự là cho cô ấy hiểu ý nghĩa của nó khi tôi nói rằng tôi đang lập trình. Tôi đang nhìn cái gì, nếu không chỉ là các bảng số nguyên hoặc số 1 và số 0?
jalf

điều này sẽ làm vì nó liên quan đến đầu vào, đầu ra, và tính toán (hiển thị mức trung bình của giá cổ phiếu hoặc một cái gì đó.
ennuikiller

1

Lựa chọn thông thường của tôi là lấy một bộ hồ sơ khách hàng từ cơ sở dữ liệu. Sử dụng C # và LINQ trong Visual Studio, có thể mất tối đa 10 phút để xây dựng một trang web và đưa các khách hàng cơ sở dữ liệu "Northwind" vào lưới. Điều tốt đẹp là "danh sách khách hàng" là thứ mà hầu như ai cũng có thể hiểu được.


1

Hoàn toàn phụ thuộc vào mức độ quan tâm của cô ấy (hoặc mức độ quan tâm của bạn đối với cô ấy ). Hầu hết mọi người hỏi câu hỏi đó như một cuộc trò chuyện nhàn rỗi và không thực sự muốn biết.

Lập trình không chỉ đơn thuần là các thuật toán (như "Cách pha một tách cà phê), về cơ bản nó cũng bắt nguồn từ toán học. Hầu hết mọi người sẽ nhanh chóng bị vấp ngã khi sử dụng các thuật ngữ toán học một cách tinh vi (" hàm "là gì?).

Để thực sự dạy lập trình, có thể hữu ích khi nghĩ lại những trải nghiệm lập trình đầu tiên của chính bạn, giáo viên lập trình đầu tiên của bạn, ngôn ngữ lập trình đầu tiên của bạn. Bạn đã học như thế nào? khi bạn đang học, bạn đã có những kỹ năng nào mới trong tâm trí của mình (ví dụ, giải tích)? Động lực nào khiến bạn muốn hiểu biến là gì hoặc tại sao lại có ba loại vòng lặp khác nhau?

Ngôn ngữ khôn ngoan: Sử dụng một cái gì đó như python. Mức thực sự cao, không ngoặc nhọn có lẽ tốt hơn.


1

Alice được phát triển tại Carnegie Mellon.

Alice là một môi trường lập trình 3D sáng tạo giúp bạn dễ dàng tạo hoạt ảnh để kể một câu chuyện, chơi trò chơi tương tác hoặc video để chia sẻ trên web. Alice là một công cụ giảng dạy về máy tính nhập môn. Nó sử dụng đồ họa 3D và giao diện kéo và thả để tạo điều kiện cho trải nghiệm lập trình đầu tiên hấp dẫn hơn, ít bực bội hơn.


Thật thú vị và tôi đã chọn tải xuống. . . Tuy nhiên, điều này có thể tạo ra ấn tượng sai lầm về lập trình như ngày nay. . . "Lập trình thực" ít kích thích thị giác hơn nhiều. . .
Jason D

1

Trong mã giả:

function dealWithPerson(person){
    if(ILike(person)){
        getCookie().giveTo(person);
    }
    else{
        person.tell("You shall receive no cookies!");
    }
}

dealWithPerson(Person.fromName("Nick"));
dealWithPerson(Person.fromName("John"));

Điều này thể hiện khái niệm về hàm, hướng đối tượng và chuỗi, trong một cú pháp giống C (khi tôi nói cú pháp giống C, tôi đề cập đến các ký tự kỳ lạ).
Nó cũng cho thấy cách mã có thể được sử dụng lại. Lưu ý rằng mặc dù nó là mã giả, nhưng tôi sẽ không ngạc nhiên nếu có ngôn ngữ nào đó chấp nhận cú pháp này (có lẽ JavaScript cho phép điều này?).

Bạn cũng có thể điều chỉnh ví dụ này để có các vòng lặp. Hy vọng điều này sẽ giúp cho người đó thấy một chương trình trông như thế nào (vì nó là một cú pháp thực tế và nó tương đối dễ hiểu).


Tôi sẽ nói mã này giống với java hơn C. . Trừ khi Java được coi là một nhánh của C ...
Jason D

function là một từ khóa JavaScript, không phải là một từ khóa Java / C. Vì vậy, tôi đoán đây là cú pháp giống JavaScript ... Nhưng tôi đồng ý rằng phần hướng đối tượng của nó làm cho nó ít C-ish hơn. Không phải người không rành về kỹ thuật cũng biết.
luiscubal 21/12/09

1

Tôi đã dạy lập trình trong nhiều năm và phát hiện ra rằng số cách bạn cần giải thích mọi thứ bằng với số sinh viên mà bạn có. Nhưng một phương pháp hoạt động hầu hết thời gian như sau:

  1. Trình bày một biểu đồ thể hiện luồng logic của một ứng dụng đơn giản
  2. Viết hướng dẫn bằng ngôn ngữ đầy đủ của con người (ví dụ: tiếng Anh)
  3. Viết tắt từng lệnh thành viết tắt được sử dụng trong ngôn ngữ lập trình
  4. Chọn một ngôn ngữ ít khó hiểu hơn như Basic hoặc Pascal cho mục đích giảng dạy

Tất cả mã chỉ đơn giản là viết tắt cho ngôn ngữ tự nhiên. Được viết bằng tiếng Anh hoàn toàn, hầu hết các chương trình có vẻ tầm thường.

Đối với một thuật toán tốt, đó là một câu chuyện khác. Thật đáng buồn khi thấy nhiều khóa học Khoa học Máy tính không còn dạy về thuật toán hoặc phủ nhận nó nữa.

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.