IT TIP

프로그래머가 아닌 사람에게 프로그래밍이 "어떻게 생겼는지"설명 할 수있는 좋은 예는 무엇입니까?

itqueen 2020. 10. 27. 23:52
반응형

프로그래머가 아닌 사람에게 프로그래밍이 "어떻게 생겼는지"설명 할 수있는 좋은 예는 무엇입니까?


제 친구가 저에게 프로그래밍 할 때 숫자 목록 만보고 있는지 아니면 어떻게 작동하는지 물었습니다. 나는 그것이 일반적으로 이상한 영어 단어가 던져진 수학 공식과 더 비슷하며 일반적으로 대부분 읽을 수 있다고 설명하려고 노력했습니다. 그러나 이것은 매우 모호한 설명이며 프로그래머가 아닌 사람에게는 실제로 많은 것을 설명하지 않습니다.

그러나 그것은 좋은 예가 될 수있는 것에 대해 생각하게했습니다. 내가 그녀의 프로그래밍이나 다른 것을 가르치고 싶어서가 아니라 단순히 그녀에게 프로그램 코드가 "어떻게 생겼는지"에 대한 아이디어를주기 위해서입니다.

그리고 그것이 실제로 어떤 것이 좋은 예가 될지 궁금하게 만들었습니다. 그리고 그것은 놀랍게도 어려운 것으로 밝혀졌습니다.

내 첫 생각은 분명히 간단한 "Hello World"프로그램이었습니다. 그러나 그것은 실제로 유용한 것을 보여주지 않습니다. 실제로 우리가 함수, 변수, 제어 흐름 구조를 사용 if하거나 while실제로 무언가를 수행 하는 프로그램을 만드는 방법을 보여주지 않습니다 . 그것에 대한 논리가 없습니다. 프로그램은 아무 반응도하지 않습니다.

그래서 아마도 소수 계산과 같은 것이 더 좋은 예가 될 것입니다. 하지만 다시 말하지만 너무 이론적이고 비실용적 일 수 있습니다 ... (이게 무슨 소용이 있습니까? "실제"프로그램을 작성하는 것과 무슨 관련이 있습니까?) 그리고 다시 말하지만 중요한 제어 흐름 논리가 없습니다. 그것은 단순한 일련의 수학 일뿐입니다.

또한 어떤 언어를 사용해야합니까?

이상적으로는 그것이 매우 "깨끗한"언어 일 필요는 없다고 생각합니다. 그러나 오히려 구조를 명확하게해야합니다. 그렇게한다면 일정량의 소음과 어수선 함이 괜찮을 수 있습니다. 아마도 C ++와 같은 것이 실제로 그러한 이유로 Python보다 더 나은 예가 될 것입니다. 명시 적 중괄호 및 유형 지정자는 프로그램의 구조를 설명하는 데 도움이되는 명백한 "후크"이거나 거의 영어로 읽을 수 있는 단순한 문장이 아님을 강조합니다 .

그러나 C ++를 사용하면 완전히 이상한 구문을 사용합니다. std::cout << xx를 인쇄하는 데 사용되는 이유는 무엇 입니까? "일반"함수 호출 구문이 아닌 이유는 무엇입니까? 그리고 printf난해한 형식 문자열과 확장 성 부족으로 훨씬 낫지 않습니다 ( char*문자열 에 사용하여 프로그램을 복잡하게 만들고 싶 습니까? 아니면 인쇄 할 수있는 문자열을 얻기 위해 std::string불필요 해 보이는 것을 호출하는 데 만족 합니까? ?s.c_str()printf

아마도 더 높은 수준의 언어가 더 좋을 것입니다. 하지만 어느 것? 그리고 왜?

프로그래밍을 가르치는 데 사용할 언어 / 예제 프로그램에 대한 유사한 질문이 많이 있다는 것을 알고 있습니다. 하지만 여기에서 요구하는 사항은 다르다고 생각합니다. 프로그래밍을 가르 칠 때 우리는 무엇보다 단순함을 원합니다. 우리는 아직 배우지 않은 것은 피하고 싶습니다. 우리는 학생 이 화면의 모든 것을 이해할 수 있도록하고 싶습니다 .

나는 그 자체로 단순성에 관심이 없습니다. 그러나 오히려 "외부인"에게 "프로그램이 어떻게 생겼는지"에 대한 아이디어를 제공합니다. 그리고 프로그램은 간단하지 않습니다. 그러나 그들은 않습니다 일반적으로 광기에 특정 구조 및 방법을 나타낸다. 어떤 언어 / 프로그램이 그것을 가장 잘 보여줄까요?

편집
지금까지 모든 제안에 감사드립니다. 여러분 중 일부는 제가 의도 한 것과는 약간 다른 각도를 가졌습니다.

아마도 예가 순서 일 것입니다. 나는 비행기를 조종 할 수 없지만 조종석이 어떻게 생겼는지, 조종사가 비행 중에 "하는 일"에 대한 기본적인 이해를 가지고 있습니다.

저는 훈련받은 목수는 아니지만 톱이나 망치를 보면 압니다.

그러나 예를 들어 영화에서 프로그래밍과 관련된 것을 볼 때 일반적으로 쓰레기로 가득 찬 화면 일뿐입니다 (매트릭스의 녹색 텍스트에서와 같이). 그것은 평범한 인간이 실제로 수있는 것처럼 보이지 않습니다 . 인식 할 수있는 것은 없습니다. 프로그래머가 아닌 사람은 단순히 그것이 흑 마법이라고 생각합니다.

나는 그녀에게 비행이나 소프트웨어 프로그래밍을 가르치고 싶지 않습니다. 그러나 나는 그녀에게 기본적인 기준을 제시하고 싶습니다. "아, 그게 당신이 작업하고있는 것입니다. 화면에 나타나는 임의의 기호와 숫자가 아닙니다."라는 아이디어입니다. 단순한 if문장을 보여주는 것만으로도 매트릭스 스타일의 임의의 기호 및 숫자에 비해 계시가 될 것입니다.

여러분 중 일부는 알고리즘을 설명하거나 의사 코드를 사용하도록 제안했지만 그게 제가 피하고 싶은 것입니다. 목수가 아니어도 톱을보고 그것이 무엇이고 어떻게 작동하는지에 대한 기본적인 아이디어를 얻을 수있는 것과 마찬가지로 실제 코드가 어떻게 생겼는지 간단히 보여주는 무언가를 원합니다 .

내가 어렸을 때 우리는 한때 이탈리아에서 휴가를 갔다. 내려가는 길에 조종사가 나를 비행기의 조종실로 안내했습니다. 물론 나는 비행기를 조종하는 법을 배우지 않았다. 그러나 나는 조종사의 세계를 들여다 보았다. 나는 그들이 비행기를 어떻게 타는 지, 조종사가 실제로 무엇을하는지에 대한 아이디어를 얻었다.

그게 제가하고 싶은 전부입니다. 제 친구는 프로그래밍 학습에 관심이 없으며 강제로 소스 코드를 이해하고 싶지 않습니다. 하지만 그녀는 내가 어떤 도구 나 엔티티로 작업하는지 궁금했습니다. 매트릭스 스타일의 심볼이 화면을 스크롤합니까? 순수 수학? 산문 형태의 영어?

제가 전하고 싶은 것은 "내가 일할 때 어떻게 생겼는지"에 대한 매우 높은 수준의 이해입니다.


귀하의 질문에 직접 답하기 위해- 프로그래밍이 "어떻게 보이는지" , 나는 그들에게 큰 응용 프로그램의 인쇄물을 보여줄 것입니다. 장난감 앱이나 haskell의 qsort와 같은 귀여운 것들은 정말 잘못된 생각을줍니다.


기본

10 PRINT "Sara is the best"
20 GOTO 10

업데이트 : 12 살 때 사촌 (14 살)이 Turbo Pascal 7.0을 가져 와서 컴퓨터에 설치했습니다.
그는 처음부터 tic tac toe 게임을 프로그래밍했습니다 (아는 사람들을 위해 BGI 모드에서).
나는 프로그램이 완전한 응용 프로그램이 될 때까지 어떻게 발전하는지 단계별로 관찰 / 관찰했습니다.
그때까지는 BASIC에서 문자열을 인쇄하는 방법 만 알고있었습니다. : -B

비슷한 일을 할 수 있습니다. 쌍 프로그래밍. 글쎄, 실제로 당신의 친구는 관찰자가 될 것이지만 그녀는 아이디어를 얻을 것입니다;)


존재하지 않는 (또는 믿는다면 존재하는) 언어를 고려하고 의사 코드를 사용하는 것은 어떨까요? 나는 당신이 달성하고 싶은 것에 따라-나는 그 사람에게 익숙한 작업의 예를 고려할 것이라고 생각하지만 의사 코드 예제로 조각화했습니다.

나는 일반적으로 "요리"또는 "레시피"라는 아이디어가 프로그래머가 아닌 사람에게 설명 할 때 매우 적합하다고 생각합니다.

나는 그 사람에게 그들이 상당히 복잡한 요리법을 가지고 있다고 상상 해보라고 요청합니다. 그런 다음 그들이 무엇을하고 있는지 전혀 모르는 사람을 위해 그것을 적어 두어 요리 할 수 ​​있도록 제안합니다.

관련된 매우 명확한 몇 단계가 있습니다.

  • 작업에 필요한 재료와 도구를 모으십시오.
  • 재료를 준비하십시오. 이것은 복잡합니다. 예 :
    • 작은 고추 3 개를 얻습니다.
    • 고춧가루 한 개당 1cm 정도의 크기로 자릅니다.
    • 나중을 위해 붉은 고추 덩어리를 그릇에 넣으십시오.
  • 이와 별도로 쌀 준비 기능을 호출하고 요리를 계속하는 동안 백그라운드에서 비동기식으로 작동하도록합니다.

나는 이것이 어디로 가는지 볼 수 있다고 확신합니다 ...;)

요리와 프로그래밍에는 많은 유사점이 있습니다 (많은 것들이 있지만 집을 짓는 것보다 요리에 대해 더 많은 사람들이 이해하고 있습니다). 단계 / 유사점 (내가 본 것처럼)은 다음과 같습니다.

  • Gathering : (목표를 달성하고 함께 모으는 데 필요한 사항에 대한 선언).
  • 준비 : 재료를 자르 거나 데이터 연결 개체 등을 처음 사용할 준비를합니다.
  • 비동기식 : 한 가지는 진행하고 다른 것은 진행하는 기능.
  • 기능 : 밥 만들기, 치킨 요리, 카레 요리는 모두 별도의 과정이 필요하며 마지막에만 makeCurry (닭고기, 밥) 기능을 사용할 수 있습니다.
  • 테스트 : 진행하면서 조금도 빠진 것이없고 모든 것이 순조롭게 진행되고 있는지 확인하십시오. 예를 들어 다음 단계로 이동하기 전에 닭고기가 익 었는지 확인하십시오.
  • 쓰레기 : 일단 끝났 으면 정리를해야합니다. ;)
  • 모범 사례의 원칙 : 요리와 같은 작업을 수행하는 효율적인 방법이 있습니다. 초보 프로그래머는 코드 외에도 배워야합니다. 때로는 머리를 돌리기가 어려울 수 있습니다. 예 : DRY, 칼로 효율적으로 자르는 방법 및 생 닭고기를 먹지 않음;)

기본적으로 저는 프로그래밍을 일반적인 주제로 가르치는 것을 생각합니다 . 설득력있는 이유가 없다면 반드시 언어로 가르치지는 않을 것 입니다. 대신에, 그들이 어떻게 하나로 합쳐질 수 있는지에 대한 기초를 적어도 이해할 때까지 초록부터 가르치십시오. 그러면 모니터와 키보드 앞에 앉을 때 더 쉬울 수 있습니다.

나는 이것에 대해 하나의 "정답"이 없을 것이라고 생각한다. 그러나 저는 여러분이 모두에서 조금씩 가져갈 수있는 몇 가지 정말 좋은 아이디어를 생각합니다.


프로그래밍은 컴퓨터가 복잡한 작업을 수행 할 수 있도록 자세한 지침을 제공한다고 설명합니다.

커피 두 잔 만드는 법?

  1. 주전자 채우기
  2. 끓인 물

  3. 컵에 커피

  4. 물에 부어
  5. 설탕 추가
  6. 우유 추가

  7. 다시 3 ~ 6 번


직장에서 주니어 코더

약간 이렇게 보입니다. 때때로.


아마도 모든 사람들이 도구보다는 코드에 너무 집중하고있을 수 있습니다. 아마도 그녀에게 IDE에서 프로젝트를 보여주고 다양한 소스 파일을 포함하는 방법과 데이터베이스 스키마 또는 시각적 사용자 인터페이스 디자이너와 같은 다이어그램적인 것들을 보여주는 것이 가장 좋습니다. Visual Studio, Eclipse 또는 Xcode는 검정색 배경에 빛나는 녹색 기호를 빠르게 스크롤하는 대부분의 사람들의 정신 이미지와는 거리가 멀습니다.


AT & T 어셈블리 언어로 작성된 큰 win32 응용 프로그램을 다운로드하여 메모장에 보여주고 그녀에게 "보시다시피, 프로그래밍하는 데 저와 같은 초인이 필요합니다."라고 말해야한다고 생각합니다.


프로그래머가 아닌 사람에게 이해할 수있는 가치가있는 것을 코딩하십시오. 엄마에게 Quicksort를 시연한다면 아무 소용이 없을 것입니다.

그 사람에게 관심사에 대해 물어보십시오. 예를 들어 증권 거래소에있는 경우 적절한 웹 페이지에서 일부 주식 통계를 읽고이를 엑셀 시트로 컴파일하는 스크립트를 함께 해킹하거나 (심각한 뇌 손상을 피하기 위해 csv 사용 ^^) 멋진 그래프로 만들 수 있습니다. .

그 사람이 트위터를 사용한다면, 팔로워의 팔로워 수를 세는 코드 나 그와 비슷한 것을 작성하십시오.

이러한 작업은 매우 짧은 시간에 수행 할 수있을만큼 간단하며 루프, 라이브러리 (관련된 모든 http 항목에 대해), 아마도 재귀와 같이 프로그래머가 사용하는 많은 기본 도구를 이미 활용하고 있습니다.

작업을 마친 후 또는 코딩하는 동안 (더 나은) 프로그램이 어떻게 마술을하는지 설명 할 수 있습니다.

단순하게 유지하고 인간의 언어로 말하십시오. 그들에게 메가 바이트의 코드를 보여주고 프로토 타입 상속과 같은 것에 대해 이야기한다면, 당신은 그들을 위협하고 그들은 즉시 흥미를 잃게 될 것입니다.


아내에게 월급을 받기 위해 내가하는 일에 대한 아이디어를주기 위해 (진짜 일입니다! 약속합니다! 우리는 하루 종일 웹을 검색하지 않습니다!) 저는 어느 날 저녁 그녀와 Python과 함께 앉아 몇 가지를 보여주었습니다. 기본 개념 : 함수 호출 (인쇄), 변수 할당 및 읽기, if 문 작동 방식. 그녀는 선생님이기 때문에 조건 문의 개념을 미취학 아동과 함께 일하는 것에 비유했습니다. :)

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

몇 가지 매우 높은 수준의 개념을 검토 한 후 간단한 숫자 추측 게임을 통해 코드를 보여주고 코드를 살펴보면서 플레이하게했습니다.

# 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!")

"가져 오기"라는 다소 추상적 인 개념을 제외하고, 이것은 화면에서 일어나는 일을 따라 가기 쉽고 "연결"하기 쉬운 매우 간단한 예입니다. 실제로 흥미롭고 상호 작용하는 일을하는 것은 말할 것도 없습니다. 제 아내는 코드 방식에 대해 많이 알 필요없이 전체 개념에 대해 조금 덜 미스테리 한 경험에서 벗어났다고 생각합니다.

열쇠는 누군가가 코드를 볼 수 있고 최종 결과를 나란히 볼 수 있다는 것입니다.


LOGO 라는 CLI 그래픽 패키지가 있었고 Turtle Graphics로 가장 잘 알려져 있으며 LT 90, RT 105등의 명령을 사용하여 화면에 모양을 그리는 데 사용되었습니다.이 패키지 를 찾을 수 있다면 중간 정도의 복잡한 것을 시도하고 그리는 것이 좋은 경험이 될 것입니다.

로고-논리 지향 그래픽 지향 프로그래밍 언어.

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

최신 로고 인터프리터에 대한 링크도 있는 logothings 또는 Wikipedia 에서 자세히 알아보십시오 .


  1. 컴퓨터 프로그래머는 프로그램을 작성합니다.
  2. 프로그래밍을하지 않는 동안 컴퓨터 프로그래머는 직장에서 매력적인 여성을 괴롭힌다.

그런 다음 : (출처 : markharrison.net )


지금:


5 살짜리 딸이 나에게 질문을했을 때, 나는 그녀에게 작은 화살 "로봇"을위한 프로그램을 "개발"하도록 만들었습니다.이 프로그램은 그를 이동, 회전, 회전을 나타내는 순서도 같은 종이 조각을 사용하여 보드의 왼쪽 상단 모서리로 데려다 줄 것입니다. 정황. 어른들에게도 적용되는 것 같아요.

그러나 나는이 답변의 발명을 주장하지 않습니다.

편집 정보 : 두렵습니다. 프로그래머는 다른 사람들이 프로그래밍에 대해 가지고있는 생각에 대해 더 이상 생각하지 않습니다. ;-) 사람들은 스파이가 제임스 본드의 하이테크 장난감을 모두 갖추고 있다고 생각하는만큼 프로그래밍이 매트릭스와 같은 녹색 비디오 카드 손상이라고 생각합니다. 그리고 어떤 분야의 전문가라도 그의 직업에 관한 영화를 볼 때 보통 짜증이납니다. 영화 제작자는 전혀 몰라요! 반면에 우리 는 영화 에서 프로그래밍을 올바르게 묘사하는 방법을 알고 있습니까? ;-)


"다른 사람에게 프로그래밍을 가르치지 않고 프로그래밍이 무엇인지 가르치는"최선의 방법은 실제로 특정 프로그래밍 언어와 관련된 모든 것을 삭제하는 것임을 발견했습니다.

대신 (실제로 관심이 있다고 가정하면) 간단한 은행 대출 신청서와 같은 프로그램에서 기능을 구현하여 이야기합니다 (대부분의 사람들은 특정 연령 이상이라면 어떤 단계에서 대출을 처리해야했습니다) , 그리고 모든 가정에 구멍을 뚫습니다.

예를 들어, 사용자가 마이너스 대출 금액을 입력하면 어떻게됩니까? 사용자가 대출을받을 수없는 경우 어떻게합니까? 대출 신청서는 어떻게 알 수 있습니까? 대출 애플리케이션은 어떤 은행 계좌를 확인하고 어떤 지불 내역을 확인해야하는지 어떻게 알 수 있습니까 (즉, 실제로 사용자는 누구입니까)? 사용자가 대출 금액 필드에 자신의 이름을 입력하려고하면 어떻게됩니까? 사용자가 75 년 이상 대출을 받으려고하면 어떻게됩니까? 사용 가능한 길이 목록으로 선택을 제한해야합니까?

그리고 결국 : 프로그래밍은 모든 규칙을 취하고 컴퓨터가 이해할 수있는 언어로 작성하여 해당 규칙을 문자에 따릅니다. 이 시점에서 필요하다고 생각되면 전체 언어를 볼 수 있도록 간단한 코드를 뽑은 다음 해당 언어로 규칙 중 하나를 작성합니다.

친구가 반응하도록 할 수 있다면 보너스 포인트 :하지만 우리가 뭔가를 잊었다면? 글쎄, 우리는 버그가 있고, 왜 소프트웨어 프로그램도 버그가 없는지 알 수 있습니다. :)


확실히 더 높은 수준의 언어로 된 그래픽이나 창을 가진 무언가.

왜? 프로그래머가 아닌 사람은 일반적으로 배우자가 아니기 때문에 분류의 아름다움을 얻지 못할 것입니다. 그러나 화면에 그려진 무언가를 보여주는 ( "보기, 창!", "보기, 입력이 거의없고 3D 상자가 회전합니다!") 놀라운 일이 될 수 있습니다.


일할 때 어떤 모습입니까?

타이핑하는 것 같습니다.

하지만 진지하게도 프로그래밍은 마치 레고가 텍스트 인 경우와 비슷하고 큰 레고 하우스를 짓기 위해서는 많은 텍스트를 정확히 입력해야했고 올바른 구멍에 올바른 페그를 연결해야했습니다. 이것이 제가 일반적으로 설명하는 방법입니다.


너무 추상적이기 때문에 소스 코드 예제에서 프로그래밍이 어떤 것인지 이해하기가 정말 어렵습니다.

컴퓨터가 실제로 무엇을하는지 보여줄 수만 있다면 hello world에서 시작하는 것은 잘못된 것이 아닙니다. 그런 다음 한 번에 하나의 구성을 도입 할 수 있습니다. 이것이 바로 프로그래밍의 방식입니다. 점진적으로 변경하고 결과를 확인합니다.

그래서 당신은 hello world 프로그램을 가지고 있습니다. 이제 다음으로 변경하십시오.

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

다음 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!");
}

그런 다음 마지막 프로그램이 "예"또는 "아니오"이외의 답변을 받았을 때 실패하고 어떻게 수정하는지 보여줍니다 ....

등등. 나는 당신이 재귀와 같은 심층적 인 개념에 들어갈 필요가 없다고 생각합니다.

컴퓨터에서 이러한 다양한 프로그램의 결과를 보여줄 수만 있다면 어떤 프로그래밍을 사용하든 상관 없습니다. (이 의사 코드 예제는 아마도 유효한 파이썬에 매우 가깝지만)


로봇 공학은 프로그래밍을 설명하는 데 매우 유용합니다. 단순하고 인위적인 예제조차도 실용적이기 때문입니다. Hello World에 해당하는 로봇 공학 또는 숫자 목록 인쇄는 로봇이 선을 따라 움직이거나 원을 그리며 회전하도록 할 수 있습니다. 프로그래머가 아닌 사람은 로봇이 유용한 모든 것을 수행하려면 먼저 스스로 움직이고 위치를 지정해야한다는 사실을 쉽게 이해할 수 있습니다. 이를 통해 간단한 프로그램 구조와 흐름 제어를 설명 할 수 있습니다.

로봇이 앞으로 나아가기를 원하지만 경로를 막는 것이 없을 때만 가능합니다. 그런 다음 회전하고 다시 움직이기를 원합니다. 이것은 기본 흐름 제어를 사용하는 간단한 루틴이며, 호출하는 함수는 이해하기 매우 쉽습니다 (플랫폼에 괜찮은 추상화가있는 경우).

Graphics might also work. Anything that has immediate results. jQuery even, because everyone is familiar with rotating pictures and web animations. Even contrived examples like pushing elements around in the DOM has an easy to see effect, and most people will understand what and why the statements in the program do.

Things like Robocode and LOGO are probably really good for this.


대체 텍스트
(source: 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;
   // ...
}

Perhaps a metaphor could be that of a composer writing a musical score. The job of a composer is the intellectual activity of creating music. With a score, the composer is telling the pianist what to play, and he does it by means of precise instructions (notes, pauses and so on). If the "instructions" are not precise enough, the pianist will play something different.

The job of a software developer is the intellectual activity of solving problems (problems that have to do with automated processing of data). With source code, the developer is telling the computer what to do, and he does it by means of precise instructions. If the instructions are not precise enough, the computer will do something different and will not solve the problem correctly.


I would just write something in pseudocode that demonstrates how to use a computer to solve an everyday problem. Perhaps determining which store is cheaper to buy a particular grocery list from or some such.


Why not just show the timelapse video A Day in the Life of a Scrum Team?


A programmer writes instructions for the computer to perform.
Running the program results in the computer actually following those instructions.

An example is a cook will follow a recipe in order to bake a loaf of bread. (even if it's in their head)... that's programming. Unlike my wife, the computer follows the recipe exactly every time. My wife, does it in her head and it turns out different but delicious every time ;-)

If you want to go ahead and teach this in more detail then pseudo-code is easy to understand.

e.g.

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"

The beauty of psuedo code is nearly anyone can understand it and this is the point of it.


Want to show her what programming looks like? Just pop a terminal and

find / 

Surprised this is still open, and surprised no one has already given this answer. (I think. I might have accidentally skipped one of the 40 questions that no one is going to read anyway.)

Your answer is in your question

When I was a kid, we once went on vacation in Italy. On the way down, the pilot let me into the cockpit of the plane. Of course, I didn't learn how to fly the plane. But I did get a peek into the pilot's world. I got an idea of how they make the plane go, what the pilot actually does.

That's really all I want to do.

That's all you have to do. Pick a short exercise out of a tutorial. A moderately longer GUI one could also be beneficial due to the added visuals. (Games might be pushing the length a bit.) And let her watch you code. That's it. It's the same as your pilot example.

Also there are a number of online REPLs that will make watching you code even more immediate.


I say show him bubble sort.

It's an easy, understandable trick, converted to a formal language.

That's what our job is about. Expressing our ideas in a strict, formal language, such that even a machine can understand. A little similar to designing procedures for organizational design.


Code up something quick that reads stock quotes and writes them to an excel spreadsheet. This is easy enough to do with a few minutes and impresses non technical types very quickly as they see the practical value of it.


My usual choice is to retrieve a set of customer records from a database. Using C# and LINQ in Visual Studio, it takes maybe 10 minutes at most to build a web page and dump out the "Northwind" database customers into a grid. The nice thing is that a "list of customers" is something that almost anybody can understand.


Totally depends on the level of her interest (or your level of interest in her). Most people ask that question as idle conversation, and don't really want to know.

Programming is more than algorithms (like "How to make a cup of coffee), it's also fundamentally rooted in mathematics. Most people will be quickly tripped up by the subtle use of mathematical terms (what's a "function"?).

In order to really teach programming, it may help to think back to your own first programming experiences, your first programming teacher, your first programming language. How did you learn? when you were learning, what skills did you already have fresh in your mind (i.e., calculus)? What motivated you to want to understand what a variable is or why there are three different kinds of loops?

Language-wise: Use something like python. Really high level, non-curly-bracket probably better.


Alice which was developed at Carnegie Mellon.

Alice is an innovative 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web. Alice is a teaching tool for introductory computing. It uses 3D graphics and a drag-and-drop interface to facilitate a more engaging, less frustrating first programming experience.


In pseudo-code:

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"));

This demonstrates the concept of functions, object-orientation and strings, in a C-like syntax(when I say C-like syntax I refer to the weird characters).
It also shows how code can be reused. Note that although it is pseudo-code, I wouldn't be surprised if there was some language that accepted this syntax(perhaps JavaScript allows this?).

You could also adapt this example to have loops. Hope this helps show that person how a program looks like(since it is a realistic syntax and it is relatively easy to understand).


I have been teaching programming for many years and found out that the number of ways you need to explain things is equal to the number of students you have. But one method that works most of the time is as follows:

  1. Present a flow chart that shown the flow of logic of a simple application
  2. Write the instructions in full human language (e.g. English)
  3. Abbreviate each instruction to the short-hand used in the programming language
  4. Choose a less cryptic language like Basic or Pascal for teaching purposes

All code is simply shorthand for natural language. Written in full English most programs seem trivial.

좋은 알고리즘은 또 다른 이야기입니다. 많은 컴퓨터 과학 과정이 더 이상 알고리즘을 가르치지 않거나 그것을 다듬지 않는 것을 보는 것은 슬픈 일입니다.

참고 URL : https://stackoverflow.com/questions/1936919/what-is-a-good-example-to-show-to-a-non-programmer-to-explain-what-programming

반응형